プログラマでありたい

おっさんになっても、プログラマでありつづけたい

ソースの自動生成に関する本質的な違和感

 定期的に出てくるテーマの一つにソースコードの自動生成ってのがあります。
私としては、強く強い違和感を感じます。一言で言うと、自動生成出来るレベルなら、そもそもコードを書く必要がないんじゃないと。Rails等の最近のフレームワークで言うと(Railsが最近のフレームワークかどうかは置いておいて)、自動生成というより決まりきったことはそもそも書かないで済ます方向にあると思います。そこに自動生成のコードで生産性がアップしますよと言われても、違和感ありありです。


私がソースコードの自動生成に否定的な理由は、下記の3点です。
・自動で生成出来るような内容は、そもそもソースとして必要ないのでは?
  自動生成出来るレベルのソースは、ソースとして生成する必要がなくなっています。
  周りくどい言い方ですが、既に定形となっているので機能の一つとして呼び出してしまえば良いのです。


・開発に占めるコーディングと、微調整・デバッグ・テストの比率
  開発フェーズに占めるコーディングと微調整・デバッグ・テスト(含むユニットテスト)の割合の比率を比べましょう。
  コーディングの方が圧倒的に高いとなったら、その開発を見なおした方がよいです。
  特にWebの開発なんて、細かいUIの調整に命を賭けてるといって過言ではないです。
  そんな所に定形機能が出来ますよと言われても、ああそうですかで終わります。

  
・ソフトウェアのライフサイクルにおける、初期開発と保守の比率
  色々な自動生成のソースを見てきましたが、えてして機械的に生成されたコードはヒューマンフレンドリーではないです。
  ソフトウェアのライフサイクルで、初期開発と保守の比率で言えばどちらかが大きいといえば、
  (全うにいけば)保守フェーズです。そこで自動生成のソースを保守する人間の気持ちになってくださいよ。あなた


 一応、自動生成の擁護をすると、人間がコーディングしないといけない領域は間違いなく少なくなっています。昔は1から10まで作らないといけないところが、6とか7くらいまで作らないで済むようになっています。ただソースの自動生成を売りにしているところは、その6から7を自動生成のよく解らないコードを生成しているのです。それは、既にソースとして書かなくて済むのに関わらず。それをドヤ顔して持って来られても、困るとしか言いようがないのです。
 困ったことに、なぜか世の中の受けは良いのですよね。ジオングの足と申しましょうか。


See Also:
超高速開発と聞いて思うところ。或いは、アジャイル開発が目指すところ