はじめに
2014年2月にサティア・ナデラ氏がCEOに就任して以来、マイクロソフトはどんどん製品のオープンソース化を進めていきました。今ではマイクロソフトは、数多くのOSS(オープンソースソフトウェア)プロジェクトを扱っています。今後もこの方針は当分変わることはないでしょう。
この記事では、マイクロソフトのOSSプロジェクトにどんなものがあるのか知りたい方のために、主なプロジェクトを紹介していきます。今までクローズドだった、マイクロソフトのコードを見ることができるようになったのは革新的ですね。まだまだ成長途中のプロジェクトが多いので、コードを書いてコミットすればあなたのコードが製品に取り込まれるかもしれません。
.NET Core
プロジェクトサイト:http://dotnet.github.io/
レポジトリ(Framework):https://github.com/dotnet/corefx
レポジトリ(Common Language Runtime):https://github.com/dotnet/coreCLR
「.NET Core」はFrameworkとCommon Language Runtime(CLR)の2つで構成された、オープンソースのクロスプラットフォーム.NET Framework実装です。今までは、MacやLinuxではMonoを使って.NETアプリを実行していましたが、「.NET Core」を使えばMonoは必要なくなります。
初期の頃は.NET Core 5と呼ばれていましたが、既存の.NET Framework 4.6の後継バージョンだという誤解を避けるために、「.NET Core 1.0」に改名されました。クロスプラットフォームにするために、大幅な設計の変更が行われており、今までの.NETとは別物と考えたほうが良さそうです(互換性もありません)。
そのため、当分は既存の.NET Framework 4.6(もしくはその後継バージョン)も提供され続けるでしょう。「.NET Core」は既存の.NETからフォーク(分岐)したOSSプロジェクトなので、双方のプロジェクトはこれから平行して開発が行われることになります。まだまだ発展途中なので今後が期待されます。
ASP.NET Core(MVC)
プロジェクトサイト:http://www.asp.net/vnext
レポジトリ:https://github.com/aspnet/Mvc
ASP.NET Coreは、「.NET Core」ファミリーのひとつで、オープンソース版のASP.NETです。「.NET Core」上で動作させることで、クロスプラットフォームを実現します。ASP.NET Coreは、いくつかのプロジェクトの集まりです。その中でも、最も注目されるのが、ASP.NET Core MVCでしょう。
ASP.NET Core MVCは、ASP.NET MVC 5からフォークしたオープンソース版のASP.NET MVCです。こちらも以前はASP.NET MVC 6と呼ばれていましたが、互換性がないため改名されました。今のところ、MVC 5からのプロジェクトの移行は手作業で行います。プロジェクトのファイル構成や開発方法など、大幅な変更が加えられており、パッケージ管理に、npm、bower、gulpを採用するなど、よりモダンになった印象を受けます。
Entity Framework Core
プロジェクトサイト:https://github.com/aspnet/EntityFramework/wiki
レポジトリ:https://github.com/aspnet/EntityFramework
Entity Framework Core(EF Core)は、ASP.NET Coreファミリーのひとつで、SQL Serverを初め多くのデータベースに対応するO/RM(オブジェクトリレーショナルマッパー)です。「.NET Core」のために、EF6を参考に一からコードベースが書きなおされました。
以前はEF7と呼ばれていましたが、EF Coreに改名されたのは互換性が理由です。こちらも、互換性はなくEF6と平行して開発が続けられます。まだEF6と比べると、機能的に足りない部分があるので今後の開発に期待したいところです。
Roslyn(ロズリン)
プロジェクトサイト:https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
レポジトリ:https://github.com/dotnet/roslyn
Roslynは、コンパイラから情報をオープンに取得するために開発された、新しい.NETコンパイラープラットフォームです。今までは、コンパイラが構文解析や意味解析などをした結果はコンパイルのみに使用され、IDEやツールから情報を得ることはできませんでした。そのため、似たような処理をIDE側で実行していましたが、仕様を合わせることが開発の負担になっていました。
Roslynでは、コンパイラからAPIを経由して、情報を取得できるようになりました。これにより、IDEはより多くの情報を得ることができ、リファクタリングやインテリセンスで今までは実現できなかった機能を実装することができるようになりました。また、一般の開発者も同様にAPIを使用して、コンパイラの情報にアクセスできるため、今までになかったツールが開発できるようになりました。Roslynは、すでにVisual Studio 2015に搭載されています。これで、VSはより便利になっていくことでしょう。
Visual Studio Code
プロジェクトサイト: http://code.visualstudio.com/
レポジトリ: https://github.com/Microsoft/vscode
Visual Studio Codeは、クロスプラットフォーム対応のモダンテキストエディタです。Atomと同じく、デスクトップアプリフレームワークのElectronを使用して作られています。機能的にもAtomに似ていて、オートコンプリートや拡張機能などモダンな機能が搭載されています。とはいえ、まだバージョン1.0としてリリースされたばかりで、拡張機能も少なくこれからといった感じです。
Visual F#
プロジェクトサイト:http://fsharp.org/
レポジトリ:https://github.com/Microsoft/visualfsharp
Visual F#は、マイクロソフトが開発したクロスプラットフォームの関数型言語です。C#やJavaなどのオブジェクト指向言語が主流になってから、かなり経っていますが、まだ当分はその流れは変わらないように思います。しかし、オブジェクト指向言語には、いくつか問題点もあります。そのひとつが、テストがしにくいことです。
もちろん、これはテストしにくいコードを書いてしまっているのも一因なのですが、オブジェクトは状態や依存関係を持っているために本質的にテストしづらいのです。関数型言語は、小さな関数を組み合わせることでプログラムを構築します。このため、状態や依存関係を持たないプログラミングが可能になります。とはいえ、関数型言語はパラダイムが全く異なるので、取得が容易ではありません。しかし、F#はオブジェクト指向言語としてのパラダイムも持ちあわせており、極端に言えばC#のようなコードを書くことも可能です。
TypeScript
プロジェクトサイト:https://www.typescriptlang.org/
レポジトリ:https://github.com/Microsoft/TypeScript
TypeScriptは、マイクロソフトが開発したAltJS言語です。AltJS言語とは、DartやCoffeeScriptなど最終的にはJavaScriptにコンパイルして実行する言語のことです。JavaScriptは、歴史的な経緯もあり、いろいろと問題点があります。特に、大規模開発には向いていません。このため、AltJSはモジュールやクラスを導入して構造化を容易にしています。JavaScriptフレームワークのAngularJSは、バージョン2からコードベースをTypeScriptに移行しました。有名なプロジェクトに採用されると使いたくなりますね!
さいごに
この他にも、たくさんのOSSプロジェクトがあります。マイクロソフトCTOのMark Russinovich氏が「Windowsをオープンソースにする可能性はある」と発言したという話もあり、いずれWindowsさえもOSSになる日が来るかもしれません。GitHubの登場以降オープンソース化の流れが加速していますが、これからその流れは更に加速していくのではないでしょうか。
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments