日本語でプログラミング
今度、私が参加することになったプロジェクトは、
前のプロジェクトとは対極な感じです。
以前のプロジェクト
- 要求仕様がめちゃめちゃ難解
- プログラミングも難しい
- 仕様書は基本設計書以外は無かった
- 後からリバースエンジニアリング的に仕様書を作っていった
- 少人数(だけど、私以外はスーパーマンみたいなSEばっかり)
他の会社で開発に失敗したので、全部捨てて作り直すという、なんともヤバイ感じのプロジェクトでした。
何が何でも半年後に本番稼動させないといけない!ということで
細かい設計書はまったく起こさず、とにかく作りました。
実装は各人のスキルにおまかせで、ガンガン作りました。
なんとか本番稼動はしました。
しかし、保守・運用のコストはものすごく増えたと思います。
ちょっとした改修が入る場合でも、ソースを洗いざらい読まないと直せない状況が後々深刻化したからです。
1行の処理を追加するだけで、既存処理を必死に調査して、ひたすらテストして、それでも悩みに悩んで1ヶ月かかったりとか。
なんとも辛い思い出ばかりのプロジェクトでした。
今度のプロジェクト
- 仕様は簡単で明快
- プログラミングはまあ、誰でもできるレベル
- 仕様書は最初にとにかくたくさん作る
- 大人数
時と場合によって、開発の手法は変わるものだなあと思いました。
今度のプロジェクトで凄いと思ったのは、
プロジェクトリーダーが開発開始前に、
「ソースが仕様書」というのはやめましょう!
と、きっぱり言ったことです。
実際、リーダーが言った通り、
基本設計、外部設計、詳細設計、すべての階層で、仕様書がメンテされ続けていました。
コードだけが直されて、仕様書が直されていないということが、とりあえず確認した範囲ではありませんでした。
詳細設計は、ほとんどプログラミングに近い内容を、Excelシートの上に書いてます。
日本語でプログラミングしている感じです。
日本語でプログラミングしてはいけない理由
で語られていることをまさにやってます!
かなりめんどくさいことをやっているには違いないです。
1クラスが1つのExcelファイルに対応します。
1個前のバージョンから、修正・追加した箇所を赤字で書いていきます。
修正・追加の履歴を完璧に残すことが要求されています。
それぞれのExcelファイルにはIDが振られるので、個人的な判断で勝手にExcelファイルを増やすことはできません。
(=勝手にクラスを追加できない)
非効率なことをやってるのには違いないんですが、大人数で均一なものを大量に作る手法としては
アリかなと思いました。
実際、かき集めてきた人員で、教育コストをあまりかけず、均一なものを作れています。
大人数でそれぞれが好き勝手にコード組んでたら、十人十色で、色んな手法でプログラム組みますよね。
あるひとつの処理を実装する手段は、無限にあるわけなので。
日本語でコードレベルに近いところまで全員が落とし込んでから、実際のコードを組み始める。
これはやってみると不思議な感覚がしました。
仏像を彫る仕事をする仏師は、木の丸太の中で、仏像の姿が完全に見えてから、彫り始めるといいます。
仏師は、仏像の周りに存在する余分な木を削って、丸太の中から仏を取り出してあげるだけなんだそうです。
そんな感じ。
詳細設計が完全に落とし込まれていると、
プログラムはすでにどこかで出来上がっていて、そこに全員が向かってコードを打ち込んでいる
コードの姿は、無限にあるわけではなく、
たったひとつしかない
そんな感覚がしました。
プログラムの実装方法が無限にあるのは、ときにデメリットになります。
多人数で均一なものを作るためには、実装方法に制限を加える必要があります。
フレームワークは、プログラマの自由度を下げて「枠にはめる」ためにあると言えなくもないです。
「Excel上で日本語プログラミング」は、そういうフレームワークと同質の役割をしてくれたりします。
以前のバージョンの詳細設計書から、修正履歴を完璧に残すことを要求されている関係上、
以前のバージョンの仕組みから、大幅に外れたものを作ることは、すっごくめんどくさいわけです。
仕組みを踏襲して作らないと、たくさん日本語を打って仕様書を直さないといけなくなるので、めんどくさいわけです。
リファクタリング?
コードを変えると、仕様書にも直しが大量に発生するので、リファクタリングなんてやりたくありません。
「リファクタリング」じゃなくて「手戻り」と言いますw
リファクタリングしないですむためには、どうすればいいかを最初から必死に考えます。
「こういう実装の方が、コンパクトでエレガントかつ高速に組めるゼ!」
っていうような一人よがりなコードで
プログラミングテクニックを披露するかのような、すごいオレオレコードを組んじゃう人が
たまに居るんですけど、
Excel上で日本語プログラミングしてると、
そういうのは無くなります。
日本語でプログラムレベルの仕様書を書いて、かつ、改修の変更点をきっちり反映させ、履歴管理もきっちりできたら
- どうしても、以前のバージョンを踏襲した作りになります。
- 誰が作っても大体同じになります。
- 平易な組み方になります。
- よーく頭のなかで考えます。
- 場当たり的に作っていくのは不可能になります。
- 既存の共通処理で使えるものを使わずに、勝手に共通処理を新しく作ってしまうことが無くなります。
- ドキュメントをよーく読むようになります。
すごくコツコツしたドキュメント作成の作業になるんですけど、
全員がたったひとつのプログラムの姿に向かって作っているという感覚は
悪いものじゃないです。