Jenkinsとは?需要や将来性、活用事例を解説!
Jenkinsはプログラムの自動テストに利用されるツールです。現在はCI(ContinuousIntegration=継続的インテグレーション)が重要視されていますので、Jenkinsはこれを実現してくれます。
比較的古くからあるツールなのですが、最近になってJenkinsを使い始める人も多いようです。今回はJenkinsとはどのようなツールであり、どの程度の需要や将来性があるのかについて解説します。また、具体的な活用事例についてもご紹介します。
Jenkinsとは?
最初にJenkinsとはどのようなツールであるのかを理解しておきましょう。この点が理解できてなければ、Jenkinsの需要や将来性の理解に繋がりません。
Jenkinsの概要
Jenkinsは冒頭でもご説明したとおり、CIを実現するためのツールです。最近はエクストリームプログラミングなどアジャイル開発の手法が採用される機会が増えていますので、それらの過程でCIツールは必須とも言える状況です。
CIツールについて解説をすると、CIツールは「ソースコードのコミット」から「テスト」までの一連の流れを自動化するものです。本来はコミットしてからビルドし、テストする必要がありますが、これらを自動化して効率化できます。人間が関わる部分を減らせますので、効率よく開発ができるようになります。
なお、Jenkinsはオープンソースで開発されているCIツールです。そのため、無料で導入できるという点で他のCIツールよりも普及している側面があります。
Jenkinsを利用するメリット
Jenkinsを導入するメリットは多くあります。今回はそれらのメリットの中でも、特に理解しておいてもらいたい3つのメリットを解説します。
プラグイン数が豊富
Jenkinsはプラグインで機能拡張ができる仕組みです。オンプレミスで利用するツールですので機能拡張は利用者の負担になりやすいのですが、プラグインがあるためにこの負担を軽減できます。プラグインの仕組みがあるだけでCIツールの中ではメリットがあると考えられます。
また、加えてJenkinsのプラグインはその種類が豊富であるメリットがあります。具体的な数は日々変化していますが、概ね1,800種類程度のプラグインがあると考えられています。プラグインで機能拡張ができるだけではなく、多くのプラグインで自由に機能拡張ができるのがJenkinsの強みです。
具体的なJenkinsのプラグインには非常に多くの種類があります。例えばGitLabなどのソースコード管理ツールとの連携が可能です。Jenkinsはソースコードをコミットしてから利用するものですので、多くのソースコード管理ツールと連携できる点はメリットです。
また、Jenkinsは各種コミュニケーションや課題管理ツールとの連携も可能です。Jenkinsの公式サイトでプラグインを検索してみると、どのツールと連携できるのかが確認可能です。豊富なプラグインのメリットを活かせるかどうかは、事前に確認しておくと良いでしょう。
導入が容易
CIツールの中でもJenkinsは導入が容易です。手間をかけずにツールを用意できる点は、メリットだと言えます。
Jenkinsの導入が容易である理由は、JenkinsがJavaで開発されているツールであるからです。Javaは多くのプラットフォームで利用できるプログラミング言語ですので、Jenkinsも多くのプラットフォームで利用できます。OSもWindowsやMacOS、Linuxなど様々なものに対応していますので、簡単に導入環境を用意できます。
また、Jenkins導入に必要なものもJavaの実行環境など限られたものです。ツールを導入するための手順は簡易なものであり、専門知識などは求められません。Javaは多くの環境にインストールされていますので、事前の準備も少なく容易なJenkins導入を実現できています。
ただ、環境の準備が簡単である点はJenkinsのメリットですが、そのスペックは注意しておかなければなりません。スペックを意識せずにJenkinsを導入してしまうと、スペック不足で思うようにツールが動作しない可能性があります。「どのような環境でも動く」というメリットだけに注目せず、必要最低限のスペックは満たすようにしましょう。
CI/CDを柔軟に自動化
JenkinsはCI/CDを柔軟に自動化できる点がメリットです。CIの自動化はJenkinsの最低限のメリットではありますが、CDを含めて柔軟に自動化できます。柔軟に自動化できる背景には、上記でご説明したプラグインの豊富さがあります。柔軟に自動化できれば、人間が関与してミスが起きる可能性を極限まで減らせるのです。
世の中には多くのCI/CDツールがありますが、ものによってはプラグインなどの機能拡張があまり用意されていません。そのようなツールを利用してしまうと、柔軟なテストなどができなくなってしまいます。ツールに合わせてCIやCDを計画しなければならないのです。
しかし、Jenkinsであればプラグインを活用してCIやCDを柔軟に自動化できます。プロジェクトの状況に応じて必要なツールと連携したり必要な機能を用意したりできるのです。要件に応じて柔軟な自動化を実現できるメリットがあるのです。
Jenkinsを利用するデメリット
逆にJenkinsを利用するデメリットについても解説します。
Jenkins独自の仕様が多い
Jenkinsには独自の仕様が多くあります。そのためJenkinsを使うためには、これらの仕様を丁寧に覚えなければなりません。特にJenkinsはプラグインを多く導入できますので、基本的な仕様とプラグインの導入にあたり必要な仕様の両方を覚える必要があります。
独自の仕様を多く覚えなければならないのは、機能が多いツールのデメリットだと考えられます。多くの機能を実現するとなると、どうしても独自の仕様などを覚えなければならないのです。汎用的な使い方だけでは、実現できる機能に限界があるとも言えるでしょう。
つまり、独自の仕様が多くあるのはJenkinsだけのデメリットではありません。他のCIツールでも機能が多いものは独自の仕様が多くあります。ただ、やはり多くの仕様を理解してこそJenkinsが利用できるようになりますので、学習コストの高さはデメリットだと言わざるを得ません。
Jenkinsの運用ルールが必要
Jenkinsは導入すればどのようなプロジェクトでも恩恵を受けられるわけではありません。利用するためのルールを作成し、そのルールに沿って運用して初めて効果を生み出します。このルール作りに時間を要する点がデメリットです。
「Jenkinsを導入すれば自動化で便利になる」と安直に考えている人を時折見かけます。確かに「Jenkins=便利なツール」とのイメージはあるかもしれませんが、それはツールを使いこなせている場合です。Jenkinsをはじめとしたツールは使いこなすためにはルールが必要です。Jenkinsを導入する際は運用ルールの策定まで考慮に入れましょう。
なお、「ルール」を作るためには多くの観点を考慮する必要があります。例えば以下のような観点を意識する必要があるでしょう。
- コーディングルール
- コメントルール
- テストケースルール
これらはCIツールを利用するナレッジが貯まれば自然と作成できるようになります。しかし、最初の段階は作成に時間を要してしまい、短期的に見るとCIツールを導入するメリットを小さくしてしまいます。
Jenkinsの需要と将来性
これからのJenkinsの需要と将来性についても解説していきます。
老舗のツールで需要は安定
JenkinsはCIツールの中でも比較的昔から利用されています。そのために歴史が長く安定した需要のあるツールです。特に日本で利用されているCIツールの中では導入実績が多く、Jenkinsが採用されているプロジェクトは多々あります。
特に大規模なプロジェクトでは、ルールを設定する手間などから頻繁にCIツールの変更はしません。つまりすでに導入されているCIツールがあれば、それを活用するためのエンジニアが求められ続けます。ツールを横展開して新たなプロジェクトに利用するケースもありますので、需要は尽きないと言ってよいでしょう。
実績の多さを踏まえると、Jenkinsを扱えるエンジニアの需要は安定しているはずです。実際にツールを利用するだけではなく、ルール作成などもできるとより需要の高い人材になるでしょう。
新規導入は他ツールにも押されつつある
近年は多くのCIツールが公開されています。そのため長く利用されているJenkinsのライバルとも言えるツールが増えてきています。ツールの種類が増えてきたことで、新規導入に関しては他のツールにも押されつつある状況です。
JenkinsをはじめとしたCIツールのシェアが具体的にどの程度変化しているのかは明確な資料がありません。ただ、CIツールに関するキーワードの検索トレンドなどを確認すると、Jenkins以外の検索数は年々増えています。これが直接シェアに繋がっているとは言い切れませんが、状況は変化してきていると考えてよいでしょう。
CIツールの種類が増え、将来的にはシェアが変化する可能性を頭の中に留めたうえでJenkinsの導入をすることをお勧めします。
Jenkinsの活用事例2選
Jenkinsを実際に活用している事例を2種類ご紹介します。
DeNAのスマートフォンゲーム開発
DeNAは様々なスマートフォン向けゲームの開発を行っていて、それらの開発にJenkinsが活用されています。エンジニアがゲーム開発に集中できるように、CI/CDツールを活用し可能な限り負荷を軽減している事例です。
DeNAがJenkinsを活用している背景には、ゲーム業界特有の要件があるようです。その要件とは、「容量の多いデータをできるだけ早くビルドしたい」というものです。ゲームは画像などを多く利用することから容量が大きくなりやすく、一般的に開発が進むにつれてビルドに時間がかかってしまいます。この問題を可能な限り小さなものにするために、オンプレミスで利用できるJenkinsを活用しているのです。
近年はCIツールもクラウドで利用できるものが主流になってきています。クラウド利用すれば運用負荷が軽減できますので、クラウドへ移行するプロジェクトは多いようです。ただ、クラウドでビルドするとなると、ソースコードをクラウドにアップロードするなどの手間がかかります。結果として無駄な時間を要してしまいますので、これをなくすためにJenkinsが利用されている事例です。
TechMatrixのソリューション
こちらは実際の活用事例ではありませんが、具体的にどのように活用すれば良いのかのソリューションが紹介されています。TechMatrixではJenkinsの導入をサポートしていますので、その事例からのご紹介です。
こちらのソリューションでは、プログラム開発の工程を可能な限り自動化する方法が紹介されています。ソースコードを機械的に解析し、セキュリティ上の問題や脆弱性などを洗い出します。本来はエンジニアがテストケースを作り検証しなければなりませんが、そこをJenkinsに置き換えて解決するものです。
TechMatrixのサイトでは実際の導入事例も紹介されていて、ビルドプロセスにかかっていた時間が半分以下に短縮できた事例があります。プロジェクトによって短縮できる時間は大きく異なるものですが、どの程度の効果を期待できるのか事例紹介から確認可能です。
参照:TechMatrix
まとめ
Jenkinsは比較的歴史の長いCIを自動化するツールです。日本では特に利用されているツールですので、すでに導入している企業が多くドキュメントも豊富である点が特徴です。また、プラグインの種類が多く自由なカスタマイズができますので、その点も広く普及した理由となっています。
Jenkinsは導入実績の多いツールですので、現在においても需要の高いツールの一つとなっています。Jenkinsを扱えるエンジニアは求められていますし、Jenkinsを利用するためにルールが作れるエンジニアも求められています。まだまだ需要の高いツールなのです。
とはいえ、最近はJenkins以外にもCIツールが公開されています。Googleの検索状況を確認してみると他のツールの検索数も多く、今後の需要は変化していく可能性があります。