しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Road to RTM - ASP.NET Core に至るまでの迷走の歴史

6/29 に .NET Core / ASP.NET Core 1.0 の RTM が決まって嬉しいので、これまで ASP.NET Core がどのような道を辿ってきたのかを、つらつらと書いてみたいと思ったので書きます。要するにネタ記事です。

ネタ記事なので「ああ、こういうこともあったなぁ(白目」という気持ちで読んでもらえればいいです。

実行環境の迷走

ASP.NET Core 1.0 の実行環境は 2012 年にリリースされた OWIN からの流れを汲んでいます。

割と最近まで実行環境は .NET Core として分けられているわけではなく、CoreCLR という形で ASP.NET コンポーネントの一つとして内包されていました。

OWIN / Katana Project で未来を話した時代

2012 年に Rack や WSGI を意識して作られた OWIN 1.0 が公開されました。System.Web からの脱却を図ったサーバー用インターフェースです。

OWIN — Open Web Interface for .NET

実質的なリファレンス実装として Katana Project が CodePlex で開発されていました。

Katana Project - Home

3 年前に OWIN について書いていました。

当時は OWIN ベースで今後の ASP.NET が開発されていく予定だったはずです。

System.Web を捨て去るための IIS Native Module である Helios が公開されたりもしていました。

今では完全に OWIN と Katana Project は止まっています。

いざこざで OWIN から分離された KRE

元々は Project K と呼ばれていたので、実行環境には K Runtime Environment という名前が付けられました。ちなみに Project K の K は Katana のことです。

TechEd NA 2014 で初めて ASP.NET vNext のリリースが行われました。

Introducing ASP.NET vNext - Scott Hanselman

この時は ASP.NET vNext ではコンパイルが不要で、LL のように開発が行えるという触れ込みでした。Roslyn のパフォーマンスが当時から心配でしたが、RC 2 で微妙に方針転換した感じです。

KRE では OWIN との互換性を捨てて、OWIN に近いインターフェースが ASP.NET チームにより再実装されました。この時に色々といざこざが起きていたみたいで、方針転換を余儀なくされた感じです。

当時の ASP.NET 開発チームの Twitter を追うと、割とソウルジェムが濁ってる感じがします。

それっぽい名前になった XRE

そこそこ開発が進んだ状態で Project K というコードネームから、クロスプラットフォームに対応した実行環境ということで Cross-platform Runtime Environment という名前になりました。

kvm や kpm というコマンドが dotnet になる話が出ていましたが、この時にはキャンセルされたようです。

この XRE という名称は一番の短命になりました。

そこはかとなく不安になった DNX

XRE に変わってから数か月後、突然 .NET Execution Environment という名前に変わりました。

名称が変更された時のコミットがとても不安になる感じでした。

http://i.imgur.com/dYJXe8N.jpg

ちなみにここまで名前が 2 回変わりましたが、本当に名前が変わっただけでコマンド体系などは全く変化ないです。さすがにこれで RTM まで行くのかと思っていた時期が私にもありました。

安心感のある .NET CLI

RC 1 が公開された後にロードマップがひっそりと更新されていて、RC 2 で DNX から .NET CLI が使われるようになると予告されました。これで DNX と .NET CLI が独立して存在するという悪夢は回避されました。

そして実際に RC 2 では .NET CLI を使うように変更されていました。

ASP.NET Core 側のアップデートも行われたことで .NET Core を使った開発は、これまで通り Main エンドポイントを実行するという形で統一されました。

dotnet コマンド 1 つで NuGet パッケージの復元からビルド、実行まで全て行えるようになり、コマンド体系がシンプルになりました。ここまで到達するのに 3 年ほど掛かった計算になります。

プレビューから 2 年掛かった RTM

ASP.NET Core 1.0 は最近の Microsoft のプロダクトでは一番開発に時間がかかったものではないかと思います。Roslyn と .NET Core 側の作業も色々と関係していたようですが。

時間を掛けた分、スケジュールからの妥協などが極めて少なく、すっきりとした環境となりました。

Announcing a new .NET and ASP.NET Core Bug Bounty | .NET Web Development and Tools Blog

予定では RTM 後の 3 ヵ月だけですが .NET Core と ASP.NET Core のバグ報奨金制度が導入されます。

そして 7/9 に開催が決まった dotnetConf 2016 Japan では、ASP.NET Core 1.0 RTM について喋るような気がします。セッションリストは公開されていないですが、dotnetConf 2016 に準拠した形になると思います。

フレームワーク名の変遷

実行環境はかなり迷走していましたが、フレームワークは 2 回しか名前は変わっていません。

  • ASP.NET vNext
  • ASP.NET 5 / MVC 6 / EF 7
  • ASP.NET Core 1.0 / Core MVC 1.0 / EF Core 1.0

ASP.NET 4.6 と別物であることがはっきりした名前になってよかったと思います。