大規模なE2EテストにCircleCIを適用 テストの負荷を削減し、開発体制の充実につなげる
標準ツールとして7年間にわたりCircleCIを活用
「Webサイトに今いるユーザーが見えたら、もっと面白くて有益なサービスが提供できるはず」――。この考えの下、「データによって人の価値を最大化する」というミッションを掲げて事業を展開しているのがプレイドだ。主力サービスは「KARTE(カルテ)」。Webサイトやモバイルアプリを利用する顧客一人ひとり(=個客)の行動をリアルタイムに可視化し解析することで、パーソナライズされたコミュニケーションを実現するCX(顧客体験)プラットフォームである。
「“個客”対応に必要な機能を統合的に備えたワンストップソリューションである点が強みです。独自開発のリアルタイム解析エンジンでユーザーの行動を解析し、必要なアクションの決定を支援する『KARTE Insight』、社内外に点在するデータを集約し、可視化・分析からWeb接客などのアクションまでつなぐ『KARTE Datahub』など、様々な機能を有しています」とプレイドの駒崎幸之氏は紹介する。 同社はKARTEをGoogle Cloud Platform(GCP)、およびアマゾン ウェブ サービス(AWS)上で開発している。2014年の開発スタート時から一貫して利用してきたのが、「CircleCI」だ。「運用コストを削減するため、当社では基本、クラウドファーストでツールを選定しています。CircleCIはクラウド型で利用できることや、直感的に扱える操作性の高さを評価して採用しました」(駒崎氏)。
モノレポでのテストをDynamic Configで改善
現在、同社ではKARTEの設計開発に携わる60名以上のエンジニア全員がCircleCIを活用している。 当初からCI/CDツールを使ってきただけに、開発メンバーにとって「テストの自動化」は大前提となる。 「CI/CDツールのパフォーマンスが開発効率を大きく左右するため、どうすればさらにその効果を引き 出せるか、継続的に追求しています」と駒崎氏は言う。
これを象徴するエピソードが、CircleCIのオンプレミス版の活用だ。
KARTEのリリース後は、機能拡張が進むにつれてテストプロセスが重量化。これに対応するため、2016年からは柔軟にマシンスペックをコントロールできるオンプレミス版(CircleCI Server)を利用した時期があったという。「ただ、運用コストの抑制といった点ではやはりクラウド版に優位性があります。折しも2019年頃には、継続的に進化を遂げてきたCircleCIのクラウド版が、当社の求めるパフォーマンスを満たすようになってきました。そこで、ふたたびクラウド版に移行し、現在まで使用しています」(駒崎氏)。
クラウド版に戻る際の決め手になったのがCircleCIの「Performanceプラン」だ。大規模テストを見据えた強力なコンピューティング環境を利用できるほか、ジョブのスピードを最適化するDockerレイヤーキャッシュも利用可能。また並列処理可能なジョブ数は従来の80倍となっている。
「この高いパフォーマンスを生かし、現在は大規模なEnd to End(E2E)テストもCircleCIで実行しています」と駒崎氏は述べる。
さらに最近、プレイドが利用し始めたのが、CircleCIの「Dynamic Config」機能だ。これは、設定ファイルを動的に生成できる機能。これを使えば、テスト実行時に特定ディレクトリの配下のみを対象としたりすることができる。単一のリポジトリ(モノレポ)で開発を行うプロジェクトの場合、ソースコードが変更された箇所だけをテストできるようになるため、テストにかかる時間や工数を大きく削減できる。
「当社はモノレポで開発を行っているため、従来は変更ごとに全体テストを走らせなければならないことが課題でした。関係ないサービスを強制的にパスさせるスクリプトを書いたりもしましたが、テストのワークフローそのものは変わらないので、常にムダな時間が発生していたのです」と駒崎氏は振り返る。
Dynamic Configによってこの問題が解消できた。また同時に、「CircleCI Insights ダッシュボード」を使ってテストの成功率/失敗率を可視化したことで、これまで暗黙のうちに放置してきた失敗を確実につぶす機運も生まれた。エンジニアの間でも「より高品質なコードを書く」というモチベーションが高まっているという。
複数のCI/CDツールを適材適所で使い分ける
さらにプレイドは、さらなる開発効率化を目指すため、CircleCI以外のCI/CDツールも併用している。具体的には、「GitHub Actions」やGCPの「Cloud Build」といったツールを適材適所で使い分けているという。
「E2Eテストをはじめとする高負荷なテストは、複数ジョブの並列実行に強いCircleCIを使うことで高速化しています。一方、処理負荷の軽いテストについては、リポジトリの権限情報を共有せず、GitHub Actions内だけで回す形もとっています。またCloud Buildは、KubernetesやGoogle Container Registryなどと連携する際にGCPのアカウントをそのまま使える点がメリットです。そのため、イメージのビルドやプッシュは主にCloud Buildから行っています」(駒崎氏)
このように、CircleCIをはじめとする多様なCI/CDツールを駆使することで、開発プロセスの効率化を図っているプレイド。その根底にあるのは、慢性的なエンジニア人材不足という市場全体の課題を乗り越え、質の高いサービスをユーザーに届け続けるという強い思いだ。
「優秀なエンジニアの存在がアプリケーション開発の要であることは間違いありません。とはいえ、欲しい人材をいつでも採用できる状況ではないのが現状です。それなら、少人数でも質の高いアプリケーション開発が行える体制を築く必要がある。そのカギを握るのが、CI/CDだと私は考えています。テストやビルドに費やす工数を削減し、リソースを可能な限り設計・開発に振り向けていければと思います」と駒崎氏は述べる。
エンジニアが創造性を最大限に発揮できる開発体制を構築することで、“個客”中心のサービス体験を創出していく。KARTEのさらなる進化に注目だ。
「複数ジョブの並列実行に強く、処理性能が高い CircleCIは、主にE2Eテストなどの高負荷なテスト で活躍してくれています。」
駒崎幸之 氏 | 株式会社プレイド Tech Lead | 株式会社プレイド(PLAID, Inc.)