
エンジニア養成機関「42 Tokyo」では、本科のカリキュラム(42cursus)とは外れる形で、いわば傍流にあたるカリキュラム(Reloaded)が用意されている。
2022年4月に開催された「Go Piscine」は、25日間にわたって行われる特別カリキュラムだ。その名の通り42の入学選考「Piscine」をGo言語にアレンジした内容で、数多くの学生たちが参加。コードレビューを繰り広げている。
シーからゴーへ。堅調に段階を踏みつつ、モダンな言語に触手を伸ばす。
Go言語とは?Googleが開発した汎用言語
Goの特徴は以下にまとめられる。
・Googleがサポートするオープンソースのプログラミング言語である
・学習や環境構築が容易である
・並行処理と堅牢な標準ライブラリを組み込みで実装している
・仲間やコミュニティ、ツールといった開発環境の拡大を促す
Goは2009年に発表されたプログラミング言語である。Googleに在籍していたロバート・グリースマー、ロブ・パイク・ケン・トンプソンらによって生み出された。
上述の通り、Goはオープンソースのプロジェクトであり、コンパイラやライブラリ、ツールなどは無料で入手可能。コミュニティの輪は全世界に広がっており、日本でも読書会やイベントが盛んに開催されている(参考:golang.jpブログ)。
既存言語の長所を取り入れて作られた
GoはC言語の影響を多分に受けており、式構文や制御フロー文など共通する特徴を備えている。
加えて、GoはPascalから始まるModulaやOberonといった言語(いずれもニクラウス・ヴィルトが開発に携わった)の系譜上にも置かれる。特にOberon-2はパッケージ・インポート・宣言などの構文に影響を与えたようだ。
さらに、GoといえばCSPによる並行性も見逃せない。CSP(Communicating Sequential Processes)は、1978年にアントニー・ホーアが考案した理論であり、プロセス間通信によってシステム全体の並行処理を進めていく。C/C++のマルチスレッドのように共有メモリを排他的に用いないため、より安全で効率的な実装を実現する。
こうした過去の遺産の上に、 Goは新規のアイデアも取り入れた。たとえば動的で柔軟な配列操作を可能にしたslice、遅延実行を行うdeferなどは、Goの斬新さを際立たせている要素だ。
Go言語の環境を構築する
随時追加予定
Go言語の学習に役立つサイト・資料など
順次追加予定
公式リファレンス
(引用:Go公式サイト)
以下はすべてGoの公式サイトで公開されている。
- ドキュメント
カノン。 - チュートリアル(A Tour of Go)
サンドボックス上で動かしながら基礎を学べる。 - パッケージ検索
標準パッケージのソースコードもここで読める。 - Effective Go
Goらしく書くためのTipsが満載。 - Code Review Comments
上記を補足する形で、コードを読む上でのTipsがまとめられている。 - ブランドイメージ
Goの設計思想を知ることができる。Gopher。
入門書・概説書
『プログラミング言語Go』アラン・ドノバン/ブライアン・カーニハン
構文からデータ型、メソッドやゴルーチンまで、基礎的な文法が網羅されている。翻訳は明解。索引も付いており、習熟度を問わず手元に置いておきたい一冊。
『スターティングGo言語』松尾愛賀
すでに他言語の経験がある人に向けて書かれているが、開発環境の構築(Windos/OS X/Linux)に一章が割かれるなど親切設計。後半では約20の標準パッケージが用例とともに解説されており、実用性の面でも優れている。
『エキスパートたちのGo言語』
その名の通り、プロダクト開発における具体的なコードの数々を紹介している。一例として、KubernetesのJob実行ツール、GitHub Actionsによる自動化、Raspverry PiにおけるIoTデバイスの作成など。項目ごとに異なるエンジニアが執筆しており、バリエーションに富んだ内容となっている。