OSSフォームビルダー比較:Formbricks vs Heyform vs SurveyJS でアンケートを構築する
オープンソースラボ編集部 ・ 2026年6月13日
OSSフォームビルダー比較:Formbricks vs Heyform vs SurveyJS でアンケートを構築する
Typeform($25/月〜)・SurveyMonkey($19/月〜)などの有料SaaSフォームツールに依存せず、セルフホストでアンケート・フォーム・NPS調査を構築・収集するOSSツールが進化しています。Formbricks(製品フィードバック特化・OSSタイプフォーム)・Heyform(モダンUI・チーム共有)・SurveyJS(Reactコンポーネント・エンタープライズ向けJSライブラリ)の3つが2026年のOSSフォームビルダーの主要選択肢です。
OSSフォームツールを使う理由
- データ主権: アンケート回答・ユーザーフィードバックを自社サーバーに保持
- コスト削減: Typeform($25〜/月)→VPS $10/月でフルスケールフォーム基盤
- カスタマイズ: フォームUIをブランドに合わせて完全カスタマイズ
- GDPR対応: EU個人情報保護法に準拠したデータ収集(第三者送信なし)
主要ツールの概要
Formbricks
2022年公開、TypeScript製のOSSです。GitHubスター11k+。プロダクトフィードバック収集に特化したOSSタイプフォームライクな対話型フォームプラットフォームで、製品内アンケート(インアプリ調査)・NPS/CSAT・ユーザーリサーチをターゲティングルールで自動表示できます。React SDKと組み合わせてWebアプリのポップアップアンケートを実装できます。
# docker-compose.yml: Formbricks
version: "3.8"
services:
formbricks:
image: ghcr.io/formbricks/formbricks:latest
restart: unless-stopped
ports:
- "3000:3000"
environment:
WEBAPP_URL: https://survey.example.com
DATABASE_URL: postgresql://formbricks:${DB_PASS}@formbricks-db:5432/formbricks
NEXTAUTH_URL: https://survey.example.com
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
ENCRYPTION_KEY: ${ENCRYPTION_KEY}
MAIL_FROM: noreply@example.com
SMTP_HOST: smtp.example.com
SMTP_PORT: 587
SMTP_USER: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASS}
depends_on: [formbricks-db]
formbricks-db:
image: postgres:16-alpine
environment:
POSTGRES_DB: formbricks
POSTGRES_USER: formbricks
POSTGRES_PASSWORD: ${DB_PASS}
volumes:
- formbricks_db:/var/lib/postgresql/data
volumes:
formbricks_db:
// Formbricks React SDK: Webアプリにインアプリアンケートを埋め込む
import formbricks from '@formbricks/js';
// アプリ初期化時に設定
formbricks.init({
environmentId: 'your-environment-id',
apiHost: 'https://survey.example.com',
});
// ユーザー属性を設定(ターゲティングに使用)
formbricks.setUserId(userId);
formbricks.setEmail(userEmail);
formbricks.setAttribute('plan', 'pro');
formbricks.setAttribute('signup_days', daysSinceSignup);
// カスタムアクションを記録(このアクションをトリガーとしてアンケート表示)
function handleFeatureUse(featureName) {
formbricks.track('feature_used', { feature: featureName });
// Formbricksダッシュボードで「feature_usedアクションの5回目にNPSを表示」等を設定
}
# Python: Formbricks API でアンケート回答を取得・分析
import requests
FORMBRICKS_URL = 'https://survey.example.com'
API_KEY = 'your-formbricks-api-key'
def get_survey_responses(survey_id: str) -> list:
'''Formbricks APIからアンケート回答を取得'''
resp = requests.get(
f'{FORMBRICKS_URL}/api/v1/management/surveys/{survey_id}/responses',
headers={'x-api-key': API_KEY},
params={'limit': 100, 'offset': 0},
)
return resp.json()['data']
def calculate_nps(responses: list, question_id: str) -> dict:
'''NPS(ネットプロモータースコア)を計算(-100〜+100)'''
scores = [
r['data'].get(question_id, 0)
for r in responses
if question_id in r.get('data', {})
]
promoters = sum(1 for s in scores if s >= 9)
detractors = sum(1 for s in scores if s <= 6)
nps = ((promoters - detractors) / len(scores) * 100) if scores else 0
return {
'nps': round(nps, 1),
'promoters': promoters,
'detractors': detractors,
'passives': len(scores) - promoters - detractors,
'total': len(scores),
}
Heyform
2022年公開、TypeScript製のOSSです。GitHubスター7k+。タイプフォームライクなモダンUIとチームコラボレーション機能を備えたOSSフォームビルダーで、ドラッグ&ドロップフォームエディタ・埋め込みウィジェット・回答のCSVエクスポート・Webhookでの連携をシンプルなUIで提供します。
# docker-compose.yml: Heyform
version: "3.8"
services:
heyform:
image: heyform/community-edition:latest
restart: unless-stopped
ports:
- "8000:8000"
environment:
APP_HOMEPAGE_URL: https://form.example.com
SESSION_KEY: ${SESSION_KEY}
FORM_ENCRYPTION_KEY: ${FORM_ENCRYPTION_KEY}
MONGO_URI: mongodb://heyform-mongo:27017/heyform
REDIS_HOST: heyform-redis
REDIS_PORT: 6379
SMTP_FROM: noreply@example.com
SMTP_HOST: smtp.example.com
SMTP_PORT: 587
SMTP_USER: ${SMTP_USER}
SMTP_PASS: ${SMTP_PASS}
depends_on: [heyform-mongo, heyform-redis]
heyform-mongo:
image: mongo:6
volumes:
- heyform_mongo:/data/db
heyform-redis:
image: redis:7-alpine
volumes:
heyform_mongo:
SurveyJS
2015年公開、TypeScript製のOSSです。GitHubスター4k+(survey-library)。React・Vue・Angular・jQueryに対応したOSSアンケートJavaScriptライブラリで、JSONスキーマでフォーム定義・レンダリング・バリデーション・スキップロジック・条件分岐を実装します。SurveyJS Survey Creator(ノーコードビルダーUI)・SurveyJS Analytics(集計ダッシュボード)と組み合わせてエンタープライズ向け完全自社実装フォームを構築できます。
// SurveyJS: Reactアンケートコンポーネントの実装
import { Survey } from 'survey-react-ui';
import { Model } from 'survey-core';
import 'survey-core/defaultV2.min.css';
const surveyJson = {
title: '製品満足度調査',
pages: [{
name: 'page1',
elements: [
{
type: 'rating',
name: 'nps',
title: '当社サービスを友人に薦める可能性は?',
rateMin: 0,
rateMax: 10,
minRateDescription: '全くない',
maxRateDescription: '非常に高い',
},
{
type: 'text',
name: 'reason',
title: 'その理由を教えてください',
visibleIf: '{nps} <= 6', // 批判者のみに理由を聞く条件分岐
isRequired: true,
},
{
type: 'checkbox',
name: 'features',
title: '特に役立っている機能は?',
choices: ['ダッシュボード', 'レポート', 'API連携', 'チームコラボ'],
},
],
}],
};
function ProductSurvey({ userId, onComplete }) {
const survey = new Model(surveyJson);
survey.onComplete.add(async (sender) => {
const responses = sender.data;
await fetch('/api/survey-responses', {
method: 'POST',
body: JSON.stringify({ userId, responses }),
headers: { 'Content-Type': 'application/json' },
});
onComplete(responses);
});
return <Survey model={survey} />;
}
機能比較表
| 比較項目 | Formbricks | Heyform | SurveyJS |
|---|---|---|---|
| インアプリアンケート | ✅ | △ | ✅(SDK) |
| ノーコードビルダー | ✅ | ✅ | ✅(別コンポーネント) |
| Reactコンポーネント | ✅ | △ | ✅ 最強 |
| プロダクト分析統合 | ✅ | △ | △ |
| GitHub Stars | 11k+ | 7k+ | 4k+ |
フォームビルダーはその他カテゴリ/categories/miscのCRM(SuiteCRM/Twenty)とWebhookで連携して問い合わせフォームの回答を自動的にCRMのリードとして登録します。マーケティングカテゴリ/categories/marketingのWebアナリティクス(Plausible/Umami)と組み合わせてフォーム離脱率・コンバージョン率をユーザー行動データと紐付けて分析します。
FAQ
Q. FormbricksのインアプリNPSをReactアプリに実装する最短手順は?
A. @formbricks/jsをインストールして5行のコードでインアプリNPSを埋め込めます。手順: ①npm install @formbricks/js②Formbricksダッシュボードでアンケートを作成(環境ID取得)③Reactアプリのエントリポイント(_app.tsx・App.tsx)にformbricks.init({environmentId: 'xxx', apiHost: 'https://survey.example.com'})を追加④ユーザーログイン後にformbricks.setUserId(userId)⑤ダッシュボードのトリガー設定で「プロダクト使用7日後にNPS表示」等を設定→コード変更なしで表示タイミング・ターゲットを変更可能。A/Bテスト: Formbricksの「Segment」機能でユーザーをpro/free/trialに分けて異なるアンケートを表示→施策の効果をユーザーセグメント別に分析。
Q. HeyformのWebhookでフォーム回答をSlackやNotionに自動送信するには?
A. HeyformのダッシュボードでWebhook URLを設定するとフォーム回答をPOSTで受信できます。設定: ①Heyformダッシュボード→Form→Integrations→Webhook②Webhook URLに自前のn8n・Zapier・Make(Integromat)のWebhook URLを入力③イベント: form.submittedを選択④テスト: 「Send Test」でサンプルペイロードを送信して確認。Slack連携(n8n): n8nのWebhookノードがHeyformのPOSTを受信→SlackノードでDM/チャンネルに通知。Notion連携: n8nのNotion APIノードでフォーム回答データをNotionデータベースのレコードとして追加→チームが回答を一元管理。GoogleSheets連携: 標準でGoogleスプレッドシートへの統合が提供(OAuth認証後にシートIDを入力)。
Q. SurveyJSで条件分岐・スキップロジックを実装するには?
A. SurveyJSのJSONスキーマでvisibleIf・enableIf・requiredIfプロパティを使って条件分岐を定義します。基本条件式: {question_name} でフィールド値を参照→{score} >= 8(数値比較)・{category} = 'tech'(文字列比較)・{selected_items} contains 'API'(選択肢チェック)・{email} notempty(入力済み確認)。複合条件: ({plan} = 'pro') and ({usage_days} > 30)でAND条件・({country} = 'JP') or ({country} = 'TW')でOR条件。ページスキップ: page.visibleIfでページごとスキップ→{product_type} = 'B2B'の場合はB2B向けページを表示・B2Cページは非表示。動的テキスト: {email}さん、ご回答ありがとうのようにフォーム内で前の回答を参照した動的メッセージ表示が可能。
Q. Formbricks・Heyform・SurveyJSのどれを選ぶべきですか?
A. プロダクト内アンケート・NPS・インアプリフィードバックにはFormbricks、シンプルなスタンドアロンフォーム・チーム共有・Webhook連携にはHeyform、自社Reactアプリに埋め込む・フル制御・エンタープライズ品質にはSurveyJSが向いています。Formbricks優位: ①製品使用状況に基づいたセグメント・ターゲティング(Pro用/Trial用アンケートを自動切り替え)②インアプリモーダル・バナー・埋め込みフォームを1つのプラットフォームで管理③NPS/CSAT/PMF等のアンケートテンプレートが充実④Webhookで回答をSlack/n8n/Zapierに送信。Heyform優位: ①Typeformライクな美しいコンバーサルUI②チームでフォームを共有・共同編集③メール通知・GoogleSheets連携がノーコードで設定可能④埋め込みウィジェット(iframe/popup/inline)が簡単。SurveyJS優位: ①React/Vue/Angular公式コンポーネント→既存フロントエンドに完全統合②フォームの外観をCSS/テーマで完全カスタマイズ③複雑なスキップロジック・計算・条件分岐をJSONで定義→開発者が完全にコントロール④エンタープライズライセンスでサポート・SLAが付属。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| インアプリNPS・プロダクトフィードバック | Formbricks |
| スタンドアロンフォーム・チーム共有 | Heyform |
| React埋め込み・完全制御・エンタープライズ | SurveyJS |