かとじゅんの技術日誌

技術の話をするところ

日経ソフトウエアの特集がムックになりました

まず、
3月11日の「東北地方太平洋沖地震」で、被害にあわれた皆様に心よりお見舞い申し上げるとともに、犠牲になられた方々とご遺族の皆様に対し、心よりお悔やみを申し上げます。
私も関西出身で阪神大震災の酷さを体験している人間でもありますし、気を負わずに自分なりにできることはやっていきたいと思います。ということで、通常通り ブログの方は継続します。



お知らせです。これまでに日経ソフトウエアで執筆した特集がムックになりました。
Javaツール完全理解 (日経BPパソコンベストムック)

Javaツール完全理解 (日経BPパソコンベストムック)


タイトルはJavaツール完全理解ということで、前半はJavaの開発環境やビルドツールなどの開発に必要なツールの解説があり、後半は私の記事を含めて実装編の記事が満載です!!

私が担当したのは以下です。
【第2部】 最新Eclipseで良いJavaプログラムを書こう
【第4部】 現場で通用するソフトウエア設計を学ぼう

読みどころ

読みどころとしては以下です。
【第2部】については、Javaで良いプログラムを目指すにはどういう視点を持つべきかというテーマで、Eclipseの基本から入ってオブジェクト指向ポリモーフィズムをおさらいしながら、後半ではドメイン駆動設計(DDD)に基づいてRDBMSスキーマを作成するツールの開発を実践的を紹介しています。
この当時はまだDDDの翻訳本が出ておらず、本誌初登場でどのように解説すべきか、日経BPさんとも悩みながら書いた記事でした。そして、いよいよ4月にDDDの翻訳本が出ます。DDDは簡単にいうとオブジェクト指向を生かしたアプリケーション開発をしようという哲学です。オブジェクト指向は面倒だから使えない、で思考停止するのではなく、自分たちが実際に使ってみて評価して改善を加えていくべきだと思います。その意味では第一歩としてDDDを学ぶことは間違いではないと思います。
情報源としては、まず翻訳本です。これは間違いありません。それ以外に日本語の情報源はまだ少ないので、今回のムックは一つの情報源として活用していただければ幸いです。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

そして、【第4部】については、【第2部】とは違ってDDDは全面に出ていません。もしかしたら、こちらの方がみなさんが日常で書いているコードに近いかもしれません。ここでのテーマは現場で通用する設計とは何か。まさに幅広いテーマですが、一例として設定ファイルに基づいてJavaBeansを生成するコードジェネレータを設計/実装する特集になっています。
その中で様々なノウハウを紹介していますが、中でも「不変性」についてページを割いて説明しています。
若干、話しが逸れますが、18ヶ月でCPUのチップ性能が倍になるというムーアの法則があります。それを維持するためにマルチコア化に流れています。今や18ヶ月でCPUのコア数が2倍になる法則になっていくだろうとも言われています。この変化によって、これまで以上に並行プログラミングに気を配らなければならなくなるでしょう。このストーリについては「Java: The Good Parts」の並行処理にもっと分かりやすく書かれているのでぜひ読んでみてください。

Java: The Good Parts

Java: The Good Parts

この並行処理の課題に対応するには、「不変性」について理解しなければなりません*1。「不変性」は、並行処理以外にも、理解しやすい、テストしやすいプログラムを作る上でも効果があると言われています。この「不変性」の考え方は、最近話題の関数型言語設計思想の根底にもあります。「不変性」を今のうちに学んでおくと、関数型言語の学習がしやすくなるかもしれません。

*1:不変というのはどのような操作を行っても状態を変更することができないオブジェクトを作るための考え方です