CoreCLR がオープン ソースに


本記事は、マイクロソフト本社の .NET Blog の記事を抄訳したものです。
【元記事】 CoreCLR is now Open Source 2015/2/3 10:07 AM

CoreCLR が GitHub でオープン ソース化されたことが発表されました。CoreCLR (英語) とは .NET Core (英語) で使用されている .NET の実行エンジンで、ガベージコレクションや機械語へのコンパイルなどを実行するものです。.NET Core は .NET にモジュールとして実装されており、さまざまなシナリオでベース スタックとして使用することが可能で、現在ではコンソールユーティリティからクラウド上の Web アプリに至るまで、さまざまな用途で使用されています。.NET Core と .NET Framework の違いについては、.NET Core について紹介しているこちらのブログ記事 (英語) をお読みください。

Core CLR のソース コードや派生コード、クローン、ビルドについては、こちらのページ (英語) を参照してください。マイクロソフトがリリースした完全版の最新の CoreCLR の実装コードには、RyuJIT、.NET GC、ネイティブな相互運用機能、その他の .NET ランタイム コンポーネントが含まれています。このリリースは過去の .Net Core ライブラリ (英語) に続くもので、どちらのライブラリからも、完全なクロス プラットフォームの .NET の実装に積極的に取り組んでいることがおわかりいただけると思います。

1538_Repo_png-550x0

現在、.NET Core のビルドと実行は Windows に限られていますが、今後数か月のうちに Linux と Mac での実装にも対応し、それぞれのプラットフォームに適したコンポーネントを追加する予定です。Linux 用の .NET Core のコードは既にいくつかありますが、この取り組みもまだ始まったばかりです。マイクロソフトではまずこのコードを皮切りとして、皆様と共にここからクロスプラットフォームの開発を進めていきたいと考えています。

 

.NET Core チームへのインタビュー

.NET Core チームのメンバーが CoreCLR と CoreCLR リポジトリの説明をインタビュー形式で行った映像が Channel 9 (英語) で公開されています。ぜひご覧ください。

 

このチームは今回の ASP.NET コミュニティのレポート (英語) にも登場しています。こちらもご覧ください。

 

CoreCLR リポジトリの概要説明

CoreCLR リポジトリは、この数か月間皆様にご参加いただいていた CoreFX リポジトリとよく似ています。私たちは、この膨大な量のコードベース全体を皆様に気軽に利用していただけるように、引き続きこれら両方のリポジトリを進化させていきます。

コードの量についてお伝えすると、CoreCLR リポジトリのコードは 260 万行ほどで、そのうち JIT が約 32,000 行、GC が約 55,000 行を占めています。先日、CoreFX リポジトリが約 50 万行に達していることをお伝えしましたが、これは最終的に予定されている量の約 4 分の 1 に過ぎません。.NET Core が GitHub で完全に利用可能になる時点で、2 つのリポジトリのコードは合わせて 500 万行ほどになる予定です。

0753_clip_image002_60D3FEC2

この 2 つのリポジトリの主な違いとしては、CoreFX のコードはすべて C# で書かれているのに対し、CoreCLR には C# と C++ の両方のコードが含まれているという点があります。このため、CoreCLR リポジトリでは C# と C++ の両方のコードを作成できるように、Visual Studio にはないものも含め複数のツールセットが必要となります。チームでは、オープンソースのクロス プラットフォーム ビルド システムである CMake (英語) を使用しています。このプロジェクトでは Windows、Linux、Mac でビルドを実行できるビルド システムが必要ですが、アドバイスをいただきながらさまざまな選択肢を検討した結果、CMake の採用を決定しました。

CoreCLR でビルドを実行する方法は、CoreCLR の開発者ガイド (英語) でご確認いただけます。このガイドは随時更新を予定しています。特に Linux と Mac でのビルドの実装時にはご確認ください。

私たちは、このコードベースを拡充する作業に多くの方々のご協力をいただきたいと考えており、現在オープン ソース環境に提供する検証用インフラストラクチャの拡充に取り組んでいます。そうすることで、より多くの皆様に気軽に参加していただけるものと考えています。.NET Core がサポートする .NET のシナリオは範囲が広いため、十分にテストを実施して、できるだけ早期に問題を把握することが重要です。

 

.NET Core でのアプリケーション構築

オープン ソースでクロス プラットフォームの .NET Core の実装コードが公開されるのは素晴らしいことです。では、これを利用すると、どのような種類のアプリを構築できるのでしょうか? 現在開発が進められている公開中のアプリは次の 2 種類です。

  • ASP.NET 5 の Web アプリおよびサービス
  • コンソール アプリ

ASP.NET 5 については、1 年ほど前から何度かお話しする機会がありました。ASP.NET 5 アプリは .NET Framework または .NET Core で作成できますが、今回新たに Linux と Mac でも Mono ランタイム (英語) を使用して ASP.NET 5 を実行できるようになりました。.NET Core で Linux と Mac のサポートが開始されれば、ASP.NET 5 も Linux と Mac のプラットフォームで .NET Core を使用できるように移行する予定です。ASP.NET 5 アプリの構築の詳細については、ASP.NET チームのブログ (英語) または ASP.NET の Web サイト (英語) をご覧ください。また、ASP.NET 5 アプリの作成を始めたい方は、Visual Studio 2015 プレビューをご利用ください。

チームでは、CoreFX および CoreCLR のリポジトリを構築可能にして、その成果物を ASP.NET 5 アプリで使用できるようにすることを目指しています。現時点ではいくつかの技術的な理由でまだ実現されていませんが、今後もその実現に向けて取り組んでまいります。私たちは、.NET Core と ASP.NET 5 でエンドツーエンドのオープン ソース エクスペリエンスを実現することを大きな目標としています。これが実現されると、個々の開発者が独自の派生コードを作成し、そこからビルドしたバイナリをアプリ作成時にベーススタックとして使用できるようになります。

コンソール アプリは CoreCLR を初めて使用する場合に適していて、各種アプリを作成するための基礎を柔軟に修得することができます。テスト用のインフラストラクチャはほぼすべてこのようなアプリで構築されています。また、独自にカスタマイズした CoreCLR を構築し、そこでコンソール アプリを実行することもできます。

 

.NET Core のコンソール アプリ

現在のところ、.NET Core の各種コンソール アプリはエンジニアリング プロセスにとって有用な副産物となっていますが、今後数か月のうちには Visual Studio のテンプレートやデバッグ機能などを実装して、完全なサポートを実現する予定です。また、コンソールアプリでの OmniSharp (英語) のサポートも予定しています。皆様は Windows、Linux、Mac のそれぞれにコンソール ツールを作成されるのではないかと思いますが、1 つのバイナリをこれら 3 つの OS すべてで実行できる、クロスプラットフォームのツールも作成できるようになります。

GitHub で公開されているオープン ソースの CoreCLR の実装コードを基礎として、Windows 用の .NET Core コンソール アプリのデモを作成してみました。こちらで公開 (英語) していますのでぜひご覧ください。

clip_image010

コンソール アプリの使用手順

CoreCLR を試してみたいという場合は、CoreCLR を基礎とするプロトタイプのコンソール アプリを利用することをおすすめします。このアプリは、新たに開設された corefxlab リポジトリから入手できます。これを使用するときは、コマンド ラインで下のコマンドを実行してリポジトリのクローンを作成し、ビルドを行います。

git clone https://github.com/dotnet/corefxlab

cd .\corefxlab\demos\CoreClrConsoleApplications\HelloWorld

nuget restore

msbuild

.\bin\Debug\HelloWorld.exe

リポジトリのクローンを 1 回作成すれば、その後は HelloWorld.sln ファイルを開くだけで Visual Studio でコードを編集できます。ただし、デバッグ機能はまだサポートされていませんのでご注意ください。でもミスをしなければ、なんの問題もないですね (冗談です)。

また、CoreCLR を変更し、コンソール アプリをローカルでビルドして動作確認を行うこともできます。この場合、ビルドは自動化しないほうが便利です。今回のソースコードを手動でビルドする方法は下記のとおりです。

1. CoreCLR を変更します。

2. CoreCLR を x64 版の build.cmd でビルドします。

3. coreclr\binaries\x64\release ディレクトリから corfxlab\demos\CoreClrConsoleApplications\HelloWorld\NotYetPackages\CoreCLR ディレクトリに下記のファイルをコピーします。

o coreclr.dll

o CoreConsole.exe

o mscorlib.dll

4. HelloWorld.sln をリビルドします (コマンド ラインと VS のどちらからでも構いません)。

 

まとめ

私たちはこの数か月をかけて、CoreCLR をオープン ソースとしてリリースするための準備と新機能の開発を並行して進めてきました。CoreCLR (英語) のリポジトリをご覧いただければ、CoreFX (英語) のときと同じく、日々開発が進んでいることがおわかりいただけるかと思います。CoreCLR (英語) のリポジトリを確認し、今後どのように進化していくかをぜひチェック (英語) してください。.NET Core チームではイシューと PR のキューを逐一チェックして、製品に対するフィードバックを確認し、今後の改善に役立てていきたいと思います。

この記事の内容に関しては .NET Foundation フォーラム (英語) でもさまざまな意見が交わされていると思いますので、ぜひ参加してみてください。特に、CoreCLR のオープン ソース化についてはいくつかスレッドが立っているはずです。.NET Core チームの中にもこうしたスレッドに参加して、皆様からのご質問にお答えしている者もいます。

.NET では、今後もオープン ソース化やクロス プラットフォーム化に関連するさまざまな取り組みが予定されています。次の大きな目標は、.NET Conf (英語) です。.NET Conf は .NET のオンライン カンファレンスで、2015 年 3 月に開催を予定しています。魅力的なデモの数々を披露する予定ですので、ぜひご期待ください。

Comments (0)

Skip to main content