「Jenkinsって名前はよく聞くけど、GitHub Actionsとは何が違うの?」「古いツールってイメージがあるけど、まだ使われてるの?」
CI/CDについて調べると、必ず出てくるのがJenkinsです。2011年に登場して以来、世界中の開発現場で使われ続けている老舗ツールです。
この記事では、Jenkinsとは何か、どんな特徴があるのか、どんな場面で使われるのかを、初心者の方にもわかりやすく解説します。
Jenkinsとは?
Jenkinsは、オープンソースのCI/CD(継続的インテグレーション/継続的デリバリー)ツールです。
Javaで開発されており、Linux、Windows、macOSなど、Javaが動く環境であればどこでも動作します。現在はLinux Foundationによって管理されており、世界中で170万ユーザー以上が利用しています。
Jenkinsの歴史
Jenkinsは、もともと「Hudson」という名前で2004年にSun Microsystems(現Oracle)の開発者によって作られました。2011年にOracleとの商標問題をきっかけに「Jenkins」へ改名され、独立したオープンソースプロジェクトとして発展してきました。
20年以上の歴史があり、CI/CDツールの中では最も長い実績を持つツールの1つです。
Jenkinsの主な特徴
Jenkinsが長年にわたって使われ続けている理由を見ていきましょう。
1. 圧倒的なプラグインの数
Jenkinsの最大の特徴は、1,800以上のプラグインが用意されていることです。
GitHub、GitLab、Bitbucketなどのバージョン管理システム、Slack、Microsoft Teamsなどの通知ツール、AWS、Azure、GCPなどのクラウドサービスなど、あらゆるツールと連携できます。
「こんな機能がほしい」と思ったら、たいていプラグインで解決できます。
2. 高いカスタマイズ性
プラグインだけでなく、スクリプトを書いて独自の処理を追加することもできます。
パイプラインをコードで定義する「Pipeline as Code」にも対応しており、Jenkinsfileというファイルでビルドプロセスを管理できます。
// Jenkinsfileの例
pipeline {
agent any
stages {
stage('ビルド') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('テスト') {
steps {
sh 'npm test'
}
}
stage('デプロイ') {
steps {
sh 'npm run deploy'
}
}
}
}
3. 分散ビルドに対応
Jenkinsは、複数のマシンにビルドを分散して実行する機能を持っています。
メインのJenkinsサーバーが司令塔となり、「エージェント」と呼ばれる実行用マシンに作業を振り分けます。これにより、大規模なプロジェクトでもスムーズにCI/CDを実行できます。
4. オンプレミスで運用できる
GitHub ActionsなどのクラウドサービスとDIFFERENT、Jenkinsは自社のサーバーにインストールして運用できます。
セキュリティ上の理由でクラウドを使えない企業や、GPUなど特殊なハードウェアが必要な場合に選ばれます。
Jenkinsが選ばれる場面
どんなときにJenkinsを選ぶべきか、具体的なケースを見てみましょう。
ケース1:企業の大規模プロジェクト
複数のチームが関わる大規模プロジェクトでは、複雑なビルドパイプラインが必要になります。Jenkinsの豊富なプラグインとカスタマイズ性が活きる場面です。
ケース2:オンプレミス環境が必須
金融機関や医療機関など、セキュリティ要件が厳しい業界では、外部サービスを使えないことがあります。Jenkinsなら自社サーバーで完結できます。
ケース3:特殊なビルド環境が必要
GPUを使った機械学習モデルのビルド、Windows専用アプリケーションの開発など、特定の環境が必要な場合にJenkinsは柔軟に対応できます。
ケース4:既存システムとの連携が多い
レガシーなシステムや独自のツールと連携する必要がある場合、プラグインやスクリプトで対応できるJenkinsが便利です。
JenkinsとGitHub Actionsの違い
よく比較される2つのツールの違いを整理してみましょう。
| 比較項目 | Jenkins | GitHub Actions |
|---|---|---|
| 提供形態 | オープンソース(自分でサーバー用意) | クラウドサービス(GitHub提供) |
| 導入のしやすさ | サーバー構築が必要 | すぐに始められる |
| カスタマイズ性 | 非常に高い | 高い |
| 料金 | 無料(サーバー費用は別途) | パブリックリポジトリは無料 |
| 運用コスト | サーバー管理が必要 | GitHubにおまかせ |
| 向いている用途 | 大規模・複雑なプロジェクト | 小〜中規模、GitHub利用者 |
どちらが良いかは、プロジェクトの規模や要件によって変わります。小規模な個人開発ならGitHub Actions、大規模な企業プロジェクトならJenkinsという使い分けが一般的です。
Jenkinsのデメリット・注意点
Jenkinsにもデメリットがあります。導入を検討する際は考慮しておきましょう。
1. サーバー管理が必要
Jenkinsを使うには、自分でサーバーを用意して管理する必要があります。サーバーのメンテナンス、セキュリティアップデート、バックアップなどの運用コストがかかります。
2. 学習コストがある
機能が豊富な分、使いこなすまでに時間がかかります。最初はシンプルなジョブから始めて、徐々に慣れていくことをおすすめします。
3. プラグインの管理が大変
プラグインが豊富なのはメリットですが、プラグイン同士の互換性問題やアップデート管理が煩雑になることがあります。
Jenkinsを学ぶメリット
エンジニアを目指す方にとって、Jenkinsを学ぶことにはどんなメリットがあるでしょうか。
1. 企業での利用実績が多い
多くの企業でJenkinsが使われているため、転職時にアピールできるスキルになります。「Jenkins経験あり」を条件にする求人も少なくありません。
2. CI/CDの仕組みを深く理解できる
Jenkinsを構築・運用する過程で、CI/CDの仕組みを深く理解できます。この知識は、他のツールを使う場合にも活きてきます。
3. インフラの知識も身につく
サーバーの構築・管理が必要なため、自然とインフラの知識も身につきます。DevOpsエンジニアを目指す方には特におすすめです。
まとめ
この記事で解説した内容をまとめます。
| 項目 | 内容 |
|---|---|
| Jenkinsとは | オープンソースのCI/CDツール、170万ユーザー以上 |
| 主な特徴 | 1,800以上のプラグイン、高いカスタマイズ性 |
| 料金 | オープンソースで無料(サーバー費用は別途) |
| 向いている用途 | 大規模プロジェクト、オンプレミス環境、複雑なパイプライン |
| GitHub Actionsとの違い | 自前サーバーが必要だが、カスタマイズ性が非常に高い |
Jenkinsは、20年以上の歴史を持つ老舗ツールですが、今も進化を続けています。GitHub Actionsなどのクラウドサービスが登場した今でも、大規模な企業プロジェクトや特殊な要件がある場面では欠かせない存在です。
まずはGitHub Actionsで基本を学び、より複雑な要件に対応するときにJenkinsを検討するという流れがおすすめです。どちらのツールも使えるようになれば、さまざまな開発現場で活躍できるエンジニアになれるでしょう。