文化の違いだった

先日、社内の営業と顧客のところに打ち合わせに行った帰り、車中で「ぶいばーSEがWEBシステム開発技術を身につけるときのハードル」についてみたいな話になった。社内でWEBシステムに舵を切るのに二の足を踏んでいるSEたちはいったい何が原因なのか教えてほしいという。
最初は、言語の問題だと思っていた。VBに比べてJavaは難しいという声が多い( WEB系技術へのイメージ〜お歴々の視点〜 - Archit!! 参照)。しかし、最近VBもさせられるようになって、たいして差がないと思い始めた。結局、Javaも基本文法はたいして難しいわけではない。変数、演算式、条件分岐、ループの記法を覚えればそれで何とかなる。
じゃあ、クラスという概念をはじめとする、オブジェクト指向が問題なのかとも思った。確かにJavaの場合はPHPと違い、最初から最後までクラスで管理する。実行するファイルも、classで定義し、中に、mainメソッドを書く必要がある。これには、少し戸惑うところがあるが、それも単なる「記法」として覚えてしまえば、オブジェクト指向の概念がまったくなくてもプログラムは組める(それがいいかどうかは別として)。それに、VBも.NETだと、最初からクラスで作られているし、subやfunctionというメソッドと考えられるものもあるから、差はない。
次に思い当たるのが、HTML。WEBシステムはJavaPHPだけで完結せず、最低限HTMLは必須。通常レベルでもCSSJavaScriptも必要であり、技術の複合で成り立っている。これがハードルを高くしているのは確かだが、最低限を考えると「HTML+Javaなどの言語」となる。つまり、技術習得の初期段階ではHTMLを余分に覚えればいいだけ。先の営業の人はもともとWEBデザイン畑の営業なのでHTMLを知っている。その彼が「HTMLがハードルなんてあってないようなハードルだ」といっていたが、同感だ。VBが覚えられるなら、HTMLなんて単なるタグだからめちゃくちゃ簡単だ。
じゃあ、何がハードルなのか。それを考えていて思い当たったのが、プロトコル
WEBシステムの世界というのは、つまりはhttpプロトコルだ。httpプロトコルということは、requestとresponseの組であり、それ以上でもそれ以下でもない。最近流行のAJAXでもhttpプロトコルを使用しているから、結局、request+responseアーキテクチャ。そう。この、request+responseという「アーキテクチャ」がWEBシステムの最大の特徴であり、全てはこれを抜きには考えられない。通常は、これにsessionを加えて、request+response+sessionというアーキテクチャで全てを構築していく。このアーキテクチャを活かし、開発品質と効率の向上のためにMVC2アーキテクチャを付け加える。
つまり、request+response+session+MVC2というアーキテクチャが最大のハードルであって、原因となるのはVBではなくC/S(クライアントサーバ)アーキテクチャなのだ。
文化が違うのだよ、文化が。
欧米人が日本に来て、畳の上に土足で上がってしまうようなものだ。いくら、「靴脱いでね」と教えても、頭ではわかっていても体がついていかないという世界がある。靴を脱ぐとどうしても気持ち悪いと。癖でうっかり脱がずに上がってしまうと。そういった世界観なのだ。
そして、そこからいくと、逆説的だが、言語、あるいは、より正確に言うと、その言語を支える基盤の問題にもぶちあたる。VB、むしろ、.NET FrameworkVisual StudioというのがC/S用に構築されていて、WEBアーキテクチャには不向きなのだ。そういった基盤から身につくもの、つまり、文化がそもそもWEBアーキテクチャになじまないのだ。
そこを「隠蔽」するためにMicrosoftが考え出したのがASPという技術だと思う。でも、所詮隠蔽にすぎないので、いわば、畳の上にカーペットをひいて土足で上がっているに過ぎない。「いや、靴脱ごうや」とツッコミを入れたくなる。
最近、Microsoftもそのことに気づいているようにみえて、「ASP.NET MVC」なるものがでてきた。これを扱うためにはVisual Studio 2008が必要で、Cドライブが2.8Gしか残っていない私の端末では試せていないのだが、資料を読む限り、本気で靴を脱ぎ始めたのように思う。
ただ、これも、よほどのことがない限り、シェアが伸びないのではないかと思う。ASP.NET MVCを導入する人たちは2パターンあると思う。ひとつはもともと(JavaPHPができる)WEB文化の人間。もうひとつはC/S文化の人間。WEB文化の人間の場合は、もともとJavaなどで組めるわけだから、単なる知的好奇心を除き、特に強制されない限りはASP.NET MVCで作る理由がない。もうひとつの、C/S文化の人間は、時代の流れを感じて、自分たちに近い言語ということでASP.NETに手を出すかもしれないが、MVCそのものがハードルなわけだから、結局身につかず、「もういい!C/Sで作る!」となってしまうのではないか。
つまり、ASP.NET MVCで作ったものでないと受け付けず、しかも、そのプラットフォームを利用しないと先に進めない状況をMicrosoftが作り出さない限り、シェアは伸びないのではないかと思う。Windows Azureはその状況に近いし、そういった意図を感じる。それでも、PHPアプリを受け付けたり、あまり大々的には宣伝していないが、Javaも動作するらしい。さらに、WebsiteSparkというプログラムを行っている。シェア獲得に躍起になっているのだろう。
いまさら、こういった分析をしている時代でもないのだが、情けない話だが社内根回し的には必要なのだ。結論として、

WEBシステムの「技術を身につける」という観点で行くなら、request+response+session+MVCが肝になるわけだから、.NETではなく親和性が高く実績のあるJavaPHP、その中でも変数に型があるJavaがよいのではないか

というのを、上司にアジっておくことにしよう。