Visual Studio が macOS に降臨 - Visual Studio for Mac Preview を使ってみる

年末近くになって Microsoft の イベント Connect(); // 2016 で Visual Studio for Mac が発表され、Preview を試せるようになりました。

connectevent.microsoft.com

事前にリークというか 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 のパッケージをダウンロードしてインストーラを起動。

f:id:kondoumh:20161117090045p:plain

Xamarin 用の環境の選択肢が出てきます。Visual Studio 2015 でもおなじみのモジュールが並んでいます。

f:id:kondoumh:20161117090139p:plain

4GB 程度のバイナリをダウンロードしつつインストール。

f:id:kondoumh:20161117090404p:plain

1時間程度で完了。macOS に Visual Studio が降臨。

f:id:kondoumh:20161117090505p:plain

起動すると基本英語メニューですが、プロジェクト作成のダイアログなどは一部日本語にローカライズされています。

開発できるもの

開発言語は C# / F# / VBNet から選べます。Visual Basic も Mac にやってきちゃいました。

Xamarin.Forms

Visual Studio 2015 同様 iOS / Android 向け Forms アプリの開発ができます。プロジェクト構成は WPF や Windows ストアアプリとそっくりで、XAML 定義とデザイナーコードによる開発が可能です。ネイティブ の Toolkit (iOS の場合 UIKit) は Xamarin に隠蔽されていて XAML プログラミングの知識があればアプリが作れるところがメリットです。

f:id:kondoumh:20161117215222p:plain

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 アプリも作れるということですね。

f:id:kondoumh:20161117191035p:plain

iOS / Android ネイティブアプリ

ネイティブアプリも C# で開発できます。それぞれネイティブのプラットフォームの知識が必要です。例えば iOS のプロジェクトでは UIKit を Mono から使えるようになっているので、UIKit の知識が必要になります。RubyMotion のような位置付けですね。

www.rubymotion.com

Xcode で作れるものとほぼ同じものが作れそうです。Metal や Open GL のような低レベルグラフィックスライブラリもサポートされています。

ネイティブアプリは Xamarin の Core なレイヤーにより Mono Framework と統合されているようです。

f:id:kondoumh:20161117191338p:plain

Android では、Wear アプリなども提供されていて、Android Studio で作れるアプリは大体作れそうです。

f:id:kondoumh:20161117202821p:plain

tvOS アプリ

iOS のファミリーである tvOS アプリも作れます。

f:id:kondoumh:20161117203046p:plain

Mac 用アプリ

Cocoa アプリが作れます。iOS 同様 SpliteKit / SceneKit や Metal がサポートされています。Cocoa アプリの開発には iOS と同様 Cocoa プログラミングの知識が必要になります。

f:id:kondoumh:20161117203133p:plain

.NET Core

Console アプリやライブラリが作れます。

.NET

GTK アプリは、Windows Form ではなく GTK の ToolKit を C# で扱えるようにしたモノのようです。

f:id:kondoumh:20161117220157p:plain

ASP.NET

ASP.NET は MVC / Web Form がともにサポートされているようです。

f:id:kondoumh:20161117203220p:plain

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:直後に消えましたが。