Jenkins(ジェンキンス)とは — システムアーキテクチャとCI/CDサーバーの設定

著者: IT Sectr 公開日: 2026-04-13 読了時間: 10 分

JenkinsはオープンソースのCI/CDサーバーで、モバイルアプリケーションのビルド、テスト、配信を自動化します。クラウドソリューションとは異なり、Jenkinsは自社インフラにデプロイされ、ウェブインターフェースまたはコードを通じて設定されます。CloudBees, 2025のデータによると、160万以上のチームがCI/CDプロセスにJenkinsを使用しています。このシステムはMaster-Agentアーキテクチャによる分散ビルドと、開発ツールとの統合のための1800以上のプラグインをサポートしています。

重要ポイント

  • Jenkins — ビルド自動化とアプリ配信のためのJavaベースのオープンソースCI/CDサーバー
  • Pipeline — JenkinsfileでコードとしてCI/CDプロセスを定義(宣言的またはスクリプト構文)
  • Master-Agent — マスターノードとエージェント間でタスクを分散し並列ビルドを実現するアーキテクチャ
  • プラグイン — Git、Docker、Fastlane、XCTest、Gradleと統合するための1800以上のモジュール
  • Jenkinsfile — リポジトリ内の設定ファイルで、ビルド、テスト、デプロイの手順を定義

Jenkinsとは何か、なぜモバイル開発に必要なのか

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、Pipelineの動作

JenkinsのアーキテクチャはMaster-Agentモデルに基づいています。Masterサーバーは設定、タスクスケジューリング、ウェブインターフェースを管理し、Agentは専用または一時的なマシンで実際のビルドを実行します。このアーキテクチャにより、単一のMasterサーバーからmacOSエージェントでiOSアプリケーション、LinuxエージェントでAndroidアプリケーションを並行してビルドできます。

JenkinsのMasterとAgent

JenkinsのMasterノードは、すべての設定、プラグイン、ビルド履歴をホームディレクトリ$JENKINS_HOMEに保存します。エージェントはSSH、JNLP、またはWebSocketを介してMasterに接続し、キューからタスクを受け取ります。モバイル開発では、iOSビルド用の専用macOSエージェントと、SDKとツールがインストールされたAndroidビルド用のLinuxエージェントを割り当てることをお勧めします。

各エージェントは、永続的なサーバーにも動的なDockerコンテナにもなります。CloudBeesのドキュメントによると、10の並列タスクで5つのエージェントにビルドを分散すると、CI/CDパイプラインの総時間が70%短縮されます。

コードとしてのPipeline

Jenkins Pipelineは、CI/CDプロセス全体をコードとして定義し、プロジェクトと共にリポジトリに保存します。PipelineはJenkinsfileに記述され、2つの構文をサポートしています。Declarative(構造化され、事前定義されたブロックを持つ)とScripted(Groovyベースで、実行フローを完全に制御できる柔軟な構文)です。

宣言的構文は、可読性と予測可能性を提供するため、ほとんどのモバイルプロジェクトに推奨されます。Scripted Pipelineは、動的な並列ステージ、カスタムエラーハンドリング、環境変数に基づく条件ロジックを必要とする複雑なシナリオに適しています。

Jenkins Pipeline:DeclarativeとScripted構文

Jenkins Pipelineは、CI/CDプロセスのステップを記述する方法を定義する2つの構文をサポートしています。Declarative構文はpipeline、stages、stage、stepsのキーワードを使用したブロック構造を使用するため、新しいユーザーにとって直感的に理解しやすいものになっています。Scripted構文はGroovyベースで、条件文とループを通じて実行を完全に制御できます。

宣言的Pipelineは自動的にSandboxを作成します。これはGroovyスクリプトを実行するための安全な環境です。これにより、パイプラインのセキュリティが管理者によって制御されるエンタープライズ環境で重要となる、JavaとGroovyの危険なメソッドへのアクセスが制限されます。

Declarative Pipelineの構造

宣言的Pipelineは、pipeline(ルートブロック)、agent(エージェントの指定)、stages(ステージの順序)、post(完了後のアクション)の4つの主要ブロックで構成されます。各stageにはビルドコマンドを含むstepsが含まれ、postブロックは成功、失敗、または不安定なビルドステータス時のアクションを定義します。

postブロックはモバイルプロジェクトに特に便利です。ビルド失敗時にSlack通知を送信したり、正常完了後にIPAやAPKのアーティファクトをアーカイブしたりする設定ができます。Jenkinsは、パイプラインが手動で中断された場合でも、postアクションを確実に実行します。

groovy
// 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構造を使用できます。この構文は、ステージのセットがビルドパラメータや以前のステップの結果に依存するパイプラインに便利です。

groovy
// 並列ステージを使用したScripted Pipeline
node('macos') {
    stage('Parallel Builds') {
        parallel(
            ios: { buildIOS() },
            android: { buildAndroid() }
        )
    }
}
def buildIOS() {
    sh 'fastlane ios build'
}

Jenkinsfile:iOSプロジェクトのCI/CD設定

iOSプロジェクトの場合、JenkinsfileにはXcode、CocoaPodsまたはSwift Package Manager、FastlaneがインストールされたmacOSエージェントが必要です。標準的なパイプラインには、依存関係のインストール、ビルド、テスト実行、コード署名、TestFlightまたはApp Storeへの配信のステージが含まれます。

JenkinsでのiOSビルドの重要な特徴は、証明書とプロビジョニングプロファイルの管理です。リポジトリから自動的に証明書を取得するためにFastlane Matchを、キーを安全に保存するためにJenkins Credentials Bindingプラグインを使用することをお勧めします。

groovy
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形式に変換して、テスト結果をビルドダッシュボードに埋め込みます。

Jenkinsfile:AndroidプロジェクトのCI/CD設定

JenkinsでのAndroidビルドは、Java JDK、Android SDK、Gradle、エミュレーターがインストールされたLinuxエージェントで実行されます。パイプラインには、リンターチェック、単体テスト、APKまたはAABのビルド、エミュレーターでのインストルメンテーションテスト、Google Play Consoleへの公開のステージが含まれます。

Android SDKを管理するには、Jenkinsfileでsdkmanagerを使用して必要なプラットフォームとbuild-toolsをインストールします。後続の実行を高速化するために、.gradleディレクトリと.androidディレクトリをビルド間でキャッシュすることをお勧めします。

groovy
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プラグイン

Jenkinsプラグインシステムは、このプラットフォームの重要な利点です。1800以上のプラグインが、バージョン管理システムとの統合からクラウドサービスへのデプロイまで、CI/CDのすべての段階をカバーしています。各プラグインはパイプラインに新しいステップを追加し、ウェブインターフェースを追加の設定ページで拡張します。

モバイル開発には、認証情報を管理するためのプラグインセットが必須です。App Store ConnectのトークンとGoogle Playのサービスアカウントを保存するためのCredentials Binding、Jenkins UIからiOSアプリケーションのビルドステップを追加するXcode Integrationプラグインなどがあります。

プラグイン目的プラットフォーム
Git Integrationリポジトリのクローン、ブランチ操作、Pull RequestiOS、Android
Gradle Pluginレポート公開付きAndroidビルドのGradleタスク実行Android
Xcode IntegrationJenkinsfileなしでiOSプロジェクトをビルドiOS
Docker Pipeline分離環境のDockerコンテナでのビルド実行iOS、Android
Slack NotificationビルドステータスのSlackチャンネルへの通知iOS、Android

Docker Pipelineプラグインを使用すると、ビルドの各段階を個別のコンテナで実行でき、環境の再現性を保証し、環境間の差異の問題を排除できます。Androidビルドには、Gradleコミュニティから事前にAndroid SDKがインストールされたイメージを使用します。

Jenkins vs Travis CI:モバイルチーム向け比較

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は公開リポジトリの無料プランと最小限の参入障壁により、オープンソースコミュニティで依然として人気があります。

CI/CDプロセスにおけるJenkinsの利点

Jenkinsは、モバイル開発のCI/CD標準とする一連の利点を提供します。MITライセンスにより商用プロジェクトで制限なくサーバーを使用でき、オープンソースコードはベンダーからの独立性とセキュリティ監査の可能性を保証します。

Master-Agentアーキテクチャは水平スケーリングを可能にします。新しいエージェントを追加すると、パイプラインのスループットが線形的に増加します。JenkinsはKubernetes上で動的エージェントをサポートしており(Jenkins X)、必要に応じてビルダーを自動的に作成および破棄できます。

プラグインエコシステムは、Docker、Kubernetes、Fastlane、SonarQube、GitLab、Bitbucketなど、すべての最新ツールをカバーしています。既製のプラグインがない場合は、Javaで独自の拡張機能を作成したり、Pipeline Shared Librariesを使用してプロジェクト間でコードを再利用したりできます。

よくある質問

モバイル開発におけるJenkinsとは何ですか?

Jenkinsは、iOSおよびAndroidアプリケーションのビルド、テスト、配信を自動化するためのオープンソースCI/CDサーバーです。Javaで動作し、Master-Agentアーキテクチャによる分散ビルドをサポートし、プロジェクトリポジトリ内のウェブインターフェースまたはJenkinsfileを介して設定されます。

Jenkinsは他のCI/CDシステムとどう違いますか?

Jenkinsは、自己管理型インフラストラクチャとプラグインシステムが特徴です。Travis CIやGitHub Actionsとは異なり、Jenkinsは独自サーバーへのインストールが必要ですが、エンタープライズプロジェクト向けにビルド環境、セキュリティ、アクセスポリシーを完全に制御できます。

Jenkins Pipelineとは何ですか、どのように動作しますか?

Jenkins Pipelineは、Jenkinsfileに保存されたGroovyコードとしてのCI/CDプロセスの定義です。Pipelineはビルド、テスト、デプロイを記述するステージとステップで構成されます。シンプルなシナリオにはDeclarative構文、複雑なシナリオにはScripted構文の2つをサポートしています。

モバイル開発にはどのJenkinsプラグインが必要ですか?

iOSにはXcode IntegrationとKeychain Managerが必須です。AndroidにはGradle PluginとAndroid Emulatorが必要です。両プラットフォーム共通:Git Integration、Credentials Binding、Docker Pipeline、ビルドステータス通知用のSlack Notificationが必要です。

iOSおよびAndroidビルド用にJenkinsを設定するには?

サーバーにJenkinsをインストールし、iOS用のmacOSエージェントとSDKがインストールされたAndroid用のLinuxエージェントを追加します。リポジトリのルートにビルドステージの記述を含むJenkinsfileを作成します。iOSではコード署名にFastlaneを使用し、Androidでは依存関係をキャッシュするGradleタスクを使用します。

まとめ

  • Jenkins — モバイルアプリケーションのビルド、テスト、配信を自動化するJavaベースのオープンソースCI/CDサーバー
  • Master-AgentアーキテクチャによりiOSはmacOS、AndroidはLinuxで分散ビルドを実現
  • Jenkins PipelineはCI/CDプロセスをJenkinsfileにコードとして記述(宣言的またはGroovyスクリプト構文)
  • プラグインは機能を拡張 — Git、Docker、Fastlaneなどのための1800以上のモジュール
  • iOS用Jenkinsfile:podインストール、Xcodeビルド、テスト、Fastlane経由のTestFlight配信
  • Android用Jenkinsfile:リンター、単体テスト、APKビルド、エミュレーターでのテスト
  • スタートアップにはクラウド型Travis CI、エンタープライズプロジェクトにはインフラを完全制御できるJenkinsを推奨

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください