この記事ではDevOps・自動化に特化して解説します。AI自動化・DevOps全般は AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較 をご覧ください。
SurveyKingとは
SurveyKingは、Spring Boot + Vue.js/Reactで構築されたエンタープライズグレードのオープンソース調査管理プラットフォームです。GitHubで公開されており、複雑な分岐ロジックの調査設計からリアルタイム集計・API連携まで、商用SaaSツールに相当する機能をセルフホストで提供します。
既存のSaaS型アンケートツールが高額であり、かつカスタマイズの自由度が低いという課題を背景に開発されました。オープンソースのため、ソースコードを完全に制御でき、組織固有の調査フローや権限設計にあわせた拡張が可能です。データは自社サーバーで管理されるため、機密情報を外部サービスに渡す必要がありません。
複雑な分岐ロジックが必要な大規模調査・データ所有権を自社で確保したい企業・高額SaaSからのコスト移行を検討している組織に特に適しています。
主な機能
- 高度な調査デザイナー:分岐ロジック、条件分岐、動的フィールド表示など複雑な調査フロー設計が直感的に実装できる
- マルチ言語・マルチテンプレート対応:全世界向けの調査をシングルプラットフォームで管理し、言語ごとの翻訳バージョンを管理できる
- リアルタイムダッシュボード:回答数、進捗率、スコア分布など重要メトリクスをリアルタイムで可視化
- 詳細な集計・分析機能:クロス集計、統計分析、グラフ生成が標準搭載。カスタムレポートのテンプレート機能も充実
- ユーザー・パーミッション管理:組織構造に応じた細かい権限制御で、大規模チーム運用にも対応
- API・Webhook対応:外部システムとの連携が容易で、既存ワークフローへの統合が可能
- クローニング・テンプレート機能:過去の調査を雛形化でき、新規調査設計を効率化
- JWT/OAuth2認証:エンタープライズグレードのセキュリティ基盤を標準搭載
- Kubernetes互換:コンテナ環境でのスケーリングに対応
技術スタック
- 言語:Java 8 以上
- フレームワーク:Spring Boot(バックエンド)
- フロントエンド:Vue.js / React
- データベース:MySQL / PostgreSQL / H2(開発・テスト用)
- 認証:JWT、OAuth2
- API:RESTful API
- デプロイメント:Docker対応、Kubernetes互換
- ビルドツール:Maven / Gradle
SurveyKingのアーキテクチャ
Vue.js / React"] API["Spring Boot API
RESTful"] Auth["認証レイヤー
JWT / OAuth2"] DB["データベース
MySQL / PostgreSQL"] Webhook["Webhook
外部連携"] Dashboard["リアルタイム
ダッシュボード"] Browser --> API API --> Auth Auth --> DB API --> Webhook API --> Dashboard DB --> Dashboard
フロントエンドはVue.js/ReactによるSPA構成で、バックエンドのSpring Boot APIと分離されています。認証はJWT/OAuth2で一元管理され、データベース層はMySQL・PostgreSQL・H2に対応。Webhookによる外部連携と、リアルタイムのダッシュボード表示を同一APIが提供する設計です。
導入方法
1. リポジトリのクローン
git clone https://github.com/javahuang/SurveyKing.git
cd SurveyKing
2. 必須環境の確認
- Java 8以上がインストールされていること
- MySQL 5.7以上またはPostgreSQL 10以上
- Maven 3.6以上(またはGradle 6.0以上)
- Docker / Docker Compose(推奨)
3. データベース設定
# src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/surveyking?useUnicode=true&characterEncoding=utf8
spring.datasource.username=your_db_user
spring.datasource.password=your_db_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# JWT設定
jwt.secret=your_jwt_secret_key
jwt.expiration=86400
データベース初期化(Flywayによるマイグレーション):
mvn flyway:migrate
4. アプリケーション起動
# 開発環境での起動
mvn spring-boot:run
# 本番ビルドと実行
mvn clean package
java -jar target/surveyking.jar
5. Docker Composeでの起動(推奨)
# docker-compose.yml
version: '3.8'
services:
surveyking:
image: surveyking:latest
ports:
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/surveyking
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=password
depends_on:
- db
db:
image: mysql:8.0
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=surveyking
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
docker-compose up -d
デフォルトでは http://localhost:8080 でアクセス可能。初期管理者アカウントは admin、パスワードは環境変数 ADMIN_PASSWORD で設定します。
本番環境ではH2(インメモリDB)ではなくMySQL/PostgreSQLを使用してください。Kubernetes環境へのデプロイ時はPersistentVolumeClaimでDBデータを永続化し、Secretリソースで認証情報を管理することを推奨します。
API・Webhook連携
SurveyKingはRESTful APIを完全公開しており、外部システムとの統合が可能です。
# 調査一覧の取得
curl -H "Authorization: Bearer {JWT_TOKEN}" \
http://localhost:8080/api/surveys
# 新規調査の作成
curl -X POST \
-H "Authorization: Bearer {JWT_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"name": "顧客満足度調査Q2",
"description": "四半期ごとの定期顧客調査",
"questions": []
}' \
http://localhost:8080/api/surveys
Webhook設定例(回答送信時に外部システムへ通知):
{
"webhookUrl": "https://your-system.example.com/hooks/survey",
"events": ["response.submitted"],
"headers": {
"X-API-Key": "your-api-key"
}
}
収集したデータを下流のデータパイプラインに流す場合、Apache Airflowとの連携でバッチ処理や集計の自動化が実現できます。
競合比較
| 特性 | SurveyKing | Qualtrics | SurveySparrow | Google Forms |
|---|---|---|---|---|
| ライセンス | オープンソース | SaaS(高額) | SaaS | 無料SaaS |
| カスタマイズ性 | ★★★★★ | ★★★☆☆ | ★★★☆☆ | ★☆☆☆☆ |
| 導入コスト | 低(OSSだが導入工数あり) | 高 | 中 | 無料 |
| エンタープライズ機能 | ★★★★☆ | ★★★★★ | ★★★☆☆ | ★★☆☆☆ |
| API充実度 | ★★★★☆ | ★★★★★ | ★★★☆☆ | ★★★☆☆ |
| データ所有権 | 自社管理 | ベンダー依存 | ベンダー依存 | Google依存 |
| オンプレミス対応 | ◯ | △(限定的) | ✕ | ✕ |
| Kubernetes対応 | ◯ | △ | ✕ | ✕ |
Qualtricsは非常に高機能ですが、年間ライセンス料が数百万円単位であり、小〜中規模組織には現実的でないケースが多くあります。Google Formsは完全無料ですが、複雑な分岐ロジックや詳細な権限管理に対応していません。SurveyKingはその中間点を提供し、初期導入工数はかかるものの、長期的には開発チームが社内要件に完全カスタマイズでき、データの完全な自社管理も実現できます。
クロス集計や高度な分析結果を他のシステムへ統合したい場合は、RAGFlowなどの検索・分析基盤との組み合わせも検討できます。
クロス集計・分析機能の活用
SurveyKingの分析機能は、単純集計にとどまらないクロス集計・フィルタリングをサポートしています。
# クロス集計レポートのエクスポート(CSV)
curl -H "Authorization: Bearer {JWT_TOKEN}" \
"http://localhost:8080/api/surveys/{surveyId}/reports/crosstab?format=csv&groupBy=age&metric=satisfaction" \
-o crosstab_report.csv
(分岐ロジック)"] Collect["回答収集
(リアルタイム)"] Dashboard["ダッシュボード
(スコア・進捗)"] Crosstab["クロス集計
(属性別分析)"] Export["エクスポート
CSV / JSON"] External["外部システム
(Webhook / API)"] Survey --> Collect Collect --> Dashboard Collect --> Crosstab Crosstab --> Export Collect --> External
こんな組織におすすめ
- 大規模組織の調査部門:複数部門での調査活用、細かい権限管理、複雑な分岐ロジックが必要な組織
- カスタマイズ性を重視する開発チーム:既製ツールでは対応できない独自の調査フローを実装したい場合
- データセキュリティを重視する企業:機密情報を外部SaaSに預けたくなく、オンプレミスで運用したい場合
- コスト最適化を目指す中堅企業:高額SaaSから移行し、初期工数投資で長期的な運用コスト削減を狙いたい組織
- 既存システムとの統合が必要な組織:ERP、CRM、DWHなど社内システムとAPIで連携したい要件を持つ場合
調査から得たデータをAIエージェントで処理したい場合は、OpenHandsなどのAIコーディングエージェントと組み合わせることで、データ分析の自動化も視野に入ります。
関連記事: AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較