年末近くになって Microsoft の イベント Connect(); // 2016 で Visual Studio for Mac が発表され、Preview を試せるようになりました。
事前にリークというか MSDN のページに掲載されてしまった*1ので、Connect 自体のインパクトは薄まってしまった模様ですが。
New Release Preview: Visual Studio for Mac | Visual Studio
Visual Studio for Mac までの流れ
OSS でクロスプラットフォームな .NET Framework 互換プロジェクト Mono から始まり、IDE である Mono Develop も開発され、Mono Develop に Xamarin の開発ツールをアドオンした Xamarin Studio と発展してきて、今年のはじめに Microsoft が Xamarin を買収。そしてとうとう Visual Studio の名前を冠したプロダクトが登場したという流れです。
Mono プロジェクトと Microsoft の関係は微妙だった時期もありましたが、.NET Core / ASP.NET Core など OSS に舵を切った今となっては、完全に Microsoft の戦略に統合されました。
Electron ベースのクロスプラットフォームコードエディタが Visual Studio Code の名前で登場したのが昨年。熟成を重ねて ATOM や Sublime Text キラーなコードエディタとなった今年 Visual Studio 自体がクロスプラットフォームな IDE として登場したということで、.NET での開発に少なからず携わってきた身としては感慨深いものがあります。
インストール
ということで、MacBook Pro (OS X El Capitan) にインストールしてみました。
Preview のパッケージをダウンロードしてインストーラを起動。
Xamarin 用の環境の選択肢が出てきます。Visual Studio 2015 でもおなじみのモジュールが並んでいます。
4GB 程度のバイナリをダウンロードしつつインストール。
1時間程度で完了。macOS に Visual Studio が降臨。
起動すると基本英語メニューですが、プロジェクト作成のダイアログなどは一部日本語にローカライズされています。
開発できるもの
開発言語は C# / F# / VBNet から選べます。Visual Basic も Mac にやってきちゃいました。
Xamarin.Forms
Visual Studio 2015 同様 iOS / Android 向け Forms アプリの開発ができます。プロジェクト構成は WPF や Windows ストアアプリとそっくりで、XAML 定義とデザイナーコードによる開発が可能です。ネイティブ の Toolkit (iOS の場合 UIKit) は Xamarin に隠蔽されていて XAML プログラミングの知識があればアプリが作れるところがメリットです。
Xamarin Forms の場合、独自の Look & Feel になりますが、iOS / Android でソースコードを共通化できます。さらに、iOS / Android それぞれに特化した Look & Feel のアプリも作れます。
Connected App と Single Page App (または Forms App) というテンプレートが選択可能で、前者は ASP.NET Core Mobile Service という BaaS 側のプロジェクトも生成してくれる模様です。Azure が前提になるのでしょうか。
おまけに iOS / macOS で SpliteKit / SceneKit に対応したゲームも作れるようです。Xamarin.Forms は macOS アプリも作れるということですね。
iOS / Android ネイティブアプリ
ネイティブアプリも C# で開発できます。それぞれネイティブのプラットフォームの知識が必要です。例えば iOS のプロジェクトでは UIKit を Mono から使えるようになっているので、UIKit の知識が必要になります。RubyMotion のような位置付けですね。
Xcode で作れるものとほぼ同じものが作れそうです。Metal や Open GL のような低レベルグラフィックスライブラリもサポートされています。
ネイティブアプリは Xamarin の Core なレイヤーにより Mono Framework と統合されているようです。
Android では、Wear アプリなども提供されていて、Android Studio で作れるアプリは大体作れそうです。
tvOS アプリ
iOS のファミリーである tvOS アプリも作れます。
Mac 用アプリ
Cocoa アプリが作れます。iOS 同様 SpliteKit / SceneKit や Metal がサポートされています。Cocoa アプリの開発には iOS と同様 Cocoa プログラミングの知識が必要になります。
.NET Core
Console アプリやライブラリが作れます。
.NET
GTK アプリは、Windows Form ではなく GTK の ToolKit を C# で扱えるようにしたモノのようです。
ASP.NET
ASP.NET は MVC / Web Form がともにサポートされているようです。
Windows 版との比較
Windows / Mac でカバーしているアプリ構成が異なり、Xamarin と .NET Core / ASP.NET Core の部分が共通という状況です。 ざっと比較すると以下のような感じでしょうか。
Visual Studio 2015 (Windows) | Visual Studio for Mac | |
---|---|---|
Xamarin.Forms | ○ | ○ |
Android App | ○ | ○ |
iOS App | × | ○ |
ASP.NET MVC | ○ | ○ |
ASP.NET Web Form | ○ | ○ |
Console App | ○ | ○ |
Cocoa App | × | ○ |
GTK App | × | ○ |
UWP App | ○ | × |
WPF App | ○ | × |
Windows Form | ○ | × |
MFC App | ○ | × |
まとめ
これまで有償だった Xamarin Studio が Microsoft 純正 Visual Studio として身近な存在になり、macOS / iOS / Android アプリを C# や XAML といった .NET ディベロッパーおなじみの技術で開発できるようになったというのは、かなりインパクトの大きい出来事と言えるでしょう。Swift が霞んでしまう可能性もあるかもです。
Xamarin アプリは Windows 版 Visual Studio でも作成できますが、iOS のアプリを作成する際、別途 Xcode が必要となってしまうため、iOS のサポートが必要な場合 Visual Studio for Mac を選択する方がよいでしょう。iOS / Android 両方の開発をしたい場合、Visual Studio for Mac は有力な選択肢と言えます。Xamarin 用の環境構築も Windows より手軽な印象です。Xamarin が流行るかどうかはこれからですが、Web サービスのスマートデバイス向け開発環境としては有力候補に違いありません。
.NET Standard のコードで書けるポータブルなライブラリの整備が WPF などのアプリ資産からの移植性を高める上でポイントになりそうです。
*1:直後に消えましたが。