訳者まえがき
Goは、C++、Java、Pythonといった言語でGoogleを支える巨大なシステムを開発する際に抱えていた問題を解決するために開発されたプログラミング言語†1で、2007年にそのアイデアが提案され、2009年にオープンソースとして世間に公開されました†2。2007年といえばすでに時代はマルチコアCPUの時代。またいまや当たり前となったクラウドコンピューティングサービスが広く提供され始めたのもこの時期からでした。こうしたクラウドコンピューティングサービス上で構成されるシステムアーキテクチャでは、個々のシステムが多くの通信によって連携を取るような構成も多く見られ、1台のインスタンスでいかに多くの接続を受け取り処理するかが鍵となっていました。
そうした背景において、Goの言語仕様の中にゴルーチンやチャネルという、並行処理を支える機能が組み込まれたことは必然と言えるでしょう。CPUの性能を余すことなく利用するために必須とも言える並列・並行処理の扱いがこれほどまでに容易であることは、Goの大きな利点であると言えます。しかしながら、並行処理の扱いが容易な一方で、Go特有とも言える並行処理の表現方法により、最適解と呼べるパターン集がなかなかまとまった形で得られていませんでした。
訳者が原著である "Concurrency in Go" を初めて手にとって読んだとき、ようやくGoの並行処理をまとまった形で提供する書籍が出たと感じました。単純にゴルーチンやチャネルを使った並行処理のパターンを紹介するだけでなく、その背景にある理論やランタイムの動作原理まで網羅しているので、これから並行処理を学んでいく人にとっても良い導入になっていると思います。したがって、本書はすでにGoに熟練したソフトウェアエンジニアだけでなく、Goの入門書の次の一冊を探している方、また他言語での並行処理の経験はあるがGoでの並行処理に慣れていない方、と幅広い方々に楽しんでいただける内容となっています。 ...