未分類

BackboneとGoogle App Engineを使ったClient-side MVC (1/5)

Client-side MVCとは何か?なぜ必要か?

システム業界のではここ10年で次のような構成の変化がありました。

  1. クライアント・サーバ(懐かしのクラサバ)
  2. サーバ側のMVC(Struts、Spring MVC、Django、Ruby on Rails、Grailsなど)
  3. クライアントサイドMVC(Backbone、AngularJS)

history(1)
次のモデルはサーバのMVCでした。クラサバの難点はインストールが大変ということです。1000人規模のユーザがいるとインストールし直しだけでかなり大変です。それに、Windowsのバージョンがわずかに違うだけで意味不明な不具合が起こり、眠れない夜が増えていくことになります。その問題を解決したのが、ViewもControllerもサーバ(APサーバと呼ばれます)側に置いて、HTMLで画面を作ってブラウザに送るだけにしようと言うコンセプトです。今の主流はこれでしょう。多くのシステムがSpring MVCやRuby on Rails、Grailsなどで作られていると思います。実は、この歴史はFat ClientとThin Clientの綱引きと言えます。最初のモデルである、クライアント・サーバでは、クライアント側をVBやDelphiで作り、サーバとのやりとりはSQLで行うというものでした。つまり、ViewやControllerの働きはすべてクライアントでやってしまい、データベースだけはサーバに置いてSQLで通信するというものです。(余談ですが、私はDelphiが大好きで、あのフレームワークを超えるものはないと思ってるくらいです)

さて、最後のモデルがクライアントサイドMVCです。人間の欲望とは留まるところを知らず、普通のHTML+CSSにちょっとJavascriptで動きを出すだけでは物足りなくなってきました。あのクラサバのような動きをブラウザで再現したい!と贅沢になってきました。求める人がいれば与える人がいるものです。その望みをGoogleが叶えてしまい、Google MapやGMailという形で実現してしまいました。技術者にとってはクライアントサイドMVCというイバラの道を進むことになってしまいました。

クライアントサイド開発の問題は、Javascriptを使って開発を行うのですが、この言語はカオスになりやすいということです。大規模な開発を目指して作られた言語ではないので、型もないしコンパイルもない。だからこそMVCフレームワークなのです。これがあれば少々変なことをしても壊れない。それにフレームワークに従えば多くの開発者が理解できるように成ることです。今回はBackboneというMVCフレームワークを使って、どうやって開発を進めるかを解説していきます。

まとめると、人間の欲望は果てしないということです。インストールが面倒くさいと誰かが叫ぶと技術者はサーバサイドMVCを作り出し満足させました。しかし、今度はクラサバみたいに動かしたい!と誰かが叫びました。そして技術者はそれに答えるべくクライアントサイドMVCに足を踏み入れました。きっと将来はこれの反動で、サーバ側を統一せよ!みたいな流れになるんじゃないでしょうか。

 

サーバサイドに何を使うか?

clientmvc
サーバ側との通信はRESTを使い、サーバ側にはViewがありません。Viewはクライアントによって作られるので、サーバ側は要求されたデータを送り返すだけでいいのです。(たまに長時間かかる処理などを依頼しますが)クライアントMVCを使ったシステムの全体像は上図のようになります。クライアント側、すなわちブラウザではModel、View、Controllerがあり、Modelはデータそのもの(エンティティと言うべきか)を管理し、ViewはHTMLやCSSを管理し、Controllerはユーザの入力(キーボードやマウス、タッチなど)に応じて処理を行います。

では、サーバは何を使うか?それはタイトル通りGoogle App Engineです。他の選択肢としてはSpringなどを使ったJavaのサーバ、Railsを使ったサーバもあるでしょう。DBとしてはMySQLあたりを使っていれば無難じゃないでしょうか。

しかし、Google App Engineを使えば次のような大きなメリットがあります。

  • 無料!(もうこれだけで十分かも)
  • DBの準備が不要、GoogleのBig Tableが用意されている
  • キーワードによる検索が標準装備
  • Map Reduceを使った分散処理が使える
  • 負荷分散やキャッシュなどが充実している

GAE(Google App Engineのことです)の使い始めは慣れなくてついJavaに戻りたく成る時もあるでしょう。しかし、長い目で見ると、あとで検索を作ったり、負荷分散を考えたりするのは非常に大変です。しかも大規模になった後に根本からの改造は死にます、マジで。というわけで、次からはGAEとBackboneを使った開発を具体的に紹介していきます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です