20年とか前にソフトウェア開発で読んでいた本たちの昔話
分析屋の下滝です。
本屋にいくのが毎週の習慣なんですが、あれですね、本屋の大きさにもよりますが、ソフトウェア開発系の本も、当然ながら、絶版とかで古いものはみなくなったなとしみじみ思いました。あと、分野が変われば、昔の定番書(今も定番書?)にたどり着く機会も難しいんだと感じました。最近、小売業のことを調べてたりするんです。
ということで、20年前くらい周辺で読んだことのある、なんとなく独断と偏見で定番書というか良い本のはずとして読んだ記憶があるものを思い出してみようと思います。データ分析まったく関係ありません・・・。
昔の本
順序は適当ですが、やはり、記憶に残るのは『オブジェクト指向における再利用のためのデザインパターン』。
改訂版が1999年なんですかね。英語原著は、1994年かな? 本になる前の論文は、ECOOP(European Conference on Object-Oriented Programming)の論文のはず? ECOOPは、プログラミング系で有名な国際会議の一つです
Design Patterns: Abstraction and Reuse of Object-Oriented Design
デザインパターン本を知ったのは確か『リファクタリング』本だった覚えがあります。少し前に改訂版が出ています。みんなが大好きマーチン・ファウラーの本。
『リファクタリング』本の参考文献に確か、デザインパターン本が載っていて、それで存在に気づいたのかな? 当時、読んでいて、買い物か何かででかけたときに、自転車漕ぎながらオブジェクト指向とは何を言っているのかを分かった気になった記憶があります。
さて、ECOOPの存在に、普通のプログラマーが気付くのはちょっと難しいかも知れません。『パターンハッチング』という本があって、この本でふれられていた覚えがあります。この本の存在はあまり覚えている人いないかも。
あと、ファウラーといえば『UML モデリングのエッセンス』でしょうか。なんでこの本が当時よかったかというと、他のUML本は確か無駄に分厚かったんですよね。記憶違いかもですが。
ファウラーでもう一つ、結局、当時は読んでもよくわからなかった『アナリシスパターン』。読み切ってもいないです。これ以降、分析レベル?のパターンの本は出ていない気がします。
『デザインパターン』の本だけでは、デザインパターンを理解するのは難しい、というのが当時も今も変わらないことだと思います。自分が初めてわかったきになったのは、他のデザパタ本を何冊か読んだあとだったと思いますが、一番は『オブジェクト指向のこころ』です。今は第2版がでています。
何が説明としてわかりやすかったと言うと、確か、デザインパターンではないクソデザインをデザインパターンが適用されたデザインに変えていく説明があったからだと思います。
そして、そのような特定のデザインパターンに向けてのデザインの変換は、『パターン指向リファクタリング入門』でより明確になりました。
他にも『実装パターン』があったのを思い出しました。原著が2007年なので、そんなに昔ではありませんね。読んだはずですが、印象に残っていなかったです。後に出てくるケント・ベックの本です。
以上、デザインレベルのパターンの古い本はこの程度だったかと思います。でも、アーキテクチャレベルが残ってますよね? もしかすると、アーキテクチャパターンに限らず、アーキテクチャの本はこれが国内で初めてなのかも?
通称、POSA本です。Pattern-Oriented Software Architectureの頭文字ですね。
当時は、アーキテクチャの話は面白く感じなかったので、面白いという印象はありませんでした。Pipes and Filters なんて面白いですか?
POSA本は、実はシリーズのVol.1 のもので、他には翻訳はされていませんが Vol5まで出ています。パターンファンとしては日本語が無いのは悲しいですね。
パターンのシリーズとしては、実はまだあってこれです。
日本オリジナルのパターン選集のはずです。もとは、Pattern Languages of Program Designという本のシリーズがあります。さらにもとは、Pattern Languages of Programs Conferenceという国際会議で発表されたパターンがもとになっています。
プログラミングに関わるような当時のパターンの本はこれくらいだったかと思います。
なお、パターンやパターン言語の原点は、ソフトウェア開発の業界ではなく、建設業界です。デザインパターンの著者たちがインスピレーションを受けたのは、クリストファーアレグザンダーの考えでした。
興味ある方は原点を読んでみても良いかもですが、あまり得るものはないかもしれません。私は、自分の力量不足もあるかもですが、ありませんでした。ただし、クリストファー・アレグザンダーは、私の最も好きな人物の一人です。この『クリストファー・アレグザンダー―建築の新しいパラダイムを求めて』という本はいまも手元に置いています。
あと、最も好きだといいながら、最も重要な『ザ・ネイチャー・オブ・オーダー』シリーズは読み切れていません。
ちなみに、クリストファー・アレグザンダーは2022年に亡くなりました。彼のように深みのある物事の探求も私もしたいなと思っています。さらに、ちなみに、最も好きな人物のもうひとりピーター・ドラッカーもだいぶ前になくなりました。
ちょっと横道にそれちゃいました。
次に、パターンではないですが、プログラムのお上品な書き方、というのを見ていきましょう。『プログラミング作法』から。
2017年発売となっていますが、2000年の本の再発行です。あんま覚えてませんが、変数名の付け方とかそういう基本的なことが書いていた気がします。
そして、『コードコンプリート』。あまり内容は覚えてないです。
あと『ライティングソリッドコード』あたりですかね? 読んだ気になってるだけかも。
他にも特定のプログラミング言語でよければ他にもありますが、省略します。CとかJavaとかC++とか。あ、懐かしの本だけ紹介しておきましょう! Perlのらくだ本。これかな? もってないですが、第1版は赤色じゃなかったかな?(調べました。背表紙が赤らしいです)。
さて、言語によらず、でも、設計でもなく、となるとたとえばこれ。このテーマとしては一番詳しいのではないのでしょうか?(比べてないのでわかりませんが・・・)
WindowsAPIの本なんかも持っていたきがしますが、省略で。
次に、プログラミング全般で、もっとも個人的には難解で知的好奇心をくすぐられた覚えがあるのは『マルチパラダイムデザイン』。
何回読んでも誰かに説明できるほどさっぱり理解できませんでしたが、高度だなー、という印象が好きでした。
あと、プログラミング系では最後に『アジャイルソフトウェア開発の奥義』を。単に流れ的に最後になっただけです。今でも読まれているのですかね。
あ、最後最後に。『達人プログラマー』を忘れていました。あんま覚えていませんが定番本でしょう。
次は、開発プロセスよりの話を。もちろん、当時の話題はケント・ベックの『エクストリームプログラミング』です。
このXPシリーズは、他にも何冊か出ています。そして、ケント・ベックといえば『テスト駆動開発』ですかね? 当時は、テストファーストプログラミングと呼ばれていました(確か)。
他にもXPではないですが、『ラショナル統一プロセス入門』なんかも当時はありました。
あとは、私が当時興味を持つ前に発売されていたので、開発プロセスよりだったかはわかりませんが、ブーチの本も懐かしの一冊かも?ですかね? 知ってる人はしってるオブジェクトの広場のほうがさらに昔の本に詳しそうです。
もう少し一般的で有名といえば『人月の神話』でしょうか。銀の弾丸はない、なんかはこれですね。あとたまにまだ見るのが、「本質的な複雑性」 と「偶有的な複雑性」のお話。
このあたりの本をイメージすると、こんな人達もいたなというのを思い出します。ワインバーグとトム・デマルコ。
何冊も本を出しているのでこの本を読んだかは覚えていませんが、今読むと当時は実感できなかったこともわかるかも。続いてトム・デマルコの『ピープルウエア』。このあたりも有名でしょうか。
そしてついでに思い出したのが、『Joel on Software 』。私のamazon履歴だと2006年に購入していました。
コラム集みたいな本といえばいいのかな?
続いて、DDD本もいれれると良いのですが、実は読んでないのですよね。原著は買ったのですが、英語が読みにくくて諦めて、そのまま翻訳版も読まずです。
最後に、これは、実務者にとっては重要な本ではないと思いますが、と独断で偏見ですが、ソフトウェア工学の教科書を(最近本屋でみかけたので)。
教科書を読むのはつまらないけど、実務との乖離もあるけど、教科書で整理されている概念は役立つことが(実務以外では?)あります。私は、ソフトウェア保守の知識なく論文から読み始めて、この落とし穴にハマったことがあります。
あ、学術的な話になったので、ついでに、これこそ、知る人ぞ知る論文集。デイビッド・パーナスの論文集です。
デイビッド・パーナスの『On The Criteria To Be Used in Decomposing Systems into Modules』の論文は、有名です。この論文も収録されていますが、他にも個人的好きな論文もいくつかあります。これは一生手元に置いて一冊だと思ってます。
株式会社分析屋について
ホームページはこちら。
noteでの会社紹介記事はこちら。
【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。