MVPに聞いてみよう!(その1)Sansan株式会社は、スキルアップを目指す.NETエンジニアのための勉強会を定期的に開催しています。Web開発における課題とそれを解決するためのイノベーションについてお話を伺いました。.NET)だけではありません。昨年から今年にかけて、イノベーションをもたらす技術のリリースやアナウンスが続きました。vNextというキーワードとして現れてきています。■なぜイノベーションが起きたのか――ASP.NETの課題を解決するために(矢後氏)イノベーションが起きた背景は2つあります。1つはWeb開発が急速に進化していること。First」な世界が進み、パソコンだけでなく、モバイルデバイスや組込み系デバイスが急増していること。この2つにASP.NETが対応していくためには、ASP.NETが抱えている数々の課題を解決しなければなりません。そのために、OWINをはじめとするイノベーションが起きたわけです。――イノベーションの概要(矢後氏)ここでイノベーションの内容を簡単に説明しておきましょう。OWINとKatanaは、サーバとアプリケーションの疎結合を実現します。Helios(2014年2月にアルファバーションが公開)は、IISにおけるSystem.Webからの脱却を目的としたプロジェクトです。vNextは、デプロイ方法からランタイムまですべて新しくなる、次の時代のASP.NETととらえてください。ともに1.0がリリースされました。12年前のことなので、古い技術という印象を受けます。APIなどASP.NET上で動くフレームワークが登場し、ランタイムと共ともに今でも実用され続けています。十数年続くASP.NETの礎となっているのがSystem.Webです。Formsといったコア機能を提供します。時が経つにつれ、ASP.NETはSystem.Webを中心にいくつもの課題を抱えることになりました。――ASP.NETの課題(矢後氏)ASP.NETは、現在のWeb開発に対していくつか課題を抱えています。ASP.NETは、すべての処理を行える一枚岩のようなモデルになっています。すべての機能がデフォルトでオンの状態であるため、メモリの消費が激しい、不要な機能が随従するといった問題が生じます。十数年続くうちに肥大化、複雑化が進んでいます。Frameworkの開発サイクルに依存することです。Frameworkの対象は、Webに限らず広範にわたります。Webの開発サイクルは加速化が進んでいますが、System.Webはそれに追いつけません。ASP.NETはIISでしかホスティングされないという問題もあります。System.Webは古い時代に実装されたものであるため、AjaxやモダンWebなどを実装するときにその設計が障壁となります。昔は危険と見なされていた文字列を含むリクエストが、今では有効としたいケースがあります。いった最近のフレームワークは対応していたとしても、礎のSystem.Webがリクエストを危険と判断するために、余計な手を加えなければいけない、といったことが生じます。他、フォーム認証とWindows認証を併用できないなど、さまざまな問題があります。ASP.NET(矢後氏)ASP.NETの課題を解決するために、OWINの導入前にもさまざまな取り組みが行われてきました。Frameworkの開発サイクルに依存しないアップデートが可能になりました。4以降は、パッケージマネージャであるNuGetにより配布されています。MVC自体はSystem.Webに依存しています。SignalRの登場です。これらのフレームワークはSystem.Webに依存しない設計になっており、コンソールアプリケーションやセルフホストによるIIS以外のホスティングが可能になりました。ASP.NETにより、ASP.NET上で目的に応じたフレームワークを組み合わせて選択することが可能になりました。SignalRを使ってリアルタイム性を追加したり、NancyなどのMicrosoft以外のフレームワークを選択したりといったことが可能です。――それでも残る課題(矢後氏)このようにさまざまな取り組みが行われてきましたが、課題がすべて解決されたわけではありません。MVCはいまだSystem.Webに依存します。ASP.NETによりフレームワークの選択が可能になりましたが、似たような振る舞いを持つフレームワークが混在する問題が残りました。認証、依存性の注入などについてもフレームワークごとに設定しなければなりません。IIS以外のホスティングについても、対応しているものと対応していないものがあります。これらの残された課題を解決するために、OWINを初めとする昨今のイノベーションが起きました。反社会的勢力への対応お問い合わせ。