GalleonQL マニュアル
変更履歴

環境の登録・切替

接続先ごとの設定をまとめた「環境(接続プロファイル)」を登録・切り替え、環境変数・認証・ヘッダーを設定する操作を説明します。

環境とは(接続プロファイル)(概要)

環境は Postman の「環境(Environment)」に相当する、切り替え可能な接続プロファイルです。 コレクションやクエリの親(中間ノード)ではなく、クエリとは独立して存在します(直交型)。 クエリは環境に依存せずコレクション配下に持ち、送信やスキーマ取込は常に「操作対象 × 選択中の環境」で 組み立てられます。用語は 主要な用語 を参照してください。

前提

環境変数と GraphQL 変数の違い(混同しないでください)

GalleonQL は 2 種類の「変数」を区別します。本ページで扱うのは環境変数です。

環境変数(本ページの対象) GraphQL 変数
記法 {{baseUrl}} {{token}} のように波括弧 2 つ $id $input のようにクエリ内で宣言
持ち主 環境が key-value で保持 クエリが既定値を持つ
用途 接続先 URL など、環境ごとに変わる接続設定 クエリの引数
差し込み先 エンドポイント URL・ヘッダーの値 クエリ本文の引数

名前付き GraphQL 変数($id 等)は、クエリビルダーの入力モードを「変数」に切り替えると使えます(クエリビルダー 参照)。

認証の秘密(Bearer トークン・Basic パスワード)は環境変数ではなく、後述の「認証」節に入れてください。

操作手順

1. 環境エディタを開く

トップバーには、環境セレクタ(ドロップダウン)、選択中の環境の解決後 URL、「編集」ボタンが並んでいます。 「編集」をクリックすると環境エディタ(モーダル)が開き、開いた時点で選択中だった環境が編集対象になります。

2. 環境を追加する

「環境一覧」節の「新しい環境名」欄に名前を入力し、「+ 環境を追加」をクリックします。

  • 名前が空(前後の空白を除いて空)の場合は追加されません。
  • 追加された環境は、URL・環境変数・環境ヘッダーとも空、**認証は「なし(none)」**で作成されます。
  • 追加した環境は、その場で編集できるよう自動的に選択されます。

3. リクエスト URL を設定する

「リクエスト URL」節に、直 URL(例 https://api.example.com/graphql)または環境変数参照 (例 {{baseUrl}})を入力します。

  • 入力欄の下に「解決後: …」のプレビューが表示されます。未解決の {{...}} があると警告されます。
  • 送信・スキーマ取込のエンドポイントは、このリクエスト URL を環境変数で解決した値を使います。

3-2. Subscription のトランスポートと接続先を設定する

subscription(購読)を送信するときの接続方式(トランスポート)と接続先です。トランスポートは 「WebSocket」「SSE」のどちらかを選ぶラジオボタンで、既定は WebSocket です。 URL 欄は任意項目 なので、多くの場合は空欄のままで構いません。トランスポートの選択自体は Free プランでも操作できます (購読を送信できるのは Pro プランのみです。クエリを送信する 参照)。

  • URL が空欄のときは、リクエスト URL のスキームだけを選んだトランスポートに合わせて置き換えた 値が使われます。

    • WebSocket を選んでいる場合: https://api.example.com/graphqlwss://api.example.com/graphqlhttp://ws://
    • SSE を選んでいる場合: スキームは置き換えません(https:// / http:// のまま。SSE は 通常の HTTP で接続するためです)

    入力欄の下のプレビューに「解決後: …(リクエスト URL から導出)」と表示されます。

  • HTTP と subscription でパスが違うとき(例: /graphql と、WebSocket なら /graphql/ws、 SSE なら /graphql/stream)だけ、この欄に接続先を書きます。書いた値はそのまま使われ、 スキームの置き換えは行いません。

  • 直 URL のほか環境変数参照(例: {{wsUrl}} / {{sseUrl}})も書けます。

  • 接続先を決められないとき、または入力した URL のスキームが選んだトランスポートと合わないとき (例: SSE を選んでいるのに ws:// と書いた場合)は、プレビューが警告になり理由が表示されます。 その場合はこの欄を見直すか、選択中のトランスポートを変更してください。

4. 環境変数を追加・編集・削除する

「環境変数」節で「変数名」「値」を入力し、「環境変数を追加」をクリックします。

  • 追加済みの変数は、一覧の値欄を直接編集すると即座に更新されます。各行の「削除」で削除できます。
  • リクエスト URL やヘッダーの値の中で {{key}} として参照できます。{{ token }} のように 波括弧と変数名の間に空白があっても解決されます。
  • 間接参照は 1 段までしか解決されません(後述「制限事項」)。
  • 認証の Bearer トークンや Basic パスワードはここに置かないでください(次の「認証」節を使います)。
  • 環境変数は手動編集のほか、リクエストフック(送信後の値抽出検証。上書きするのは 値抽出アクションのみ)によって確認なしで上書きされることがあります。意図しない変更があれば Hooks タブの実行結果を確認してください (リクエストフック(値の抽出と検証))。

変数サジェスト({{ オートコンプリート)

URL・ヘッダー・変数の欄で、{{ の後に 1 文字以上打つと候補一覧が開きます。

操作 結果
Enter / Tab / クリック {{変数名}} を挿入
↑ / ↓ 候補のハイライト移動
Escape サジェストを閉じる

候補の先頭バッジ:

バッジ 意味
P プロジェクト共通変数
E 環境変数
A アプリ組み込み(例: AppUserAgent

同名の P と E は別行で出ます。解決時は環境側がプロジェクトを上書きします。認証秘密欄には サジェストは出ません(認証値はテンプレート展開しないため)。

5. 認証(既定方式と秘密)を設定する

「認証」節(見出し左に由来バッジ Au)で、この環境の既定認証方式と秘密を設定します。

既定の認証方式 意味 表示される秘密欄
なし(none) 認証ヘッダーを付けない なし
Bearer Authorization: Bearer <token> を組み立てる Bearer トークン
Basic Authorization: Basic base64(ユーザー名:パスワード) を組み立てる Basic ユーザー名 / Basic パスワード
  • リクエストの Auth タブが「環境の既定を継承」のとき、ここで設定した方式と秘密から Authorization が 自動注入されます(由来 Au)。秘密はエクスポート/インポートされません。
  • 認証値は {{...}} を展開しません(秘密をテンプレート経由にしない設計)。トークン欄に {{token}} と 書いても、そのままの文字列が使われます。
  • トークンが空の Bearer では Authorization ヘッダー自体を送りません。パスワードが空の Basic は ヘッダーを送ります(空パスワードとして符号化。警告のみ)。
状況 警告文言
Bearer でトークンが空 Bearer 認証のトークンが空です。Auth タブまたは環境の認証設定でトークンを入力してください。
Basic でパスワードが空 Basic 認証のパスワードが空です。意図した設定か確認してください。

リクエスト側で方式だけを上書きする方法は クエリの送信とレスポンス の 「Auth タブ」を参照してください。

6. 環境リクエストヘッダーを追加・編集・削除する

「環境リクエストヘッダー」節(由来バッジ E)で、この環境固有の HTTP ヘッダーを設定します。

  • 「Header」「Value」を入力し、「ヘッダーを追加」をクリックします。
  • 値には {{envVar}} のように環境変数を差し込めます({{ サジェスト可)。
  • 追加済みの行は各欄を直接編集すると即座に更新されます。「削除」で削除できます。
  • Authorization の手書きは非推奨です(「認証」節を使ってください)。互換のため入力自体はできますが、 環境ヘッダーに書いた Authorization は、その後の認証段(Au)やリクエスト固有ヘッダー(R)で 上書きされます(後述「ヘッダーのカスケード」)。

7. HTTP タイムアウトを設定する

「HTTP タイムアウト」節(由来バッジ E)で、この環境用の接続タイムアウト・全体タイムアウトを 設定します。プロジェクト編集ドロワーにも同じ節があり、こちらはプロジェクト全体の既定値になります。

  • 接続タイムアウト(既定 10 秒。1〜60 秒の範囲で指定可)と全体タイムアウト (既定 60 秒。1〜600 秒の範囲で指定可)の 2 つの入力欄があります。
  • 入力欄を空欄のままにすると、プロジェクトの設定(さらに未設定ならアプリの既定値)を継承します。 空欄のときは「継承中 60 秒(プロジェクト) / 1〜600 秒」のように、現在有効な秒数・由来・ 許容範囲が表示されます。
  • 全角数字は自動的に半角へ正規化して保存されます(1010。エラーにはなりません)。
  • 数字以外の文字(小数点・記号など)は入力からその場で取り除かれ、「数字以外は入力できません」 と通知されます。取り除いた後に残った数字がそのまま秒数として保存されるため、1.5 と入力すると . が消えて 15として保存されます(10.5105)。意図した秒数と違う値に なっていないか、必ず入力欄の表示を確認してください。
  • 範囲外の整数を入力した場合のみエラー表示され、保存されません(UI から起こり得る唯一の エラーです)。
  • 0 や無制限は指定できません(サーバーからの応答が返らないまま、アプリが待ち続けるのを防ぐためです)。
  • ここで設定した値は、この環境を使うすべてのクエリ送信・スキーマ取込に適用されます (リクエストの Headers タブで個別に上書きしていない場合)。

8. 環境名を変更する・環境を削除する

  • 「環境名」欄を編集すると、その環境の名前が即座に変わります。
  • 環境一覧の各行の「削除」で環境を削除できます。すべて削除して 0 件にもできます(ただしその場合 スキーマ取込は実行できません)。
  • 選択中の環境を削除した場合、残っている環境のうち先頭のものが自動的に選択されます。

9. 環境を切り替える

トップバーの環境セレクタで切り替えたい環境を選ぶと、解決後の URL、左ペイン Headers タブの最終ヘッダー プレビュー、認証の Authorization が即座に切り替わります。環境が 0 件の場合、セレクタは無効化され 「(環境がありません)」と表示されます。

設定例

用途 環境名 リクエスト URL 環境変数 認証 環境リクエストヘッダー
ローカル開発(初期サンプル) Default {{baseUrl}} baseUrl = http://localhost:4000/graphql 既定方式 Bearer、トークン dev-local Content-Type = application/json
ステージング Staging https://staging.example.com/graphql 任意 既定方式 Bearer、発行済みトークン 任意
Basic 認証の API BasicApi https://api.example.com/graphql 任意 既定方式 Basic、ユーザー名/パスワード 任意
認証不要の公開 API Public https://countries.trevorblades.com/ 任意 なし(none) 任意

HTTP タイムアウトの設定例(応答が遅いステージング環境だけ全体タイムアウトを延ばす):

接続タイムアウト 全体タイムアウト 実際に使われる値
プロジェクト 空欄(未設定) 空欄(未設定) 接続 10 秒/全体 60 秒(いずれもアプリ既定)
環境 Staging 空欄(未設定) 180 接続 10 秒(アプリ既定を継承)/全体 180 秒(この環境で上書き)

ヘッダーのカスケード(プロジェクト → 環境 → 認証 → リクエスト)

送信されるヘッダーは次の順にマージされ、同じヘッダー名は下位が上位を上書きします。

  1. アプリ組み込み(由来 A。例: User-Agent
  2. プロジェクト共通ヘッダー(P
  3. 環境リクエストヘッダー(E
  4. 認証(方式+秘密から組み立てた AuthorizationAu
  5. リクエスト固有ヘッダー(R
  • 優先順位: リクエスト > 認証 > 環境 > プロジェクト > アプリ。
  • ヘッダー名の照合は大文字・小文字を区別しませんcontent-typeContent-Type は同一ヘッダーとして 1 件に畳まれ、最終的な表示名は勝った側のものになります)。
  • 左ペインの Headers タブに「送信される最終ヘッダー」プレビューが出て、キー・解決後の値・由来バッジが 表示されます。このプレビューは実際の送信と同じ解決結果です (クエリの送信とレスポンス)。
由来バッジ 意味
A アプリ設定
P プロジェクト設定
E 環境設定
Au 認証
R リクエスト設定

HTTP タイムアウトのカスケード(既定値 → プロジェクト → 環境 → クエリ)

HTTP タイムアウト(接続/全体)も、ヘッダーと同じ「上位から順に載せ、値があれば後勝ち」という 規則で決まります。

  1. 既定値(接続 10 秒/全体 60 秒)
  2. プロジェクト(プロジェクト編集ドロワーの「HTTP タイムアウト」節)
  3. 環境(本ページの「HTTP タイムアウトを設定する」節)
  4. クエリ(リクエストペインの Headers タブ「HTTP タイムアウト(このクエリ)」節。 クエリの送信とレスポンス 参照)

ヘッダーのカスケードとの違いは、タイムアウトには認証の段がないこと、そして接続タイムアウトと 全体タイムアウトが完全に独立してカスケードすることです。例えば、全体タイムアウトだけを環境で 延ばしても、接続タイムアウトはプロジェクトの設定(または既定の 10 秒)のまま変わりません。

各入力欄が空欄のときは、その一つ上位までの実効値・由来・許容範囲が「継承中 N 秒(由来) / 下限〜上限 秒」として表示されるため、値を入れなくても、いま何秒が使われるかを確認できます。

スキーマ取込(イントロスペクション)にはクエリの層がないため、既定値→プロジェクト→環境の3段で 解決されますスキーマの取り込み 参照)。

永続化と復元

環境(名前・環境変数・環境ヘッダー・認証の方式と秘密)と、最後に選択していた環境は、追加・編集・削除・ 切替のたびに端末内へ自動保存されます。「保存」操作は不要です。アプリを再起動すると、登録した環境一覧と 最後に選択していた環境がそのまま復元されます。この復元では HTTP を一切発行しません。

  • 初回起動時(環境が 1 件も保存されていない場合)は、サンプル環境「Default」(上の設定例の 1 行目・ Bearer トークン dev-local を含む)が 1 件自動作成されます。
  • 環境を切り替えて解決後の URL が変わると、その URL のスキーマキャッシュが自動的に読み込まれ、 表示中のスキーマ・クエリビルダーがその URL のものに切り替わります(HTTP は発行しません)。 まだ取り込んでいない URL の場合は「まだ取り込まれていません」の案内に変わります。新しい エンドポイントのスキーマを取得するには、切り替え後に改めて「スキーマを取り込む」(または「⟳ 再取込」)を 実行してください(スキーマの取り込み)。

🚨 認証トークン等は暗号化されずに保存されます

認証の秘密(Bearer トークン・Basic パスワード)や、環境変数・環境ヘッダーの値は、暗号化されず 平文のまま端末内に保存されます。アプリデータは OS のユーザー領域にあり他の OS ユーザーからは 読めませんが、ディスク上に平文が残る点は変わりません。これは意図的な決定で、Postman や Insomnia など 同種のローカルツールも平文で保存しています。トークンやパスワードを入力する際は、この点を踏まえて 取り扱ってください。

現時点での制限事項

  • 認証方式は なし(none)/ Bearer / Basic のみです(いずれも Authorization ヘッダーで完結)。 OAuth2 Client Credentials は対応済みです。API Key・OAuth2 Authorization Code・カスタムヘッダー認証は未対応です。
  • 認証値は環境変数({{...}})で解決されません。
  • 環境変数の間接参照は 1 段までしか解決されません。 例えば apiHost の値が {{host}} という別の 変数参照でも、host までは自動的に追いません(無限ループ防止のための意図的な制約)。この場合 置換後に {{host}} が残り、未解決として警告されます。多段が必要なら参照先の値を直接展開して 登録してください。
  • Authorization の手書きは非推奨です(「認証」節を使ってください)。

うまくいかないときは

症状 想定される原因 対処
セレクタが無効・「(環境がありません)」 環境が 0 件 「+ 環境を追加」で追加する
URL に {{baseUrl}} がそのまま出て「未解決の変数があります: baseUrl」 参照先の環境変数が未定義 変数を追加するか直 URL に書き換える
最終ヘッダーに「未解決の変数があります: ヘッダー名 (変数名)」 ヘッダー値の変数が未定義、または 2 段以上の間接参照 変数を追加、または 1 段に収める
「Bearer 認証のトークンが空です。…」が出る 方式が Bearer なのにトークン未入力 「認証」節でトークンを入力する
Authorization が最終ヘッダーに出ない 方式が「なし」、または Bearer でトークンが空 「認証」節とリクエストの Auth タブを確認する
環境を切り替えてもスキーマが変わらない 切替前後で解決後 URL が同じ 仕様。別の URL に解決される環境に切り替える
切り替えたらスキーマが消えて「まだ取り込まれていません」になった 切替先 URL がまだ未取込 仕様(自動取得はしません)。「スキーマを取り込む」を実行する
再起動したらサンプル「Default」だけになった 保存データの破損、または DB エラーでのフォールバック トップバー直下の警告表示を確認する。必要なら環境を作り直す
「HTTP タイムアウト」の入力欄にエラー通知が出て値が反映されない 範囲外の整数を入力した(接続は 1〜60 秒・全体は 1〜600 秒の範囲外。UI から起こり得る唯一のエラー) 範囲内の半角整数を入力し直す。空欄に戻せば上位の設定を継承する
1.5 のように小数点を含む値を入力したら、意図しない秒数(例: 15)で保存された 仕様どおりの挙動。数字以外の文字(小数点等)は入力からその場で取り除かれ、残った数字がそのまま秒数として保存される(エラーにはならない) 「数字以外は入力できません」の通知に気づいたら、欄を空にして整数(秒)だけを入力し直す
送信・取込がすぐに「タイムアウトしました」で失敗する 対象サーバーが遅い、または全体タイムアウトが短すぎる プロジェクトまたは環境の「HTTP タイムアウト」節で全体タイムアウトを延ばす(最大 600 秒)

関連ドキュメント