2006-03-11

最近読んだ本

ソフトウェアファクトリー

Microsoft がソフトウェア工学の叡智を結集して何かしようとしている, その blueprint のような本. Software Factory 自体は野心的すぎて実現はだいぶ先になりそうだが, 実現する手段として既存のソフトウェア工学を網羅的にまとめており, 勉強になる.

たとえば lightweight/agile なプロセスと heaviweight/formal なプロセスを 比較するとき, 前者を変化と戦うための手段, 後者を複雑さと戦うための手段と分類する. なるほどと視界が晴れた. そういう発見が随所にある. あと MDA 言語としての UML を批判している部分も読みどころの一つ. 上司が時々 UML/MDA をしたそうにしており私は冷や汗を流していたが, これで理論武装は万全.

Software Factory の内部に踏み込む後半は 話が複雑かつ野心的になってゆき, 私の知識と根性では付いていくのがしんどい. そのへんは挫折した.

ところで時々 Software Factory は日本発の技術だというような話を見かけるが, 本文中にそんな話はでてこない. 60-80 年代に日本で行われたという大規模ソフトウェア開発が たまたま "ソフトウェア工場" と呼ばれていたのことに便乗した風聞だと 私は穿っている. 実際はどうなんだろう.

Joel on Software

朝本.

いくつか思うところはあれどもそれは置いておくとして, ペーパープロトタイピングThe Art Of UNIX Programming は積読リストのローングテイルに追加. User Interface Design for Programmers は日本語版がでるはずと見込んで保留かな.

ウェブ進化論

比喩が上手い. たとえば "情報発電所" は一見ベタだけれどもとても的確だ. しゃれたそれらしい言い回しより, こういう方が意見そのものはよく伝わる気がする.

梅田望夫は賢くて勉強家なだけでなく, 思いこみが強くていい. このくらいはっきりと自信を持って色々言われると説得されてしまう. それが彼の楽観性を支えているような気もする. 以前たまに evangelist なる立場が流行ったことがあったけれど, 最近は enthusiast という言い回しをよく見かける. ウェブの世界では, 広告然としてエラそうになりがちな evangelist より 自身がコミットしてそうに見える enthusiast の方が支持を得たのかもしれない.

My Job Went to India

普通のプログラマ向け自己啓発本. プログラマ向けの自己啓発本は他にもあるような気はするが, この本は企業内システム開発などに従事する 普通の奴らに向けてかかれており, lisp を使えだとかスーツや上司はアホだというような話ではない. かわリにレガシーのメンテナンスも悪くないんだというような話をする. またベンチャー路線への転身を煽りたてることもなく, その会社でクビにならずどのように価値を作っていくかという立場. いくらか現実的で好感が持てる.

自分という製品を企業に売りこむというメタファを中心にトピックが構成されており, そのためには(例えば)市場調査や広告も重要だと説く. プラクティスは 52 個あるので, 読めば一つくらいは気に入るものもあるだろう.

著者はアウトソース導入の担当としてインドに飛ばされ, そこで仕事をしていた. そうした経験談から自己啓発のベスト・プラクティスに話を進める. (仕事がインドなどにアウトソースされるのではないかという アメリカ人プログラマの危機感が背景にあるというのは前にちょっと書いたとおり.) 体験談のノリが初めての海外旅行から帰ってきた人のそれと似ていて微笑ましい. 妙なニヒリズムに陥らない素朴さがいい. これが大半のプログラマの現実だという気がする.

Ajax IN ACTION

今時のウェブ・プログラミングはどんなものかと読んでみた. が, あまり面白くなかった... まずリッチ・クライアント, MVC, デザイン・パターン, リファクタリング, GUI などの説明に結構なページを割いているのだが, どれも教科書の丸写しみたいであまり洞察がない. たとえばリファクタリングの話はするがテストの話はない. デザイン・パターンが持ち込む不必要な複雑さに関する議論もない. HTML, CSS, JavaScript, DOM などの説明も結構あるのだが, このへんも冗長. Ajax を勉強しようというプログラマが CSS や DOM を知らないとは考えにくい. 表面的な体裁をととのえるために厚くしないでほしい. IN ACTION だから仕方ないのだが, 全体的に入門向けの度合いが強過ぎる. ロバストで高機能な Ajax アプリケーションをいかに開発するかというところに フォーカスをした本を読みたい.

ただ, 性能に関する話は面白かった. たとえばブラウザ上の JavaScript の実行性能はスクリプトそのものの実行時間より ブラウザの再描画やネイティブ機能を呼び出すために言語境界を跨ぐ部分の時間に 影響される. (普通のアプリケーションが I/O bound になるのと似ている.) 著者はそうした点を指摘し, 高速化の定石を示す. また, DOM と JavaScript の組合せはオブジェクトの循環参照を作りやすく, その結果メモリリークが起こる. 長時間同じページを使いつづけるモデルだとこのリークが問題になる. その解決方法についても議論されている. このへんは Ajax 特有の問題でなかなか楽しい.

サンプル・アプリケーションの解説では サード・パーティ製 JavaScript ライブラリを使っている部分があり, そこもすこし参考になった.

洋書行

"IN ACTION", 英語はともかく technically につまらなかった... "Database Management Systems" 興味のある部分は読了. Advanced Topics は新しい版を買って呼んだ方が良さそうだ.

2/20-2/26 の週が 0.5 時間目標に満たなかった. 残業をすると時間が無い上に帰宅後も疲れている上にイライラしていて本が読めない.

私は教科書が好きなのかもしれない. 教科書はぎっしり詰まっていていい. 数式の少ない教科書が読みたい.