元記事: http://blogs.wankuma.com/jitta/archive/2006/09/27/39795.aspx
私は最近になって、仕様書を書くand設計する事の楽しさと重要さを実感しています。
この一年は入門書とにらめっこして、サンプルコードをそのまま記述したり、そのコードを基に独自の加工したり…といった簡単な作業を行うことでプログラムの世界に馴れ親しむ事がメインでした。
それはそれとして大変重要で必要なことであると思っているのですが、大元となる1つの重要なことを多くの入門書がサポートしていません。
それが仕様を決める。設計をするという事です。
自身の経験からの所感からですが、幸いにしてわんくま同盟に参加させて頂くことになり、この一ヶ月の間、何を「伝える」のか?と言う事(問題)に直面することになり、大いに迷ってしまいました。
入門書はその言語の記述の仕方を学んでもらうことを目的とし、背景ではサンプルコードに関して、何を伝えるのか?という目的に従って、しっかりとした仕様と設計がなされています。
その入門書をトレースしただけの初心者(私)は既にいっぱしのプログラマ気取りです。(←これ重要w)
しかしながら、多くの入門書は船の漕ぎ方や操舵の仕方、コンパスの使い方は教えてくれるのですが、目的地を設定することやどの様なルートを辿るべきなのかは教えてはくれていないのです。
ましてや私のような職業プログラマではない人間は、営業が顧客の要望を持ち込むことが無いので、言わば常に地図も無い状態からのスタートです。
いや、私の場合はいきなり大海原に船一艘が航海に出て難破している状態からのスタートなのかもしれません。
「あぁ…何とかしなくては…」この想いで一ヶ月間過ごしてしまいました。
そこで、仕様書や設計書を構築することから再出発です。
これが意外と面白い。
固定の世界地図などではなく、自分の自由に設定した地図です。
目的地を決め、ルートを決め、最寄の港でどの様な積荷を乗せるのかも自由に決めるのです。
そらもう、その時は最高に楽しいです。
さぁ、いざ出航です。目指すは七つの海を制覇する大冒険王! 現代のバスコ・ダ・ガマ か、バーソロミュー・ディアスか?はてさてコロンブスか…!
ずぶずぶずぶ… ぽちゃん…
いや~たまたま今回は、おバカ船長の船が泥舟だったので沈んでしまいましたが、仕様書や設計書がどんなに些細なプロジェクトでも重要です。
あぁ…こんなことなら、わんくま同盟第1回大阪勉強会に出とくんだった…。
ちなみに私の場合のPowerPointを使った手順です。 以下()内は船旅に例えてます。
まずは、やりたい事や実装したい機能をテキストボックスでペタペタと… (船や目的地の決定)
同じような機能は囲ってクラスやライブラリとかにしようかな~なんて思いつつ… (船員や航行方法の決定)
大まかにフローを構築し、それまでのステップでエラーの出そうな所を補強したり… (寄港地や補給物資の決定)
すごく面白いし、実際の工程がスムーズです。
ぜひ今後ここら辺はサポートしたいなぁ~。(Jittaさんを参考にしつつ)