SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

エンジニアのためのCI/CD再入門

CI/CDのエキスパートが解説:CI/CDとは何か? なぜ今、必要とされるのか?

エンジニアのためのCI/CD再入門 第1回


テスト自動化のメリット

 読者の方にずばり質問させてください。

 「テスト書いてますか?」

 Yesの方はここはスキップしても大丈夫です。Noの方はもう少しだけお付き合いください。

 筆者の経験上、CI/CDを活用していない場合、テストそのものを書いてないことが多い気がします。そのようなプロジェクトではテストは手動で行われます。自動化されたテストの重要性についてはすでに多くの情報があるので割愛しますが、ここではCI/CDの視点から自動化テストを始めるメリットについて解説したいと思います。

 よくある誤解として、自動化するテストが少なければCI/CDを導入するメリットは少ないという考えがありますが、これはまったくの逆です。仮にテストがまだ存在しなくても、プロジェクトの初期状態からCI/CDを導入するべきです。CI/CDは建築に例えれば、基礎に分類される部分です。建物がある程度できたあとで基礎部分の変更が難しいように、プロジェクトが進んだ時点でCI/CDの導入するのは簡単ではありません。

 まだCI/CD上で実行するテストがない場合は、まずはテストケースを1つ作成して同時にCI/CDの設定もしましょう。これができれば、CI/CD活用への大きな一歩を踏み出したことになります。あとは少しずつテストカバレッジを高めていけばいいのです。

 また、常にパスした状態のCI/CDが保たれるというのは気持ちがいいものです。CI/CDでテストが通るようになったら、プロジェクトのREADMEページにCI/CDのステータスバッジを追加することをおすすめします。ステータスバッジとは、現在のCI/CDの状態を表示する埋め込みコードのことです。ステータスバッジを付けることで品質の見える化が進み、チームの意識を高めることができます。以下はFacebookのReactのREADMEです。

status_badge

CI/CDは自動化ツール

 コンピューターの本質がそうであるように、CI/CDの本質も自動化にあると思います。今まで手動でやっていた作業を自動化することにより、開発者はより大切な作業に時間を使うことができるようになります。ここでは簡単にCI/CDで自動化できるタスクを見てみましょう。

 1つ目はテスト実行の自動化です。最近のCI/CDサービスやツールはGitHubなどのVCS(バージョン管理システム)サービスと連携していて、開発者が変更を加えるたびに、CI/CDが自動でテストを実行してくれます。また連携するCI/CD上ですべてのテストをパスしないと変更をメインのブランチにマージできないような機能もあり、これを活用すればテストが失敗したとき、その変更点を作成した開発者に修正を強制できるので、リグレッションなどを防ぎやすくなります。

 以下はGitHub上で静的解析(ci/circleci: lint)のジョブが失敗しているためマージがブロックされているところです。

merge_block

 2つ目はリリースの自動化です。リリース作業は運用チームや開発者が手動で行うのが一般的ではないでしょうか? リリースを自動化することで工数を減らせるだけではなく、ヒューマンエラーも失くすことができます。

 リリースの自動化にはいくつかのステージがあり、常に本番環境へリリース可能な状態にしておき、実際のデプロイは手動で行うこともあれば、CI/CDで一気にデプロイまでする場合もあります。どのステージがいいかは組織やプロダクトの性質ごとに異なるので一概には言えませんが、デプロイの自動化をすることで、さまざまなメリットがあります。これは大事な点なので後ほど詳しくお話しします。

 3つ目にその他もろもろの作業の自動化です。コードのコンパイル、静的解析、依存関係のアップデートはもちろん、CI/CDを使うことで、さまざまなことを自動化できます。CI/CDを始めようと検討中の方に時々聞かれるのが、テストがない静的サイトのビルドができるかというご質問ですが、もちろん可能です。最近のCI/CDサービスやツールはとても柔軟に作られているので、静的サイトのビルドにかかわらず、ほとんどの作業をCI/CD上で自動化できます(ハードウェアに依存する作業などはCI/CDサービスによってはできない場合もあります)。

 中には、CI/CDを使って小説の出版を行ったり、脆弱性を検知してインフラのサーバーへ自動でセキュリティアップデートをかけたりするなどの面白いの使い方をしている方ともお話したことがあります。このようにCI/CDでできることはたくさんあるので、自動化したいタスクを思いついたときは、まずCI/CDを使えないか検討してみましょう。

次のページ
単なる自動化ツールを超えて

修正履歴

この記事は参考になりましたか?

エンジニアのためのCI/CD再入門連載記事一覧

もっと読む

この記事の著者

金 洋国(CircleCI Japan)(キム ヒロクニ)

CircleCIで2.0などのプロダクト開発に携わった後、CircleCI Japanを立ち上げてからはTech Leadとして技術全般を担当。趣味は電動キックボードで日本で普及するように様々な活動をしています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11083 2019/06/11 18:21

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー