Skip to content

Instantly share code, notes, and snippets.

@nwiizo
Last active April 17, 2019 03:30
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nwiizo/deb8db98114408e2233fa790dd7e0083 to your computer and use it in GitHub Desktop.
Save nwiizo/deb8db98114408e2233fa790dd7e0083 to your computer and use it in GitHub Desktop.
learn Golang for Infrastructure engineer @麻生情報ビジネス専門学校

資料

インフラエンジニアが学ぶべき Golang 入門 なぜ,ぼくたちはプログラミングを学ばなければならないのか?

インフラエンジニアに求められるプログラミング入門(Golang入門等)

情報システムの構成要素には様々な技術が使用されているが,H/W,仮想化,OS,ネットワーク,ミドルウェア,セキュリティといった基盤となる領域を担当するのがインフラエンジニアである.ウェブオペレーションサイト 運用管理の実践テクニック(邦訳)では下記のような仕事とされている.

ネットワーク/ルーティング/スイッチング/FW/負荷分散/高可用性/障害復旧/TCPやUDPのサービス/NOCの管理/
ハードウェア仕様/複数のOSの仕様/複数のハイパーバイザーの仕様/クラウドの仕様/複数のミドルウェアの仕様/
いくつかの言語の仕様/キャッシュ技術/データベース技術/ストレージ技術/暗号技術/アルゴリズム/傾向分析/キャパシティ計画立案

この書籍の翻訳本は2011年に出版してる.そこから8年が経過している.インフラエンジニアにはSREDevOpsInfrastructure as Code や他 様々な状況や需要の変化が起こっている.本講義ではインフラエンジニアを取り巻く現代の様々に変わる需要は一旦おいてコンピュータを触るエンジニアとしてコンピュータを上手に使役する為のプログラミング入門としてGolangでのコーディングを行います.

Golangは,C++やJava,Pythonといった言語でGoogleを支える巨大なシステムを開発する際に抱えていた問題を解決する為に開発されたプログラミング言語で2007年にそのアイディアが提案され,2009年にOSSとして公開されました.

Golang 入門

本講義やハンズオンではA Tour of GoのBasicsを独力で読み進めることができる方を対象としています.このハンズオンでは基本的な文法や解説を行いません.入門書としてはプログラミング言語Go をおススメしています.

環境構築

CentOS7

$ wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz
$ tar vzfx go1.9.linux-amd64.tar.gz
$ sudo mv go /usr/local/
$ go version
go version go1.9 linux/amd64
$ export GOPATH=$HOME/.go
$ echo $GOPATH
/home/centos/.go

Ubuntu

apt-get install golang

Golang 入門 課題

Golang basics - writing unit testsを一読してテストを書いてみましょう

Golang HTTP 入門

このハンズオンではGolangによるWebサーバーの構築及び動作を理解してもらいたいと思います.Goはバッテリ内蔵のプログラミング言語で,Webサーバがすでに組み込まれています.net/http標準ライブラリのパッケージには,HTTPプロトコルに関するすべての機能が含まれています.これにはHTTPクライアントとHTTPサーバーが含まれます. Serverのみ

package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello, World: %s\n", r.URL.Path)
	})

	http.ListenAndServe(":80", nil)
}

Golang HTTP 入門 課題

クライアントの実装 gorilla/mux/sum/{num01}/{num02}というような値を受け取って合計を返すようなプログラムを書いてください.また,sum関数を作成しその関数に関するテストを記載してください.

推薦図書

Real World HTTP ――歴史とコードに学ぶインターネットとウェブ技術

Golang コマンドラインツール 入門

このハンズオンではGolangによるコマンドラインツールの作成を通して開発を体験してもらいたいと思います.Goは様々なコマンドラインツール作成用のライブラリが公開されていますがサブコマンド形式を用いる場合にはcobraを設定ファイルを良しなに読み込んでくれるviperなどがあります.

Golang コマンドラインツール 入門 課題

2つの引数を受け取って 数字を足すコマンドラインツールを作成してください形式は以下のように実行してください

<実行ファイル> add [num01] [num02]

さいごに

今回,お話を頂いた時に全員に向けて話してくれというオーダーを頂いたこともあってもっと話したいことがたくさんありましたがこんな風な内容にしました.今回のイベントが好評であれば再度訪問することも可能ですので計算機を上手に扱う為の思考や思想,プロダクションレディなアプリケーションの書き方についてはその時にでもお話したいと思います.また,nwiizoというハンドルネームでTwitterをやっているのでいつでもリプライやDMをください.プログラミングを書くというのは身近な課題をより効率的に解決するのに便利なものです.今回の課題や資料ではプロダクトに必要なプログラミングが出来るようになるとは決して思いませんが最初の一歩を踏み出しておくというのは何か挑戦する際に一つ大切なことだとも思います.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment