このハンズオンでは、コーヒーを淹れるという作業を例にゴールーチンを扱います。
基本的な文法などは、このハンズオンでは扱いません。
そのため、ハンズオンを始める前に、A Tour of Goを終わらせると良いでしょう。
また、文法や周辺ツール、GOPATH
などの詳しい説明は公式ドキュメントの「Learning Go」の項目を読んでください。
特に他のオブジェクト指向言語などを学習されている方は、「FAQ」に目を通すとよいでしょう。
英語が辛い方は、有志によって翻訳されたドキュメントの「Goを学ぶ」を読んで下さい。 すべてが翻訳されているわけではありませんが、役に立つでしょう。 また、はじめてのGoも日本語で書かれていて分かりやすいのでぜひ読んで下さい。
標準パッケージについては、パッケージドキュメントを見ると、使い方が説明されています。
このハンズオンを行うと以下のことが学べます。
- ゴールーチンとチャネルの基本
- トレースの方法
sync
パッケージの使い方- ゴールーチンとエラー処理
- コンテキストとキャンセル処理
一方、学べないことは以下のとおりです。
- Goの開発環境のインストール方法
- IDEやエディタの設定
- 基本的な文法
- コマンドラインツールの作り方
- net/httpパッケージ
skeleton
ディレクトリ以下に問題があり、6つのステップに分けられています。
STEP 1からSTEP 6までステップごとに進めていくことで、並行処理に関する知識が学べます。
各ステップに、READMEが用意されていますので、まずはREADME
を読みます。
README
には、そのステップを理解するための解説が書かれています。
README
を読んだら、ソースコードを開きTODO
コメントが書かれている箇所をコメントに従って修正して行きます。
TODO
コメントをすべて修正し終わったら、README
に書かれた実行例に従ってプログラムをコンパイルして実行します。
途中でわからなくなった場合は、solution
ディレクトリ以下に解答例を用意していますので、そちらをご覧ください。
Mac
とWindows
で動作確認をしていますが、解説はMac
の動作結果をもとに解説しています。
Windows
の方は、パスの区切り文字等を適宜読み替えてください。
- STEP 1: ゴールーチンを使わずに処理する(解答例)
- STEP 2: ボトルネックを探す(解答例)
- STEP 3: ゴールーチンとチャネル(解答例)
- STEP 4: syncパッケージを使う(解答例)
- STEP 5: ゴールーチンとエラー処理(解答例)
- STEP 6: コンテキストとキャンセル処理(解答例)
この資料を元にハンズオンを開催するために@tenntennの許可などはいりません。 好きに開催してください。 @tenntennの行ける範囲であれば、開催するから解説して欲しいという依頼もウェルカムです。
なお、forkして変更してもらっても構いませんが、できればPRをいただけると嬉しいです。 資料に間違えを発見した方もissueやPRを頂ければ対応します。