DatadogブラウザテストをTerraformで管理する
株式会社シータグ / okady
CTO・VPoE / CTO / 従業員規模: 10名以下 / エンジニア組織: 10名以下
| ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|
| 10名以下 | 2021年9月 | B to B |
| ツールの利用規模 | 10名以下 |
|---|---|
| ツールの利用開始時期 | 2021年9月 |
| 事業形態 | B to B |
アーキテクチャ

導入の背景・解決したかった問題
導入背景
ツール導入前の課題
弊社では、自社サービスであるBtoB向けクラウド受発注サービス 受注ハック のサーバー監視・分析を目的に、2025年春に Datadog 導入の検討を始めました。当時、受注ハックのブラウザテストには Autify を利用していましたが、どちらも高価なサービスですので予算的に両方を契約するのは難しいという課題がありました。
Datadogの検討を進める中でブラウザテストの機能があることを知り試してみたところ、広く利用されているテスト専用ツールであるAutifyと比べて劣る点はありながらも必要な機能は揃っていると判断し、AutifyからDatadogに乗り換えることに決めました。
Autifyはテストをプログラムで作成したりリポジトリで管理する機能は有しておらず、すべて管理画面上での操作が必要です。弊社ではソフトウェアエンジニアがテストを作成し、JavaScriptステップを駆使してテストの最適化を図る運用を採用していたため、テストをプログラムで作成したりリポジトリで管理することができないのは課題の一つでした。Datadogのブラウザテスト機能も、標準的な使い方だとすべて管理画面上で操作することになります。
どのような状態を目指していたか
Cypress のようなテストフレームワークを用いてテストを作成・管理し、自前でブラウザテスト実行環境を構築すると、サービスが成長しテストが増えるに連れてブラウザテスト実行環境のメンテナンスに費やす時間も増えていきます。それを回避できることが弊社でAutifyやDatadogブラウザテストを導入した一番の理由です。
一方で、ブラウザテストを効率よく運用する上でテストをどのように作成・管理できるかも重要です。ブラウザテスト実行環境のメンテナンスに費やす時間を最小限に抑え、テストをプログラムで作成したりリポジトリで管理できること、それが弊社の目指す姿でした。
選定理由
DatadogブラウザテストはTerraformの Datadog Provider を利用することでTerraformでテストを作成・管理できますが、Terraformで利用されているHCL (Hashicorp Configuration Language) は本来インフラの構成を管理するための言語ですので、ブラウザテストのシナリオのような手続きを記述するのに向いているとは言えません。JavaScriptなどのプログラミング言語と比べるとやはり書きやすさは劣ります。
そういったデメリットはありつつも、HCLのモジュールの仕組みを利用して関数のような形で共通処理をまとめたり、テストコードをリポジトリで管理できることにより、管理画面上で操作するよりも圧倒的にテストを作成・管理しやすくなります。また、受注ハックでは以前からインフラ構成管理にTerraformを利用しており、追加の学習コストがかからない点もメリットの一つでした。これらがDatadogブラウザテストの作成・管理にTerraformを採用した決め手です。
導入の成果
DatadogブラウザテストをTerraformで管理することにより、ブラウザテスト実行環境のメンテナンスに費やす時間を最小限に抑え、テストをプログラムで作成したりリポジトリで管理できるという目指す姿を実現することができ、効率的にテストを作成・管理・メンテナンスできるようになりました。
特にテストの作成については、類似の処理を毎回ブラウザで操作してレコーディングするのは手間がかかりますし、かといってテストで初めて出てくる処理をレコーディングなしで一から記述するのは難しいと感じることがよくあるのではないでしょうか。そういった課題に対し、テストしたい処理がすでに共通化済みであったり他のテストで再現済みの場合はプログラムを再利用し、初めて出てくる処理にはブラウザ操作のレコーディングを活用するといったハイブリッドなアプローチを取れるのは、DatadogブラウザテストをTerraformで管理する大きなメリットだと感じています。
導入時の苦労・悩み
HCLでDatadogブラウザテストをどのように実装するかはマニュアルを見ればすぐに理解できましたが、テスト間での共通ステップをHCLでどのように実現するかは工夫が必要でした。
最終的に、共通ステップ全体を一つの module として扱い、共通ステップそれぞれを output で定義するという形を採用することになりました。プログラミング言語の関数を呼び出すような書き方ができれば良かったのですが、output はあくまで変数のテンプレートのようなもので、呼び出し側での記述量がどうしても増えてしまうのは悩みの一つです。
# 共通ステップ例
output "login" {
value = {
name = "ログインする"
type = "assertFromJavascript"
params = {
code = file("${path.module}/js/login.js")
}
}
}
# 共通ステップ呼び出し例(name, type, params.code などすべての変数を記述する必要がある)
browser_step {
name = module.common_steps.login.name
type = module.common_steps.login.type
params {
code = module.common_steps.login.params.code
}
}
導入に向けた社内への説明
上長・チームへの説明
今のところ受注ハックの開発チームでブラウザテストを作成・管理しているのは私だけで、また、私はCTOとして技術やツールの導入の意思決定をする立場ですので、自身で調査して自身で導入を決定しました。
Datadogはすでに契約済みでブラウザテスト機能も利用中でしたので、Terraform導入のための追加費用はかからず、特に障壁なく導入を進めることができました。
活用方法
よく使う機能
Datadogブラウザテストの機能
- Datadog test recorder (Chrome拡張)
- ブラウザ操作をレコーディングしてテストを作成します
- カスタムJavaScript assertion
- REST APIを実行してテストデータを作成したり、ブラウザ操作では実現が難しい処理をJavaScriptで記述します
- synthetics-ci-github-action
- GitHub Actionsからテストを実行します
TerraformやDatadog Providerの機能
- datadog_synthetics_testリソースブロック
- テストシナリオごとに利用します
- outputブロック
- 共通処理の定義に利用します
ツールの良い点
- Providerを利用することで様々なツールの構成をコードで管理できる
- デプロイ前に
terraform planコマンドで差分を確認できる
ツールの課題点
- HCLの文法に慣れるまで時間がかかる
- コードの記述量が多くなりがち
ツールを検討されている方へ
Datadogブラウザテストの最小価格は$15/month(年契約、2025年11月時点)で、ブラウザテスト自動化サービスとしては比較的安価です。Datadogという大きなサービスの一機能ですので、他の専用サービスと比べると劣る点はあるかと思います。しかし、Terraformでテストを作成・管理できるという他のサービスにはない利点もあります。
すでにDatadogを利用されている方、自前で構築したブラウザテスト実行環境のメンテナンスに苦労している方、テストをプログラムで作成・管理できずに困っている方は、Datadogブラウザテストの導入やTerraformでの管理を検討してみてはいかがでしょうか。
今後の展望
受注ハックではDatadogおよびTerraformでのブラウザテスト管理を始めたところで、まだまだ試行錯誤の日々が続いています。今後はテストを充実させて、サービスの品質向上を加速させていきたいと考えています。
株式会社シータグ / okady
CTO・VPoE / CTO / 従業員規模: 10名以下 / エンジニア組織: 10名以下
よく見られているレビュー
株式会社シータグ / okady
CTO・VPoE / CTO / 従業員規模: 10名以下 / エンジニア組織: 10名以下
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法

