著作一覧 |
先日のジュンク堂トークセッションで、角谷&懸田コンビの掛け合いで、実は、7ページでこの本の内容がわかる秘密兵器として紹介されていたのが、クリーンコードのコプリエンの前書きだ。
いや、それデタラメじゃねぇか、とあらためて読んで思ったが、でも、確かにおもしろい点は突いている。
Clean Code アジャイルソフトウェア達人の技(Robert C. Martin)
一体、コプリエンは前書きに何を書いているのだろうか?
印象深いのは、5Sだ。整理、整頓、清掃、清潔、しつけ。もちろん、クリーンコードという本の前書きなので、一言でまとめれば、「この本を読んで、きれいなコードを書きなさい」に尽きる。
これは、K&Kがetoさんからのアジャイルを始めるには何すれば良い? という質問に対して、ちょっと考えただけで、「あいさつすること」と答えたことに通じるものがあるように思う。つまり、ささいなことのように見える、窓の汚れやヒビに気をつけろ、ということだろう。割れてから取りつくろうのではなく、いつもきれいにしておけば良いということ。
それにしても、あえて日本人という立場を離れて虚心に前書きを読んで言えば、日本のソフトウェア開発では、終始、コードに対して絶え間なき改善を施すリファクタリング先進国ということになる。日本と言えば、フジヤマ、ゲイシャ、カイゼン、なんだから、コードについてもカイゼン=リファクタリングと、考えているのかな。
では、どうして工業製品で行えることがソフトウェア製品では行えないのかね? 神は細部に宿るのだから、きれいなコードこそが重要だし、きれいなコードを生むのは、絶え間なき改善しかなく、今日の一針、明日の十針、早起きは三文の得なのだ。「かもしれません」がボルドなのが良い点だ。コード以外のものに気を取られているのだろう、きっと。
もちろん、私は依然として、広い視野で物事を考えることと、特にソフトウェアの有用性とドメインの深い知識とに根ざしたアーキテクチャ主導の取り組みの提唱者です。この本は、こうしたことをには(少なくとも明確には)触れません。この本では、より本質的な趣旨を扱います。
ソフトウェアにおいて、本質はどこにある? もちろん、コードだ。
パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)(江渡 浩一郎)
それにしても、途中で2部と3部を入れ替えたから、目次の順(パターン、XP、Wiki)に対して、タイトルはパターン、Wiki、XPなのかな。とすれば、タイトルが最初にあったのかな、とか考えたり。
と、ここまで書いて、読み返すと、いくらでたらめとは言え、なぜ7ページのアンチョコなのかが、まったく見えてこないことに驚く。
パターン、Wiki、XPは、「時を超えた創造の原則」を考察した本だ。で、K&Kがその原則が7ページでわかる、としてクリーンコードのコプリエンの前書きを示した、ということだ。
創造というと、天地創造という4文字熟語に端的に現れているが、無から有を生じさせる活動を想起させる。
そうではなく、生成というと、すでにある何かが元になるように感じられる。
生成のための場というのは、ベムベラベロのオープニングの、なにやら液体に泡がぼこぼこしていて、膨張して、そこから何か得体の知れない3つのものが生成される壺のことだ(違うか)。いずれにしろ、元になる液体とかが必要で、しかも、そこにはなんらかのマジックが必要ともなる。
そのマジックというのは、新たな生命を吹き込む「気にさせる」もので、一般的には、気分の良さとか、やる気がむらむらとかそういうもので、そのような気分になるということは、そこに無名の質があるということだ。
と、いうような意味だと受け取った、おれは。
で、と上から続いて、プログラムの創造には、お手本となるアプリケーションがあり、そこに不満とかがあり、代わりとなるものを作るというのがあり、そうやって、フリーなOSとかフリーなコンパイラとかエディターとかが生み出される。
そうやって創造されたコードがフリーであれば、今度は、そのフリーなコードを元に別のアプリケーションが生成できる。
その生成のための重要な要素として、クリーンなコードを上げられることになる。きちゃにゃいコードは読めないか読む気にならないから、つまりは無名の質もなにもあったものではないから、何かを生み出すための肥沃な土壌の提供とはいかない、というように話が続く。
でも、クリーンなコードがあればそれで済むはずはない。
そこから何かを生成しようとするには、コードを読むことも必要で、そこで、コードを読むということについて、最初のお膳立てから、アプローチの仕方、アプローチするための登攀計画の立案、そのための地図の入手方法、そういったことを説明したものとして、RHG、というようなところに話は進むことになるのであった。
コードの書き方の本は、いろいろある。
それに対してコードの読み方の本は、そんなにはない。
アプローチの手段として、テストを作るという方法もあり、それは最近、翻訳されたわけだが、そしてそれは多分正しいアプローチだが、であれば、クリーンなコードと同時にクリーンなテストコードもあってしかるべきだ。
すると、パターン、Wiki、XP(あ、テストファーストを含んでいる)、となる。
レガシーコード改善ガイド (Object Oriented SELECTION)(マイケル・C・フェザーズ)
この本については、mumrikさんのエントリーを読むと良いと思う。Working Effectively With Legacy Codeとか、Working Effectively With Legacy Code(途中経過)とか、Lazy Getterとか、いろいろ。
ジェズイットを見習え |
2006年かぁ、懐かしいなぁ。
さすがに三年たったので今ではいろいろ片付いた問題も多いですが>Working Effectively With Legacy Code