大規模webシステムは大規模アプリでは無い(2)

(つづき)

まず、スタンドアロンなアプリとWebアプリとの違いを簡単に考察しておく。
ゲームとしてはアクションゲームなんかが比較として良いかも知れない。


アクションゲームをMVC*1アーキテクチャとして捉えた場合、Mはそれほど複雑ではなく、V(画面表示)が非常に手が込んでおり、また、Mのデータ同士が並列的に干渉しあう。(敵キャラクターは他の敵キャラクターと相談してプレイヤを攻めてくる、など) また、OOPとして捉えた場合、あるタイムスライスにおける生存しているオブジェクト数は数百から数千ぐらいであると思われる。


これに対して、WebアプリはMVCとしてみれば、Vはさほど凝っておらず(htmlは単なるテキストなので)、Mもそれほど複雑な干渉の仕方をしない。その代わり、画面ごと(例えば、トップ画面、編集画面、コメント記入画面、プロフィール登録画面etc..)にVが必要になる。アクションゲームにおいても、タイトル画面、ステージ選択画面、メイン画面のように画面ごとにVは必要になるので、その部分は共通と言えば共通なのだが、Webアプリの場合、画面数が多く、画面自体がシンプルで、画面ごとにひとつのphpファイルが対応すると考えると、ひとつのVのコード自体はさほど大きくない。また、OOPとして捉えた場合、あるタイムスライスにおける生存しているオブジェクト数は多くとも数十程度だと思われる。


こうして考えると、オブジェクト間の相互干渉によってゲーム世界が進展するアクションゲームと、オブジェクトがほとんど干渉しない(干渉させない)まま、V(それもコード自体は極端に小さい)をどんどん構築していくタイプのWebアプリとでは、再利用性に対する考え方が異なるのは当たり前である。保守性に関しても、Webアプリの場合、Mの設計(DB設計)部分などはあとあと“利いてくる”ので、慎重にならざるを得ないが、Vに関しては書き捨てに近い。その書き捨てに近い部分に保守性がどうの言う議論をするのは無駄なようにも思える。


だから以上を踏まえると(以上のような視点に立つならば)『LLじゃない言語だったら大規模な開発が破綻なくできると言うことなんでしょうか?』と言うとNoだろう。LLである/ないとは無縁のいくつもの大きな問題があるからだ。だけど、それらについてひとつひとつ議論した上でないと安易に結論を出すべきではないと思う。そんなわけで、今回はここまでにしておく。


参考 : 500万倍のスケーラビリティ

*1:Model-View-Controller