大規模「Web」アプリケーション

私は、たとえば著書の中で、「データ構造が重要だ」ということを腐るほど言ってきました。
そして、私にとっては同じ論理の延長にあるのですが、「プログラミング言語には静的な型付けが必要だ」という主張もしました。プログラムのデータ構造を表現するのはCならヘッダファイルの構造体定義だし、Javaならクラスの定義なのであって、コードの実行部の詳細を読まなくても、型の定義を見ればプログラムの構造が把握できる、というのは、人間の脳の記憶容量に限界がある以上、特に大規模プログラミングでは必須の特性だと思えるからです。

…という主張をひっくり返すようでアレですが。

バカが征く 2007/6/14

でもさぁ、世界中の人たちが今日も動的言語で仕事を
してることを思えば、「動的言語で大規模システムは
ムリ」なんて、どこにも根拠はないよな。

たとえばPHPだったとして、そのユーザは数十万いるって
いわれてるんだっけ? その人たちはPHPっていう動的言語
それはライブラリも含めた実行環境であるわけど、それを
使って仕事してるわけじゃん。つまり、PHPっていう1つの
動的なシステムを数十万っていう人たちが使ってるわけ
じゃん? それって十分大規模だと思うけど? で、その人
たちが毎日のようにDuck Typingのコンフリクトに悩まされて
るとか、ライブラリの使い方を間違えてるとか、そういう
ことがあるわけ? そんなんだったら今のWebサイトなんて、
どこも破綻してるっつの。

ええとあれだ、大規模開発の難しさは、大規模なシステムを「矛盾なく」作り上げることなので、数十万のPHPユーザが、「それぞれ独立したシステムを」「合計で」何億行作っていたとしても、「PHPは大規模に使える」ことにはならないと思うんですが、それはさておき、それなりに大規模なWebアプリケーションが、PHPやらPerlやらの型なし言語で作られている、というのは事実でしょう。

アマゾンはperlでできている - Javaジャバ言ってる間にも(7)

さて、かくいう私自身、以前はCADとかそのへんのシステムを作ることが多かったのですが、最近は時代の流れなのか仕事はWebアプリばかりです。そして、私のまわりでは、言語はたいていJavaとかC#なのですが、じゃあこのへんの言語を使って、データ構造が明確に表現できるから嬉しいか、というと――Webアプリケーションではめぼしいデータ構造はみんなRDBMSの中にあるから、静的言語のメリットは薄れるように思います*1
Webアプリケーションでは、継続して保持されるデータなんてセッション程度なもので、これは普通そんなに大きなものではないし、そうそう長期間保持するものでもありません。よって、Webアプリでは、いくらトータルの行数が多くても、それら全部に縦断して影響するのはテーブル定義であって、それさえきっちり定義されていれば、あとは画面ごとに「小規模な」プログラムをゴリゴリ書いていけばできてしまうものではないかと。
もちろん静的型のメリットは「データ構造を表現できる」ことだけではなくて、なんかの都合でメソッドに引数足したときとかコンパイラが影響箇所を洗い出してくれるといったメリットもあるのですが、Webアプリ(ていうかRDBMSにデータを全部保存する業務系アプリ全般?)では、相対的に重要性が薄れるというのは確かだと思います。
Webアプリが重要になるのに呼応するかのようにLLが注目されているのは、こんな面もあるのではないか、と思ったり。

*1:SQLインジェクション対策になるとか、別方向のメリットはありますけどね。