Sansan株式会社は、スキルアップを目指す.NETエンジニアのための勉強会を定期的に開催しています。
第3回は矢後比呂加氏(Microsoft MVP for ASP.NET/IIS)を講師に迎え、「OWINって何?」を知ることをゴールに、昨今の.NET Web開発における課題とそれを解決するためのイノベーションについてお話を伺いました。
その様子を完全レポートします!
(開催:2014年5月16日、モデレータ:Sansan株式会社 渋木宏明)
(矢後氏)本日のテーマは「OWINって何?」ですが、Microsoft .NET Web開発にイノベーションをもたらすのはOWIN(Open Web Interface for .NET)だけではありません。
昨年から今年にかけて、イノベーションをもたらす技術のリリースやアナウンスが続きました。
・ 2013年11月 Visual Studio 2013のリリース、OWINとKatanaの発表
・ 2014年4月 Microsoft Build 2014(サンフランシスコ)開催
・ 2014年5月 TechEd North America 2014(ヒューストン)開催、ASP.NET vNextの発表
・ 2014年5月 de:code(東京)開催
このように.NET Web開発にもたらすイノベーションは、OWINに始まり、Katana、Project Helios、ASP.NET vNextというキーワードとして現れてきています。
――ASP.NETの課題を解決するために
(矢後氏)イノベーションが起きた背景は2つあります。
1つはWeb開発が急速に進化していること。
もう1つは、「Mobile First, Cloud First」な世界が進み、パソコンだけでなく、モバイルデバイスや組込み系デバイスが急増していること。
この2つにASP.NETが対応していくためには、ASP.NETが抱えている数々の課題を解決しなければなりません。そのために、OWINをはじめとするイノベーションが起きたわけです。
――イノベーションの概要
(矢後氏)ここでイノベーションの内容を簡単に説明しておきましょう。
OWINとKatanaは、サーバとアプリケーションの疎結合を実現します。
Project Helios(2014年2月にアルファバーションが公開)は、IISにおけるSystem.Webからの脱却を目的としたプロジェクトです。
ASP.NET vNextは、デプロイ方法からランタイムまですべて新しくなる、次の時代のASP.NETととらえてください。
――ASP.NETの歴史
(矢後氏)ASP.NETは、Classic ASPやWindows業務アプリケーションの開発者を対象に、2002年、.NET Framework とともに1.0がリリースされました。
12年前のことなので、古い技術という印象を受けます。しかし、その後、ASP.NET MVC、ASP.NET Web APIなどASP.NET上で動くフレームワークが登場し、ランタイムと共ともに今でも実用され続けています。
十数年続くASP.NETの礎となっているのがSystem.Webです。System.Webは、HTTP関連の操作、セッション、キャッシュ、Web Formsといったコア機能を提供します。しかし、時が経つにつれ、ASP.NETはSystem.Webを中心にいくつもの課題を抱えることになりました。
――ASP.NETの課題
(矢後氏)ASP.NETは、現在のWeb開発に対していくつか課題を抱えています。
まず、ASP.NETは、すべての処理を行える一枚岩のようなモデルになっています。すべての機能がデフォルトでオンの状態であるため、メモリの消費が激しい、不要な機能が随従するといった問題が生じます。さらに、十数年続くうちに肥大化、複雑化が進んでいます。
一番の問題は、System.Webが.NET Frameworkの一部であり、.NET Frameworkの開発サイクルに依存することです。.NET Frameworkの対象は、Webに限らず広範にわたります。Webの開発サイクルは加速化が進んでいますが、System.Webはそれに追いつけません。
また、ASP.NETはIISでしかホスティングされないという問題もあります。
さらに、System.Webは古い時代に実装されたものであるため、AjaxやモダンWebなどを実装するときにその設計が障壁となります。たとえば、昔は危険と見なされていた文字列を含むリクエストが、今では有効としたいケースがあります。ですが、ASP.NET MVC といった最近のフレームワークは対応していたとしても、礎のSystem.Webがリクエストを危険と判断するために、余計な手を加えなければいけない、といったことが生じます。他、フォーム認証とWindows認証を併用できないなど、さまざまな問題があります。
――ASP.NET MVC、ASP.NET Web API、ASP.NET SignalR、One ASP.NET
(矢後氏)ASP.NETの課題を解決するために、OWINの導入前にもさまざまな取り組みが行われてきました。
1つめは、ASP.NET MVC の登場です。これにより.NET Frameworkの開発サイクルに依存しないアップデートが可能になりました。2009年にASP.NET MVC 1がリリースされ、現在のASP.NET MVC 5に至ります。ASP.NET MVC 4以降は、パッケージマネージャであるNuGetにより配布されています。ただ、.NET Frameworkの開発サイクルから外れたものの、ASP.NET MVC自体はSystem.Webに依存しています。
2つめは、2012年のASP.NET Web API、ASP.NET SignalRの登場です。これらのフレームワークはSystem.Webに依存しない設計になっており、コンソールアプリケーションやセルフホストによるIIS以外のホスティングが可能になりました。
最後に、2013年にVisual Studio 2013とともに発表されたOne ASP.NETにより、ASP.NET上で目的に応じたフレームワークを組み合わせて選択することが可能になりました。
たとえば、ASP.NET Web FormsをベースにASP.NET Web APIを組み合わせ、JavaScriptによる非同期のモダンなWebアプリケーションを構築したり、ASP.NET SignalRを使ってリアルタイム性を追加したり、NancyなどのMicrosoft以外のフレームワークを選択したりといったことが可能です。
――それでも残る課題
(矢後氏)このようにさまざまな取り組みが行われてきましたが、課題がすべて解決されたわけではありません。
ASP.NET MVCはいまだSystem.Webに依存します。
One ASP.NETによりフレームワークの選択が可能になりましたが、似たような振る舞いを持つフレームワークが混在する問題が残りました。認証、依存性の注入などについてもフレームワークごとに設定しなければなりません。
IIS以外のホスティングについても、対応しているものと対応していないものがあります。
これらの残された課題を解決するために、OWINを初めとする昨今のイノベーションが起きました。
【.NET定期勉強会@Sansan完全レポート】第3回 OWINって何?Microsoft MVPに聞いてみよう!(その2)につづく