使い捨てのプログラム
システム開発において、設計・製造・テスト・保守フェーズで一時的なプログラムが必要になる時が多い。
例えば、、
・画面項目から、大まかなDB定義書を作り出す。
・仕様書からプログラムのテンプレートを吐き出す。
・テスト仕様書からJUnitのテンプレートを吐き出す。
・JUnitからテスト仕様書を生成する。
・テストデータ、DB仕様書からSQL文を生成する。
・既存システムにあるソースから、調査時に必要な情報をGrepする。
・既存プログラムからCRUDしているテーブルとソースの対応表を作る
などなど。
結構、力仕事でカバーしていませんか?
【何故、使い捨てのプログラムが必要か?】
システム開発の現場では、結構、頭を使わないルーチンの力仕事は多い。
Javaを使ったWebシステムであろうと、結局、Javaを書いているよりも、PerlやVBAを使う方が多い時もある。
特に、仕様書を作る時や、設計時に既存プログラムを調査して仕様を決める時に、使い捨てのプログラムによって作業を速く正確に行えるかどうかは、設計の品質そのものに響く。
一時的に使うだけだが、作業効率を上げるために大変重要。
これらのプログラムは、使い捨てのプログラム。
プログラムそのものも、インターフェイスをきちんと考えて作る必要はなく、とにかく速く作ることが最優先。
だから、きちんと書く必要はない。
【プログラミング言語は何を選ぶか?】
Excelの仕様書を自由自在にいじるために、結局、VBAが必要になる。
基本は、マクロで基本操作をなぞった後、プログラムをカスタマイズすることが多い。
テキスト処理には、色々あるが、やっぱりPerlが一番簡単。
Windowsなら、ActivePerlかCygwinを入れればいいだけ。
Perlなら、Cライクに書けるし、あんまり深く考える必要がない。
今なら、Rubyを選択する人が多いかな?
WinOLEでExcelも扱えるし、正規表現も使えるし。
でも、Rubyで書いた時、Perlよりも短く書けない。
たかがGrepや一括置換したいだけなのに、たいそうなプログラムを書かざるを得ない。
まだRubyに慣れていないせいもあろうが。。
【プログラミング言語は2種類ある】
言語には、型チェックが厳しい重量級プログラミング言語と型チェックが甘い軽量言語(Light Weight Language)の2種類があるように思う。
前者は今なら、Java、C#、Cとか。
後者は、VBA、Perl、Rubyとか。
型チェックが厳しいプログラミング言語は、品質最優先の業務システムが向いている。
開発スタイルもドキュメント志向で、重量級プロセスになりがち。
型チェックが甘い軽量言語は、速く作ることが最優先のWebサイトが向いている。
更には、テキスト処理などの定型的なルーチン作業で威力を発揮する。
この2つのプログラミングの感覚は大きく異なる。
重量級言語は、プログラムを育てていく感覚。正確さ、丁寧さが大事な感覚がある。
設計では、「疎結合」「コンポーネント志向」を重視するから、リファクタリングなどで品質を保持することが優先される。
軽量言語は、使い捨てのプログラムを早く作る感覚。正確さよりも、早く作る方が大事な感覚がある。
「3年で陳腐化するWebサイトの構築には軽量言語のほうが向いている」記事では、逆に「密結合」「非コンポーネント志向」が良しとされるようだ。
重量級言語と視線も動機も正反対な所が面白い。
どちらが良いというよりも、向き不向きがあるだけ。
【使い捨てのプログラムを書く能力の重要度は高い】
システム開発の現場にいると、大抵の優れたプログラマはツール作りが上手い。
ルーチン作業を自動化するために、使い捨て感覚でプログラムをすぐに作ってしまう。
後で、そのツールが重要になってきて、後でメンテナンスするようになる時も多い。
使い捨て感覚で作っているからメンテナンスしにくいのかと思ったら、優秀なプログラマだけあって、実は読みやすく再利用しやすい時が多かった。
Javaなどのオブジェクト志向言語をマスターするのも重要だが、使い捨てのプログラムを書けるだけのプログラミング能力も重要ではなかろうか?
【最近の傾向】
RubyOnRails などを見ると、Webシステム開発そのものも使い捨てを念頭に置いて開発する必要性が多くなったのではないか。
知り合いのアジャイラーが、プログラムが使い捨てで良しとされるのは感覚が違う、アジャイルと同様にプログラムを育てていく感覚が大事なのに、と言ったことが気になる。
システムをスクラップ・アンド・ビルドで開発しても良しとされるケースが増えてきているのかもしれない。
特に、Webシステムはスピードが速すぎるから。
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- TwitterやFacebookは人力キュレーションツールとして使う(2022.10.02)
- 「現代病「集中できない」を知力に変える 読む力 最新スキル大全」の感想(2022.08.28)
- 人類は海辺から生まれた~水生類人猿説が面白い(2022.08.09)
- 戦前の日本人の気質はまだ成熟していない青年期と同じだった(2022.06.14)
- 物理学を攻略するためのマップ(2022.04.18)
「プログラミング」カテゴリの記事
- Javaのモジュールシステムの考え方をまとめてみた(2022.10.21)
- Javaのモジュールシステムは複雑性をより増している(2022.09.10)
- Javaはなぜ関数型言語になろうとしているのか(2022.09.02)
- Javaのラムダ式の考え方(2022.08.10)
- Javaはオブジェクト指向言語ではなく関数型言語だった~「[増補改訂]関数プログラミング実践入門」はお勧めの本だ(2022.08.06)
コメント