Goとは
少ない部品で、速くて落ちないものを作る
Go は 2009 年に Google が公開した言語です。作った人たちが解こうとした問題ははっきりしていました。大きなプログラムを、大人数で、長く保守するという問題です。
そのために選ばれた答えが、機能を増やすことではなく 減らすことでした。他の言語にある継承もありません。例外もありません。ループは for の1種類だけです。
覚えることが少ないので、書いた人が違ってもコードが似た形になります。半年後に読んでも、他人が読んでも、驚きが少ない。これが「大人数で長く保守する」への答えです。
このコースで作るもの
フリマアプリ fleama の API を、Go で作り直します。
プレーンテキスト
第1章 起動バナーを出す
第3章 商品を集計する
第6章 Item という型に再設計する
第8章 JSON を返す API になる
第9章 1つのバイナリにしてサーバーに置く実務でよくあるのが、この「動いている API を Go で書き直す」仕事です。速度とサーバー費用が理由になることが多く、求人でもよく見かけます。このコースは、それをそのまま小さく体験する形になっています。
Go が選ばれる3つの理由
1つ目はシンプルさです。 文法が小さいので、読むのが速くなります。
2つ目は並行処理です。 go と1語書くだけで、処理を同時に走らせられます。たくさんのリクエストを同時に捌くサーバーと相性がよく、第7章で実際に書きます。
3つ目は1バイナリです。 Go は書いたコードを1つの実行ファイルにまとめます。サーバーに Go を入れる必要すらなく、そのファイルを置くだけで動きます。
プレーンテキスト
Node.js node本体 + node_modules(何万ファイル) + 自分のコード
Go fleama-go というファイル 1 つ配る手間が段違いです。第9章で実際に体験します。
最初のコード
このコースは全レッスンでコードを書きます。まずは Go の関数がどう見えるかだけ眺めてください。
Go
func describeGo(topic string) string {
if topic == "binary" {
return "1つの実行ファイルにまとまります"
}
return "分かりません"
}目に付くのは、型が名前の後ろに来ることです。string topic ではなく topic string。戻り値の型も、引数の後ろに書きます。最初は落ち着かない並びですが、すぐ慣れます。
要件
"simple"を渡したら覚えることが少なく、読むのが速くなりますを返す"concurrent"を渡したらgoと書くだけで処理を同時に走らせられますを返す"binary"を渡したら1つの実行ファイルにまとまりますを返す- そのどれでもないときは
分かりませんを返す
入出力例
describeGo("simple") → "覚えることが少なく、読むのが速くなります"
describeGo("concurrent") → "goと書くだけで処理を同時に走らせられます"
describeGo("binary") → "1つの実行ファイルにまとまります"
describeGo("generics") → "分かりません"
describeGo("") → "分かりません"