KB)本連載は、テストコードをこれから書こうと考えているJavaScript技術者を対象に、テストコードの意義から、テスト駆動開発、JavaScriptでのテストコードの書き方、継続的インテグレーションなどテスト全般にわたって解説します。原理原則だけでなくWhyから説明し、チームメンバーを巻き込みながら開発現場に活かせる考え方を総合的に解説します。第7回目の本稿は、JavaScriptで行う継続的インテグレーションについて解説します。15年ほど前になりますが、筆者が行っていたJavaプロジェクトの方法を紹介しましょう。手動で画面から動作テストエラーが起きた場合は1.に戻る箇条書きにするとやることが多いですね。すると古いシステムを開発されている方々は、これと近い方法でテストをしている場合もあるのではないでしょうか。何をやっているかはわかりやすいのですが、少しでもエラーがあるごとにこれらを手作業で行うことを考えると、相当な時間を使うことになるでしょう。この方法ですと、当然ながらシステム全体にエラーが存在しない状態を保証することはできません。継続的インテグレーションとはこのような手順を出来るだけ少なくしたいと考える開発者の方は多いのではないでしょうか。そこで継続的インテグレーション(CI)の登場です。ビルドのプロセスを整理してみましょう。ビルドのプロセスおおまかに分けるとこのようなプロセスに分かれます。開発をする際はこれを繰り返しながら行っているはずです。これを行うことができる仕組みと、常に行っているという状態を継続的インテグレーションと言います。「継続的インテグレーション」という言葉は、「インテグレーション(結合、統合)」を「継続的に実行する」という意味です。気がついた時や動作確認をしたい時のみにビルドのプロセスを実行するのではなく、常に実行し続け、いつでもエラーの無い状態を保っておきます。Jenkins等の継続的インテグレーションのツールを使用すると、ビルドプロセスを自動化することができます。コーディング以外の部分を自動化することで、コーディングし、ソースコード管理システムに登録を行うだけで、ビルドが回ります。そのような環境を作ることでどんな利点があるかを整理してみましょう。大きな利点である「フィードバックプロセス」コーディングが終わり、gitなどのバージョン管理システムに登録(push)を行うと、自動的にコンパイル、テストの実行が行われ、その結果を終わり次第知ることができます。エラーにならなければ次の開発を行い、エラーになればすぐに直すことができます。常にコードの状態が見える化されるということになります。見える化されることで、すぐに直すことができますし、エラーが出ていなければ安心して別のコーディングを行うことができます。フィードバックプロセスが回っている状態これはまさにフィードバックプロセスが回っている状態です。見える化し、その状態や結果によって修正を行う。このフィードバックプロセスが回り出した時に品質を常に高い状態を維持することができます。エラーが出ると放置しがちですが、放置せずに常にグリーンの状態を保つことが重要です。グリーンの状態を保つということは「常にコードを健康的な状態に保つ」ということです。コードの健康状態が良ければ開発者の健康状態も良くなります。実はやろうとすると習慣化するのはなかなか難しいのですが、チームでルールを決めるなどして補い合い、コードの健康状態を保つようにしていきましょう。JavaScriptでの継続的インテグレーション継続的インテグレーションはサーバサイドアプリケーションの開発だけでなく、JavaScriptでも大切です。JavaScriptの場合はブラウザで動作させる必要があるだけでなく、様々なブラウザとバージョンに対応する必要もあり、サーバサイドアプリケーションとは少し勝手が違います。そこで、自動テストを記述するだけでなく、ツールを使って必要なブラウザでのテストを行うなどの工夫が必要になります。具体的にJavaScriptで継続的インテグレーションを動かしてみましょう。今回は、オープンソースの継続的インテグレーションツールであるJenkinsと、複数ブラウザでテストが実行できるJavaScriptのテストツールであるtestemを使って方法を説明します。