xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

ASP.NET 5はどうしてOWIN上に乗らなかったのか

2015/01/16 (金) に渋谷で開催された GoAzure 2015 に参加してきました。とても充実した内容で大変満足度が高いです。本当に参加して良かった。主催者のみなさん、本当にお疲れ様でした。

Hanselman Unplugged

イベント自体は 4 並列くらいでセッションが行われていましたが、その中にゲストとして米国 Microsoft 本社から招いていた Scott Hanselman に「何でも質問しちゃおう!」なセッションがありました。いわゆる「Unplugged」というヤツです。

hanselman unplugged

私は先日からコレを絶対に聞いてやろうと思っていたものがあったので、その場で思い切ってぶつけてみました。上の写真にもちょうど真ん中あたりに映っていますね。

ASP.NET 5 はどうして OWIN と別の道を歩んだのですか?

しばらくバズワードだった OWIN

2013 年から 2014 年前半にかけてだったでしょうか。OWIN (= Open Web Interface for .NET) が .NET における Web 開発のバズワードになっていました。以下のようなあたりが OWIN のポイントだったかと思います。

  • System.Web.dll が .NET Framework の一部であり、リリースサイクルが合わない
  • IIS 依存からの脱却
  • メモリ使用量などを減らし、軽量化を図る
  • 処理のレイヤー化により機能を容易に付け替え可能 (= プラガブル)

Web における共通のインターフェースを策定し、それに則ることでホスト先を任意に選択できる。コンソールアプリによるセルフホストだって OK。その頃は Microsoft による OWIN のサンプル実装 Katana Project、Ruby の Sinatra にインスパイアされた Nancy がよく取り上げられ、ASP.NET でも SignalRWeb API は OWIN 上で動作するように改良されていきました。世の中は「これからの Web は OWIN にシフトするんだ!」という気運に満ち満ち溢れていました。そう、ASP.NET vNext (現 ASP.NET 5) が発表になるまでは!

ASP.NET 5 が OWIN 上に実装されなかった理由

Microsoft も OWIN に本気だ。誰もがそう思っていたからこそ、ASP.NET 5 が OWIN 上で実装されなかったことが大変不思議でした。それをどうしても聞いてみたかったので、先の質問をしたわけです。そして、答えは以下のようなものでした。

OWIN は Open Web Interface for .NET。Google Group の上で僕たち Microsoft とは別の組織が策定しているものだ。だけど、彼らの問題が何か知ってるかい?それは彼らがそのインターフェースの決定ができるような組織状態になかったということだ。策定が遅れていたんだ。

我々がラピッドリリースを採用し、その上で ASP.NET 5 を実装してリリースするにあたっては、それは遅過ぎた。だから自分たちで作った。そして OWIN との互換のためのクラス群 (互換レイヤー) を用意した。ASP.NET を OWIN 上で動かすのではなく、OWIN を ASP.NET 上で動かすことを選んだんだ。お互いの良いところを選んだ結果なんだよ。

とても現実路線の納得ができる回答が出てきて、かなり驚きました。そんな背景を全く隠さなかった Scott Hanselman にとっても感謝しました。ということで、これからは ASP.NET 5。(死に切ってはいないけれど) OWIN is dead!!

おまけ

GoAzure のキーノートでも紹介されていた、Hanselman が自分のサイドワークとして作っているという myEcho というアプリ。内部では SignalR が利用されており、デスクトップアプリは WPF でできているとのことでした。そこで、以前 ReactiveSignalR というライブラリを作っていたので「こんなのあるよ」って言ったら...。

Hanselman へのメール *1 Hanselman からのツイート *2
send e-mail to hanselman check ReactiveSignalR out

ということもあり、とても満足感いっぱいのイベントでした!

公式まとめ

*1:iPhone でサイトを見せたら、その場で iPhone を奪われて自分のメールアドレスに勝手に送信された

*2:SignalR と Rx の作者に「チェックしとけ」ってツイートしてもらった