Apidog Docs
🇯🇵 日本語
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇯🇵 日本語
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇯🇵 日本語
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
HomeLearning Center
Support CenterAPI ReferencesDownloadChangelog
HomeLearning Center
Support CenterAPI ReferencesDownloadChangelog
  1. スキーマ
  • Apidog ラーニングセンター
  • はじめに
    • Apidog の概要
    • Apidog の基本概念
    • Apidog のナビゲーション
    • クイックスタート
      • 概要
      • エンドポイントの作成
      • リクエストの作成
      • アサーションの追加
      • テストシナリオの作成
      • APIドキュメントの共有
      • さらに詳しく
    • Apidogへの移行
      • 概要
      • 手動インポート
      • スケジュールインポート(データソースのバインド)
      • インポートオプション
      • データのエクスポート
      • インポート元
        • Postman からのインポート
        • OpenAPI 仕様のインポート
        • cURL のインポート
        • Markdown のインポート
        • Insomnia からインポート
        • apiDoc からインポート
        • .har ファイルをインポート
        • WSDL のインポート
  • モックAPIデータ
    • 概要
    • Smart Mock
    • カスタムモック
    • モック優先順位
    • モックスクリプト
    • Cloud Mock
    • セルフホスト Runner モック
    • モック言語(ロケール)
  • アカウントと設定
    • アカウント設定
    • OpenAPI アクセストークンの生成
    • 通知
    • 言語設定
    • ホットキー
    • ネットワークプロキシ設定
    • データのバックアップ
    • Apidog の更新
    • アカウントの削除
    • 実験的機能
  • リクエスト送信
    • 概要
    • SSE デバッグ
    • MCP Client
    • Socket.IO
    • WebSocket
    • Webhook
    • SOAP または WebService
    • GraphQL
    • gRPC
    • デバッグにリクエストプロキシエージェントを使用する
    • リクエスト作成
      • リクエスト履歴
      • リクエストの基本
      • パラメータとボディ
      • リクエストヘッダー
      • リクエスト設定
      • リクエストのデバッグ
      • リクエストをエンドポイントとして保存する
      • HTTP/2
    • 認証と認可
      • 概要
      • CA 証明書とクライアント証明書
      • 認可タイプ
      • Digest Auth
      • OAuth 1.0
      • OAuth 2.0
      • Hawk 認証
      • Kerberos
      • NTLM
      • Akamai EdgeGrid
    • レスポンスとCookie
      • APIレスポンスの表示
      • Cookie の管理
      • 概要
  • APIの開発とデバッグ
    • 概要
    • リクエストの生成
    • リクエストの送信
    • デバッグケース
    • テストケース
    • 動的値
    • レスポンスの検証
    • Design-First と Request-First
    • コード生成
    • 環境と変数
      • 概要
      • 変数の使用
      • 環境管理
    • Vaultシークレット
      • 概要
      • HashiCorp Vault
      • Azure Key Vault
      • AWS Secrets Manager
    • 動的値モジュール
      • Airline
      • Animal
      • Color
      • Commerce
      • 会社
      • Database
      • データ型
      • 日付
      • Finance
      • Food
      • Git
      • Hacker
      • Helpers
      • 画像
      • Internet
      • Location
      • Lorem
      • 音楽
      • Number
      • Person
      • Phone
      • Science
      • 文字列
      • システム
      • Vehicle
      • Word
    • プリプロセッサとポストプロセッサ
      • 概要
      • アサーション
      • 変数の抽出
      • Wait
      • セキュリティ
      • データベース操作
        • 概要
        • MySQL
        • MongoDB
        • Redis
        • Oracle Client
      • スクリプトの使用
        • 概要
        • プリプロセッサスクリプト
        • ポストプロセッサスクリプト
        • Public Scripts
        • Postman Scripts Reference
        • 他のプログラミング言語の呼び出し
        • JS ライブラリの使用
        • レスポンスの可視化
        • スクリプト例
          • アサーションスクリプト
          • 変数の使用
          • リクエストの変更
          • その他の例
    • APIデバッグ
      • AI Agent Debugger
      • A2A Debugger
  • API設計
    • 概要
    • 新しい API プロジェクトを作成する
    • エンドポイントの基本
    • API設計ガイドライン
    • モジュール
    • 複数のリクエストボディ例を設定する
    • コンポーネント
    • 共通フィールド
    • グローバルパラメータ
    • エンドポイント変更履歴
    • コメント
    • エンドポイントの一括管理
    • カスタムプロトコル API
    • Spec-first Mode(ベータ)
    • セキュリティスキーム
      • 概要
      • セキュリティスキームを作成する
      • セキュリティスキームを使用する
      • オンラインドキュメントにおけるセキュリティスキーム
    • 高度な機能
      • カスタムエンドポイントフィールド
      • 関連するテストシナリオ
      • エンドポイントステータス
      • パラメータ一覧の表示形式
      • エンドポイントの一意識別
    • スキーマ
      • 概要
      • 新しいスキーマを作成する
      • スキーマを構築する
      • JSON などからスキーマを生成
      • oneOf、allOf、anyOf
      • Discriminator の使用
  • APIテスト
    • 概要
    • テストシナリオ
      • テストシナリオを作成する
      • リクエスト間でデータを受け渡す
      • フロー制御条件
      • エンドポイントおよびエンドポイントケースからデータを同期する
      • 他のプロジェクトからエンドポイントとエンドポイントケースをインポートする
      • テストシナリオのエクスポート
    • テストレポート
      • テストレポート
    • テストシナリオの実行
      • テストシナリオを実行する
      • テストシナリオを一括実行する
      • データ駆動テスト
      • 共有テストデータ
      • スケジュールされたタスク
      • 他のプロジェクトの API の実行環境を管理する
    • テストスイート
      • 概要
      • テストスイートを作成する
      • テストスイートを編成する
      • テストスイートをローカルで実行する
      • CLI でテストスイートを実行する
      • スケジュールタスク
    • APIのテスト
      • 統合テスト
      • パフォーマンステスト
      • エンドツーエンドテスト
      • 回帰テスト
      • コントラクトテスト
    • Apidog CLI
      • 概要
      • Apidog CLI のインストールと実行
      • Apidog CLI オプション
    • CI/CD
      • 概要
      • Github Actions との連携
      • Gitlab との統合
      • Jenkins との連携
      • Git コミットによるテストのトリガー
  • APIドキュメントの公開
    • 概要
    • サポートされているAPI技術
    • クイック共有
    • API ドキュメントの閲覧
    • Markdown ドキュメント
    • ドキュメントサイトの公開
    • カスタムログインページ
    • カスタムレイアウト
    • カスタム CSS、JavaScript、HTML
    • カスタムドメイン
    • AI 機能
    • SEO 設定
    • 詳細設定
      • ドキュメント検索
      • CORS プロキシ
      • Google Analytics の連携
      • フォルダツリー設定
      • 表示設定
      • ドキュメントURLへの値の埋め込み
    • APIバージョン
      • 概要
      • API バージョンの作成
      • API バージョンの公開
      • API バージョンを指定したエンドポイントの共有
  • ブランチ
    • 概要
    • スプリントブランチの作成
    • ブランチでAPIをテストする
    • ブランチで API を設計する
    • スプリントブランチのマージ
    • スプリントブランチの管理
    • AI Branch(ベータ)
  • AI機能
    • 概要
    • AI機能の有効化
    • テストケースの生成
    • AI によるスキーマの変更
    • エンドポイントコンプライアンスチェック
    • APIドキュメント完全性チェック
    • AIを活用したフィールド命名
    • FAQ
  • Apidog MCPサーバー
    • 概要
    • Apidog プロジェクトを AI に接続する
    • 公開済みドキュメントを AI に接続する
    • OpenAPI ファイルを AI に接続する
  • ベストプラクティス
    • API署名の処理
    • OAuth 2.0 で保護された API へのアクセス
    • コラボレーションワークフロー
    • 認証状態の管理
  • オフラインスペース
    • 概要
  • 管理
    • プロジェクト管理
      • プロジェクトの管理
      • 通知設定
      • プロジェクトメンバーの管理
      • プロジェクトリソース
        • データベース接続
        • Git 接続
    • チーム管理
      • チームの管理
      • チームメンバーの管理
      • チームアクティビティ
      • チームのロールと権限
      • チームリソース
        • General Runner
        • チーム変数
        • リクエストプロキシエージェント
      • リアルタイムコラボレーション
        • チームコラボレーション
    • オンボーディングチェックリスト
      • 基本概念
      • オンボーディングガイド
    • 組織管理
      • 組織の管理
      • 組織ロールと権限
      • プラン管理
        • 組織の請求管理者
      • シングルサインオン(SSO)
        • SSO 概要
        • Microsoft Entra ID の設定
        • Okta の設定
        • 組織の SSO を設定する
        • ユーザーアカウントの管理
        • グループをチームにマッピングする
      • SCIMプロビジョニング
        • SCIM プロビジョニングの概要
        • Microsoft Entra ID
        • Okta
      • 組織リソース
        • セルフホスト Runner
  • 請求
    • 概要
    • クレジット
    • プランのアップグレード
    • 代替支払い方法
    • サブスクリプションの管理
    • 有料チームの組織への移動
  • Apidog Europe
    • Apidog Europe
  • アドオン
    • API Hub
    • Apidog Intellij IDEA プラグイン
    • ブラウザ拡張機能
      • Chrome
      • Microsoft Edge
    • リクエストプロキシ
      • Web でのリクエストプロキシ
      • 共有ドキュメントにおけるリクエストプロキシ
      • クライアントでのリクエストプロキシ
  • データとセキュリティ
    • データストレージとセキュリティ
    • ユーザーデータのプライバシーとセキュリティ
    • リクエストルーティングとデータセキュリティ
  • リファレンス
    • APIデザインファーストアプローチ
    • Apidog OpenAPI 仕様拡張
    • JSONPath
    • XPath
    • 正規表現
    • JSON Schema
    • CSVファイル形式
    • Java 環境のインストール
    • Runner デプロイ環境
    • Apidog Markdown 構文
    • Apidog Swagger拡張
      • 概要
      • x-apidog-folder
      • x-apidog-status
      • x-apidog-name
      • x-apidog-maintainer
    • Apidog JSON Schema拡張
      • 概要
      • x-apidog-mock
      • x-apidog-orders
      • x-apidog-enum
  • サポートセンター
  1. スキーマ

oneOf、allOf、anyOf

oneOf、anyOf、allOf は、複合データ構造を定義するために使用される JSON Schema 仕様のキーワードです。これらは本質的に、データ検証に適用される論理演算子です。Apidog はこれらの JSON Schema 機能を完全にサポートしており、より正確な API ドキュメントとデータ検証ルールの構築に役立ちます。

基本概念#

allOf
allOf は、データがすべてのサブスキーマ条件を同時に満たす必要があることを意味し、論理演算における AND 演算に相当します。日常言語の「...かつ...」という表現と同様に、検証に合格するにはすべての条件を同時に満たす必要があります。
anyOf
oneOf

論理比較表#

キーワード論理演算条件要件典型的なユースケース
allOfANDすべての条件を同時に満たす必要があります継承、拡張
anyOfOR少なくとも 1 つの条件を満たす必要があります任意の組み合わせ
oneOfXOR正確に 1 つの条件を満たす必要があります相互排他的な選択肢

Apidog での使用方法#

1. ビジュアルエディターを使用する#

1
ステップ 1: データスキーマを作成する
プロジェクトで 「Schemas」 をクリックし、次に 「New Schema」 をクリックします。
新しいスキーマの作成
2
ステップ 2: スキーマ合成を追加する
データスキーマ編集パネルで型を選択する際に、「Schema Composition」 をクリックし、oneOf、anyOf、または allOf を選択します。各サブスキーマに対して具体的なデータ構造を定義します。
スキーマ合成の追加

2. JSON Schema コードエディターを使用する#

データスキーマ編集パネルで JSON Schema コードを直接編集し、これらの論理合成パターンを定義することもできます。
JSON Schema コードエディター

API ドキュメントでの適用#

リクエストパラメータの定義#

エンドポイントのリクエストパラメータを定義する際に、これらの合成パターンを使用して複雑なパラメータ構造を記述できます。
1
API 編集ページに移動します。
2
「Request Parameters」 セクションで Body を選択し、JSON 型を選択します。
3
データ構造で 「Reference Schema」 をクリックするか、ビジネスロジックに基づいて適切な 「Schema Composition」 を選択するか、カスタム JSON Schema を定義します。
リクエストパラメータのスキーマ合成

レスポンスデータの定義#

同様に、レスポンスデータでもこれらのスキーマ合成を使用できます。
1
「Response」 セクションで、レスポンス例を追加します。
2
スキーマ合成を使用して、異なるレスポンス形式を記述します。
レスポンスのスキーマ合成

実用的な使用例#

allOf の例(AND 演算)#

allOf を使用すると、複数のデータスキーマを組み合わせ、データがすべての条件を同時に満たすことを要求できます。これは、「ユーザー情報には基本情報が含まれている必要がある AND 連絡先情報」と言うようなものです。
{
  "allOf": [
    {
      "description": "Basic user information",
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" }
      },
      "required": ["id", "name"]
    },
    {
      "description": "Contact information", 
      "type": "object",
      "properties": {
        "email": { "type": "string", "format": "email" },
        "phone": { "type": "string" }
      },
      "required": ["email"]
    }
  ]
}
結果: 最終データには id、name、email フィールドが含まれている必要があり、phone は任意です。以下に示すように、サブスキーマからのすべての制約がマージされて実行されます。
allOf の例の結果

anyOf の例(OR 演算)#

anyOf を使用すると、複数の任意の検証パスを提供できます。ユーザーは任意の 1 つまたは複数の方法を選択できます。これは、「ユーザーはユーザー名/パスワードでログインできる OR メール/パスワード OR 電話番号/認証コード」と言うようなものです。
{
  "type": "object",
  "properties": {
    "login": {
      "anyOf": [
        {
          "description": "Username/password login",
          "properties": {
            "username": { "type": "string" },
            "password": { "type": "string" }
          },
          "required": ["username", "password"]
        },
        {
          "description": "Email/password login",
          "properties": {
            "email": { "type": "string", "format": "email" },
            "password": { "type": "string" }
          },
          "required": ["email", "password"]
        },
        {
          "description": "Phone/verification code login",
          "properties": {
            "phone": { "type": "string" },
            "verifyCode": { "type": "string" }
          },
          "required": ["phone", "verifyCode"]
        }
      ]
    }
  }
}
結果: ユーザーは、少なくとも 1 つの方法が検証要件を満たしている限り、任意の 1 つまたは複数のログイン方法の情報を提供できます。以下に示します。
anyOf の例の結果

oneOf の例(XOR 演算)#

oneOf を使用すると、ユーザーが 1 つの支払い方法のみを選択でき、複数の方法を同時に提供できないことを保証できます。これは、「支払い方法はクレジットカードである必要がある XOR PayPal XOR 銀行振込 - これらの選択肢のうち正確に 1 つ」と言うようなものです。
{
  "type": "object", 
  "properties": {
    "payment": {
      "oneOf": [
        {
          "description": "Credit card payment",
          "type": "object",
          "properties": {
            "type": { "const": "credit_card" },
            "cardNumber": { "type": "string" },
            "expiryDate": { "type": "string" }
          },
          "required": ["type", "cardNumber", "expiryDate"],
          "additionalProperties": false
        },
        {
          "description": "PayPal payment", 
          "type": "object",
          "properties": {
            "type": { "const": "paypal" },
            "email": { "type": "string", "format": "email" }
          },
          "required": ["type", "email"],
          "additionalProperties": false
        },
        {
          "description": "Bank transfer",
          "type": "object", 
          "properties": {
            "type": { "const": "bank_transfer" },
            "accountNumber": { "type": "string" },
            "routingNumber": { "type": "string" }
          },
          "required": ["type", "accountNumber", "routingNumber"],
          "additionalProperties": false
        }
      ]
    }
  }
}
結果: ユーザーは正確に 1 つの支払い方法を選択する必要があります。複数の方法を同時に提供することも、何も提供しないこともできません。以下に示します。
oneOf の例の結果

ベストプラクティス#

合成パターンを選択する際は、まずビジネスロジックを明確にしてください。
複数のスキーマを組み合わせる/継承する必要がある場合 → allOf(AND 演算)を使用します
柔軟な任意の組み合わせが必要な場合 → anyOf(OR 演算)を使用します
厳密な相互排他的な選択肢が必要な場合 → oneOf(XOR 演算)を使用します
Modified at 2026-06-11 07:06:02
Previous
JSON などからスキーマを生成
Next
Discriminator の使用
Built with