Monaca中津川篤司CI(継続的インテグレーション)という言葉が聞かれるようになって数年経ちました。最近ではWebサービスの開発はもちろん、アプリ開発においてもアプリのビルドやテスト、さらにビルドしたアプリをテスターに配布するといった行程をCIによって自動化することが当たり前となりつつあります。CIを使った継続的インテグレーションの方法について紹介します。継続的インテグレーションとは?そもそもCIとは、開発フローの終盤で行われるユニットテストや結合テスト、さらにビルドやデプロイ、そしてユーザ自身によるテストなど手間のかかる作業を自動化していく施策です。それによって開発者は開発に専念することができ、プロジェクトがよりスムーズに、速く進むようになります。Monacaは元々デバッガーを使うことで開発とテストのサイクルを短くできますが、CIを利用することでさらにビルドや実機テストなどの作業を効率的に行えるようになります。注意点として、対象になるプロジェクトはGitHubリポジトリで管理されている必要があります。そのため、まずはGitHub連携を行ってください。GitHub連携の方法については、以下の記事を参考にしてください。MonacaクラウドとGitHub連携方法GitHub連携設定および、プロジェクトとGitHubリポジトリとの紐づけが完了したら、「設定」メニューの「継続的インテグレーション」を選択します。ここにはJSONを入力する欄があります。デフォルト値は以下のようになっています。}]これは、連携しているGitHubリポジトリののmasterブランチにコードがプッシュされたら、AndroidとiOSのデバッグビルドおよびリリースビルドを自動で実行する、という意味です。その他、JSONフォーマットの詳細はドキュメントを参考にしてください。この状態で、「有効」ボタンと「保存する」ボタンを押すと、CIが有効化されます。CIの使い方(ビルドの自動化)GitHubリポジトリへのプッシュを行うと、CIが実行されます。実行中のCIタスクは、「ビルド」メニューの「継続的インテグレーション結果一覧」から確認できます。ステータスがfinishになったら、CIによる自動ビルドが完了しています。完了したビルド結果は、「ビルド」メニューの「ビルド結果一覧」から確認できます。Androidリリースビルドおよび、iOSデバッグビルド/リリースビルドは、事前に一度手動ビルドが行われている必要があります。CIによるビルドの実行時には、前回選択したキーストアおよびプロビジョニングファイルを使用するようになっています。手動ビルドが行われていない場合はビルドに失敗してしまうので注意して下さい。デプロイサービスとの連携さらに発展的な使い方として、デプロイサービスと連携することでビルドされたアプリをテスターの方へ配布するところまでを自動化できます。今回はデプロイサービスの一つであるDeployGateと連携する例を紹介します。MonacaではDeployGateの他、HockeyAppとも連携可能です。IDEの「設定」メニューから「デプロイサービス」を選択し、DeployGateを追加します。以下の情報を入力して、追加します。Keyそして継続的インテグレーション設定ページで、JSON設定を以下のように書き換えます。}]aliasには、先ほど追加したエイリアス名を指定します。「保存する」ボタンを押せば設定は完了です。これでCIによるビルドが成功した際に、アプリがデプロイサービスに自動的にアップロードされ、テスターの方へ通知が飛ぶようになります。CIの実行回数はBasic/Personalプランの場合月10回、Gold/Platinumプランの場合月30回までの制限があります。CIページを参考にしてください)実際の開発でコードをプッシュする度にCIを実行していたら、あっという間に上限に達してしまいます。そこで、普段は別のブランチにプッシュするようにしておき、テストを実行するタイミングでプッシュ先をCI設定済みのブランチに変更すれば、開発のイテレーションごとに2、3回の利用で済むでしょう。CIを使うことで多人数でのアプリ開発時におけるビルド、配布問題がスマートに解決できるようになります。CI、そしてデプロイサービスを組み合わせた今風の開発スタイルを取り入れてみてください。中津川篤司プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。2004年、まだ情報が少なかったオープンソースソフトの技術ブログ『MOONGIFT』を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶエバンジェリスト業「DevRel」活動をスタートした。関連記事QRコード/バーコードをスキャンするcordova-p...Monacaのイベント発生順序についてアプリを広めるための大事な施策。(JavaScript基礎構文)iOS16から導入された「デベロッパモード」についてhtmx:JavaScriptなしでサーバーとの通信を実現する見やすい、メンテナンスしやすいJavaScriptのために。