So-net無料ブログ作成
検索選択
訳者まえがき・あとがき ブログトップ

訳者あとがき『プログラミング言語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 でのプログラミングを楽しめることに役立てば幸いです。


訳者まえがき 『Java SE 8 実践プログラミング』 [訳者まえがき・あとがき]

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング


訳者まえがき

 私自身がJava言語を学び始めたのは、1996年の夏でした。その頃は、バージョン1.02であり、ネストしたクラスやネストしたインタフェースは言語仕様として存在していませんでした。バージョン1.1でネストしたクラスやネストしたインタフェースが登場し、Javaプログラムの書き方が変わりました。その後の言語仕様の大幅な拡張は、2004年にリリースされたバージョン5.0であり、ジェネリックス、enum、アノテーションといった変更が加えられました。

 それから10年が過ぎて、再び言語仕様の大幅な拡張が行われ、Java 8として登場したのです。Java 6および7でも言語仕様の変更は行われましたが、小さなものでした。Java 8でのラムダ式の導入により、従来のコードが簡潔に書けるだけでなく、多くのライブラリが影響を受けて拡張されています。そして、いわゆる関数型プログラミング的な思考を求められるようになりました。

 ラムダ式に加えて、今までのJavaと大きく変わったのはインタフェースです。デフォルト実装を持つメソッドをインタフェースへ追加することができるようになりましたし、実装を持つstaticメソッドをインタフェースへ追加することもできます。ラムダ式のサポートとインタフェースの仕様変更は、従来とは異なったJavaプログラミングの世界への扉を開いたことになります。

 この本では、簡潔にJava 8の機能が説明されています。第1章から第8章までは、Java 8に関して説明されており、第9章ではJava 7が説明されています。また、各章の章末に練習問題が用意されています。練習問題に取り組むことで、Java 8の基本的な機能を習得することができると思います。

 1996年の夏からの18年間で、私自身は、Javaを通して多くのことを学んできました。もちろん、この本でも新たなことを学ぶことができました。多くのJavaプログラマーが新たな言語仕様を学び、実践し、マルチコア時代へ向けた新たな道具を獲得することに、この翻訳本を役立てていただければ幸いです。

※ バージョン5.0で行われた言語仕様の変更は、拙著『Java 2 Standard Edition 5.0 Tiger --- 拡張された言語仕様について』にまとめられています。

コメント(0) 

訳者まえがき 『APIデザインの極意』 [訳者まえがき・あとがき]

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

APIデザインの極意 Java/NetBeansアーキテクト探究ノート


訳者まえがき

私自身がJava 言語を学び始めたのは、1996 年の夏でした。その後、Java 関連の技術雑誌の記事を執筆したり、2001 年に『プログラミング言語Java 第3 版』を翻訳したりしました。しかし、それまでは、API 設計に関しては、初心者の域を出た程度でした。API 設計に対する私自身のレベルを大きく押し上げてくれたのが、2001 年に翻訳したJoshua Bloch 氏の『Effective Java プログラミング言語ガイド』でした。そして、Jaroslav Tulach 氏のこの『API デザインの極意』(Practical API Design)は、さらにAPI 設計に対する私のレベルを大きく押し上げてくれました。Tulach 氏の言葉を借りれば、私の水平線を大きく押し広げてくれました。

API 設計は、大学で体系的に教えられることはないですし、企業でも教えられることはないと思います。その結果、日本企業においては、いわゆるSDK と呼ばれるソフトウェアを外部へ提供していても、必ずしも優れたAPI になっていないことがあります。私自身も、数多くの悪い設計のAPI を見てきました。しかし、なぜ、そのようなソフトウェアが量産されるのでしょうか。それは、何が良いAPI で何が悪いAPI であるかを分からないレベルのソフトウェアエンジニアが開発しているからかもしれません。あるいは、きちんとしたレビューを受けていないのかもしれません。あるいは、レビューできちんと指摘できるレベルのソフトウェアエンジニアがいないのかもしれません。

きちんとしたAPI 設計を学ぶには、ある程度独学で書籍を通して学習して、実践して習得していくしかありません。その意味では、Joshua Bloch 氏の『Effective Java』は必読書と言えますし、デザインパターンなども学ぶ必要があります。しかし、残念ながら、API を発展させていく観点でAPI 設計について書かれている書籍は、まれです。

この本には、オープンソースプロジェクトであるNetBeans のアーキテクトとしてTulach 氏が経験してきたことがまとめられています。Tulach 氏が行った様々な誤りが説明されており、それらの経験からAPI の発展を考慮した設計とはどのような設計かが説明されています。また、どのようにして、NetBeans の非推奨のAPI を終焉させてきたかも述べられています。そして、最後に、この本に述べられている方法論をアジャイルAPI 設計Agile API Design)と呼ぶことにすると述べられています。

この本は、プログラミングの初心者向けではありませんし、Java に関する知識が必要であり、『プログラミング言語Java 第4 版』の内容の知識が必要です。多くのJava プログラマが不慣れと思われる箇所に関しては、『プログラミング言語Java 第4 版』の該当箇所を訳注として示しています。

この日本語版が、API 設計に対する読者のみなさんの水平線を押し広げることの助けになれば幸いです。

コメント(0) 

訳者まえがき『Objective-C明解プログラミング』 [訳者まえがき・あとがき]


訳者まえがき

 Objective-Cは、C言語とSmalltalkを組み合わせたプログラミング言語であり、オブジェクトの概念をSmalltalkから取り入れています。1983年に開発されており、その誕生からすでに30年が経過しています。Objective-Cは、C言語で記述されたプログラムをそのままObjective-Cコンパイラでコンパイルできて何の問題もなく実行されるという初期の決定に基づいて開発されました。その点では、C++言語と似ていますが、全く異なる発展を遂げています。C++言語とは対照的に、Obejctive-Cの生みの親であるBrad J. Cox氏は、現在のObjective-Cには関与しておらず、Apple社が独自に言語仕様を拡張してきました。
 私自身がObjective-Cという名前を聞いたのは、1990年頃であり20年以上前のことです。当時のMacintosh用の開発言語はC言語でした。そのため、Objective-Cのコミュニティは小さいものでした。本書の第1章で述べられているように、Apple Computer社がNeXT Software社を買収してから、Mac用の開発言語としてObjective-Cが採用されています。今日ではiPhoneやiPadの爆発的な普及により、多くのプログラマがObjective-Cを学び使用しています。
 本書は、初めてのプログラミング言語としてObejctive-Cを学ぶ人達を対象としていますので、C言語でのプログラミング経験がないことを前提として説明されています。結果として、C言語の解説は後半の章である第13章「基本的なC言語機能」で行われています。そして、本書全体が、初心者だけでなく、Objective-Cでプログラミングを行ってきた人にも役立つ内容となっています。
 当初は、原著Programming in Objective-Cの第4版で翻訳を始めましたが、XcodeとObjective-Cのバージョンアップにより、翻訳中に第5版が出版さました。そのため、第5版の修正内容を反映してあります。
 この日本語版が、読者のみなさんのObjective-CによるプログラミングとOS X/iOSアプリケーション開発の助けになれば幸いです。

『Objective-C明解プログラミング』

訳者まえがき・あとがき ブログトップ