マーリンアームズ サポート   翻訳   コンサル   講座   アプリ   コラム
JavaScript講座     辞書サイト

初めてのGo言語 —— 他言語プログラマーのためのイディオマティックGo実践ガイド    Jon Bodner著    武舎広幸訳

現在出版準備中につき、変更の可能性があります。
あらかじめご了承ください。

訳者まえがき(暫定版)

数年前のこと、Go言語について調べていた訳者はとても懐かしい単語に出会いました。CSP(Communicating Sequential Processes)です。

今を去ること○十年前、訳者は修士論文に取り組んでいました。当時の専攻はソフトウェア工学。「(来たるべきマルチプロセッサ時代に対応した)書きやすく、わかりやすいプログラムを作るのにはどのようなプログラミング言語がよいのか」を一所懸命考える日々を送っていました。SIMULA、CLU、コルーチン、オブジェクト指向……などといった単語の周辺をさまよって、最終的にCSPを修士論文のメイントピックに選んだのでした。

それ以来ほとんどお目にかかったことがなかった単語が、比較的新しい言語の並行処理機能のベースになっていることを知ってとてもビックリしたと同時に、ちょっぴり嬉しくもなりました。当時の自分の目の付けどころが「悪くはなかった」ような気がしたからです。とはいっても、修士論文自体は、重箱の隅をつつくような内容で、とても満足できる内容ではありませんでしたが……(実のところ、あまり思い出したくない「ほぼ暗黒の2年間」でした)。

その後、就職したソフトウェア会社で出会った機械翻訳の面白さに魅了され、それ以来プログラミング言語自体の研究とはお別れをし、それから○十年間はC言語を手始めに、プログラミング言語をもっぱら使う側に回っていました。途中からは、プログラミング言語などの本の人間翻訳をしたり、プログラミングの講座を開くようにもなりました。

訳書を見直してみたら、言語自体の入門書(初版)だけでも次のようなものがありました。言語に関する訳者の感想とともにリストしてみましょう。

* * * * * * * *

原著とこの訳書の違いをお知らせしておきましょう。

皆さんのお役に立てればと思い、付録Aに、原著の内容をベースにしてGo言語のまとめを書いてみました。また、付録Bに少し長めのプログラム例を書きました。訳者自身、付録Aと付録Bを見ながらコードを書くようにして、不足部分を追加していきましたので、読者の皆さんにもお役に立てるのではないかと思います。原著の最初のほうの章には、まとまったコードが書かれていないので、先に付録Bに目を通しておいていただくと、Goの世界に馴染んで、本文の内容がわかりやすくなるのではないかと思います。

原著出版後、Go 1.18がリリースされ、Go言語に「ジェネリクス」が導入されました*1。原著15章にはドラフト版に基づくジェネリクスの説明があったのですが、実際にリリースされたバージョンとかなりの違いが生じてしまいました。翻訳作業の途中に原著の出版社から15章の修正版が届きましたので、それに基づいて15章全体を翻訳し直しました。また、1章から14章にあったジェネリクス関連の記述や、ジェネリクスが導入されたことにより処理方法が変わったりする部分については、修正・加筆してGo 1.19以降での利用に支障がないようにしました。

このほか、原著にはコードの一部だけがリストされて(きちんと)動作するバージョンが掲載(公開)されていない例がありましたが、全体のコードがあったほうが便利でしょうから、訳者ができる限り作ってみました。動作確認はしましたが、まだGo言語の経験は長くないので、付録の内容も含め、お気づきの点はご指摘いただけば幸いです。

最後になりましたが、いつもお世話になっているオライリー・ジャパンの皆様に、深く感謝いたします。

「言語自体の本を訳すのはこれが最後かもしれないな〜」などと思いつつ(あっ、でもRustも面白そうかな)。

2022年8月
マーリンアームズ株式会社 武舎 広幸

[*1] その後Go 1.19もリリースされましたが、このバージョンは言語自体の変更はほとんどありませんでした。

現在出版準備中につき、変更の可能性があります。
あらかじめご了承ください。