題名は、音楽の話に聞こえるかもしれませんが、ソフトウェア開発の話です。

以前、咳さんが体験談として

>「お前のコードはナチュラルでエレガントだ」

>と言われた時は うれしかったなあ

と語ってくださったことから、ちょっと思い起こしてみました。「ナチュラルなコード」とはなんだろうか、ということを考えてみたい。ぼくは、何かの本かインタビューで読んだ、Ward Cunningham の言葉がとても強く印象に残っています。

...(要約するとこんな感じ)...

そのコードは、すばらしいコードだった。ソースリストをプリンタに出力すると、

それは、「どこからでも読み始めることができ、意図が明確だった」

............................

「どこからでも読み始めることができる」(!)というのは、オブジェクト指向のよいコードの特徴じゃないだろうか。

wiki(以前、oosquare-ml だったか、「オブジェクト指向的に書かれたコードは処理があっちこっちに飛んで分かりにくい」という発言があった。処理の流れがずらずらと書かれたコードが読みやすい、という趣旨だ。オブジェクト指向的に書かれたコードはこうはならない。まったく逆だ。)

識別子(クラス名)の意味の周りに当然あるべき識別子(属性や処理)自然に集まっている感覚だ。名前の自然な関係構築。問題領域のオントロジから、素直に類推が効く名前付け。実行時にどう処理が流れるか、ということではなく、世の中はこう組み立てられている、という感覚。これが「ナチュラル」ということではないだろうか。

どこからでも読める、というのは「宣言的」とも言える。コンテキストや順序性をできるだけ廃した形。逆に処理の流れ、というのは「手続的」だ。オブジェクト指向のコードは、処理から構造(メタ)データへと多くの部分が落とし込まれている。意図をなるべく構造へと落としていく。意図を表現するメディアとして、プログラマは幾つかを選択できる。ぼくは、次の順序でこの意図を表現したい。

名前>構造>処理>コメント

ところで、Wardのコードを読んだことがありますか?ぼくは、c2.com で動いている wiki をダウンロードしたことがあります。ダウンロードすると、なんとそれは 400 行の perl スクリプトでした。最初、400行しかなくて、「あれ、ダウンロードに失敗した」と思った覚えがあります。このシステム(wiki)400行で書かれていることに大きなショックを受けました(実際は、HyperPerlから自動生成されたPerlスクリプト)Ward自身は、wikiを「実験」と言っています。このコードがその後いろんな形で亜流を生んだのは、このコンパクトさとコードの読みやすさが大きな理由なんじゃないか、と思います。

※写真は、オリジナルWiki のPerlコードの最初の部分。

平鍋

Special

- PR -
コメント
Akapon 2005/09/13 22:06

「世の中はこう組み立てられている、という感覚」確かにそうですね。・・・デバッグもこういう感覚で出来ると嬉しいですね。


コメントを投稿する
メールアドレス(必須):
URL:
コメント:
トラックバック

http://app.blogs.itmedia.co.jp/t/trackback/77444/2827368

トラックバック・ポリシー


» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

平鍋 健児

平鍋 健児

株式会社チェンジビジョン代表取締役社長、永和システムマネジメント副社長。
オブジェクト指向開発、UMLの勘所、アジャイルな開発手法の未来、マインドマップのソフトウェア開発での利用方法、プロジェクトファシリテーション(見える化)を語ります。現在、マインドマップとUMLの融合エディタ、astah*(アスター、旧JUDE)を開発中。

詳しいプロフィール

最近のトラックバック
カレンダー
2012年5月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
カテゴリー
エンタープライズ・ピックアップ

news094.gif ストレス社会との付き合い方
政府がメンタルヘルス検査の義務化を検討しています。しかしうつになった後だけではなく、なる前の予防も大切なのではないでしょうか。(5/24)

news094.gif 「思いやり経営」のススメ
産学・NPO連携の民間団体が先頃、「思いやり経営」という観点で評価した指標や企業ランキングを発表した。企業のマネジメント力を知る手立てとして注目されそうだ。(5/24)

news094.gif テレワークが労働者のマインドを変える
テレワークが普及すると、労働者の評価は従来の「時間×生産性」から「成果」へと変化する。時間や場所を自分の裁量でコントロールできる変わりに、成果を最大化するために労働をマネジメントする能力とマインドが労働者には必要になる。(5/23)

news094.gif 求む、クックパッド男子
高身長も高学歴も高収入もいらない。私が男性に求めるのは「料理の腕」だけです。(5/18)

news094.gif 37歳の常識――我々は一生学び続ける
学び続けなければ衰退するのみだ。(5/18)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。

Special

- PR -

サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ