【入門編】【初心者必見】Jenkinsとは?CI/CDの基本概念と導入メリットを徹底解説 – バージョン管理・CI/CD活用バイブル

こんにちは!開発現場の裏側で、日々自動化の魔術……いや、泥臭いパイプラインの構築に情熱を燃やしている先輩エンジニアです。

新しいプロジェクトに参画したとき、「とりあえずコードを書いて、テストして、サーバーにデプロイして……」という一連の作業、手動でやっていませんか? もしそうなら、今すぐその手を止めてください。人生は、手動でのデプロイ作業に費やすにはあまりにも短すぎます。

今回は、数あるCI/CDツールの中でも、世界中の現場で長年インフラの守護神として君臨し続ける「Jenkins(ジェンキンス)」について、その本質を徹底的に解説します。

これをマスターすれば、毎日の面倒な作業が劇的に楽になりますよ。さあ、一緒に自動化の世界へ扉を開きましょう!

—

1. なぜ「自動化」が必須なのか?(CI/CDの基本概念)

まずは、エンジニアなら絶対に知っておくべきCI/CDという言葉の正体を解き明かします。難しく考える必要はありません。要するに「品質を落とさずに、爆速でソフトウェアをユーザーに届けるための仕組み」です。

CI(Continuous Integration:継続的インテグレーション)とは?

複数人の開発者がバラバラに書いたコードを、こまめに(場合によっては1日に何回も)一つの場所に集め(統合し)、自動でビルドやテストを実行することです。

  • 手動の場合: 「俺の環境では動くんだけど……」と言いながら、結合テストで大爆発を起こす(よくある悪夢)。
  • CIの場合: コードをプッシュした瞬間に自動テストが走り、バグがいち早く検知される(平和な世界)。

CD(Continuous Delivery / Deployment:継続的デリバリー / 継続的デプロイ)とは?

CIによって「いつでもリリースできる状態」を保ち、本番環境へのリリース作業自体を自動化(あるいはボタン一つで実行可能に)することです。

なぜ現代の開発現場でJenkinsが必要なのか?

人間はミスをします。夜中のデプロイでコマンドを打ち間違え、冷や汗をかいた経験はありませんか?
自動化ツールを導入する最大の理由は、「人間を退屈でミスしやすい反復作業から解放し、クリエイティブなコーディングに集中させるため」です。その自動化の母艦となるのが、他ならぬJenkinsなのです。

—

2. Jenkinsとは何か?(その役割と特徴)

Jenkinsは、オープンソースのCI/CDサーバーです。Javaで書かれており、世の中に存在するほぼ全てのバージョン管理システム(Git, SVNなど)やビルドツール(Maven, Gradle, npmなど)と連携できます。

Jenkinsが愛される3つの理由

1. 圧倒的なプラグインエコシステム: 「こんなこと自動化したいな」と思ったら、大抵のプラグインが先人たちによって用意されています。
2. フリーダムな拡張性: 単なるビルドツールではなく、あらゆるワークフローを自動化する「万能オーケストレーター」として使えます。
3. オンプレミス・クラウドのどこでも動く: Dockerさえあれば、自分のラップトップでも大企業の堅牢なサーバーでも動かせます。

—

3. 【実践】Jenkinsを最速で立ち上げる(Docker環境構築)

百聞は一見に如かず。実際にJenkinsを動かしてみましょう。一番クリーンで簡単な方法は Docker を使うことです。

以下のコマンドをターミナル(端末)に打ち込んでみてください。

Jenkinsの公式LTS(長期サポート)版をDockerで起動する神コマンド
docker run \
-d \
-u root \
–name jenkins-master \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts-jdk11

【コマンドの解説】

  • `-d`: バックグラウンドでコンテナを動かします。
  • `-p 8080:8080`: ブラウザからJenkinsの管理画面(ポート8080)にアクセスできるようにします。
  • `-v jenkins_home:/var/jenkins_home`: コンテナを消しても設定やビルド履歴が消えないように、データを永続化します。
  • `-v /var/run/docker.sock…`: Jenkinsの中からさらにDockerを操作できるようにする(Docker-in-Dockerの布石)プロの技です。

—

4. 初期セットアップと「HelloWorld」ジョブの作成

コンテナが起動したら、ブラウザを開いて `http://localhost:8080` にアクセスしましょう。

ステップ1:初期パスワードの入力

画面を開くと、「Jenkinsのロック解除」という物騒な画面が出ます。ここに記入すべき初期パスワードは、以下のコマンドでコンテナのログから取得できます。

docker exec jenkins-master cat /var/jenkins_home/secrets/initialAdminPassword

画面に表示された長〜い文字列をコピーして貼り付け、「推奨されるプラグインのインストール(Install suggested plugins)」を選択してください。コーヒーでも飲みながら待ちましょう。完了すると、管理者アカウントの作成画面になります。

ステップ2:運命の「HelloWorld」ジョブを作る

セットアップが完了したら、いよいよJenkinsに最初の仕事をさせてみます。

1. ダッシュボードの左メニューにある「新規ジョブ作成(New Item)」をクリック。
2. アイテム名に `hello-world-job` と入力し、「フリースタイル・プロジェクト (Freestyle project)」を選択して「OK」。
3. ジョブの設定画面が開いたら、一番下までスクロールし、「ビルドの追加」から「シェルの実行 (Execute shell)」を選択。
4. 以下のコマンド(魔法の呪文)を書き込みます。

!/bin/bash
echo “==========================================”
echo ” Hello, Jenkins! 自動化の世界へようこそ!”
echo ” 現在の日時: $(date)”
echo “==========================================”

5. 画面一番下の「保存 (Save)」をクリック!

ステップ3:ビルドを実行して結果を確認する

さあ、右側にあるメニューの「ビルド実行 (Build Now)」をクリックしてみましょう。

左側の「ビルド履歴」に青い丸(#1)が出現しましたか?
その `#1` をクリックし、「コンソール出力 (Console Output)」を覗いてみてください。

Started by user admin
Running as SYSTEM
Building in workspace /var/jenkins_home/workspace/hello-world-job
[hello-world-job] $ /bin/bash -c …
==========================================
Hello, Jenkins! 自動化の世界へようこそ!
現在の日時: 202X年 X月 X日 …
==========================================
Finished: SUCCESS

おめでとうございます!これであなたも立派なCI/CDエンジニアの仲間入りです。Jenkinsがあなたの指示通りにスクリプトを自動実行してくれました。

—

5. 次のステップへ:コードとしてパイプラインを書こう(Jenkinsfile)

今回はボタンをポチポチ押してジョブを作りましたが、現場のプロは、ビルドの手順をコードとして管理します。これを「Pipeline as Code」と呼びます。

リポジトリのルートに `Jenkinsfile` というファイルを作り、以下のように記述するだけで、複雑なCI/CDパイプラインがバージョン管理の対象になります。

// Jenkinsfile の基本形(Declarative Pipeline)
pipeline {
agent any // どのエージェント(実行環境)でも動かす

stages {
stage(‘Build’) {
steps {
echo ‘ビルド中… (例: npm install や mvn compile)’
}
}
stage(‘Test’) {
steps {
echo ‘テスト実行中… (例: ユニットテストの走査)’
}
}
stage(‘Deploy’) {
steps {
echo ‘デプロイ完了!お疲れ様でした!’
}
}
}
}

これをGitで管理すれば、「いつ、誰がパイプラインの挙動を変更したか」が完全に追跡可能になります。

—

まとめ

今回は、Jenkinsの基本概念からDockerを使った最速の立ち上げ、そして感動のHelloWorldまでを駆け抜けました。

  • CI/CD は開発の効率と品質を爆上げする現代の必須インフラ。
  • Jenkins は、その自動化の夢を叶えてくれる強力で柔軟な相棒。
  • 最初は難しく見える設定も、コンテナを使えば怖くない。

「面倒くさいな」と思った作業は、すべてJenkinsに肩代わりさせましょう。あなたの開発ライフが、もっとエキサイティングで自由なものになることを応援しています!

タイトルとURLをコピーしました