読者です 読者をやめる 読者になる 読者になる

ぬいブログ

C#を中心になんか書いていこうかな?なお掲載内容は個人の見解であり、所属する企業を代表するものではありません。

XamarinでMacなしでiPhoneアプリを作る その2

Visual Studio Xamarin iPhone iOS

はじめに

さて、あれからいろいろ試した結果
どどん!

f:id:nuitsjp:20160402230519p:plain

一応動きました!
ただ、プランはCI Build Agentではダメで、Managed Serverじゃないと無理でした。

というか、そもそも「iOS Simulator on Windows」は発表あっただけでまだリリースされてませんよね。
デバックはMac上のiOSエミュレータを使う必要があります。
CI Build Agentは「Build Remotely, Non-Interactive」なんでリモートできませんので、当然無理でした。
と言う分けで、Trial期間は24時間になってしまいますが、Managed Serverを契約する必要があります。

それは順を追って説明していきます。

前提条件

・ローカルPCにVisual Studio 2015 Update 2がインストール済みであること
・Xamarinのアカウントが作成済みであること
・クレジットカードがあること(最低0.99$かかります)

MacinCloudを契約する

まずはMacinCloudを契約します。
以下のサイトを開いてください。

http://www.macincloud.com/pricing/compare

開いたら、Managed Serverの「More Detail」を押下します。

f:id:nuitsjp:20160402232414p:plain

で、「Get This Plan」を選択。

f:id:nuitsjp:20160402232623p:plain

そして、以下の画面でプランを選択します。

f:id:nuitsjp:20160402233110p:plain

Locationは近いところがいいでしょう。
Asiaか、Australiaか。。。
なんだか、この件をTwitterで話していたら、次のようなツイートをいただきました。

と言うことで、Asiaは香港なんですかね?HPにはNear Singaporeとか書いてますけどw
とりあえずAsiaにしてみました。

OSは、YosemiteがMacinCloud的には開発者におすすめらしいです。
理由はMac詳しくないのでよく知りません!

プランは各自ご随意に選択して、「Checkout」を押下してください。
すると次の画面が表示されます。

f:id:nuitsjp:20160402233937p:plain

ここで必ず「Enable Remote Build Port」を選択してください。
じゃないと、Visual Studioから直接リモートビルド&デバックができません。
あとはクレカ情報を入力してSubscribeすると手続きは完了です。

MacinCloudのセットアップ

上記の登録をするとすぐメールが飛んできて、速攻利用可能になります。クラウドすげ~!
さて、次のようなメールが届きます。

f:id:nuitsjp:20160402235812p:plain

上のメールの赤でくくったリンクにあるZIPファイルを落として解凍してください。
リモートデスクトップの推奨プロファイルが取得できます。
知識のある方は、ホスト名とポートを指定してリモートデスクトップから接続していただいて問題ありません。
その際、ポート番号は6000番を指定してください。

ダウンロードしたZIPを解凍すると次のようなファイルがあるはずです。

f:id:nuitsjp:20160402235329p:plain

各自の環境に適した解像度を選んで開いていただけたら良いのですが、FullScreenは止めておいたほうがいいでしょう。
後々の操作が面倒になります。
私は1280x1024を選びました。

対象ファイルをダブルクリックすると、ログイン画面が開きます。

f:id:nuitsjp:20160402235533p:plain

アカウントおよびパスワードに、メールに記載されていた情報を入力して、接続してください。

f:id:nuitsjp:20160403000235p:plain

接続できましたね?
では、左下の赤丸でくくったFinderを開いてください。

f:id:nuitsjp:20160403000433p:plain

Finderの中から「Applications」->「Xamarin Studio」をダブルクリックして開いてください。

f:id:nuitsjp:20160403000737p:plain

Xamarin Studioの右上に「Log in」ボタンがありますので、それを押下して開いたダイアログに、Xamarinのアカウント・パスワードを入力してLog inしてください。
このとき、キーボードが英語入力になっています。
@マークは「Shift」+「2」になるので気を付けてください。

ログインできれば、MacinCloud側の設定は完了です。

Visual Studioを起動しビルド・デバックを実行する

では、いよいよVisual Studioの出番です。

f:id:nuitsjp:20160403001420p:plain

とりあえず、何でもいいのでiPhone絡みのプロジェクトを作成してください。
私は「iPhone」->「Blank App」からXamarinTestという名称のプロジェクトを作成しました。

続いて、Visual Studio上の以下の赤枠でくくった「Xamarin Mac Agent」ボタンを押下してください。

f:id:nuitsjp:20160403002740p:plain

「Xamarin Mac Agent Instructions」というダイアログが開きますが、OKボタンを押下して閉じてください。
続いて以下の「Xamarin Mac Agent」画面の「Add Mac」ボタンを押下します。

f:id:nuitsjp:20160403002123p:plain

そして、以下の画面でMac側のアドレスを入力します。

f:id:nuitsjp:20160403002207p:plain

ここには、MacinCloudから届いたメール内の、「Your Mac IP is:」に記載されているIPアドレスを入力し、「Add」ボタンを押下します。

f:id:nuitsjp:20160403002403p:plain

続いて上記画面で、IDパスワードを入力してLoginを押下してください。
IDパスワードは届いたメール内のリモートデスクトップ接続に利用したものと同じものです。

接続の初期化処理にはそこそこ時間がかかりますので、しばらく待機してください。
以下のように、最初に押下した「Xamari Mac Agent」が緑になっていればOKです。

f:id:nuitsjp:20160403003104p:plain

それでは「Debug」ボタンの右の「iPhone」が選ばれているコンボボックスを「iPhone Simulator」に変更してから F6を押してビルドしてみてください。
ビルドは成功しましたか?

成功したら、下図の赤枠を選択し、適当なシミュレーターを選択します。
私はiPhone5S iOS9.2を選びました。

f:id:nuitsjp:20160403003449p:plain

選んだら、おもむろにF5を押してデバックを開始しましょう。
あとは、リモートデスクトップVisual Studioを開いて、実行を待ちます。

結構待ちますし、通信状態によっては失敗したり、応答がなかったりいろいろです。
その場合、Visual Studioを再起動したり、リモートデスクトップ側でログアウトして再接続したり、何度か試してみてください。
うまくいけば以下のように実行され、デバックも実施できるはずです!

f:id:nuitsjp:20160403003943p:plain

。。。と言いましたが、上のアプリすぐ例外で落ちてしまいました。。。
Xamarin.Formsのアプリであればうまく動いていたことから、Xamarin.iOSのBlank Appsのテンプレートの何かに問題があるのか、私が何か誤ったのかもしれませんが、まぁ今回の本質と関係ないのでとりあえずここまでとします。

さいごに

まず大切なことを。
お試しが終わったら、MacinCloudのサイトに接続し、サブスクリプションを必ずキャンセルしてください。
継続課金されてしまいますので。。。

さて、今回1日触ってみた所感ですが
「できることはできるが、特にデバックをローカルVisual Studioとリモートのシミュレータ上でやるのはストレスが大きい」
といったところでした。
ビルドに関しては、手元に大きなプロジェクトがなかった為、何とも言えません。
仮に、それなりの規模のプロジェクトが、我慢できる速度でビルドできるようであれば、「iOS Simulator on Windows」がリリースされた後であれば、実用に耐えうるかもしれません。

現状では、リモート接続で全部ローカルのVSからというのは、操作性も含めあまり気持ちの良いものではありません。

ただし、MacinCloudのVM上のMacは非常に軽快に動作していました。
サーバー側のネットワーク速度も、悪くないように思えます。

なので、以下のようにすれば、ある程度は現実的な開発が可能かもしれません。

  1. ローカルのVisual Studioで実装し、GitHubなどのリポジトリへソースをアップする
  2. MacinCloudへリモート接続し、リポジトリからソースを取得する
  3. MacinCloud上のXamari Studioでビルドしてデバック実行する

2016/04/03 修正

下記の記載に誤りがありました。
訂正してお詫びを申し上げます。

なお懸念していた、ビルド結果を手元の実機に配置してテストすることはもしかしたら可能かも知れません。 まだ試せていないため、試せたらまたエントリーします。

MacinCloudからiPhoneの直接実機に配置することは無理なようです。

MacinCloudの公式見解としては、TestFlyghtを使えとのことのようです。
そちらはまた別途記事にしてみたいと思います。

How can I easily test my apps on my own iOS hardware using MacinCloud service? : MacinCloud Support Portal

2016/04/03 修正ここまで

それでは今日はこのあたりで。
ではまた。