mvcConf @:Japan パネル・ディスカッション

人気のASP.NET MVCエキスパートが語るMVCの魅力と実践

デジタルアドバンテージ 一色 政彦
2011/06/29
Page1 Page2 Page3

2. ASP.NET MVCと組み合わせる周辺技術の選択指針

――本セミナーの開始時に話が出ましたが、最近の@ITではスマートフォン開発の記事のニーズが高まっています。年内には日本でもWindows Phone 7が投入されるという話もあります。ですので、当然、スマートフォン向けのWeb開発でMVCを採用したいという開発者は少なくないと思います。そこでお聞きしたいのですが、PC向けとスマートフォン向けでMVC開発に違いはあるのでしょうか? 芝村さんはスマートフォン向けの開発の経験はありますか?

芝村 わたしはフィーチャーフォン、いわゆるガラケー向けのWebシステムの開発経験はあります。ガラケーやスマートフォン向けのWebアプリケーションの場合、転送量や回線の速度を考慮する必要があります。Webフォームでは巨大なビューステート(ViewState)を出力することがあるので、特に「HTMLコードだけで15Kbytesまで」といった制限があるガラケー向けのWebページでは、ビューステートが問題になることがありました。そういったガラケー向けであれば、MVC以外に選択肢はないと思います。

 PC向けに関しては、わたしはMVCが大好きなのでPC向けでもMVCを使いますが、実際には使い慣れた方を使えばよいと思います。

――MVCには、Razor記法をはじめ、ASPXなど、さまざまなビュー・エンジンが提供されていますね。そういったビュー・エンジンの向き不向きや使い分けの基準はあるのでしょうか?

長田 タイプ量を減らしたい人にはRazor記法をお勧めします。スキャフォールディングを使ってさっとビューを表示したいだけであれば、ASPXを使ってもよいと思います。具体的には、竹原さんのセッションで行われたデモや芝村さんのミニモバのデモで長いコードでビューを作成されましたが、そのような長いコードはASPXで記述するよりもRazor記法で記述した方が楽です。

 もちろん、ASPXを使うメリットは全く無いというわけでもありません。実際のMVC開発で活用している人が本当にいるのかはさておき、ビューのプレビューをVisual Studioのデザイン・ビューで確認できることはメリットです。

――Razor、ASPX以外のビュー・エンジンを使われている方はいらっしゃいますか? その特徴も教えてください。

竹原 貴司 氏

竹原 趣味でStringTemplateを使いました。StringTemplateは、データに合わせて整形したHTMLコードなどを出力するテンプレート・エンジンで、Java版からC#、Python、Rubyとさまざまな言語に移植されています。これは過去に自分が使ったことがあるので、そのスキルを生かせるメリットがありました。このように、一番自分にしっくりとくる、頭の中でコーディングをイメージしやすいビュー・エンジンを使えばよいと思います。

 Webフォーム開発の経験が長くて「<%〜%>」という書き方が一番しっくりくるならば、それを使えばよいのです。ASPXを使ってもVisual StudioのIntelliSenseなどがコーディングをサポートしてくれるので、それほど気にならないのではないかと思います。

――スマートフォンにも関係がある話題ですが、MVCのビューのUI技術として、次世代のHTML5を使うか、従来のHTML 4を使うか、あるいはSilverlightを全画面やパーツとして使うかの選択指針はありますか?

 あります。クロス・プラットフォームかどうかが最初の大きな選択基準になります。例えばスマートフォンからのWebアプリケーションの利用を考えた場合、ターゲットとして主にiPhoneとAndroidとWindows Phone 7が挙げられますが、Silverlightではクロス・プラットフォーム対応といっていても、実質的にWindows Phone 7とPCがターゲットになります。しかしどの環境で実行しても、原則的にほぼ同じ動作になるので、テスト・検証作業の手間が少なくて済みます。しかもネイティブ寄りのリッチな機能が使えます。

 その点、HTML5は完全にクロス・プラットフォームです。しかしHTML5はその利点の一方で、ネイティブ機能が使えなかったり、Webブラウザごとの実装の差異に影響を受けたりします。

 例えば受託開発で、スマートフォンとしてWindows Phone 7、PCとしてWindows 7を推進してお客さま向けのシステム開発を行うのであれば、Silverlightを使うのがベストです。片や、「ゆくゆくはWebアプリケーションを世に広めたいが、まずはiPhone向けのWebアプリケーションを開発する」というのであれば、HTML5をお勧めします。もしこのとき、例えばObjective-Cでネイティブ・アプリケーション(=iPhoneアプリ)を開発してしまうと、ほかのOS向けに横展開して長期間保守することになったときに余計な手間が増えてしまいます。

――HTML5のついでに話題に挙げておきたいのですが、先日、「Windows 8」(=あくまでコード名)の概要が発表されまして、そこで「HTML5ネイティブ・アプリケーション」という新しいプラットフォームが登場することが分かりました。そのニュースだけ見ると、世界中の.NET開発者に大きな衝撃を与えたようで、米国のMSDNフォーラムを中心に「Silverlightの開発は主流ではなくなるのではないか」という趣旨の発言や質問が相次ぎました。マイクロソフトの井上 章さん、ここらでその誤解を解消するためにも、コメントをいただけないでしょうか?

井上 業務システム向けには、今後、Visual Studio LightSwitchが提供される予定で、そこではSilverlightで開発します。Visual Studio LightSwitchの良いところは、ほぼノーコーディングでデータベースにアクセスしてテーブルを表示したり、レコードを編集したりできることです。このような形で、まだまだSilverlightは重要な技術であることは間違えありません。

 ただし、コンシューマ系のクライアントサイド開発の方向性としましては、HTML5&CSS3が重要な技術になってきています。先ほど話に出てきたWindows 8だけでなく、Windows Phone 7のIE9ブラウザなどを見ても、やはりコンシューマ向けではマイクロソフトとしても重視・推進しています。

 Silverlightは無くなるわけではなく、すでに次期バージョン5が発表されていますし、LightSwitchに代表されるように業務向けのビューを作成するのに便利なプラットフォームに進化していく予定です。

 ちなみにWindows 8に関する情報はまだほとんど出てきていません。詳細は、今年の9月13〜16日に米国で開催される「BUILD」で発表される予定です。

――ありがとうございます。話を戻しまして、MVCと組み合わせると便利な技術/ライブラリについてお聞きしたいと思います。小野さんが開発されているWebシステムでは、どのような外部技術を組み合わせて使っていますか? 例えばjQueryなどは使っているのでしょうか?

小野 特別な使い方ではないですが、非同期処理などの部分でjQueryを使ったりはしています。

竹原 jQueryはやはりお勧めです。jQuery UIなどのプラグインも便利です。例えばカレンダを表示したいときには、jQuery UIを使うとその開発の手間が省けるので、開発生産性は向上します。

――UIの話はこのぐらいにしまして、少しデータベース・アクセス技術(以降、DB技術)について質問させてください。わたしの感触では、MVCと組み合わせるDB技術はEntity Frameworkと決まっているように感じます。実際には、それ以外のデータセットなどのDB技術は使えないのでしょうか?

長田 会社で使うデータベースがOracle DatabaseかSQL Serverかによって答えが違ってきます。Oracle Databseの場合は、ODP.NETのデータセットを使うか、WCFでラップするなどの工夫が必要になります。Oracle社がEntity Frameworkを提供するという話もありますが、まだベータ版提供の状態で、正式リリースがいつになるのか分からない状態です。個人的には早くリリースしていただきたいですが。SQL Serverを使っている場合は、わざわざデータセットを使わずに、素直にEntity Frameworkを使えばよいと思います。

――Entity Frameworkでは、コード・ファースト/モデル・ファースト/データベース・ファーストとさまざまなDB開発のスタイルが採用できますが、その使い分けはどうすればよいのでしょうか?

小野 現時点では、これら3種類の開発手法がすべて実践できるようになりました、という状況です。現時点で使い分ける基準を示すとすれば、まずはすでにデータベースが存在するか、新規に作成するかの違いを意識してください。データベースが既存であればデータベース・ファーストを採用できますし、新規に作成するのであればモデル・ファーストやコード・ファーストを採用できます。

 モデルからデータベースを作成したい方がどのくらいの割合でいるのか分かりませんが、個人的にはモデル・ファーストで開発するのは苦手です。新規開発であれば、プログラマーとしてはコード・ファーストが一番楽しいかなと思います。

――話は変わりますが、芝村さんのセッションで説明されたNuGet(「ヌゲット」もしくは「ニューゲット」と読む)を活用すると、どういうメリットがあるのでしょうか? なぜ芝村さんはNuGetがそんなに好きなのですか?

芝村 達郎 氏

芝村 いま、あらゆるWebサイトでソーシャル・サービス(例えばTwitterやソーシャル・ブックマーク、Facebookなど)の対応が求められています。実際の対応では、いくつかのJavaScriptコードをHTMLコード内に貼り付けるだけで対応できることがほとんどです。場合によっては、特別なJavaScriptコードを記述する場合もあります。しかしこのような定型作業は、毎回繰り返すのではなく、「ヘルパー」と呼ばれる再利用可能なパッケージとして公開されているものを使った方が開発効率は高まります。NuGetを使えば、このようなパッケージを誰もが利用できるだけでなく、自分で作ったものを世界中に向けて公開することもできます。そこが魅力です。

――業務系Webシステムで、NuGetを利用する場合は、どういう使い方になるのでしょうか?

芝村 先日、正式リリースされたASP.NET MVC 3 Tools Updateで、jQueryやModernizrなどのライブラリが標準でインストールされるようになりました。これらのライブラリは業務アプリケーションでも役立ちます。NuGetで追加パッケージを導入しなくても大半のMVC開発は行えます。それでも不足しているものを、個別のプロジェクトの状況に応じて導入するような使い方になります。

――勇さんは業務系Webシステムにも詳しいと思いますが、NuGetをそういう現場で使う場合に問題はありますか?

 開発規模が大きいか小さいかによって答えは違います。最初の個人レベルの開発段階で、コードをブラッシュアップしていくようなときにNuGetにより開発生産性が高まるのであれば、ぜひ使うべきです。しかし最終的に開発者全員でそうして開発したアプリケーションのコードを共有する段階になると、プロジェクト管理やバージョン管理上の問題が浮上する可能性があるので注意が必要です。

 個人的にもNuGetは便利だと思いますし、いろんな開発者のノウハウが詰まっており、もしかしたらこの中からjQueryのような素晴らしいライブラリが登場するのではないかと期待しています。ただし業務寄りの話になりますと、サポートが得られないライブラリは使えなかったり、新しいライブラリを気軽に追加できなかったりする現場もあるなど、さまざまな課題を抱えていることも事実です。

 そのほかの観点では、NuGetはMVC開発の学習に役立てることもできます。NuGetでMVC関連のパッケージを導入すれば、そのソース・コードが見られるので、そこからさまざまな開発コードを習得できることもあります。


 INDEX
  mvcConf @:Japan パネル・ディスカッション
  人気のASP.NET MVCエキスパートが語るMVCの魅力と実践
    1.Webフォームではなく、ASP.NET MVCを採用する理由
  2.ASP.NET MVCと組み合わせる周辺技術の選択指針
    3.ASP.NET MVCへのスキル移行


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH