• トップ
  • ニュース
  • 【.NET定期勉強会@Sansan完全レポート】第3回 OWINって何?Microsoft MVPに聞いてみよう!(その1)
勉強会

【.NET定期勉強会@Sansan完全レポート】第3回 OWINって何?Microsoft MVPに聞いてみよう!(その1)

Sansan株式会社は、スキルアップを目指す.NETエンジニアのための勉強会を定期的に開催しています。

第3回は矢後比呂加氏(Microsoft MVP for ASP.NET/IIS)を講師に迎え、「OWINって何?」を知ることをゴールに、昨今の.NET Web開発における課題とそれを解決するためのイノベーションについてお話を伺いました。

その様子を完全レポートします!

(開催:2014年5月16日、モデレータ:Sansan株式会社 渋木宏明)

■Microsoft .NET Web開発のイノベーションとは?

(矢後氏)本日のテーマは「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の歴史

(矢後氏)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)につづく