本記事は2021年7月に更新されました。
各セッション中にCodemagicのビルドが実行される仮想MacOSビルドマシンへの一時的な リモートアクセス/接続 が可能になりました。
まだCodemagicのユーザーでない場合は、こちらでサインアップできます:
。リモートマシンへの接続には2つの方法があります:
-SSHアクセス -VNC Viewer
本記事は Souvik Biswas が執筆いたしました。
事前インストールされたソフトウェア
このリモートMacOSマシンには、複数のバージョンのXcodeや**iOSシミュレーター(複数)**など、Flutterプロジェクトのテストやデバッグに必要な重要なソフトウェアが事前に用意されています。
Macを持っていなくても、FlutterアプリをiOSシミュレーターで動作させてパフォーマンスをテストしたり、XcodeでFlutterプロジェクトの構成を変更したりできます。
事前インストールされたソフトウェアの全リストはこちらからご覧いただけます。
仮想ビルドマシンへのアクセス
SSHかVNC Viewerを使用して仮想ビルドマシンにアクセスするには、以下の手順に従います。
**注意:**仮想マシンへのSSHまたはVNC接続の確立は、手動でトリガーされたビルドでのみ可能です。
プロジェクトをCodemagicで開きます。
**新規ビルドを開始(Start new build)**をクリックします。
ビルド構成を指定ダイアログボックスで、正しいブランチとワークフローを選択し、再度新規ビルドを開始をクリックするとビルドプロセスが開始されます。
ビルドが始まると、「SSHまたはVNCクライアントでビルドマシンを探索」タブをを展開し、しばらく待つと、SSHまたはVNC接続を確立するための指示が表示されます。
SSHによるアクセス
SSH接続では、ターミナルを介してのみビルドマシンにアクセスし、そこでコマンドを実行することができます。
SSH接続を確立するためのスクリプトは、LinuxとMacOSでネイティブに動作します。ですが、Windowsで動作させたい場合は、追加のソフトウェアが必要になります。
SSH接続を確立するには、ターミナルから(LinuxとMacOSで)curlコマンドを実行するだけです。
ターミナルにcurlコマンドをコピー&ペーストします。Enterを押すと、リモートMacOSシステムに接続します。
これでVMへのアクセスが可能になりました。
クローンされたプロジェクトは、パス /Users/builder/clone
で利用できます。次のコマンドを実行するだけでパスにナビゲートします:
cd clone
SSHセッションは、ビルドステップがすべて完了してから最大20分間、またはビルド時間の最大制限に達するまでのいずれか早い方の時間の間アクティブになります。
SSHアクセスは、ビルドのデバッグに最適なオプションです。CIジョブ中に実行されたプロセスを確認したり、ビルド中に実行されたコマンドをすべて再現したり、カスタムスクリプトをデバッグしたりできます。sudoアクセスでVMを完全に制御できます。
ヒント:
codemagic.yaml
スクリプトのbashコマンドを、SSHアクセスでビルダーマシン上で直接再実行して、正しい出力が得られるかどうかを確認できます。すべての環境変数にアクセスできます。ビルダー上で
printenv
というコマンドを実行すると、それらを見れます。
VNC Viewerによるアクセス
VNC Viewerでは、グラフィカルなインターフェイスを使ってリモートビルドマシンにアクセスできます。これにより、MacOSマシンを所有していなくても、Flutterアプリをシミュレーター上で実行し、そのパフォーマンスを理解することができます。
[VNC Viewer]をダウンロード(https://www.realvnc.com/en/connect/download/viewer/ ‘Remote access virtual Mac build machine’)します。
VNC Viewerをインストールして実行します。
ここで、ホストIDとポート番号をコピーして、次の形式で**_VNCサーバーアドレスフィールド**に貼り付けます:<ホストID>:<ポート番号>
(例: 192.159.66.83:16543
)。その後、 Enter を押します。警告メッセージが表示されますが、単に**続行(Continue)**をクリックします。
Codemagic UIで生成されたユーザー名とパスワードを入力して、OKをクリックします。
これでリモートMacOSビルドマシンに接続されました。接続が確立されると、システムのデスクトップが表示されます。
VNCセッションは、ビルドステップがすべて完了してから最大20分間、またはビルド時間の最大制限に達するまでのいずれか早い方の時間の間アクティブになります。
異なるアプリケーションへのアクセス方法
MacOSの環境に慣れていない場合、リモートMac内のさまざまなアプリケーションにアクセスするのが難しいと感じるかもしれません。ご安心ください。ターミナルを使って様々なアプリケーションを起動できます。
ドックにあるターミナルのアイコンをクリックすると、ターミナルにアクセスできます。
ターミナルを使えば、Safari、Xcode、Simulatorなど、Macで様々なアプリケーションを簡単に起動できます。
シミュレーターでの実行
MacOSをお使いでない方は、まず、FlutterアプリをiOSシミュレーターで実行することになるでしょう。では、シミュレーターでアプリを実行する方法をご紹介いたします。
まず、仮想MacOSシステム上でiOSシミュレーターを起動します。
ビルドマシンには、異なるバージョンのシミュレーターが搭載されています。そのため、最初に、ビルドする対象のiOSバージョンでアプリをテストする必要があります。
ビルドマシンにインストールされているシミュレーターのバージョンはすべて、以下のコマンドで確認できます:
xcrun simctl list
次のコマンドを使って、デフォルトのシミュレーターのバージョンを実行できます:
open -a Simulator
また、システム上に存在する任意のシミュレーターを起動するには、デバイスのUDIDを指定して、次のコマンドを使用します:
open -a Simulator --args -CurrentDeviceUDID <device UDID>
シミュレーターでアプリを実行するには、クローンされたFlutterアプリのディレクトリに移動する必要があります。プロジェクトのクローンは、VM上のパス /Users/builder/clone
で利用できるようになります。
それを次のコマンドを使って簡単にナビゲートできます:
cd clone
そして、次のコマンドを使ってアプリを実行します:
flutter run
シミュレーターでプロジェクトが読み込まれるのを待ちます。
iOSの構成変更
FlutterプロジェクトのiOS部分の構成を変更するには、VM上でXcodeを使用する必要があります。
次のコマンドを使って、デフォルトバージョンのXcodeを起動できます:
xed -x
現在選択されているXcodeのバージョンを確認するには、次のコマンドを使用します:
xcode-select -p
Xcodeのバージョンを変更するには、以下を使用します:
sudo xcode-select -s /Applications/Xcode-<version>.app/Contents/Developer
<version>
は、システムで利用可能な任意のバージョンに置き換えてください。システムに存在するバージョンは、ビルドマシンのFinderから アプリケーションフォルダに移動して確認できます。
Xcodeを開いた後、**別のプロジェクトを開く(Open another project)**をクリックします。
ここで、Flutterプロジェクトのiosフォルダに移動し、Xcode上でそれを開く必要があります。上部のドロップダウンから「ビルダー」を選択します。
次に、クローン(clone)→iosと進み、開くをクリックします。
プロジェクトが Xcode で開かれます。iOSアプリのバージョンやバンドルIDを変更したい場合は、左サイドバーからRunnerにアクセスします。
また、Xcodeからプロジェクトのプロビジョニングプロファイルと開発者署名証明書を生成することもできます。
コード署名ファイル(プロビジョニングプロファイルや証明書など)を生成するためのガイドはこちらにあります。
また、このVM上で行った構成変更を保存するのも非常に簡単です。リポジトリは*GitHub**/GitLab/Bitbucketアカウントからクローンされているため、gitを使って変更を直接_commit_して、アカウントに_push_できます。
デモ用に、Xcode内でiOSアプリのバージョンを更新したところです。
ここで、ターミナルを開き、プロジェクトディレクトリに移動します。
cd clone
次に、以下のコマンドを実行すると、変更されたファイルが表示されます:
git status
ファイルをGitにコミットする前に、以下の2つのコマンドを実行して、変更内容の正しい作成者を定義します:
git config --global user.name "<your_name>"
git config --global user.email "<your_email>"
<your_name>
をお名前に、<your_email>
をメールアドレスに置き換えてください。
次のコマンドを使って、変更したファイルをコミットします:
git add .
git commit -m "Update ios version to 2.0.0"
iosディレクトリのみをコミットしたい場合は(
git add .
ではなく)、以下を実行します:git add ios
次のコマンドを実行して、正しい作成者で変更が行われているかどうかを確認できます:
git log
プロジェクトで使用可能なリモートがあるかどうかを確認します。
git remote
次のコマンドを使って変更内容をプッシュします:
git push origin master
GitHubアカウントでプロジェクトを検証し、変更が完了したかどうかを確認できます。
結論
仮想MacOSマシンへのリモートアクセスは、MacOSシステムにアクセスできない人々に全く新しい可能性をもたらします。さらに、シミュレーターでFlutterアプリを実行してテストしたり、Xcode(VMに事前インストールされている)を使ってプロジェクトの構成を変更したりもできます。また、VMに直接アクセスすることで、コード署名も非常に簡単になります。
リモートアクセスについての公式ドキュメントはこちらにあります。
Souvik Biswasは、情熱的なモバイルアプリ開発者です(AndroidとFlutter)。彼はこれまでの歩みの中で、数多くのモバイルアプリを手がけてまいりました。GitHubでのオープンソース貢献が大好きです。彼は現在、Indian Institute of Information Technology Kalyaniでコンピューターサイエンスとエンジニアリングの技術学士号の取得を目指しています。また、Medium - Flutter CommunityでFlutterの記事も執筆しております。