> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> iOS または iPadOS の ProbeDeck を ClickHouse Cloud またはセルフホストの ClickHouse サーバーに接続します。

# ProbeDeck を ClickHouse に接続する

export const CommunityMaintainedBadge = () => {
  return <div className="CommunityMaintainedBadge">
            <div className="CommunityMaintainedIcon">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 256 256">
                <path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"></path>
            </svg>
        </div>
            コミュニティ管理
        </div>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<CommunityMaintainedBadge />

ProbeDeck は、ClickHouse サーバーの健全性を確認し、`system` テーブルを調査して SQL を実行するための iOS／iPadOS クライアントです。デバイスのネットワーク経由または SSH 踏み台サーバー経由で ClickHouse HTTP インターフェイスに接続でき、リレーサーバーは不要です。

<div id="before-you-begin">
  ## 始める前に
</div>

* [App StoreからProbeDeckをインストールします](https://apps.apple.com/app/id6791261174)。
* iOSまたはiPadOS 17.0以降を使用します。
* ネットワーク、VPN、または
  SSH踏み台サーバー経由で、デバイスからClickHouseのHTTPまたはHTTPSエンドポイントに到達できるようにします。
* クエリ対象のデータベースにアクセスできるClickHouseユーザーを作成します。
* 監視に必要な`system`テーブルに対する`SELECT`権限をユーザーに付与します。

| ProbeDeck | ClickHouse Cloud | セルフホストClickHouse | 注記                                                                               |
| --------- | ---------------- | ---------------- | -------------------------------------------------------------------------------- |
| 1.1.7以降   | 現在のサービス          | 最小サーバーバージョンの固定なし | HTTP(S)インターフェイスを使用します。接続をテストし、各監視セクションがサーバーバージョンおよび付与されている権限で利用可能であることを確認してください。 |

一部の監視セクションは、任意のログテーブルや新しいシステムテーブルに依存しています。たとえば、
ProbeDeckが設定済みのメモリ制限の取得に使用する`system.server_settings`には、ClickHouse
23.3以降が必要です。ログソースが使用不可の場合、ProbeDeckは該当するセクションを制限付きとして表示します。

<div id="how-it-works">
  ## 仕組み
</div>

1. ProbeDeck は ClickHouse の HTTP(S) エンドポイントに SQL リクエストを送信します。
2. 設定済みの ClickHouse ユーザーを使用して、`system` テーブルから監視データを読み取ります。
3. アプリはデバイス上にクエリ結果と監視ビューを表示します。デバイスからエンドポイントへの直接経路がない場合は、SSH 踏み台サーバー経由で
   同じ HTTP(S) 接続を中継できます。

<div id="connect-to-clickhouse-cloud">
  ## ClickHouse Cloud への接続
</div>

<Steps>
  <Step title="サービスの接続情報を確認する" id="gather-cloud-details">
    ClickHouse Cloud console でサービスを開き、**Connect** を選択して **HTTPS** を選択します。

    HTTP(S) で ClickHouse に接続するには、次の情報が必要です。

    | Parameter(s)              | Description                                               |
    | ------------------------- | --------------------------------------------------------- |
    | `HOST` and `PORT`         | 通常、TLS を使用する場合のポートは 8443、TLS を使用しない場合は 8123 です。           |
    | `DATABASE NAME`           | デフォルトでは `default` という名前のデータベースがあります。接続先のデータベース名を使用してください。 |
    | `USERNAME` and `PASSWORD` | デフォルトのユーザー名は `default` です。用途に応じたユーザー名を使用してください。           |

    ClickHouse Cloud サービスの詳細は、ClickHouse Cloud コンソールで確認できます。
    サービスを選択し、**Connect** をクリックします。

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/_snippets/cloud-connect-button.webp?fit=max&auto=format&n=EDr8ydtGBgFPOQea&q=85&s=97d6a020a443f1b365b017488b39d0c8" alt="ClickHouse Cloud サービスの接続ボタン" width="998" height="932" data-path="images/_snippets/cloud-connect-button.webp" />
      </Frame>
    </div>

    **HTTPS** を選択します。接続情報は `curl` コマンドの例として表示されます。

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/EDr8ydtGBgFPOQea/images/_snippets/connection-details-https.webp?fit=max&auto=format&n=EDr8ydtGBgFPOQea&q=85&s=80369fc90cd1ac3108fe455f2426c19a" alt="ClickHouse Cloud HTTPS 接続情報" width="1320" height="1184" data-path="images/_snippets/connection-details-https.webp" />
      </Frame>
    </div>

    セルフマネージド ClickHouse を使用している場合、接続情報は ClickHouse 管理者によって設定されます。
  </Step>

  <Step title="ProbeDeck に接続を追加する" id="add-cloud-connection">
    1. **Connections** 画面で **+** をタップします。
    2. 接続名と、`https://` を除いたホストを入力します。
    3. **Port** を `8443` に設定し、**TLS** をオンにします。
    4. **Connect** ダイアログに表示されるデータベースのユーザー名とパスワードを入力します。データベース名は
       任意です。
    5. **Test Connection** をタップします。接続テストに成功すると、ProbeDeck にサーバーバージョンと往復時間が表示されます。
    6. **Save** をタップします。

    ProbeDeck は、これらのデータベース認証情報を使用して、サービスエンドポイントへの SQL リクエストを認証します。
    ClickHouse Cloud では、Cloud API およびクエリ API エンドポイントに対して、**API Keys** ページの組織レベルのキーを使用します。
    ProbeDeck の SQL 接続フローでは、これらのキーは使用しません。

    <Image img="https://mintcdn.com/private-7c7dfe99/-GwTwl23hJZldEaZ/images/integrations/sql-clients/probedeck-add-connection.png?fit=max&auto=format&n=-GwTwl23hJZldEaZ&q=85&s=ced2eba375eed25880131fd1be03bf23" size="sm" border alt="ClickHouse ユーザー名を使用し、ポート 8443 の HTTPS 向けに設定された ProbeDeck の接続フォーム" width="1320" height="2160" data-path="images/integrations/sql-clients/probedeck-add-connection.png" />
  </Step>
</Steps>

<div id="connect-to-self-hosted-clickhouse">
  ## セルフホストの ClickHouse に接続する
</div>

<Steps>
  <Step title="HTTP エンドポイントを選択する" id="choose-self-hosted-endpoint">
    デフォルトの暗号化されていない HTTP インターフェイスには、ポート `8123` を使用します。HTTPS を使用する場合は、**TLS** を有効にし、
    サーバーに設定されているポートを使用します。一般的には `8443` が使用されます。

    <Note>
      ポート `9000` と `9440` は、ネイティブ ClickHouse プロトコル用です。ProbeDeck は HTTP(S)
      インターフェイスを使用するため、サーバーの HTTP ポートを入力してください。
    </Note>
  </Step>

  <Step title="接続を追加してテストする" id="add-self-hosted-connection">
    1. **Connections** 画面で、**+** をタップします。
    2. URL スキームを含めずにサーバーのホスト名を入力します。
    3. HTTP(S) ポートと TLS オプションを設定します。
    4. ClickHouse のユーザー名、パスワード、および任意のデータベースを入力します。
    5. **Test Connection** をタップし、次に **Save** をタップします。

    ローカルネットワーク上のサーバーの場合、iOS からローカルネットワークへのアクセス許可を求められることがあります。エンドポイントに社内ネットワーク経由でのみ到達できる場合は、先にデバイスを VPN に接続してください。
  </Step>
</Steps>

<div id="connect-through-an-ssh-bastion">
  ## SSH 踏み台サーバー経由で接続する
</div>

接続フォームで **SSH Tunnel** を有効にし、以下を入力します。

1. 踏み台サーバーのホスト名と SSH ポート (デフォルトは `22`) 。
2. SSH ユーザー名。
3. SSH パスワードまたは秘密鍵。

ProbeDeck は、踏み台サーバーから **Server** セクションで指定した ClickHouse ホストおよび HTTP(S)
ポートへの SSH `direct-tcpip` チャネルを開きます。初回接続時には、踏み台サーバーの SHA-256 ホストキー
フィンガープリントを受け入れる前に、サーバー管理者から取得した値と照合してください。

<div id="configure-authentication-and-tls">
  ## 認証と TLS を設定する
</div>

ProbeDeck は、データベースのユーザー名とパスワードを `X-ClickHouse-User` および
`X-ClickHouse-Key` リクエストヘッダーで送信します。認証情報を URL に含めることはありません。

相互 TLS を使用するには、**TLS Client Certificate** を有効にし、クライアント証明書と秘密鍵を含む
PKCS#12 (`.p12`) ファイルをインポートして、そのパスフレーズを入力します。

セルフホストのエンドポイントが自己署名証明書またはプライベート CA が発行した証明書を提示した場合、
ProbeDeck は SHA-256 フィンガープリント、発行者、subject、有効期間を表示します。受け入れる前に、
フィンガープリントをサーバー管理者から提供された値と照合してください。ProbeDeck はこの判断をその
接続に紐付けます。証明書が変更されると、確認するまで接続は停止します。

ProbeDeck は、接続のシークレットとインポートした鍵素材をデバイス上の iOS Keychain に保存します。

<div id="monitor-clickhouse">
  ## ClickHouse を監視する
</div>

保存した接続を開き、**監視**を選択します。ダッシュボードには、次のログソースの概要が表示されます。

| 項目                         | ClickHouse ログソース                                                          |
| -------------------------- | ------------------------------------------------------------------------- |
| 実行中のクエリ、経過時間、メモリ使用量、読み取り行数 | `system.processes`                                                        |
| レプリケーションの状態とキュー            | `system.replicas`, `system.replication_queue`                             |
| ディスク、パーツ、マージ               | `system.disks`, `system.parts`, `system.merges`                           |
| ミューテーション                   | `system.mutations`                                                        |
| メモリとサーバーメトリクス              | `system.metrics`, `system.asynchronous_metrics`, `system.server_settings` |
| クエリレートとディスクレートの履歴          | `system.metric_log`, `system.asynchronous_metric_log`                     |

<Image img="https://mintcdn.com/private-7c7dfe99/-GwTwl23hJZldEaZ/images/integrations/sql-clients/probedeck-dashboard.png?fit=max&auto=format&n=-GwTwl23hJZldEaZ&q=85&s=e139ac9115a93bbcbca9d344d8c94534" size="sm" border alt="実行中のクエリ、レプリケーション、ディスク、パーツ、ミューテーション、マージ、クエリレート、メモリを表示する ProbeDeck の監視ダッシュボード" width="1320" height="2868" data-path="images/integrations/sql-clients/probedeck-dashboard.png" />

**実行中のクエリ**をタップすると、アクティブなクエリを経過時間順にソートし、メモリ使用量と読み取り行数を確認できます。

<Image img="https://mintcdn.com/private-7c7dfe99/-GwTwl23hJZldEaZ/images/integrations/sql-clients/probedeck-running-queries.png?fit=max&auto=format&n=-GwTwl23hJZldEaZ&q=85&s=b9e6312428cebde1a446e469a702dde4" size="sm" border alt="経過時間順にソートされた ProbeDeck の実行中クエリ一覧" width="1320" height="2868" data-path="images/integrations/sql-clients/probedeck-running-queries.png" />

<div id="query-the-uk-property-price-dataset">
  ## UK property price dataset をクエリする
</div>

この例では、[UK property price dataset](/docs/ja/get-started/sample-datasets/uk-price-paid)を使用します。
データセットを `uk_price_paid` にロードしたら、次の操作を行います。

1. 接続を開き、**Data** を選択します。
2. SQL エディタを開きます。
3. 範囲が限定された読み取り専用クエリを実行します。

```sql theme={null}
SELECT
    town,
    count() AS sales,
    round(avg(price)) AS average_price
FROM uk_price_paid
GROUP BY town
ORDER BY sales DESC
LIMIT 10
```

結果には、取引件数と平均価格を含む10の町が表示されます。

<div id="known-limits">
  ## 既知の制限事項
</div>

* ProbeDeck は iOS および iPadOS 17.0 以降で動作します。
* 無料ユーザーが保存できる接続は一度に 1 つです。削除すると枠が空きます。ProbeDeck Pro では
  保存済み接続を無制限に利用できます。
* ネイティブプロトコルではなく、ClickHouse の HTTP(S) インターフェイスをサポートしています。
* ProbeDeck は SQL の結果を 200 行単位で読み込み、各リクエストは最大 10,000 行に制限されます。大規模な
  テーブルでは、絞り込み条件を指定した `WHERE` 句と `LIMIT` を使用してください。
* 監視で確認できる情報は、ClickHouse ユーザーの権限と任意のログテーブルによって異なります。
* デバイスからエンドポイントへの経路が、ネットワーク、VPN、または組み込みの SSH トンネル経由で確保されている必要があります。
* 監視と読み取り専用 SQL にアプリ内課金は必要ありません。`KILL QUERY`、`KILL MUTATION`、
  書き込みおよび DDL ステートメント、その他の運用操作には ProbeDeck Pro が必要です。

<div id="troubleshooting">
  ## トラブルシューティング
</div>

<Accordion title="認証に失敗しました">
  データベースのユーザー名とパスワードを再度コピーしてください。ClickHouse Cloud サービスエンドポイントには、サービスの **Connect** ダイアログに表示される
  データベース認証情報を使用します。ClickHouse Cloud **API Keys** ページにある組織レベルの
  キーは使用しないでください。
</Accordion>

<Accordion title="接続が拒否された、またはタイムアウトしました">
  デバイスからホストおよび HTTP(S) ポートに到達できることを確認してください。Cloud IP アクセスリスト、VPN、
  ファイアウォール、ポートマッピングを確認してください。ネイティブプロトコルのポート `9000` または `9440` は使用しないでください。
</Accordion>

<Accordion title="監視で権限が制限されていると表示される">
  ClickHouse ユーザーに、必要な `system` テーブルの一部またはすべてを読み取る権限がありません。サーバー管理者に、
  使用予定の監視領域に必要な最小限の `SELECT` 権限の付与を依頼し、その後再接続してください。
</Accordion>

<Accordion title="TLS フィンガープリントが変更された">
  新しいフィンガープリントを受け入れる前に、サーバー管理者に証明書のローテーションを確認してもらってください。予期しない変更は、別の
  エンドポイントや TLS インターセプト経路を示している可能性があります。
</Accordion>

<div id="next-steps">
  ## 次のステップ
</div>

* 製品固有の詳細については、[ProbeDeck のウェブサイト](https://probedeck.app)を参照してください。
* サーバー設定については、[ClickHouse HTTP インターフェイスのドキュメント](/docs/ja/concepts/features/interfaces/http)を参照してください。
