Xamarin
Xamarin.Forms
XamarinLivePlayer

Xamarin Live Playerで出来ること、出来ないこと

はじめに

WindowsでXamarin開発していると困るのがiOSの扱い。
Mac使えよ、と言われてしまえばそれまでなのですが、いやMac高いじゃないですか。

そこで、彗星のごとく現れたのが Xamarin Live Player
このXamarin Live Playerについて、まだ使って日は浅いですが、使っている中で気付いた「出来ること」「出来ないこと」をまとめてみます。

Xamarin Live Playerとは

iOS / AndroidのアプリとしてXamarinから提供されているテスト実行用のアプリです。

  1. アプリをインストール(GooglePlay / AppStore どっちでも配布中!)
  2. PCとスマホを同じネットワークに接続(ケーブルいらず!)
  3. VisualStudioから呼び出すだけ

これだけで簡単にアプリをiOSやAndroid上でテスト実行出来るというシロモノです。
元々VS2017ではPreview版での限定機能になっていましたが、執筆段階での最新バージョン15.4.4では普通に使えるようになってました。

なんとこれ、 WindowsからiPhoneでプレビューすることも出来ます

えっ、Macいらなくね。

「Xamarinは銀の弾丸ではありません」と、XamarinのユーザーグループJXUG主宰の田淵さん(@ytabuchi )が至る所で仰ってます。
このXamarin Live Playerも、銀の弾丸ではありません。
出来ること、出来ないことがあったりします。

出来ること

Mac持って無くてもiPhoneでテストが出来る

半分本当です。
iOSアプリをビルドするためには、その仕様上MacとXcodeが必要です。
なので、iOSアプリを実際にデバッグするためには必然的にMacとXcodeが必要になるのですが。。

Macも、Xcodeも無し に、WindowsからiPhone上での実機テストが出来ちゃいます。

私もWindowsでXamarinの勉強をしていますが、レイアウトの練習する時には非常にお世話になってます。
Xamarin.FormsではそれぞれのOSに合ったUIになりますが、こういう見た目になるのか、というのがすぐ確認出来て非常に楽です。

どうやら「Xamarin Live Player」というアプリの中でいろいろ再現してくれているようです。

なぜ 「半分」 なのか?それは後述します。

デバッグが出来る

シミュレーター同様、普通にデバッグ実行が出来ます。
ブレークポイントもちゃんと利く。
ネットワークで繋げてるだけなのに…不思議。

レスポンスは良好

アプリ上でいろいろ再現して動かしている割に、レスポンスは非常に良好で、普通にアプリ使っているのと変わりません。
本当どうなってるの。

出来ないこと

制約が多い

ある意味これが本題。
Xamarin Live Playerは、執筆段階では多くの制約を抱えています。
https://developer.xamarin.com/guides/cross-platform/live/limitations/

例えば。

Limited support for reflection (currently affects some popular NuGets, like SQLite and Json.NET). Other NuGets are still supported.

リフレクションを使用するようなものについては限定的なサポートに留まる、としています。
C#でJSONを扱うのによく使われるらしいという、「Json.NET」などは影響がある、とのことです。
Json.NETがちゃんと動かないので、ちょまどさんのGitHubでも紹介されているこのハンズオン
https://github.com/xamarin/dev-days-labs/
これですら動きません。 ハンズオンレベルですら動かないのかいっ

他にも。

Custom Renderers are not supported.

「Custom Renderers」とは、Xamarin.Formsでプラットフォーム固有の機能を実装するための手段で、OS固有のビューを実装したい時などに使われます。
それが思いっきり 「not supported」 だそうで。
ビューの練習だけなら、と思っていたら、こんなところでも罠が。

…ということで、まだまだ限定的なところでしか使えない、というのが実情っぽいです。

まとめ

  • アプリをインストールするだけで簡単に設定可能
  • Mac持って無くても、一応iPhoneでの動作テストが出来る
    • ある程度の練習には十分活用出来るので、そこは非常に楽
    • レスポンスも全然悪くない
  • ちゃんとブレークポイントを貼ってのデバッグも出来る
  • ただし、非常に制約が多い
    • 割といろいろ動かない
    • iOSシミュレーターや、実機テストを置き換えるものではない (Xamarin Live Playerだけでのテストは出来ない)

さいごに

Xamarinの勉強会に参加した際に、「Xamarin Live Playerは全くオススメしません」とまで言い切られてしまったのですが、これ自体は非常に良い技術だと思っているので、少しでも制約が減って、もう少し使い勝手の良いものになると良いなと思います。
なんだかんだ、練習アプリを作るレベルでは非常にお世話になっているアプリなので。

おまけ

しかしまあ、そもそもMac買え って話ですね。はい。それで全て解決する話ではある。つらい。