JenkinsはオープンソースのCI/CDサーバーで、モバイルアプリケーションのビルド、テスト、配信を自動化します。クラウドソリューションとは異なり、Jenkinsは自社インフラにデプロイされ、ウェブインターフェースまたはコードを通じて設定されます。CloudBees, 2025のデータによると、160万以上のチームがCI/CDプロセスにJenkinsを使用しています。このシステムはMaster-Agentアーキテクチャによる分散ビルドと、開発ツールとの統合のための1800以上のプラグインをサポートしています。
重要ポイント
Jenkinsは、ソフトウェアのビルド、テスト、配信を自動化するためにJavaで書かれたオープンソースのCI/CDサーバーです。モバイル開発のコンテキストでは、Jenkinsを使用することでチームはiOSおよびAndroidアプリケーションを自動的にビルドし、単体テストとUIテストを実行し、ビルドに署名し、手動操作なしでApp StoreやGoogle Playに配信できます。
Jenkinsの必要性は、プロジェクトがローカルビルドを超えて成長し、複数の開発者からのコードの定期的な統合が必要になったときに生じます。各コミットの手動ビルドは時間がかかり、エラーが発生しやすくなります。Jenkinsは、リポジトリへの各変更時に自動パイプラインを起動することでこの問題を解決します。
JetBrains Developer Ecosystem 2025のレポートによると、モバイルチームの54%が主要なCI/CDプラットフォームとしてJenkinsを使用しています。このシステムはプラグインアーキテクチャにより任意の言語とプラットフォームをサポートしています。AndroidではGradleとSDK Manager、iOSではXcode IntegrationとKeychain Managerが利用できます。
ビルドインフラストラクチャを完全に制御し、CI/CDプロセスの各ステップをカスタマイズし、エンタープライズセキュリティシステムと統合する必要があるプロジェクトではJenkinsを使用してください。
JenkinsのアーキテクチャはMaster-Agentモデルに基づいています。Masterサーバーは設定、タスクスケジューリング、ウェブインターフェースを管理し、Agentは専用または一時的なマシンで実際のビルドを実行します。このアーキテクチャにより、単一のMasterサーバーからmacOSエージェントでiOSアプリケーション、LinuxエージェントでAndroidアプリケーションを並行してビルドできます。
JenkinsのMasterノードは、すべての設定、プラグイン、ビルド履歴をホームディレクトリ$JENKINS_HOMEに保存します。エージェントはSSH、JNLP、またはWebSocketを介してMasterに接続し、キューからタスクを受け取ります。モバイル開発では、iOSビルド用の専用macOSエージェントと、SDKとツールがインストールされたAndroidビルド用のLinuxエージェントを割り当てることをお勧めします。
各エージェントは、永続的なサーバーにも動的なDockerコンテナにもなります。CloudBeesのドキュメントによると、10の並列タスクで5つのエージェントにビルドを分散すると、CI/CDパイプラインの総時間が70%短縮されます。
Jenkins Pipelineは、CI/CDプロセス全体をコードとして定義し、プロジェクトと共にリポジトリに保存します。PipelineはJenkinsfileに記述され、2つの構文をサポートしています。Declarative(構造化され、事前定義されたブロックを持つ)とScripted(Groovyベースで、実行フローを完全に制御できる柔軟な構文)です。
宣言的構文は、可読性と予測可能性を提供するため、ほとんどのモバイルプロジェクトに推奨されます。Scripted Pipelineは、動的な並列ステージ、カスタムエラーハンドリング、環境変数に基づく条件ロジックを必要とする複雑なシナリオに適しています。
Jenkins Pipelineは、CI/CDプロセスのステップを記述する方法を定義する2つの構文をサポートしています。Declarative構文はpipeline、stages、stage、stepsのキーワードを使用したブロック構造を使用するため、新しいユーザーにとって直感的に理解しやすいものになっています。Scripted構文はGroovyベースで、条件文とループを通じて実行を完全に制御できます。
宣言的Pipelineは自動的にSandboxを作成します。これはGroovyスクリプトを実行するための安全な環境です。これにより、パイプラインのセキュリティが管理者によって制御されるエンタープライズ環境で重要となる、JavaとGroovyの危険なメソッドへのアクセスが制限されます。
宣言的Pipelineは、pipeline(ルートブロック)、agent(エージェントの指定)、stages(ステージの順序)、post(完了後のアクション)の4つの主要ブロックで構成されます。各stageにはビルドコマンドを含むstepsが含まれ、postブロックは成功、失敗、または不安定なビルドステータス時のアクションを定義します。
postブロックはモバイルプロジェクトに特に便利です。ビルド失敗時にSlack通知を送信したり、正常完了後にIPAやAPKのアーティファクトをアーカイブしたりする設定ができます。Jenkinsは、パイプラインが手動で中断された場合でも、postアクションを確実に実行します。
// iOSアプリケーションのDeclarative Pipeline
pipeline {
agent { label 'macos' }
stages {
stage('Build') {
steps {
sh 'xcodebuild -workspace App.xcworkspace -scheme App clean build'
}
}
stage('Test') {
steps {
sh 'xcodebuild -workspace App.xcworkspace -scheme App test'
}
}
}
}
Scripted Pipelineはagentの代わりにnodeブロックを提供し、動的分岐のためのGroovy構造を使用できます。この構文は、ステージのセットがビルドパラメータや以前のステップの結果に依存するパイプラインに便利です。
// 並列ステージを使用したScripted Pipeline
node('macos') {
stage('Parallel Builds') {
parallel(
ios: { buildIOS() },
android: { buildAndroid() }
)
}
}
def buildIOS() {
sh 'fastlane ios build'
}
iOSプロジェクトの場合、JenkinsfileにはXcode、CocoaPodsまたはSwift Package Manager、FastlaneがインストールされたmacOSエージェントが必要です。標準的なパイプラインには、依存関係のインストール、ビルド、テスト実行、コード署名、TestFlightまたはApp Storeへの配信のステージが含まれます。
JenkinsでのiOSビルドの重要な特徴は、証明書とプロビジョニングプロファイルの管理です。リポジトリから自動的に証明書を取得するためにFastlane Matchを、キーを安全に保存するためにJenkins Credentials Bindingプラグインを使用することをお勧めします。
pipeline {
agent { label 'macos' }
environment {
MATCH_PASSWORD = credentials('match-password')
}
stages {
stage('Install Dependencies') {
steps {
sh 'pod install --repo-update'
}
}
stage('Build and Test') {
steps {
sh 'fastlane scan'
sh 'fastlane gym'
}
}
stage('Deploy to TestFlight') {
when { branch 'main' }
steps {
sh 'fastlane upload_testflight'
}
}
}
}
iOSの単体テストでは、シミュレーターを指定してxcodebuild testを使用します。JenkinsはJUnitプラグインを介したXCTestレポートの公開をサポートしています。.xcresultをXML形式に変換して、テスト結果をビルドダッシュボードに埋め込みます。
JenkinsでのAndroidビルドは、Java JDK、Android SDK、Gradle、エミュレーターがインストールされたLinuxエージェントで実行されます。パイプラインには、リンターチェック、単体テスト、APKまたはAABのビルド、エミュレーターでのインストルメンテーションテスト、Google Play Consoleへの公開のステージが含まれます。
Android SDKを管理するには、Jenkinsfileでsdkmanagerを使用して必要なプラットフォームとbuild-toolsをインストールします。後続の実行を高速化するために、.gradleディレクトリと.androidディレクトリをビルド間でキャッシュすることをお勧めします。
pipeline {
agent { label 'linux' }
stages {
stage('Lint Check') {
steps {
sh './gradlew lint'
}
}
stage('Unit Tests') {
steps {
sh './gradlew testDebugUnitTest'
}
}
stage('Build APK') {
steps {
sh './gradlew assembleDebug'
}
post {
success {
archiveArtifacts artifacts: '**/build/outputs/apk/**/*.apk'
}
}
}
}
}
Androidのインストルメンテーションテストには、実行中のエミュレーターが必要です。JenkinsはAndroid Emulatorプラグインをサポートしており、テストの前に自動的にエミュレーターを作成して起動します。物理デバイスの場合はFirebase Test Labを使用します。Google Cloud SDKプラグインを介して統合できます。
Jenkinsプラグインシステムは、このプラットフォームの重要な利点です。1800以上のプラグインが、バージョン管理システムとの統合からクラウドサービスへのデプロイまで、CI/CDのすべての段階をカバーしています。各プラグインはパイプラインに新しいステップを追加し、ウェブインターフェースを追加の設定ページで拡張します。
モバイル開発には、認証情報を管理するためのプラグインセットが必須です。App Store ConnectのトークンとGoogle Playのサービスアカウントを保存するためのCredentials Binding、Jenkins UIからiOSアプリケーションのビルドステップを追加するXcode Integrationプラグインなどがあります。
| プラグイン | 目的 | プラットフォーム |
|---|---|---|
| Git Integration | リポジトリのクローン、ブランチ操作、Pull Request | iOS、Android |
| Gradle Plugin | レポート公開付きAndroidビルドのGradleタスク実行 | Android |
| Xcode Integration | JenkinsfileなしでiOSプロジェクトをビルド | iOS |
| Docker Pipeline | 分離環境のDockerコンテナでのビルド実行 | iOS、Android |
| Slack Notification | ビルドステータスのSlackチャンネルへの通知 | iOS、Android |
Docker Pipelineプラグインを使用すると、ビルドの各段階を個別のコンテナで実行でき、環境の再現性を保証し、環境間の差異の問題を排除できます。Androidビルドには、Gradleコミュニティから事前にAndroid SDKがインストールされたイメージを使用します。
JenkinsとTravis CIの選択は、チームの規模、予算、インフラ要件によって異なります。Jenkinsは完全な制御を提供するセルフホスト型ソリューションで、専用サーバーと管理者が必要です。Travis CIは従量課金制のクラウドサービスで、サーバー管理は不要です。
スタートアップや小規模チームにはTravis CIが適しています。インフラコストがゼロで、GitHubとの簡単な統合、iOSとAndroid向けの既成ビルドが提供されます。エンタープライズプロジェクトではJenkinsに利点があります。macOS上の独自ランナー、エンタープライズセキュリティポリシーへの準拠、Jenkinsfileによるパイプラインの詳細な設定が可能です。
Stack Overflow Survey 2025によると、Jenkinsはプロフェッショナル開発者の42%が使用しており、Travis CIの12%を上回っています。ただし、Travis CIは公開リポジトリの無料プランと最小限の参入障壁により、オープンソースコミュニティで依然として人気があります。
Jenkinsは、モバイル開発のCI/CD標準とする一連の利点を提供します。MITライセンスにより商用プロジェクトで制限なくサーバーを使用でき、オープンソースコードはベンダーからの独立性とセキュリティ監査の可能性を保証します。
Master-Agentアーキテクチャは水平スケーリングを可能にします。新しいエージェントを追加すると、パイプラインのスループットが線形的に増加します。JenkinsはKubernetes上で動的エージェントをサポートしており(Jenkins X)、必要に応じてビルダーを自動的に作成および破棄できます。
プラグインエコシステムは、Docker、Kubernetes、Fastlane、SonarQube、GitLab、Bitbucketなど、すべての最新ツールをカバーしています。既製のプラグインがない場合は、Javaで独自の拡張機能を作成したり、Pipeline Shared Librariesを使用してプロジェクト間でコードを再利用したりできます。
よくある質問
Jenkinsは、iOSおよびAndroidアプリケーションのビルド、テスト、配信を自動化するためのオープンソースCI/CDサーバーです。Javaで動作し、Master-Agentアーキテクチャによる分散ビルドをサポートし、プロジェクトリポジトリ内のウェブインターフェースまたはJenkinsfileを介して設定されます。
Jenkinsは、自己管理型インフラストラクチャとプラグインシステムが特徴です。Travis CIやGitHub Actionsとは異なり、Jenkinsは独自サーバーへのインストールが必要ですが、エンタープライズプロジェクト向けにビルド環境、セキュリティ、アクセスポリシーを完全に制御できます。
Jenkins Pipelineは、Jenkinsfileに保存されたGroovyコードとしてのCI/CDプロセスの定義です。Pipelineはビルド、テスト、デプロイを記述するステージとステップで構成されます。シンプルなシナリオにはDeclarative構文、複雑なシナリオにはScripted構文の2つをサポートしています。
iOSにはXcode IntegrationとKeychain Managerが必須です。AndroidにはGradle PluginとAndroid Emulatorが必要です。両プラットフォーム共通:Git Integration、Credentials Binding、Docker Pipeline、ビルドステータス通知用のSlack Notificationが必要です。
サーバーにJenkinsをインストールし、iOS用のmacOSエージェントとSDKがインストールされたAndroid用のLinuxエージェントを追加します。リポジトリのルートにビルドステージの記述を含むJenkinsfileを作成します。iOSではコード署名にFastlaneを使用し、Androidでは依存関係をキャッシュするGradleタスクを使用します。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。