« Googlebot | メイン | AWStats6.2以前にセキュリティホール »

2005年2月 9日

私のプログラムの作り方

カテゴリー: [プログラミング]

しばらく,研究のシステムの開発がなかなか進まなかったんですが,やっと今日あたりから進み始めました.設計以前に要求の詳細が決まらなかったので,全然書けなかったんです.設計の大枠が決まって,勢いがついてくるまで,どうしても時間がかかります.

私は,プログラムを書くとき,設計はしても,いわゆる設計図は書きません.頭を整理するために個条書きにして書き出したり,ちょっといたずらがきをするだけです.
私はもっぱらJavaを使うわけですが,Java の場合,interface を書いていけば,そのまんま詳細設計のようなものです.わざわざ,設計図を書く必要なんてありません.
机上で書いた設計図なんて,実際のコードを書くときは実装の都合で変わるわけで,丁寧に書くだけ時間の無駄です.実態(ソースコード)と食い違った設計図なんて,百害あって一理無しです.じゃあ,一致させればいいのかといえば,それはとてつもない労力でしょう.
# とかいって,大学生の時に,そういうツールを研究したことがありましたけど.あのころは違う考え方だったので.
前の指導教官には,よく設計図無しに書けるねと,しょっちゅういわれたものですが,確かに私はものぐさですが,いい加減だからこうしているわけじゃないです^^;
よほど大規模でない限り,すくなくとも最初に書く設計図は必要ないと思います.

設計をする人間と実装する人間は別である,ということがほとんど当たり前とされていますが,設計ができない人間が実装しても,設計者の意図を読めるわけもなく,実装できない人が設計図を書いても,実装しにくい設計ができるだけだと思います.じゃあ,両方できる人が,それぞれ役割分担すればよいかといえば,そんなのは無駄なわけです.

ちなみに,私はコメントもほとんど書きません.interface にJavadocコメントを書くだけです.どんどんコードを書き換えるのに,コメントも一緒に直すのは面倒この上ないからです.ただ,トリッキーなことをしているところには,その理由を書くことはありますけど.

いわゆる私の作り方は,最近の流行っぽくかっこよくいうと,アジャイル(agile)的な開発という奴に分類されるんでしょう.それを意識してますし.ただ,合理的だとは思っていますが,どこでも簡単に適応可能な方法とは思っていません.いろいろな意味で,人を選ぶ方法でしょう.規模も選ぶと思います.

ただ,こういうアジャイルは間違っていると思いますが...

@IT:開発現場の天国と地獄(3)

この例は,プロジェクトが燃えちゃったから,アジャイルなやり方にせざるを得なかったというだけのような気がします... 確かに効率がいいですからね.プロジェクトが燃える→人が燃え尽きる→逃げる→会社が消えるって感じですか.私はいわゆる現場を経験していないので,こういうのは伝聞でしかないんですけどね.

ソフトウェア工学の歴史上,いろんなツールが作られてきましたが,結局プログラマがそれを使うのに必要な能力は,少なくなるどころか増えているように思います.結局,人が作っているわけなので.労力は減っても,知識は要求するんですよね(それでも,VisualBasic とかはある程度成功したと思います).
結局,先進的方法ほど,知っている人にしか使えない,できないわけです.当たり前ですが.
人という条件が揃わないと,やっぱりだめなんですよね.

それにしても,エンジニアが足りないっていって,こんなに増やしたのは誰ですか(^^;
まあ,数は必要なんでしょうけど,結局,数だけの問題じゃないんですよね.

ソフトウェア開発を機械的作業に落とすことを目的に,ずっときているわけですが,適応範囲の広い機械化に関しては,できるところはしてしまったんでしょう.最近は,アプリケーションドメインに特化した自動化がほとんどだと思います.Executable UML のように,設計図を書くと「自動的に」実装ができるという技術(MDA=Model Driven Architecture)も,設計図という名のプログラムを書くことになるだけに思えます.まあ,私はMDAに関しては不勉強なんで,もっとすばらしいのかもしれませんが(^^;
個人的には,UMLは,実装の話を忘れてモデルに注力できるから役に立つのであって,実行できるほど詳細なモデルは,意味がないと思っているんですが.
ただ,どこまでできるようになるのか,興味がないわけではないです.

ソフトウェア工学も,いろんな流れがある中で,MDAのような流れと,アジャイルのような流れの 大きく2つに分かれているように思います.どういう風になっていくんでしょうね.単に,棲み分けをするだけになる気がしないでもないですが.私は,当面アジャイルの方でしょうけどね.

うーん.また長い.プログラムだけじゃなくて,文章も短く書く訓練をしないといけないかも...

投稿者 shingo : 2005年2月 9日 00:49

トラックバック

このエントリーのトラックバックURL:
http://isolinear.info/cgi-bin/mt/mt-tb.cgi/41

コメント

コメントしてください

コメントスパム等の対策のために,大量のURLを含むコメント,古いエントリーに対するコメント,連続したコメントなどは,一旦保留されます.




保存しますか?