「この請求だけ状態を直したい」と頼んだとき、AIがどの行を変えるつもりなのか、実行前に確かめられると安心です。は、Macでの表を見ながらAIへ質問し、の変更案を確認できる、新しいデータベースクライアントです。
特徴は、AIによる読み取りと、人による変更の適用を分けた作りです。列名を調べて集計し、変更が必要なら案を出し、利用者が試行してから確定する流れを用意しています。この記事では、その境界を日本語の架空業務データで確かめる手順を扱います。配布された実アプリのデータベース用ツールと、編集部作成のSQL教材を確認しました。AIの文章生成と画面上のボタン操作は試していません。
初版 v0.1.0 は日本時間2026年10月6日0時35分26秒に公開されました。確認した v0.1.1 は同日1時5分22秒の配布で、変更内容はアイコンです。開発元はまだ試作段階としています。初版の発表・確認した配布版
いつものAIログインを使い、表とSQLを同じ画面で扱う
Postquelには表の閲覧・編集、SQLの実行、AIへの相談画面があります。「この条件で集計したい」と頼むと、AIが接続先の列を調べ、SQLを編集画面へ入れる構成です。
AI部分は、Macへ導入しログイン済みの、、Cursor Agentのいずれかを利用します。Postquel自体に大きな言語モデルを内蔵する方式ではありません。通常の表の閲覧やSQL実行と、AIによる生成は別の機能です。固定版の説明
| 確認するもの | v0.1.1での条件 |
|---|---|
| 対応するパソコン | macOS 15以降、Apple siliconとIntel |
| 配布方法 | 開発元が署名・公証済みと説明するMac用ディスクイメージ |
| 対象データベース | PostgreSQL。接続できるサーバーと利用権限が必要 |
| 接続部品 | 必要なクライアント用ライブラリを同梱。接続先のサーバーを自動で用意する意味ではない |
| AI機能 | 対応するの導入とログインが必要。使えるモデルや利用枠は契約・アカウント次第 |
| 費用 | PostquelはMITライセンスで公開。AIサービスの利用条件や課金、データベースの運用費は別 |
日本語のデータを保存したPostgreSQLでも、列の意味や抽出条件を確かめながら扱えます。ただし、日本語で依頼したSQLが正しいかは選んだAIと指示に依存します。
「読む」「案を出す」「試す」「確定する」を分ける
AIに渡されるデータベース用ツールは、でつながります。公開コードでは、表の一覧、列・制約の説明、読み取りSQL、実行計画の確認が用意されています。変更用の道具は、書き込みを実行するものではなく、利用者へ案を提示する propose_change です。
| 操作 | 何が起きるか | 人が確かめる点 |
|---|---|---|
| 読み取り | run_query が読み取り専用の処理でSQLを実行 | 対象期間、除外条件、集計単位 |
| 変更案 | propose_change がSQLと概要を提示 | 変更する表、列、対象行 |
| Dry Run | 変更を実行した後、取り消す | 影響する行数とエラー |
| Apply | 確認画面を経て変更を確定 | 接続先、対象行、変更前後の値 |
読み取りツールは、1つのSQL文を BEGIN READ ONLY で実行し、最後に取り消します。複数文を一度に渡して、読み取りの処理を抜けてから書き込む使い方も、接続側で拒否する構成です。読み取りツールの実装
変更案に表示される件数にも違いがあります。提案時の Planner estimate は、SQLの実行計画から取った推定値です。実際に更新した件数ではありません。Dry Runでは実行結果の件数を見られますが、その後に別の人が行を追加・変更すれば、Apply時の対象が同じとは限りません。
また、読み取り専用なのはこのAI用の経路です。通常のSQL編集画面や表の編集機能まで、常に書き込み禁止になるわけではありません。読み取りを試すだけなら、データベース側でも必要な表だけを読めるユーザーを用意すると、アプリの操作と権限の範囲をそろえられます。
最初は架空の請求表で、対象行を先に確かめる
最初の接続先は、業務データベースから切り離した練習用にします。今回の教材は invoices という表に、識別番号 id、架空の取引先名 customer、円単位の金額 amount_yen、状態 status を入れた6行です。実在の顧客や入金情報は使いません。
架空の請求データと確認用SQLをダウンロードできます。READMEに従い、空の練習用データベースで setup.sql を一度実行し、check.sql、dry-run.sql、apply.sql の順に確認します。SQLファイルをまとめて実行する手順は psql 用です。Postquelの画面では、複数文を選択して一括実行するのではなく、各SQL文にカーソルを置いて⌘Returnで順番に実行します。
| 状態 | 教材の件数 | 教材の金額合計 |
|---|---|---|
| unpaid(未入金) | 3件 | 38,000円 |
| paid(入金済み) | 2件 | 11,000円 |
| cancelled(取消) | 1件 | 5,000円 |
この表は、教材に設定した初期値を人が検収するためのものです。「未入金の金額」を確かめたいなら38,000円で、取消分を含む総額54,000円ではありません。顧客ごとの集計か、請求ごとの集計かも、質問に含める必要があります。
接続先は架空データの練習用です。invoicesの列を調べてください。
statusがunpaidの請求件数と、amount_yenの合計を確認してください。
paidとcancelledは含めません。最初は読み取りだけにしてください。
次にid=1の現在のstatusとamount_yenを確認してください。
存在しない列を推測せず、使用したSQLと結果を示してください。これは編集部作成の練習例です。次のSQLなら、AIの日本語説明だけに頼らず状態別の件数と金額を確かめられます。教材の初期状態で実行し、上の表と照らし合わせます。
SELECT status, COUNT(*) AS invoices, SUM(amount_yen) AS amount_yenFROM invoicesGROUP BY statusORDER BY status;v0.1.1の読み取りツールは、AIへ返す行数が既定100行、指定上限1,000行です。返す行数の制限であり、SQLが読む行数の制限ではありません。 大きな表では件数や合計を先に計算し、必要な対象期間も条件に入れます。基本は社内データベースから取得するときの作法でも扱っています。
変更案が正しくても、Dry RunとApplyは別に確認する
次に、教材の id=1、12,000円の1件だけを、unpaid から paid へ変更する案を作ります。変更後の集計は、未入金が2件26,000円、入金済みが3件23,000円、取消は1件5,000円のままです。これは操作の練習条件であり、現実の入金確認をAIに任せる指示ではありません。
invoicesのid=1だけ、statusをunpaidからpaidへ変える案を出してください。
現在もunpaidであることを条件に含め、金額や取引先名は変更しません。
propose_changeで提案し、適用は私の確認を待ってください。SQLでは、識別番号だけでなく変更前の状態も条件に入れると、すでに別の人が処理した行を再び変える状況に気付きやすくなります。対象が0行なら、成功と決めつけず、すでに処理済みか、識別番号や状態の指定が違うのかを読み直します。複数行なら、その場でApplyへ進まず、重複や条件の不足を調べます。
- 1提案カードのSQLを開き、表名と
WHERE id = 1 AND status = 'unpaid'に相当する条件を読む。 - 2Dry Runの影響件数が、先ほど見た対象件数と一致するか確認する。
- 3練習用の接続先であることを確認し、Applyの確認画面へ進む。適用後の取り消しボタンはありません。
- 4適用後に再び読み取り、目的の列だけが変わったかを確かめる。
Dry Runはという名前でも、SQLを読むだけの処理ではありません。実装は内で変更を動かし、最後に取り消します。大きな表では処理負荷や待ち時間が発生します。PostgreSQLの連番払い出しのように、取り消しても番号が戻らないものもあるため、「何を試しても完全に無影響」という意味にはしないでください。試行と適用の実装・連番と取り消しの公式説明
配布アプリの読み取り制限と、SQL教材を確認した
2026年10月6日、Apple M2 UltraのMac、macOS 27.0、一時的に用意したPostgreSQL 18.6で確認しました。対象は署名を確認したPostquel v0.1.1の配布アプリです。AIを呼び出す代わりに、アプリのMCP機能へ直接8件の要求を送りました。その後、仕様どおりの変更概要を添えた提案と、未適用状態の読み取りを追加で2件確認しています。
| 確認した動作 | 観測した結果 |
|---|---|
| 表の一覧と列の確認 | invoicesと4列、制約を取得 |
| 状態別の集計 | 未入金3件38,000円など、教材の初期値と一致 |
| 読み取りツールへUPDATEを渡す | 読み取り専用のため拒否 |
| id=1の変更案を提示 | 約1行という推定を返し、状態はunpaidのまま |
| 存在しない列、複数のSQL文 | いずれもエラー |
別に、自作の dry-run.sql と apply.sql をPostgreSQLのコマンドから実行しました。前者は1行を更新してから取り消し、id=1 が unpaid のまま戻ることを確認。後者は1行の変更を確定し、paid になりました。これは画面のDry Run・Applyボタンの動作試験ではありません。 画面側の仕組みは固定版のコードで確認しています。
この小試験から分かるのは、試した読み取り経路と教材の動作です。AIが日本語の依頼を正確に解釈するか、実際の業務データで正しいSQLを生成するかは未検証です。また、表の説明に返った推定件数は0でしたが、実データは6行ありました。推定の表示と、SQLで数えた件数を混同しないことも確認できました。
Macで動くアプリでも、AIに渡る情報は別に考える
データベースへ接続するアプリが手元にあることと、質問内容をすべて手元で推論することは違います。Postquelはログイン済みの外部AI用CLIを呼び出します。選んだサービスのデータ取り扱いや組織の契約条件を確認して使う必要があります。
v0.1.1のコードでは、質問に加え、いま開いている表名と絞り込み条件、またはSQL編集画面の先頭4,000文字までを文脈として渡します。さらに、AIがツールで調べた列名、表の説明、制約、問い合わせ結果の行などが、AIの応答を作る材料になります。文脈を作るコード
業務で試すときは、外部AIへ渡してよい列だけを含む練習用の表を作る、必要な範囲へ権限を絞る、個人情報を架空値へ置き換える、といった準備が役立ちます。「秘密情報を出さないで」と文章で頼むだけで、閲覧権限まで狭くなるわけではありません。
ローカルの分析環境を選ぶ段階なら、DuckDB・SQLite・Postgresの使い分けも合わせて確認できます。