10年以上前の時代に戻るだけ
http://d.hatena.ne.jp/nowokay/20100104#1262596755
Webアプリというものがたまたまはやっただけで、言語や開発環境としては異端。それがおいらの考えです。Webアプリしか勉強してこなかった人たちがいるとしたらものすごく怖いかなという感じで。
あと、WebアプリでIDEを使わないとか動的言語が当たり前という風にはおいらは捕らえていません。仕事で開発する場合、大概IDE等開発環境があるはずです。使っていない場合というのはまずほとんどお目にかかったことがありません。
個人的に思うのはWebアプリは他人の目に付きやすいという点です。社内システム等はほとんどのところは閉じた空間でしょう。どんなに使われていても目立つことは無いのです。ですが、Webアプリだとそれをさわって公開している人がすごく目立つ。個人的にはAccessやVBやC/S系のシステムなんてまだまだ大量に、下手するとWebアプリより多いくらい使われていると感じます。大手は管理コスト下げるほうが大事ですからわかりますが、中小ではそうではないですから。かえって管理費が高くつくことも多いはずです。
今まではexe等をさしかえることによって手軽にバージョンをあげたり、コピーすればバックアップ完了というデータベースファイルとかはやはり便利なものです。EUCという観点からも推奨したいくらい。ユーザーがシステムに使われているのではなく、自分が運用しているんだということで意識が結構変わるんですね。Webアプリだとよくわからないのでおまかせしますという感じになりやすかったです。
あーこれじゃ退化してるじゃないかと。ユーザーががっつりと積極的に触ってもらえないとシステムは失敗しやすいんですよね。ちゃんとバグ無く作ったし、出来はいいけど使われてねーとか。
あとWebアプリって言葉がものすごく広い気がする。動的コンテンツに怪我は得たようなものも企業向けのコンテロールが大量なシステムもすべてWebアプリ。後者をStrutsとかRailsで作ると大変でしょう。定型的なものはJSFなどのイベントベースでやらないと。
そもそも言語やフレームワーク以前の問題も多いです。actionとかいうパッケージにアクションがだらだら並んでいるのが開発効率がいいとは思いません。少なくとも後でメンテする人はしにます。特定のアクションで必要なViewヘルパー等のその他のクラスをどこに置くか悩んでしまうからです。結果、ひとつのクラスが肥大化したりします。これは完全に間違いだと声を大にして言いたい。ひとつのアクションで必要なのはひとつのアクションクラスだけではないはず。こまごましたクラスを置く場所が明確になっていないのは失敗する構造だと思います。
…
なんかまたいつものように話が大きくそれてしまいました。話を戻します。
変化後はこうなるって図はまさに10年以上前のアプリの姿そのままです。
サーバー側にはOracleなどがありました。クライアント側にはAccessやParadoxデータベースがあり、そのデータベースと入力フォームがリンクするものでした。保存した時等にサーバーとの動悸を行うわけです。DelphiやC++Builderを使ったことがある人はキャッシュアップデートとかいうと話が通じやすいと思います。
C/Sとの違いはクライアントがOSネイティブなバイナリだったのに対してブラウザになり、配布が容易になったこと、サーバーに直接DBアクセスをしないでアプリケーションサーバーを経由することです。AP鯖をおくってのはいわゆる3層式ですね。ここの開発は従来のWebアプリとかわりませんのでバックエンドの人材確保は容易でしょう。
問題はフロントエンドです。でも、AccessやVB、Delphi、C++Builder、NetBeansなどぽとぺたでGUI作るの普通でしたよね。ここをjavascript等でもできるように用意してクライアントストレージとのマッピングやバリデート、サーバーとの同期処理つくるだけですから難しくないですね。
現実的にはGWTしかないでしょう。javascriptでDojo直はきついものがありますし、jQueryは既存のHTMLを便利に使おうって程度であって、コンポーネント化からはほど遠いです。javascriptで上記をやるのはおわってますが、Javaなら10年以上前にC等で通ってきた道ですからすんなりいけます。
ほんの少し昔に戻るだけですね。何も難しいことは無いはずです。GAEの特有の問題のほうが100倍は難しいし、現在のWebアプリのほうが難しいです。Ajaxがからまない画面丸ごとsubmitしていた時代ならともかく、複雑なGUIが求められる状態で生産性をあげるのは限界がすぐにきます。
コンポーネントベースになればそれがすぐに解決するのです。生産性がC/S時代に比べて異様に悪いWebアプリ時代はさっさと終わってほしいとみんな思ってることでしょう。