SSブログ

訳者あとがき『プログラミング言語Go』 [訳者まえがき・あとがき]

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)

「日本語版によせて」から「第1章 チュートリアル」までは、こちらでPDFファイルが公開されています。『プログラミング言語Go』では「訳者まえがき」ではなく「訳者あとがき」としたので、公開されたPDFファイルに「訳者あとがき」は含まれていません。

訳者あとがき

私がコンピュータに初めて触れてプログラミングを学び始めてから、すでに38 年の月日が流れました。その間にさまざなプログラミング言語を学び、さまざまな製品開発に従事してきました。

月に一回の勉強会でしたが、会社の若手のエンジニアと一緒に私自身がGo に取り組み始めたのは2010 年8 月でした。2012 年3 月にGo のバージョン1.0 が正式にリリースされ、2012 年10 月には私にとって最初のGo に関する翻訳書である『プログラミング言語Go フレーズブック』(デイビッド・チズナール著、ピアソン桐原)が刊行されました。一緒に学んだ若手のエンジニアの一人に、Tour of Go の日本語サイトの運営を行っている荒木さんがいます。

新たなプログラミング言語を学ぶことは、よく知っているプログラミング言語から類推しながら学ぶことと、新たに学ぶことに分けられます。特に、よく知っているプログラミング言語にはない概念が含まれていると、それを理解するまでに時間を要するかもしれません。C++ での3 年間のプログラミングを経た1996 年の夏に、新たに登場したJava を学んだときにはインタフェースをすぐには理解できませんでした。Go でも、最初は私自身の理解を混乱させた機能もあります。

Go はウェブサービスで使われている事例が多いですが、言語そのものは汎用のプログラミング言語です。1993 年から2009 年まで、一部の期間を除いて私自身は組み込みシステムであるデジタル複合機(コピー、Fax、プリンター)のソフトウェア開発に従事し、C++ で開発しました。C++ での開発では独自のメモリ管理やスレッド安全なライブラリの設計も行い、最後の五年間は完全なテスト駆動開発をC++ で行いました。そのような経験を踏まえ、Go は組み込みシステムの開発にも向いていると思っています。

小さなスタックで動作する軽量なゴルーチン、CSP による通信、ガベージコレクタとメモリ保護、構造体によるコンパクトなメモリ設計、オブジェクト指向プログラミング、および、ウェブのクライアントやサーバの機能を含めたさまざまな機能を提供する標準パッケージと、道具は揃っています。したがって、オペレーティングシステムにLinux を採用している組み込みシステムでは、C やC++で開発するのではなく、Go で開発するのが適切だと思っていますし、将来Go で開発されるのが普通になる日がくるのではないかと期待しています。実際、ある組み込みシステムの制御ソフトウェアをGo を使った完全なテスト駆動開発で行うプロジェクトを2 年間にわたり率いて、Go での組み込みシステムの開発が可能なことを実証できました。

『プログラミング言語Go』の翻訳を通して、私自身も多くの事柄を再確認することができました。さらに、実際に練習問題を解くことで、Go の標準ライブラリの強力さを再認識した次第です。この本は、Go の基本仕様を理解するために必要十分な情報が網羅されており、いわゆるバイブル的な本としての役割を十二分に果たす内容になっています。読者のみなさんも、言語仕様を理解するだけではなく、練習問題を実際に解かれることをお勧めします。

この翻訳書が、日本でのGo の普及に役立ち、日本のソフトウェアエンジニアがGo でのプログラミングを楽しめることに役立てば幸いです。


内容補足:『プログラミング言語Go』 [golang]

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)

すでに本になってしまったので訳注を追加することはできませんが、補足として書いておきたいと思います。

7.8節「errorインタフェース」(p.226)に次の記述があります。
error を作成する最も簡単な方法は、指定されたエラーメッセージに関する新たなerror を返す errors.New を呼び出すことです。errors パッケージ全体は、次の4 行しかありません。
    package errors

    func New(text string) error { return &errorString{text} }

    type errorString struct { text string }

    func (e *errorString) Error() string { return e.text }
errorStringの基底型は、その表現を不注意な(あるいは意図的な)更新から保護するために、文字列ではなく構造体です。(以下省略)
文字列は不変(immutable)なのですが、リフレクションを使用すると書き直すことができます。リフレクションを使用して文字列を書き直したコード例はこちらです。

一方、構造体の非公開なフィールドはリフレクションを使用して書き換えることはできません。そのことは、p.396に記述されています。
Display をos.Stdout へ適用した場合、Unix ライクなプラットフォーム上のos.File 構造体のfd int フィールドといった、通常の言語規則に従えばアクセスできない構造体の非公開なフィールドの値をリフレクションが読み出せることが分かります。しかし、リフレクションでそのような値を変更することはできません。

(コード例は省略)

アドレス化可能なreflect.Value は、走査によって構造体の非公開のフィールドが得られたかどうかを記録しており、そうであれば変更を許しません。


『プログラミング言語Go』刊行記念トークセッション [golang]

スクリーンショット 2016-06-20 4.36.33.png


7月6日(水)に開催されるGoogleのソフトウェアエンジニアである鵜飼文敏氏とのトークセッションです。鵜飼文敏氏からは、書籍の帯のメッセージをいただきました。鵜飼氏は、次の本の監訳をされていますし、『Binary Hacks ―ハッカー秘伝のテクニック100選』を共著で執筆されています。

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

  • 作者: Mat Ryer
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/01/22
  • メディア: 大型本

無料ではなく入場料はドリンク付きで1000円ですが、奮ってご参加ください。ジュンク堂のイベントページは、こちらです(事前予約が必要です)。

当日は、著者アラン・ドノバンとブライアン・カーニハンのサインが書かれた日本語版が展示される予定です。

第1章公開:『プログラミング言語Go』 [golang]

プログラミング言語Go

プログラミング言語Go

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)

発売に先行して、以下の内容を含むPDFが公開されました。PDFはこちらです。
  • 日本語版によせて
  • 目次
  • まえがき
  • 第1章 チュートリアル

【追記】6月10日に出版社から届きました。
13442446_1207804605905481_4671615962188119945_o.jpg


『プログラミング言語Go』刊行記念イベント [golang]

プログラミング言語Go

プログラミング言語Go

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)

池袋のジュンク堂で「Goの設計思想を読み解く~実際の開発に活かすために」と題して、刊行記念イベントが開催されます。鵜飼さんとのトークイベントです。
開催日時:2016年07月06日(水) ~
場所:ジュンク堂 池袋本店
鵜飼 文敏(Googleソフトウェアエンジニア)
柴田 芳樹(『プログラミング言語Go』訳者)
19:00開場
19:30開演
事前予約が必要ですので、参加方法などの詳しい情報はこちらを見てください。

翻訳のきっかけ [プログラマー現役続行]

プログラミング言語Go』は、私にとっては15冊目の翻訳本になります。技術書の翻訳は2000年からですので、平均すると1年に1冊のペースとなります。結果として15冊ですが、当然、1冊目は初めての翻訳だったわけです。そして、技術書を翻訳するようになったきっかけを聞かれることがよくあります。

プログラミング言語Go

プログラミング言語Go

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)

40歳になる1999年の後半に考えていたのは、40歳になったら、雑誌の記事や技術書の執筆、それに技術書の翻訳をやっていきたいというものです。フリーランスではないので、会社での仕事とは別に私的な時間にそのような活動をできたらと漠然と考えていましたが、何か具体的な手段は何も考えていませんでした。

当時、私は「Javaカンファレンス」という団体の個人会員でした。Javaカンファレンスの99年度総会(1998年9月25日)には一人で参加したのですが、翌年の2000年度総会(1999年9月13日)には会社の若手エンジニアであった相馬純平さんと一緒に参加しました。

総会の懇親会の場で、雑誌「Java PRESS」を出版していた技術評論社の編集の人と相馬さんが談話して、「相馬さんも記事を書きませんか」という話になったのですが「よい人がいますから」ということで、実際には私のところにその編集の人を連れてきて紹介してもらい、三人で談話しました。そのときに話した内容の一つが『The Java Programming Language, Second Edition』が翻訳されていないという話でした。しかし、何か記事を書く話にはなっていません。

正確な時期については憶えていないのですが、だめもとで記事を書いて投稿してみようと思い、最初の記事『「The Java Programming Language, Second Edition」について』を書いて、「Java PRESS」の編集部へ投稿してみました。幸い採用されて、2000年3月の「Java PRESS, Vol.11」に掲載されました。最初の記事を投稿した後に他に何か書けませんかと聞かれたのだとおそらく思うのですが、別の記事『AWT/Swingにおけるイベント処理のメカニズム』を書いています。これをきっかけとして、その後の「Java PRESS」、「XML PRESS」「Software People」といった雑誌に記事を書いています。40代前半は、雑誌の記事を多数書いていたことになります。相馬さんも、2000年後半から雑誌の記事を書き始めています。

話を戻すと、最初の記事では「The Java Programming Language, Second Edition」はよい本であり、翻訳されていないことは残念であるという趣旨で本の紹介を書きました。その私の記事を読まれた当時のピアソン・エデュケーションの編集担当であった藤村行俊さんからメールをいただき、第2版の翻訳に関しては時期を逃したのと翻訳する予定はありませんということでした。

その後、何度かメールのやり取りをして、藤村さんから「柴田さんも何か翻訳してみませんか」とメールで聞かれて、「やります。今度出る第3版はどうでしょうか?」という返事をして、「The Java Programming Language, Third Edition」を翻訳することになりました。これが、翻訳をするきっかけでした。

プログラミング言語Java (The Java Series)

プログラミング言語Java (The Java Series)

  • 作者: ケン アーノルド
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2001/06
  • メディア: 単行本

実は、こうやって翻訳した『プログラミング言語Java第3版』は、出版時期からすると私にとっては最初の翻訳本ではありません。最初に出版した翻訳本は、「Javaリアルタイム仕様」なのです。

Javaリアルタイム仕様 (The Java Series)

Javaリアルタイム仕様 (The Java Series)

  • 作者: G. ボレラ
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/12
  • メディア: 単行本


Go言語に関する日本語書籍 [golang]

これから出る本も含めてGo言語に関する日本語の書籍を列挙してみました。今年は6月までに4冊であり、Go言語の普及を後押しすると思います。

【2016年】
みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】

  • 作者: 松木雅幸
  • 出版社/メーカー: 技術評論社
  • 発売日: 2016/09/09
  • メディア: 大型本
プログラミング言語Go

プログラミング言語Go

  • 作者: Alan A.A. Donovan
  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)
Go言語入門

Go言語入門

  • 作者: 飛松 清
  • 出版社/メーカー: リックテレコム
  • 発売日: 2016/06/18
  • メディア: 単行本(ソフトカバー)
スターティングGo言語 (CodeZine BOOKS)

スターティングGo言語 (CodeZine BOOKS)

  • 作者: 松尾 愛賀
  • 出版社/メーカー: 翔泳社
  • 発売日: 2016/04/15
  • メディア: 単行本(ソフトカバー)
Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

  • 作者: Mat Ryer
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2016/01/22
  • メディア: 大型本

【2015年】
改訂2版 基礎からわかる Go言語

改訂2版 基礎からわかる Go言語

  • 作者: 古川 昇
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2015/07/17
  • メディア: 単行本(ソフトカバー)

【2012年】
基礎からわかる Go言語

基礎からわかる Go言語

  • 作者: 古川 昇
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2012/11/21
  • メディア: 単行本(ソフトカバー)
プログラミング言語Goフレーズブック

プログラミング言語Goフレーズブック

  • 作者: David Chisnall
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2012/10/04
  • メディア: 単行本(ソフトカバー)

【2011年】
Go言語プログラミング入門on Google App Engine

Go言語プログラミング入門on Google App Engine

  • 作者: 横山 隆司
  • 出版社/メーカー: 秀和システム
  • 発売日: 2011/12/14
  • メディア: 単行本

【2010年】
はじめての「Go言語」 (I・O BOOKS)

はじめての「Go言語」 (I・O BOOKS)

  • 作者: 茨木 隆彰
  • 出版社/メーカー: 工学社
  • 発売日: 2010/11
  • メディア: 単行本