
dotは、OpenAIが2026年9月29日に発表した、会話していない間もバックグラウンドでタスクを進めてくれるエージェントです。 ChatGPTのProまたはBusiness Premiumの料金枠に含まれていて、確認時点では段階的に提供されていました。 dotにコードの修正や検査の整理を任せ、クラウド側で終わらなかった検証をローカルへ引き継いでもらいました。複数の依頼を出しておき、夜に通話で進捗を聞く、といった使い方も試しています。
クラウドPCでは、CSVから日本語PDFを作ったり、短い動画やCAD・GISのデータを変換したりできました。一方、開発ではDockerやlocalhost接続に制約があり、終わった検査をいつまでも「待ち」と報告されることもありました。この記事の改訂中には、作業ファイルと追加したツールが見当たらなくなっています。
使ってみて、成果物の出来栄えと同じくらい気になったのが、いま何を待っているのか、どの環境で動いたのか、完成物をどこに保存できたのかでした。
- 料金と利用条件:ProとBusiness Premiumの料金、地域や利用枠の違い
- できることの早見表と依頼例:小さな入力で動いた処理と、止まった処理
- 承認と安全制御、記憶とデータ:公式仕様と、使う前に確認したい設定
- 開発の引き継ぎとファイルが見えなくなった経緯:実際に任せて困ったこと
まずは料金と使い方から、その後に開発での体験とクラウドPCの詳しい結果を紹介します。料金や安全制御などの仕様は、公式ドキュメントを参照しています。
dotの料金はいくらか 対象プランと利用条件
dotの料金は、ProまたはBusiness Premiumのプランに含まれています。Proは月額100・200・500米ドル、Business Premiumは年払いで1人あたり月額100米ドル(月払いは125米ドル)です。ただし、確認時点では段階的に提供されており、使える地域がプランごとに異なります。ProはEEA・英国・スイスを除く対象地域、Business PremiumはChatGPTの対応地域で使えると案内されていました。Enterprise向けには、管理者が有効化するベータが用意されています(18歳未満は対象外です)。開始ガイド、年齢などのFAQ
| 対象 | 確認したプラン料金 | 契約・提供の条件 |
|---|---|---|
| Pro 100 / 200 / 500 | 月額100 / 200 / 500米ドル | dotの利用対象地域とアカウントへの提供状況を別に確認する |
| Business Premium | 年払いでは1人あたり月額100米ドル、月払いでは125米ドル | ワークスペースは有料席が最低2席。StandardとPremiumを組み合わせられる |
| Enterprise | この記事では料金未確認 | 管理者によるベータの有効化が必要 |
価格はPro各プランとBusinessの料金・席数条件に基づいています。地域・通貨・税の扱いによって実際の請求額は変わります。特にBusiness Premiumは有料席が最低2席必要で、1席だけでは契約できない点に気を付けてください。
利用枠の数え方にも違いがあります。公式発表によると、dotとの通常の会話はChatGPTの使用量制限にカウントされません。一方、dotから開始・管理するCodexやChatGPT Workのタスクは、通常どおりカウントされます。このほかに、dot自身が踏み込んだ作業をするための専用枠がプランに含まれていて、提供開始後の最初の1か月間は拡張されるとのことです。
ただ、公開資料にはその作業枠を実行回数や時間に換算できる数値がなく、何件まで開発タスクを依頼できるかは分かりません。複数のdotの追加や、速度・作業量の拡張は将来の発表とされていて、今の時点で確定した追加料金表としては読めません。枠を使い切るまでの限界試験は行っていません。
dotでできることは何か 早見表
文書やPDFの作成、CSV集計、日本語OCR、短い動画、CAD・GISの変換、コードのテストを試しました。クラウドPCでは小さな合成データを使い、アプリ連携では接続済みアカウントの情報を少数読み取っています。音声通話の行は、日常の利用体験です。
表には、できたことと、そのときの条件を並べました。大規模な業務処理や、ほかのアカウントでも同じ環境を使えるかは未確認です。詳しい手順や数値は、後半のクラウドPCと接続アプリを試した結果にまとめています。
| やりたいこと | 確認できた成果物・操作 | 条件や残る制限 |
|---|---|---|
| Slackやメールから情報を探す | Slackの公開発言の検索・取得、Gmail要約3項目の照合。返信付きスレッドでは親1件・返信7件をページ分割と一括取得で照合 | 親の重複とページ順に注意。全履歴との独立照合、要約品質、送信は未検証 |
| Googleの文書や表や予定を読む | Docsの1タブ・非空120段落・2表、Sheetsの4種類50式セル、Calendarの4例を読み取り、内容を照合 | Docs複数タブ、Sheets入力変更後の再計算、Calendarの日跨ぎ時刻付き予定は未試験。祝日の日付が欠けた例もある |
| 声で現況を聞き、作業を頼む | 夜の通話で現況を確認し、新しいタスクを依頼した利用体験 | 接続アプリの読み取り試験とは別。通話中のCalendar参照は再試験していない |
| 文書・表計算・スライドを作る | DOCX、XLSX、PPTXの作成と編集、PDF化、数式の再計算 | 小さな合成ファイル。Microsoft Office本体では未検証 |
| CSVを集計して報告書にする | 重複・空白処理、PandasとSQLの検算、日本語PDF。追加したDuckDBでは1万行の集計・Parquet保存と4万セルの照合も成功 | 最初は6行から5件に整理する試験。後の1万行も合成データで、大規模性能は未測定 |
| TeXを使わず日本語PDFを作る | 追加したTypstのPythonバインディングで、表を含む2ページを生成。文字抽出と両ページの描画を確認 | Noto Sans CJK JPを指定。複雑な書籍組版やアクセシビリティ要件は未検証 |
| PDFを編集・読み取る | 結合、分割、文字抽出、画像化、フォームの値変更 | 複雑な既存帳票は別途確認が必要 |
| 日本語画像やスキャンPDFを文字にする | 3方式で8画像を比較。別の合成PDF16条件で文字位置と埋込み処理も調査 | 最初のPDFで起きた位置ずれの原因・修正は未確定。対話型ビューアの選択・コピーは未完了 |
| 画像を加工・変換する | GIMPで縮小、InkscapeでSVG→PNG/PDF、日本語描画 | AVIF書き込みや絵文字など、道具によって成否が違った |
| 短い動画や音声を作る | 日本語SVG3枚からH.264/AACの3秒動画、全フレームの復号 | CPU処理。長編、複雑な効果、GPUエンコードは未検証 |
| CAD・3Dデータを作る | FreeCADの単純形状、CadQueryの穴・ポケット付き板のSTEP/STL検証、Blender→GodotのGLB取り込み | 大規模設計や配布用ビルドは未検証 |
| 地理情報を加工する | GeoJSONの座標変換、GeoPackage保存、地図PNG、属性の往復確認 | 小さな合成地点。測量精度や実距離は保証しない |
| コードを実行・テストする | Python、Node、Java、C/C++の最小実行。追加したRustでオフラインビルドと4テスト | 言語・依存・権限ごとの確認が必要 |
| PHPの品質検査をする | 追加環境でPHPStan、PHPUnit、PCOVの小さな試験 | 実アプリ全体や、Docker構成の受け入れ試験とは別 |
| MySQLを使うテストをする | 追加したMySQL 8.0.46とPDO、PHPUnit 1件・8アサーション | DB起動から停止まで同一実行。別実行からの接続は失敗 |
| GUIやブラウザを操作する | クラウド側でアプリ画面の操作、Webページの読み取り、スクリーンショット、ファイル往復 | ログイン、サイト側の制限、操作経路による差がある |
| 接続したローカルPCで小さな作業をする | シェルの合成コマンド、検証用テキストの作成・読み取り・編集・照合、アプリ内ブラウザの公開ページ読み取り | Dockerデーモンはアクセス拒否、cmux CLIは接続先未発見。ローカルPC全体のGUI操作は未検証 |
アプリ連携では、手元のPCやブラウザを操作せず、接続先のアカウントと権限の範囲で情報を取り出せました。Docsの照合にはクラウドブラウザの原画面も使っています。読み取り結果はSlack・Google連携の節で詳しく紹介します。
失敗した処理と未確認の用途
| 用途 | 止まった場所・確認できていない範囲 |
|---|---|
| Docker/Compose前提の開発環境を動かす | クラウド側は必要な道具や権限条件が揃わず、デーモンの起動試験に至っていない。別途試したローカルPCではCLIは動いたが、デーモンへの接続はアクセス拒否 |
| 別のコマンドで起動した開発サーバーへ接続する | 当該localhost接続はConnection refused。ファイル共有とは別の問題 |
| 任意のUnix socketを使う | 最小のAF_UNIX socket作成がEPERM。すべてのTCP通信の禁止を意味しない |
| GPUが必要な学習・レンダリングを任せる | GPUアクセラレーションの成功を確認していない。物理GPUの有無は確定していない |
| 日本語OCRを実資料に無検証で適用する | 初期はTesseractの日本語モデル未導入で失敗。追加後の合成資料では成功したが、写真・手書き・古い印刷・複雑な帳票の実用精度は未検証 |
| 一般的な日本語LaTeX文書をそのまま組版する | フォーマットファイルや日本語パッケージが不足。HTML経由、および追加したTypst経由の日本語PDFは成功 |
| Webアプリを常時公開する | 公開ポート、外部からの到達性、再起動後の常駐を未検証 |
| 既存アプリの互換性や実務品質を一括保証する | 少数の合成入力で成功しても、全機能や本番運用まで確認できたことにはならない |
追加の道具を入れたり、実行する環境や経路を変えたりすると、結果が変わることがあります。失敗した用途も未試験の用途も、使いたい構成で小さく試すところから始めるのがよさそうです。
dotの使い方 作業を頼むときの具体例
初期設定はデスクトップアプリまたはデスクトップWebで行い、そのあとに対応モバイルアプリから話しかける流れになります。モバイルWebは対象外と案内されています。開始手順
うまく進んだ依頼では、入力、欲しい成果物、確認してほしいことを一緒に指定していました。最初は、次のような小さな作業から頼むとよいと思います。
- 「Slackのこの期間の公開発言から、指定の話題を探して。元の発言と照合して、見つかった範囲で要点をまとめて」
- 「この条件に合うGmailを検索し、本文に書かれた必要事項を整理して」
- 「このGoogle Sheetsの指定タブを読んで。使ったセル範囲も教えて」
- 「接続したローカルPCの検証用フォルダで、このテキストを作成・編集し、読み戻して値を確認して」
- 「日本時間で今日の予定を、主カレンダーから開始時刻順にまとめて」
- 「このCSVのIDと地域名の空白を除き、ID重複と返品を扱って地域別に集計して。合計を別の計算でも確かめ、明細と日本語PDFを渡して」
- 「この日本語画像をOCRして、原文と照合しやすいTXTを作って。縦書きや2段組の読み順、金額、型番は特に確認して」
- 「このSVG3枚を順番に表示する3秒・24 fpsの動画にして。72フレームになっているか、全フレームを復号できるか確認して」
- 「この小さな関数の正常系と異常系のテストを書き、実行結果と失敗した箇所を示して。対象の実行環境も記録して」
これらは今回試した規模や条件をもとにした依頼例です。既存の資料やプロジェクトでは、ファイル形式、必要な依存、使ってよいデータ、変更範囲も添えてください。入力や環境が変われば、同じ依頼でも結果は変わります。
アプリに接続済みでも、操作によっては承認や本人の操作が必要になります。dotの操作に関する公式説明では、権限と安全要件に応じて求められるとしています。下書きを頼むことと送信を頼むことも区別されます。まず成果物の作成と確認を依頼し、外部送信や公開が必要なら、その対象と内容をはっきり伝えるとよいと思います。
dotは会話していない間に何をするのか
会話を閉じた後に進む作業にも、いくつか種類があります。公式説明を読むと、依頼した仕事の続き、接続先の背景調査、日時を指定した実行、外部イベントへの対応に分かれています。
| 動くきっかけ | 何を頼むか・何を確かめるか |
|---|---|
| すでに頼んだ仕事の続き | 完了条件と変更してよい範囲を伝え、結果と残作業を確認する |
| Proactive research | 接続を許可した情報を読み、役立つ変化を探す背景調査。発見の品質は別に評価する |
| 定時・繰り返し | 日時、タイムゾーン、期間、通知先、何が変わったら知らせるかを指定し、保存された予定を確認する |
| 対応イベント | 対象サービス・イベント・条件を指定し、実際にそのイベントに対応できるか確認する |
定時実行やイベント駆動の説明はTasks and memoryにまとまっています。アプリを接続しただけでは、監視タスクは勝手に動きません。「このチャンネルを見ておいて」とざっくり頼むより、対象、変更の判定条件、通知してほしいタイミングまで伝えた方が、意図どおりに動いたかを確かめやすくなります。MCPが使えるという一般的な説明だけで、任意の外部イベントにすぐ対応できると考えるのも避けた方が無難です。
Proactive researchは、公開資料上、許可された接続先の読み取り(Read-only)に限られています。調査の処理自体が外部へメッセージを送ったり、アプリの設定を変えたり、ブラウザやPCを直接操作したりすることはありません。何かを見つけた後の行動にも、通常の権限と安全確認が適用されます。公式の安全性説明
時刻を指定して公開情報を取得させる試験では、結果を後から会話で読み戻せました。指定時刻と取得開始の報告には67秒の差がありましたが、実際の開始時刻を別のログで確かめられてはいません。1回の試行であり、正確な実行時刻や通知遅延、自発的な発見の品質はまだ判断できません。条件は処理時間とPauseの節に載せています。
複数案件の定期報告では、終わったタスクを未完了のまま報告されることがありました。最新の検証レポートを渡し直し、どの依頼が終わったかを突き合わせる手間が残っています。
通知が届いても、その内容が最新とは限らない。この点は、実際に任せるうえで気になりました。「Always-on」から、24時間の漏れない監視や、同じプロセスが動き続けることまで期待するのは早そうです。重要な通知に使うなら、見逃しや誤通知も確かめておきたいと思います。
dotの承認と安全制御はどうなっているのか
追加審査が必要な操作では、実行直前にAuto-reviewが働きます。予定された操作を、ユーザーの指示、アプリの権限、Custom Rules、必須の安全要件に照らして確認する仕組みです。通常の読み取りには、この追加審査は挟まれません。
公式には独立した安全確認システムと説明されています。組み込みの安全策と既存のアプリ権限は最初から適用されますが、内部で使うモデルや呼び出し回数までは分かりません。公式の安全性説明、Controls
メール操作を例にすると、「アプリの接続」と「操作の許可」には明確な境界があります。接続、下書き、送信を分けて考える点は、AIシステムのIdentityとAuthorizationとはで整理した権限境界の考え方にも重なります。
| 確認すること | 決まる範囲 |
|---|---|
| アプリへの接続 | どのアカウントの情報へアクセスできるか |
| 返信の下書きを頼む | 文案を作ってよい範囲 |
| 送信を頼む | どの相手へ何を送ってよいか |
接続できるアカウントでも、操作ごとにカスタムルール(Custom Rules)でどこまで許可されているかを確認しておく必要があります。
Custom Rulesでは、特定の操作について「確認なしで実行する」「明示的に頼まれた時だけ実行する」「実行前に必ず確認する」「ユーザー自身に操作を引き渡す」といった扱いを選べます。設定画面は、デスクトップ・WebならPersonalization、モバイルならCustomizeの中にあります。ただし、Custom Rulesはdotが従おうとする指示で、公式説明もdotが間違える可能性に触れています。必須の安全要件や、保存済みログインの使用承認のような必須の確認は、ルールでは外せません。Controls、モバイルの案内
実際にチャットで今後の操作の扱いを伝えてみると、ルールの内容確認画面が表示されました。そこで確定すると保存完了が返ってきました。試した1例では、次の流れでした。
- チャットで、今後どの操作をどの範囲まで許可したいか伝える
- 表示された内容確認画面で、対象と操作の範囲を読む
- ユーザー自身が確定する
- 保存が完了したことを確認する
確認できたのは保存までです。保存したルール本文は公開しておらず、設定によって実行時の判断がどう変わるか、別の対象にも適用されるか、変更・削除するとどうなるかは試していません。保存できても、必須の安全確認を省略できるようになるわけではありません。Controls
ルールで頼むことと、必須の確認で止めることを分けて考える点は、Guardrailsとはで整理した考え方と同じ方向です。この関係を図にすると、次のようになります。
Visual
Custom Rulesは必須の安全要件の内側にある
必須の安全要件と必須の確認は、Custom Rulesでは外せません。Custom Rulesはdotが従おうとする指示で、間違える可能性があります。Auto-reviewは実行直前に、予定された操作を指示と権限とCustom Rulesと必須の安全要件に照らして確認します。
必須ガードの内側にCustom Rulesがあり、Auto-reviewが実行直前に両方に照らして確認する
図の読み方
- 必須の安全要件と、保存済みログインの使用承認のような必須の確認は、一番外側にあり、Custom Rulesでは外せません。
- 接続済みアプリの権限も、最初から適用されます。
- Custom Rulesは最も内側にあり、確認なしで実行する、明示的に頼まれた時だけ実行する、実行前に必ず確認する、ユーザー自身に引き渡す、のいずれかを選べますが、dotが従おうとする指示で、間違える可能性があります。
- Auto-reviewは、追加審査が必要な操作の実行直前に、予定された操作を指示、権限、Custom Rules、必須の安全要件に照らして確認します。通常の読み取り操作では挟まれません。
承認が求められた場面
後述する開発の案件では、次の二つの判断を求められました。
| 場面 | 求められた判断 | 許可した範囲 |
|---|---|---|
| 既存のテスト用データベースの利用・初期化 | 名前に「test」と入っていても、消してよいDBかどうか。元データが手元に揃っているかの確認とは別の問題 | 対象のDBを明示して許可し、全テストとカバレッジ計測を進めてもらった |
| クラウド側で完走できなかった全テストとビルド | 残りの検証をローカルへ引き継ぐかどうか | 未完の検証範囲を明示したうえでの引き継ぎ |
この二つは、対象と許可範囲を会話で確認しながら進めた事例です。確認を求めたのがAuto-reviewなのか、エージェントの判断なのかまでは分かりません。リポジトリの運用ルールや実行環境の制約も関わるため、すべてをAuto-reviewの動作とは扱えません。
OSの権限エラーは、チャットで「許可する」と伝えても解消しません。試験ではソケット作成時にEPERMが発生し、別のコマンドからの接続ではConnection refusedが返りました。前者は権限の制約ですが、後者の原因を権限だけに絞ることはできません。
パスワード変更や口座間の送金など、安全上本人が行う必要のある操作も公式資料に挙げられています。これらは今回試していません。本人へ引き渡す操作の説明
GitHubへの書き込みについてdotがまとめた報告でも、承認の食い違い、理由の分からない取消、呼び出しの中断が分かれていました。元の操作を再試験した結果ではありませんが、止まったときに何を確認するかの参考になります。
| 止まった操作の分類 | 既存報告から分かること | 判断時の確認点 |
|---|---|---|
| 承認範囲による実行前拒否 | 別途承認済みの操作に読み取り限定の範囲が適用され、承認内容と差分を示した後に同一操作が成功した例がある | 当該操作の承認文脈の問題として扱い、OSの拒否と混同しない |
| 理由不明のツール取消 | 取消文言だけで原因や主体が示されない例がある | user cancelledという表示だけで人間による取消と断定しない |
| 呼び出しの中断 | 長い読み取りが戻らず、作業を取りまとめる側で呼び出しを中断したという報告がある | 書き込み前の中断を反映失敗として数えない |
| OSや接続のエラー | ソケット作成時のEPERMや、別の実行から接続した際のConnection refused | 操作権限と接続の成否を分けて確認する |
ファイル内容の保存が成功しても、コミット作成やブランチ参照の更新まで完了したとは限りません。取消表示からGitHubのHTTPステータスを推定せず、保存先の状態と前後の結果を照合します。外部変更の応答が戻らず反映の成否が不明な場合も、先に保存先を読み、重複実行を避けます。
dotの記憶とデータはどう扱われるのか
公式説明では、dotは日々の会話、ChatGPTのメモリ、進行中のタスクを使って応答を個人向けにします。Tasks and memory
複数案件を任せたときも、進捗や追加の指示を引き継ぐ様子は見られました。古い「是正待ち」を訂正すると、定期報告で完了扱いになり、その後も維持された例が1件あります。探し方が足りないと伝えて方法を変えてもらい、Docs本文や別種のSheets数式を取得できたこともありました。
ただ、これは会話中の訂正に対応できたという結果です。直前の会話や追加資料の影響を除き、翌日の新しい依頼でも同じ訂正を覚えているかは試していません。ファイルが翌日も残ることも、好みや指示を記憶する機能とは別です。
本人に確認を求める順序には改善の余地がありました。定期報告や会話への返答は確認できても、自発通知の見落とし・重複・成功率や、端末へのプッシュ配信までは測れていません。
設定を変えるときは、「今後の新しいアクセス」と「すでに取得された情報の削除」を分けて考える必要があります。
| 操作 | 変わること | その操作では消えないもの |
|---|---|---|
| ChatGPTのMemoryをオフにする | ChatGPTとのメモリ共有を止める | dotがすでに受け取った情報 |
| アプリの接続を解除する | その接続からの新しいアクセスを止める | dotが取得済みの文脈 |
| dot自身を削除する | そのdotの文脈を削除する | 別保存のファイル、Codexタスク、ChatGPTの会話。ChatGPTへ共有されたメモリも別管理 |
現時点では、dotが保持している個々の記憶を一覧画面から直接編集・ピンポイント削除する機能は用意されていないとされています。プライバシーFAQ
学習へのデータ利用では、Proactive researchの背景調査そのものは直接学習に使わないと説明されています。ただし、調査で得た情報が会話やタスクに取り込まれると、通常のユーザーデータ設定に従います。個人プランではデータコントロールを、Business・Enterprise・Eduではデフォルトで学習対象外となる契約条件を確認しておく必要があります。公式発表のデータ利用説明
また、セキュリティやコンプライアンス上の理由で、運営担当者が限定的に情報を確認する可能性もあります。学習対象外でも、サービス提供側の人間が一切見ないという意味にはなりません。業務データを接続する前に、自社の規程と保存先のポリシーを確認してください。設定変更やデータ削除そのものの動作は、今回は試していません。プライバシーFAQ
開発の検証をローカルへ引き継いだ事例
実際の開発では、コードの修正から検査、ローカルへの引き継ぎまで頼みました。案件の詳細は伏せていますが、作業を進めるうえで判断が必要だったのは、主に次の点です。
- 元データやDBが必要な検査を、どの環境で行うか
- DBの初期化など、こちらの許可が必要な操作をどこまで進めるか
- 検査、プッシュ、公開先のビルドが、それぞれ終わったか
修正後に残った検査を手元の環境へ引き継ぐ
ある案件では、クラウド側で修正を進め、元データやDBが必要な検査をローカルへの依頼文にまとめてもらいました。最初の報告では、一部の検査がDB初期化の許可待ちでした。また、ブラウザ試験の一部はAPIを模擬応答に置き換えていたため、実APIへの接続を含むE2Eも必要でした。
対象DBの利用を許可し、依存パッケージの指摘にも対応して、最終的には次の報告を受けています。
- 元データを使う試験とカバレッジ計測が成功
- フロントエンドの試験とブラウザE2Eが成功。E2Eは、模擬応答を使うものと実APIを使うものに分けて報告された
- 並行処理の試験が成功
- 依存監査の指摘が解消
- コミットとプッシュのあと、ローカルとリモートのSHAが一致し、作業ツリーに未コミットの変更がないと報告された
依頼した範囲の検査と反映は、ここで完了しました。もちろん将来の不具合までなくなるわけではなく、その後に追加で頼んだ監査は別の仕事として扱っています。
プッシュと公開先のビルドを照合する
別の案件では、プッシュ済みでも公開先のビルドが失敗していました。その後、同じコミットSHAに対応するビルドの成功を確認し、ローカル検証も完了したとの報告を受けています。試験件数の再集計はしていませんが、検査、プッシュ、公開先のビルドを同じコミットで確かめる必要がありました。
検査の成功、プッシュの完了、公開先のビルド成功は別々に確認する。対象コミットを揃えると、どの変更についての結果かを追える。
- 確認する変更のコミットを特定する。
- 各環境で実行した検査の対象コミットと結果を記録する。
- リモートと公開先ビルドの対象SHAを確認する。
- 同じ変更についての記録を照合し、未検査や失敗を区別する。
完了報告後も古い待ち状態が残った
修正後の進捗確認にも負担が残りました。ローカルの検証が終わり、プッシュされた後も、以前の「検証結果待ち」を引きずる報告が出たためです。最新結果をあらためて示し、対象SHAと残作業を照合する必要がありました。
報告の頻度が高いだけでは、この負担は減りません。必要だったのは、次の四つを揃えることでした。
- 依頼ごとの完了条件
- 検証したコミット
- 検査の範囲
- 最後に届いた結果
GitHubの更新だけでは、作業のプロセスが動いているかどうかも分かりません。任せるときは、「動いているか」だけでなく「何を根拠に完了とするか」まで伝えた方がよいと思います。
そこで、案件、対象の版、検査範囲、結果の時刻を揃え、完了済みの検査と追加監査を分けて伝えました。訂正後の報告では、完了扱いが維持された例もあります。ただ、通知の重複率・見落とし率・平均遅延や、手作業と比べた負担の削減率までは測れていません。
古い進捗や重複通知を除く手順も試した
dotの報告書には、案件・版・結果の通番を照合する手順案がありました。合成イベントとスクリプトで試すと、同じ完了報告でも新しい通番を付ければ、通知候補に重複して入りました。通番だけでなく、案件・版・完了の種類ごとに通知済みかを持つ必要があります。これは手順案の検査で、dot自身の通知機能を試した結果ではありません。
別のチャットの指摘をテストで検証する
追加のコード監査では、ChatGPTの別のチャットを次のように使いました。
- 監査内容を要約して渡し、見落としや反例を求める
- 出た指摘を仮説として受け取る
- 変更可能な入力値をめぐる指摘から、変更候補で古いエラー表示が残るケースを再現し、回帰テストに落として修正を進める
別のチャットには要約だけを渡しているので、全ソースの監査やテストの代わりにはなりません。それでも、指摘から再現条件を作り、回帰テストにつなげる使い方は役に立ちました。この追加の修正候補は、最終プッシュまで確認できていないため、前述の完了済みの検証には含めていません。
dotの実行環境と作業の確認
実装を頼むときは、どこで動かすかも伝えておくと引き継ぎが楽になります。dot自身のクラウドPC、接続した自分のPC、事前設定したCodexクラウド環境は、それぞれ別の環境です。後半で紹介するDebianのスペックやMySQLの制約は、dotのクラウドPCを測った結果です。
公式には、ローカルのWork・Codexタスクを接続済みPCで始める方法と、リポジトリや初期設定を用意したCodexクラウド環境で始める方法があります。ローカルの仕事にはPCをオンラインにしてChatGPTアプリを開いておく必要がありますが、Codexクラウド環境は手元のPCがオフラインでも使えます。途中でPCを切り替えても、開始済みのタスクは自動では移りません。Tasks and memory
dotの作業は、dot自身のクラウドPC、事前設定したCodexクラウド環境、接続した自分のPCのいずれかで動きます。公式説明では、手元のPCがオンラインで、ChatGPTアプリを開いている必要があるのは、接続した自分のPCを使う作業です。利用するPCを切り替えても、開始済みのタスクは自動では移りません。
- dot自身のクラウドPCは、公式説明では、クラウドで完結する作業なら、手元のPCを閉じても継続できます。
- 事前設定したCodexクラウド環境は、対象リポジトリと初期設定を先に揃えれば、手元のPCがオフラインでも使えます。
- 接続した自分のPCを使う作業は、そのPCがオンラインで、ChatGPTアプリが開いている必要があります。
| 実行先 | 選ぶときの確認点 | 手元のPCの条件 |
|---|---|---|
| dot自身のクラウドPC | そこで使えるファイル・依存・権限を確認する | クラウドで完結する作業なら、手元のPCを閉じても継続できる |
| 接続した自分のPC | 原本や既存DB、OS固有の道具を使えるか確認する | オンラインでChatGPTアプリを開いておく |
| 事前設定したCodexクラウド環境 | 対象リポジトリと初期設定を先に揃える | 手元のPCはオフラインでもよい |
引き継ぎの依頼文には、対象コミット、実行する検査、成功条件、変更してよい範囲を入れておきます。原本や既存DBが必要なら、そのデータを使える環境も指定します。「ローカルで確認して」だけで済ませるより、返ってきた結果を元の依頼と照合しやすくなりました。
dotを窓口に複数の仕事を整理し、Codexなどに実作業をつなぐ使い方はできます。ただし、事前設定したCodexクラウド環境を新しく起動し、全試験を終えるまでの一連の動作は試していません。Tasks and memory、Computers and apps
Activityで確認して必要な作業だけ引き取る
- Activity:作業の進捗、ファイル、結果、入力待ちを確認できます
- Scheduled:定時の仕事を確認する場所で、実行中のタスクを見る画面とは別です
- Take over:クラウドPCを開いて画面を見るだけでは操作権を引き取れず、Take overを選び、終わったら制御を返す流れが案内されています
- Pause:現在のメイン作業を止めても、すべての別タスクや将来の定時実行が止まるわけではありません。対象のタスクと予定を確認する必要があり、停止しても、過去に行った変更は元に戻りません
公式の説明は、ControlsとComputers and appsにあります。
音声で聞いて確認事項をチャットへ残す
夜中にdotへ電話して、進行中の作業を聞き、新しいタスクを頼んだことがあります。依頼中のタスクを一通り報告してもらい、ローカル確認が必要なものや、埋もれていた記事の話をチャットに再掲するよう頼みました。長い依頼の一覧を口頭で聞いて、あとで読む場所を指定する使い方です。
公式にも、電話ボタンから作業の相談や優先順位の変更ができ、通話後も仕事を続けられると説明されています。dot側からの発信は、確認時点では今後の予定でした。dot自身の公式説明、音声とメッセージの説明
これは利用体験で、応答時間や依頼した全ファイルの納品を測った試験ではありません。通話で頼んだ後も、完了したかはチャットや成果物で確認します。
- 状況の確認:「いま何が終わっていて、何が残っている?」
- 続きの依頼:「次はこの資料を確認して」
- 未検証の組み合わせ:Calendarから取得した今日の予定を通話中に読み上げること
Slackなどに入口を変えても、チャット本文は自動では同じ場所に複製されません。どこで結果を受け取りたいかを指定しておく方がよいと思います。私的な相談をチームのチャンネルに共有してよいかも、会話をつなげられるかどうかとは別に決めます。
改訂中に作業ファイルと追加ツールが見えなくなった
この記事を改訂している途中で、直前まで使っていた作業ファイルと追加ツールが、dotのクラウドPCの元の場所に見つからなくなりました。完成した改訂稿も見当たりません。作業フォルダの作成時刻などが新しくなっていたため、環境が作り直された可能性が高いと考えましたが、原因は分かっていません。
以前に追加したasdfとRust、検証用のPHP・Composer・PCOV・MySQLも見つかりませんでした。標準側のNodeは残っていましたが、追加したものとは版が異なります。同じNodeが古い版に戻ったのか、別の配置を見ているのかは断定できませんでした。
読み取り可能な範囲をルートから名前で探しても、旧作業フォルダは見つかりませんでした。調べられたのはその時点で接続している環境だけで、旧環境にデータが残っているか、永久に消去されたかは不明です。メモリ不足や再起動が原因かどうかも分かりません。
元の記事はLibraryに別名で残っており、取り出した内容のSHA-256は以前の原稿と一致しました。一方、改訂後の完成稿は外部保存が成功しておらず、そのまま回収できませんでした。この記事は、元原稿と先に保存できていた修正計画から組み直しています。
コードは、リモートにプッシュ済みのコミットから取り直せました。未プッシュの変更や一時ログは、同じようには戻せません。文書も、作業場所で完成したことと、あとから取れる場所へ保存できたことを分けて確認する必要がありました。
別の試験では翌日やPause前後に同じファイルを読めていますし、/tmpのファイルが見えなくなった例もあります。切断のたびに消えるとは言えず、保持期間も分かりません。私は重要な途中成果と完成物を外部へ保存し、内容を確かめることにしました。ツールの導入手順、版、再実行に使う入力も一緒に残しておきます。
Before / After
保持を確認できた試験と作業が続けられなかった例
先に行った保持試験では同じファイルを読み戻せましたが、後の改訂作業では旧ファイルが見つかりませんでした。環境交換の原因と保持期間は不明です。
| 観点 | 先に行った保持試験 | その後の改訂作業 |
|---|---|---|
| 作業ファイル | 後続操作や翌日に同じハッシュで読み戻せた | 以前の作業ファイルを現在見える範囲で確認できなかった |
| 追加ツール | 追加したRustのバイナリを別の実行でも利用できた | asdf・Rust・PHPなどの旧配置が見つからず、再導入が必要になった |
| 外部へ保存したもの | 保持試験は作業場所のファイルを対象にした | 元原稿はLibrary、push済みcommitはremoteから再取得できた |
完成の報告を受け取るだけでなく、保存先から開けるかも確かめておきたい。保存に失敗して原稿を組み直すことになり、その必要性を実感しました。
保存した版の再取得や、小さなCSVの再実行も試しました。ただ、同じ環境内での確認なので、環境を失った後に依存やモデルを含めてすべて復元できるかは、まだ分かりません。CSVでは、実行オプションによって検査が無効になり、誤った集計でも正常終了する例がありました。
原稿の再取得とCSVを再実行したときの注意点保存した版の違い、Pythonの実行条件、入力と集計結果の照合をまとめています。
dotからは、Gitの指定コミットとLibraryの旧原稿v1を別フォルダへ取り出し、保存済みの版とハッシュが一致したとの報告がありました。Git原稿は手元でも読み、119,768 bytesとSHA-256の一致を確認しています。Libraryの照合と再取得の操作はdotの報告に基づいており、このv1が環境消失時に回収した元原稿と同じ版かは確かめられていません。
| 再取得した原稿 | 版とサイズ | 確認した範囲 |
|---|---|---|
| Gitの基準原稿 | コミット123d554a8efa368744a47cc53f36632b4d39abc8の119,768 bytes | Git blob SHAの一致とSHA-256を確認し、先に取得した同版とのバイト単位比較も一致 |
| Libraryの旧原稿 | v1の156,824 bytes | 保存時の既存検証記録のSHA-256と一致。Gitの基準原稿とは別版 |
再取得した原稿は、保存先と版を揃えて照合しました。ここで試したGit取得は記事ファイルが対象で、リポジトリ全体のclone、依存導入、サイトのビルドまでは行っていません。
CSVの復元手順の予行では、7行の合成CSVとスクリプトを圧縮し、同じ環境内の別フォルダへ展開しました。空白と重複を処理した6件をPythonとSQLiteで集計すると、東京1,100、大阪1,700、総計2,800が展開前後で一致しました。入力とソースのハッシュ、出力JSON、終了値0も同じでした。環境のリセットはしていないため、交換後の復元や長期保持は未確認です。
このコードには、実行条件による落とし穴もありました。assertによる検査は-Oで無効になります。金額1件を1増やすと通常実行は失敗しましたが、-Oでは誤った合計2,801を終了コード0で出力しました。ロケールをASCIIにしてUTF-8を無効にすると同じ入力を読めず、-X utf8を明示すると読めました。Pythonの最適化指定、文字コードの指定
また、入力の一部を変えても、集計値が同じになる場合があります。比較用に作った、入力を読まず期待出力だけを固定表示するスクリプトでも、出力ハッシュは一致しました。外部保存物の改ざんを見つけたという話ではなく、出力だけの照合では入力やソースの違いを見落とすという結果です。PythonとSQLで集計が一致しても、両方が同じ処理済みレコードを使うなら、元入力は別途確かめる必要があります。
再実行できる状態で保存するには、入力と成果物、正解値、固定版のソース、起動方法、依存・フォント・モデルの版とハッシュ、文字コード、実行条件、検査結果を揃えておきます。今回のCSVのZIPは入力とソースだけだったため、照合には別の記録も必要でした。NDLOCR-Liteもソース4ファイルは回収できましたが、当時のモデル、起動用スクリプト、依存一式、旧PDFは復元できていません。再現可能な導入の考え方
その後、別の固定コミットの記事とLibraryの保存稿も取り出しました。記事は132,302 bytes、Libraryのv1は156,824 bytesで、別の版です。取得テキストをローカルに保存する途中で末尾LFが1バイト増える差があり、回収コピーを取得内容に合わせてGit blobとの一致を確かめました。外部の原稿自体が変わったわけではありません。
保存済みZIP2本は、内部一覧の対象42件と13件がすべてハッシュ一致でした。保存物の内容は一致していますが、中に記録された過去の全試験をやり直したわけではありません。
小さなCSV用保存セットは同じ環境内で再展開し、次の4条件を比較しました。
| PythonとSQLiteの版 | 実行条件 | 結果 |
|---|---|---|
| Python 3.12.14/SQLite 3.53.1 | 通常実行 | 6件、東京1,100、大阪1,700、全体2,800 |
| Python 3.12.14/SQLite 3.53.1 | -I -S | 同じ件数と集計値 |
| Python 3.13.5/SQLite 3.46.1 | 通常実行 | 同じ件数と集計値 |
| Python 3.13.5/SQLite 3.46.1 | -I -S | 同じ件数と集計値 |
4条件とも、改行込み84 bytesの出力ハッシュも一致しました。環境の破棄・交換を伴う比較ではありません。
入力の差を調べた追加21条件では、同じ地域の2行を相殺するよう金額を変更した場合や、金額0の行のIDだけを変更した場合も、出力ハッシュが元と同じでした。それでも、元のレコードとは異なります。入力なしで期待出力だけを固定表示する別スクリプトも、同じ出力を作れました。
| 21条件の内訳 | 条件数 | 確認した違い |
|---|---|---|
| 元入力 | 1 | バイト列・レコード・期待出力が一致 |
| 行順逆転、同一重複の削除・追加 | 3 | バイト列は違うが、定義した重複除去後のレコードは一致 |
| CRLF、末尾LFなし、空行追加、列順入替え | 4 | バイト列と許容した形式差を分けて比較 |
矛盾重複を末尾へ追加、同条件で-O、先頭側へ追加して-O | 3 | 検査の消失や上書きで、出力一致でも入力矛盾を見落とせる |
| 個別金額の相殺変更、0円行のID変更、余分な列 | 3 | 集計が同じでもレコードや列の集合は違う |
| UTF-8 BOM、Shift_JIS、UTF-16 | 3 | 列名・復号条件が変わり旧処理は失敗 |
| ヘッダーだけ、0円行の削除、入力なし | 3 | 入力・件数・期待値の検査で失敗 |
| 別スクリプトで固定出力、入力なし | 1 | 出力一致でも入力・ソースは不一致 |
| 合計 | 21 | 同じ環境内の安全な複製を使った対照 |
JSONの整形・キー順・末尾改行を変えると、ハッシュは違っても値は同じになる例も確認しました。厳密な原本回収を確かめるならバイト列とハッシュを照合し、許容した形式差の中で同じデータを扱うなら、正規化規則とレコード照合を別に記録します。PythonとSQLが同じ処理済みレコードを集計した一致だけでは、元入力そのものの正しさの独立検査にはなりません。
なお、別の作業報告には、通信断から復旧した後も既存ファイルのハッシュが変わらなかった例があります。操作ログは独立に確認できておらず、今回のファイルが見つからなくなった事例と同じ原因かは分かりません。
クラウドPCと接続アプリを試した結果
dotは自分のコンピューターとブラウザを持ち、調査、文書作成、データ分析、ソフトウェア作業に使えると説明されています。公式のComputers and appsを読みながら、次の作業を試しました。
- 接続アプリ:Slack、Gmail、Google Drive・Sheets、Calendar、GitHubの読み取り
- クラウドPC:文書とPDF、CSV集計、画像変換とOCR、動画、CAD・GIS、Rust・PHP・MySQLの小さな試験
- 接続した手元のPC:シェル、ファイル、アプリ内ブラウザ、Dockerとcmuxの接続確認
asdf・Rust・PHP・MySQLや、日本語OCR、CSV分析、PDF作成の道具は、必要に応じてdotに導入を頼みました。最初から入っていたものとは分けて紹介します。各節の詳しい入力条件や測定値は折りたたみに入れてあるので、気になる用途だけ開いて読めます。
Debian 13.6と実行環境のスペック
調査時点の環境はDebian 13.6で、確認できた論理CPU数は9、メモリの表示値は約9.73 GiBでした。 CPUとメモリの専有量は確定しておらず、GPUアクセラレーションの成功も確認できていません。
| 判断に使う値 | 観測結果 | 保証されていないこと |
|---|---|---|
| 論理CPU | 9 | 9 vCPUの専有とcgroupの実効上限 |
| メモリ | 約9.73 GiB | 専有量とサービスの利用上限 |
| GPU | 利用できる状態を未確認 | 物理GPUの有無とハードウェアアクセラレーション |
OS・CPU・メモリとGPUの観測記録版、バイト数、デバイス列挙、Blenderの結果を確認できます。
| 項目 | 観測値 | 読み方 |
|---|---|---|
| OS | Debian GNU/Linux 13(trixie)、DEBIAN_VERSION_FULL 13.6 | 調査時点の環境 |
| カーネル | Linux 6.18.44 | x86_64 |
| CPUの表示名 | AMD EPYC 9V74 80-Core Processor | 初期調査の記録。モデル名の80-Coreを利用可能コア数にはしない |
| 確認できた論理CPU数 | 9 | nproc、getconfなどで確認。専有数や実際に適用されるCPU割り当て上限は未確定 |
| メモリ総量 | 10,451,464,192 bytes、約9.73 GiB | プロセスに保証された専有量やサービス上限とは別 |
| Swap | 0 bytes | 観測時点 |
CPUの表示名には80-Coreとありますが、この環境で確認できたのは9論理CPUでした。cgroupの実効上限は取得できていないため、「9 vCPUを専有できる」とも書けません。メモリも同様に、表示値と保証値を分けて扱いました。
GPUは、利用できる状態を確認できていません。初期調査のシェルでは/dev/driやNVIDIA系デバイスが見えず、nvidia-smiも確認できませんでしたが、VRAMは取得できていないため、「物理GPUなし」とは判断していません。OpenCLのプラットフォーム数は0、Vulkanはincompatible driver、QtのオフスクリーンOpenGLも生成できず、Blender Cyclesで列挙されたデバイスはCPUだけでした。Blender Eeveeは32×32のPNGを生成できましたが、EGL警告があり、GPUによるハードウェアアクセラレーションの確認にはなっていません。
Slack・Google連携で情報を取り出した
接続済みのアプリでは、Slackの発言やGmailの本文を探し、Sheetsの指定範囲を読み、Calendarの予定を参照できました。Docsは一覧検索で見つからなかった文書も、メールにあった共有リンクからは読めています。探している情報の場所が分かっているときと、検索から始めるときでは、結果が違うこともありました。
最初に試したのは、アプリ一覧の確認を含む24項目の読み取りです。その後、返信付きスレッドや数式セルなど、対象を変えて詳しく調べました。以下の24項目には、その際のセル数・ページ数やCustom Rulesの保存を含めていません。
Metrics
接続アプリで最初に試した操作
アプリ一覧確認を含む初期の読み取り試験。後から行った詳細な照合とRules保存は集計対象外。
- 読み取り確認
- 24項目検索・取得・指定範囲の照合など。アカウント内の総件数ではない
- 試験対象外の書き込み
- 0回送信と編集は試験に含めていない
Slackの返信は、ページごとの親発言の重複と並び順に注意が必要でした。Sheetsは4種類50式セルの式と現在値が対応しましたが、入力変更後の再計算は試していません。Docsで照合したのは1タブの文書で、複数タブや原画面の全文・書式までは確かめていません。読み取れた内容をもとに作業を頼むことと、送信・編集・予定の作成や変更を任せることは、分けて考えたいところです。
Slack・Gmail・Googleの読み取りをどう照合したかスレッドのページ順、数式と現在値、文書の表、予定の検索条件など、アプリごとに試した内容をまとめています。
Slackの発言とGmailの本文を読む
Slackでは、期間を指定して公開メッセージを検索し、1件を取得しました。その発言からスレッドを開くと、親発言の識別子と本文が検索結果と一致しました。返信は0件でしたが、探している発言を見つけて元の内容を確かめる作業は頼めます。
返信の取得は、別の既存DMスレッド1本で試しました。親1件と返信7件を、要求件数2の4ページと、要求件数100の一括取得で読み比べています。発言の識別子で対応させると、8件すべての本文が一致しました。比較時に除いたのは表示用見出しと末尾改行だけで、本文中の文字や改行はそのままです。一括取得を繰り返しても、識別子と本文は同じでした。
| 取得順 | 親の表示 | 返信を古い順にR1〜R7とした結果 |
|---|---|---|
| 1ページ目 | P | R6・R7 |
| 2ページ目 | P | R4・R5 |
| 3ページ目 | P | R2・R3 |
| 4ページ目 | P | R1 |
| 一括取得 | P | R1〜R7 |
ページ分割では親が毎回現れるため、延べ11件になります。識別子で重複を除くと8件で、一括取得に対する欠落・余分な識別子は0件、返信同士の重複も0件でした。各ページ内は古い順でも、ページ自体は新しい側から返ります。受信順に連結すると、親を複数回数え、返信の時系列も取り違えてしまいます。
期間をR2からR5の間に絞ると、境界と同時刻の返信は外れ、R3・R4だけが返りました。R1より前、またはR7より後の返信が0件の範囲でも、親は再掲されます。親が表示されても、期間内に返信があるとは限りません。簡潔表示には本文だけで各発言の識別子と時刻がなかったため、重複と順番を調べる際は詳細表示を使いました。
この照合は、同じ接続経路から得た出力同士で行っています。クラウドブラウザーではサインイン要求で止まり、原画面や独立したエクスポートとの全履歴照合には進めませんでした。非公開チャンネル全般、削除・編集履歴、複数人のやり取りを含む要約品質も未検証です。表のページ順は今回の連携経由での結果で、Slackの生APIを直接測ったものではありません。API側の条件は、ページ継続と返信取得・時刻境界の仕様で確認できます。
Gmailでは、条件検索で3件を取得し、そのうち1件のスレッド本文をテキスト版とHTML版の両方で読みました。概要を3項目に整理し、どの項目も両方の本文に根拠があることを確認しています。検索の次ページから取得した1件も、直前の3件とは重複しませんでした。受信メールから必要事項を取り出すところまで試し、返信の送信や外部サービスへの下書き保存は行っていません。
Google Sheetsは範囲を絞って読む
Google DriveでSheets形式のファイルを検索すると、3件のメタデータが返りました。そのうち1ファイルにある2タブを確認し、実在するタブから5行×7列の35セルを指定して読みました。値が入っていたのは15セルで、そのうち3セルを再取得しても値は一致しています。表を探し、タブと範囲を選び、値を確かめるところまでできました。
表示形式を変えて読む試験では、dotから、2つの指定範囲を合計500セル分まで読み、数式セルは見つからなかったと報告がありました。同じ6セルを表示値・未整形値・数式表示の3指定で取得した結果、時刻3セルは1日の割合を表す数値から分へ換算すると一致し、数値3セルも対応したとのことです。同じ情報源を別の形式で読んだ結果で、業務内容を独立した原本と照合したものではありません。Sheetsの表示指定でも、表示値、計算済み数値、式自体は別の出力として定義されています。
数式については、既存資料から式を持つセルを探し、2ファイルにある4種類50セルを照合しました。最初に範囲指定した35セルとは別の対象です。
| 式の種類 | 対象セル数 | 確認したこと |
|---|---|---|
| ROW系 | 15 | 式、行位置から得る値、取得値の対応 |
| 2セルの時刻差 | 29 | 元の時刻から独立計算した差と、未整形値・表示値 |
| COUNTIF | 3 | 元の分類列と条件から数えた件数 |
| SUMIF | 3 | 元の時刻差を独立計算し、条件別に合計した値 |
| 合計 | 50 | 4種類の式と現在値を対応付けた |
この50式セルのうち、時刻差29セル、COUNTIF 3セル、SUMIF 3セルの計35セルは、元の時刻30セル、分類列30セル、集計条件3セルなども範囲指定で読みました。式・未整形値・表示値の3指定とセル情報を比較し、35セルとも計算値と表示値が一致しています。時刻差の比較許容差はシリアル日単位で1e-12とし、独立計算との差の最大値は今回の数値表現では0でした。
ここで確かめたのは式と現在値の対応です。入力を変えていないので、再計算や反映時間は分かりません。COUNTIFとSUMIFの条件も文字列の単純一致までで、ワイルドカードや比較演算子は試していません。別タブ参照、外部データ、配列式、エラー値、書き込みも未試験で、シート全体や業務上の計算意図の正しさは、この照合だけでは判断できません。指定や関数の意味は、表示値・数値・数式の指定、COUNTIF、SUMIFに沿って確認しました。
Google Docsは共有リンクから本文と表を照合した
Docsは検索でつまずきました。結果が0件でも次ページトークンが付く応答が3ページ続き、別の検索経路も0件です。再調査でも対象を見つけられず、本文取得を試せない状態でした。ただ、全ページを読み切ってはいません。Google Driveの一覧APIにも、結果が空のまま次ページが残る場合があると記載されています。
メール内の共有リンクまで探すと、既存のGoogle Docsが1件見つかりました。この文書は、Driveの一覧検索ではタイトルやMIMEタイプを指定しても0件でしたが、既知URLからは読めました。検索範囲、共有条件、インデックス、連携実装のどこに原因があるかは分かりませんが、検索で見つからない文書を直接取得できた例です。
対象はルートタブ1個、子タブ0個の文書で、表内を含む128段落のうち非空テキストが120段落、表が2個ありました。同じ文書IDで全体の構造、本文抽出、表抽出を比較しています。
| 確認した内容 | 結果と比較条件 |
|---|---|
| 非空段落 | 120/120の文字列と順番が一致。各段落末尾の改行1文字だけを除いた |
| 段落の開始・終了位置 | 開始は120/120一致。終了は末尾改行分を1引くと120/120一致 |
| 表の寸法 | 9行×2列と13行×5列 |
| 表内テキスト | 83/83グリッド位置が一致。セル末尾の改行1文字だけを除いた |
| タブの明示 | 指定なしと明示指定で本文配列が一致。表はタブID以外が一致 |
| DOCXエクスポート | 120非空段落の文字列・順番が一致。2表の結合範囲も照合 |
| PDFエクスポート | 11ページを描画し、結合ヘッダーを確認。抽出テキストの完全一致はしていない |
| 原画面 | dotのクラウドブラウザーで、1タブ・子タブなし・4列結合ヘッダーを確認 |
表の83位置には結合セルの範囲を含みます。DOCXの実セルは80個で、第2表のヘッダー1セルが4列を結合していました。APIの構造では残り3位置が空のテキストになっており、DOCX側も結合範囲を占有位置に展開すると83位置が一致します。この3位置は、通常の空セルとは扱いが違います。
120段落には表内の段落も含まれるので、83位置との合算はできません。抽出されなかった空テキストの8段落にも、画像だけの段落や結合範囲の位置が含まれます。見た目にも空の段落が8個ある、という意味ではありません。画像要素は2個あり、画像内の全文までは確認していません。
PDFからの抽出テキストは、全空白を除いた診断用の比較では120段落中84段落、NFKC正規化も加えると112段落が含まれていました。抽出方法によって結果が変わるため、残りを「8段落がPDFから消えた」とは判断していません。PDFの見た目と文字抽出、DOCXの文字列は、それぞれ別に確かめています。
最後に再取得すると文書の改訂識別子は変わっていましたが、本文・タブ構造は一致し、更新時刻も不変でした。Googleの仕様では本文更新以外でも改訂識別子が変わり得るとされており、今回の原因は特定していません。
複数タブ、子タブ、セル内の複数段落・改行、入れ子表、脚注・提案・コメントなどは、対象文書にないか比較範囲外です。原画面で確認したのはタブ構造と結合表までで、全文120段落を逐字・書式照合したわけではありません。DOCXも同じGoogle文書から出力した別形式なので、完全に独立した正解原本とは扱っていません。複数タブの文書を扱う際は、全タブ取得の仕様も確認が必要です。
「今日の予定は?」をGoogle Calendarで確かめる
Calendarでは、カレンダー一覧、公開祝日の検索、予定の詳細取得を試しました。最初に読んだ祝日1件では、識別子・名称・開始・終了の4項目が検索結果と詳細で一致し、指定した1日の空き時間取得も正常に応答しました。
主カレンダーには、日本時間の「今日」を0時から翌日0時までの範囲で指定しました。こちらもエラーなく応答し、次ページはありませんでした。実際の予定名や件数、空き時間は公開しませんが、日付・タイムゾーン・対象カレンダーを揃えて予定を参照できています。
共有・仕事・家族用のカレンダーも知りたいなら、検索対象に含める必要があります。主カレンダーだけを見て、すべての予定が空だとは判断できません。空き時間も、指定したカレンダーの予定あり(busy)の時間帯をもとにしています。予定一覧の条件と空き時間取得の仕様は、使う前に確認しておきたいところです。
一方、dotからは、別の試験で「スポーツの日」の詳細に日付がなかったという報告もありました。検索と詳細で識別子・名称は一致しているのに、詳細の開始と終了だけが空でした。最初に4項目が一致した祝日と同じ予定だったかは、確認できていません。
| 照合項目 | 検索結果 | 同じ予定の詳細取得 |
|---|---|---|
| 識別子と名称 | スポーツの日の同一予定を取得 | 検索と一致 |
| 開始 | 2026-10-12T00:00:00 | 空文字 |
| 終了 | 2026-10-13T00:00:00 | 空文字 |
詳細取得を繰り返しても、開始と終了は空だったとのことです。応答が成功しても必要な日付が揃うとは限らず、この空文字から予定の不存在や時刻未定を読み取ることもできません。Googleの予定リソースでは、終日予定はdate、時刻付き予定はdateTimeで表します。この検索応答はオフセットのない日付時刻文字列でしたが、生のGoogle API応答を取得していないため、Google側と連携側のどちらに起因するかは不明です。
同じ試験の検索では、日本時間の10月1日0時〜11月1日0時と、それに対応するUTCの9月30日15時〜10月31日15時で、同じ祝日1件が返っています。当日の1日指定は1件、翌日は0件で、いずれも次ページはありませんでした。ここで試した対象は終日予定です。
後の試験では、公開祝日、繰り返し予定の1回分、単発の時刻付き予定、公開祝日以外の終日予定を各1件読みました。4例とも検索と詳細の識別子・名称・開始・終了が一致し、公開祝日は詳細を再取得しても同じ開始・終了でした。単発の時刻付き予定も、日本時間とUTCで同じ検索期間を指定すると、同じ識別子が返りました。
公開祝日の名称・日付は、日付が空だった試験の祝日と対応します。ただ、先の試験の実IDを保存資料から回収できておらず、同じIDかは未確認です。この一致をもって、欠落の原因が分かった、問題が解消した、とは判断できません。
公開祝日と同日内の時刻付き予定では、開始をS、終了をEとして、検索期間の境界も調べました。
| 検索期間 | 公開祝日 | 時刻付き予定 |
|---|---|---|
[S−1秒, S) | 0件 | 0件 |
[S, S+1秒) | 1件 | 1件 |
[E−1秒, E) | 1件 | 1件 |
[E, E+1秒) | 0件 | 0件 |
8条件すべてで次ページはありませんでした。開始が検索期間より前でも、終了直前に重なる期間では予定が返ります。予定の終了と開始から期間の重なりを判定するGoogleの仕様と整合する結果でした。
日跨ぎの時刻付き予定は、登録済みカレンダーの探索期間を広げても対象を見つけられず、未試験です。終日予定の翌日0時終了とは分けて考えています。生のdateとdateTimeキー、夏時間、変更・取消された繰り返し例外も確認していません。これらの区別は予定リソースの仕様にあります。
Calendarで行ったのは読み取りまでで、予定の作成・変更・削除・招待は試していません。音声通話中の試験でもないため、「通話で今日の予定を聞いて答えを得る」という一続きの使い方は、別に確かめる必要があります。
Slack内でdotに話しかける使い方とは分ける
Slackを情報源として検索することと、Slack内でdotとやり取りすることは、入口が異なります。アカウント連携からの検索・読み取りはできましたが、Slack内のアシスタントが参照できる公開チャンネルの一覧は0件でした。理由は分からず、その経路のチャンネル読み取りや投稿は試せていません。OpenAIのSlack連携の説明でも、接続情報源として使う機能とSlack内のアシスタント利用は区別されています。
GoogleとSlack以外にも利用候補がある
アプリ一覧には、今回接続していないNotionやOutlook、Teamsなども表示されました。このアカウントで使えた操作と、候補として見つかっただけのアプリをまとめます。
| アプリ | 確認した状態・操作 |
|---|---|
| Slack、Gmail | インストール済み。検索・本文取得、Gmail要約3項目、Slackの親1件・返信7件を照合。送信は未試験 |
| Google Drive / Sheets | インストール済み。ファイル検索、Sheetsの範囲読み取り、4種類50式セルと現在値を照合。書き込み・入力変更後の再計算は未試験 |
| Google Docs / Slides | Google Drive連携の対応範囲。Docsは検索で見つからなかった1タブ文書を共有リンクから読み、本文・2表・エクスポートを照合。Slides本文は未試験 |
| Google Calendar | インストール済み。予定検索・詳細・空き時間取得を実測。祝日1件では詳細の日付が空になり、後の4例では検索と詳細が一致。両試験の祝日が同一IDかは未確認 |
| GitHub | インストール済み。取得上限1件のリポジトリ一覧が成功。連携試験ではコードやPRの操作は対象外 |
| Google Contacts | インストール済みの表示のみ確認。連絡先の取得は未試験 |
| Notion、Dropbox、Box、SharePoint | 候補として表示。未インストールで操作未検証 |
| Outlook Email、Outlook Calendar、Teams | 候補として表示。未インストールで操作未検証 |
| Linear、Figma | 候補として表示。未インストールで操作未検証 |
Googleアプリの公式FAQにはDrive連携でDocs・Sheets・Slidesを扱う説明がありますが、対応している操作を今回すべて試したわけではありません。利用条件はプラン、地域、ワークスペース、アカウント権限などで変わり、インストール、認証、読み取り、書き込みの許可もそれぞれ別です。
新しいアプリを試すなら、接続後に目的に近い読み取りを一つ通し、そのあとで必要な操作を確かめるのがよいと思います。ここで扱ったのも、1アカウントを調査した時点の少数サンプルです。利用条件は接続アプリの説明で確認できます。
dotのクラウドPCとローカル環境の使い分け
手元に道具を入れず、小さな制作や変換処理を試すなら、クラウドPCは使いやすい環境でした。既存リポジトリや専用アプリ、OS固有の条件が必要な作業では、その要件を満たす場所を選びます。手元のPCにあるアプリや設定を使いたいときは、ローカル環境も候補になります。
| 判断する点 | dotのクラウドPC | 手元のローカル環境 |
|---|---|---|
| 入力ファイル | クラウド側へ渡した資料、取得できたデータを使う | 接続・アクセスを許可した範囲のローカルファイルを使う |
| ソフトウェア | 見つかった道具で制作・変換を開始できた。追加導入できた例もある | そのPCにある道具が候補。必要な版・実行権限は別途確認する |
| ブラウザのログイン | 個人のブラウザとは独立したセッション | ローカル側の対応経路とログイン状態を確認する |
| localhost・DB | 同一コマンド実行内の通信は成功。別実行からの接続は失敗 | 対象タスクで許可されたネットワーク、プロセス寿命、DB構成に依存 |
| DockerやOS固有の検査 | Dockerは未成立。Debian上の試験は別のOSの検査にはならない | ローカルPCではCLIの版表示に成功し、デーモン接続はアクセス拒否。接続だけで実行成功は保証されない |
| 端末を閉じている間の作業 | クラウド側で継続できるという公式説明がある | dotが利用する間はPCをオンラインにし、ChatGPTアプリを開いておく必要がある |
接続やログイン状態、端末のオンライン要件は、公式のComputers and appsで確認しました。クラウドブラウザを拒否するサイトでローカルPCを試す方法も案内されています。ただし、セッションの自動移行や、任意のローカルブラウザの利用が保証されているわけではありません。
今回の結果を見ると、CSV集計や文書変換のような独立した処理はクラウドで済ませ、プロジェクト固有の環境が必要な検査は要件に合う場所で行う、という使い分けがよさそうです。速度や権限の広さ、制限の少なさでローカルPCが常に有利かどうかは、比較していません。
接続したローカルPCの操作記録検証用ファイル、Docker CLI、デーモン接続、ブラウザ、cmuxを試した結果です。
接続したローカルPCでコマンドとファイル操作を試した
接続を許可したローカルPCでは、シェルから検証用のコマンドを実行し、専用の一時作業場所にテキストファイルを新しく作りました。読み取り、編集、再読み取りが通り、値とハッシュも一致しています。既存リポジトリ、個人の文書、認証情報は使っていません。
| ローカルPCで確かめた対象 | 結果 | そこから言える範囲 |
|---|---|---|
| シェルと検証用ファイル | 合成コマンドの実行、新規テキストの作成・読み取り・編集・再照合に成功 | この作業場所での小さな入出力。既存プロジェクトの実行は未検証 |
| Docker CLIとCompose CLI | docker --versionとdocker compose versionは終了0 | CLIの版表示まで。構成ファイルの起動は未検証 |
| Dockerデーモンへの接続 | サーバー版の取得は終了1。socketへの接続がoperation not permittedで拒否された | この経路でデーモンに接続できなかった。未導入や停止中かどうかは不明 |
| アプリ内ブラウザ | 新しいタブでhttps://example.com/を開き、アクセシビリティ情報とタブ画像を取得 | そのページの移動・読み取り・画像確認まで。既存ログインや任意のサイトは未検証 |
| cmux | CLIの版表示と実行中アプリ一覧への表示は成功。pingとlist-workspacesはNo live cmux socket foundで終了1 | CLIの存在と、接続先の未発見まで。アプリ未起動や権限拒否かどうかは不明 |
DockerはCLIの版を表示できても、デーモンにはつながりませんでした。permission denied while trying to connect to Docker daemon socketに続き、operation not permittedが返っています。この結果ではDocker Desktopの停止やDockerの未導入までは分からず、ローカルPCでDockerを使えるかどうかも判断できません。設定変更や権限拡大による解消は試していません。
ブラウザでは、data: URLの合成ページはURLの制限で拒否されました。許可されたHTTPSのページを新しいタブで開くと、読み取りとスクリーンショット取得は成功しています。デスクトップ全体の撮影、ネイティブアプリの操作、ログイン済みページは試していません。
ローカルPCで通ったのは、許可された作業場所と操作経路での小さな試験です。接続済みでも、すべてのファイルやアプリを扱えるとは限りません。継続して使えるか、端末を閉じた後も作業が続くかも、今回の試験では確かめていません。
既存プロジェクトを調べるなら、使うフォルダ、読む範囲、変更してよい範囲、実行してよいテストを指定すると、対象を絞れます。クラウドPCで通ったコマンドが、そのままローカルPCでも動くとは限りません。まず小さな入力で実行し、結果を読み戻す進め方は、ローカルPCでも役に立ちました。
CSV集計・動画生成・GIS変換・CADを一通り試した
個々のソフトを動かしたあと、CSVからPDF、SVGから動画、といった複数の道具をつなぐ作業も試しました。出力はできても、中身を読み戻すと足りないものが見つかることがありました。
この一連の試験では、合成データと新しい作業用ディレクトリを使い、新規インストールやネットワークアクセスは行っていません。外部コマンドは各45秒を上限とし、動画エンコードは2スレッドに制限しました。
| 経路 | 出力を読み戻して分かったこと |
|---|---|
| CSV → 日本語PDF | PandasとSQLiteの金額が一致し、PDFの文字と描画も確認できた |
| SVG → 3秒動画 | 初回は71フレーム。出力条件を明示すると72フレームになった |
| GeoJSON → GeoPackage → GeoJSON | 初回はid属性が欠落。明示的なpoint_idなら属性を保持できた |
| CAD → STEP / STL | 単純形状の寸法・体積が合い、閉じた形状になった。製造可否は未評価 |
CSV・動画・GIS・CADの入力条件と結果金額、フレーム数、座標差、形状寸法と、途中で見つかった不一致をまとめています。
CSVを集計して日本語PDFを出力する
6行の合成売上CSVに、IDと地域名の前後の空白、重複1行、返品の負数1件を入れました。Pandasで整形してIDの重複を除くと、集計対象は5件です。SQLiteでも集計したところ、東京3,200円、大阪2,300円、合計5,500円で一致しました。返品額のマイナス1,200円も含めて期待どおりです。
集計結果はMarkdownからPandocでHTMLにし、LibreOfficeでPDFにしました。PDFから「東京」「大阪」「5500」「-1200」を抽出でき、画像化した1ページでも日本語と数値を読めました。小さなCSVの整形から検算、配布用PDFの作成までを一つの処理にまとめられます。
日本語SVGから音声付きの3秒動画を作る
日本語を含む3枚のSVGをInkscapeで320×180のPNGにし、FFmpegで順番に表示する動画にしました。440 Hzの合成音付きで、H.264/AAC、24 fps、3秒という条件です。
初回はコマンドが正常終了し、ファイルの再生時間も3秒でした。ただ、映像は71フレームで、期待した72フレームに1枚足りません。フレームレート変換と出力フレーム数を明示すると72フレーム、3.000秒になり、全フレームをエラーなく復号できました。終了コード0と「3秒」の表示だけを見ていたら、この不足は見逃していたと思います。
CPUではH.265、VP9、AV1の短い動画も生成し、復号できました。hwaccelsの一覧にはCUDAなども並びますが、そちらの実行成功は確認していません。KdenliveのMLT経由では、kdenlive_renderのログにStatus: -1が出ても出力と復号は成功しました。ログの一行だけで成否を決めにくい例です。
GISデータの往復で座標と属性を比べる
合成した3地点のGeoJSONをGDALでEPSG:4326から3857に変換し、GeoPackageに保存してから元の座標系に戻しました。件数、日本語の名前、数値属性、座標を比べると、初回は変換コマンドが成功していても、idが通常の属性から欠けていました。
識別子をpoint_idという明示的な属性名に変えて試すと、3地点すべての属性を保持できました。変換後の座標とWeb Mercatorの計算式による値との差も0.000001 m未満です。ここで比べたのは投影座標上の値なので、実距離の分析には転用しません。
3DとCAD
Blenderが書き出したcube.glbはGodotで取り込めて、実行時にシーンツリーへ追加するところまで進みました。FreeCADではbox(1,2,3)の体積6.0を確認し、STEPとSTLを保存できました。
CadQueryでは、80×40×6 mmの板に直径6 mmの貫通穴2つと20×10×3 mmのくぼみを作りました。STEPの外形寸法と体積は計算値18,260.707993 mm³と一致し、STLもVTKで読み戻すと閉じた形状になっていました。
Web向けの書き出しはテンプレート不足で失敗しています。複雑なアセンブリ、加工公差、強度、製造可否までは評価していません。
動画のフレーム数とGISの属性欠落は、出力を別の方法で読み戻して初めて分かりました。成功した出力だけでなく、途中の不一致も残しておくと、次に何を確かめればよいかが分かります。
CSV分析にDuckDBを追加した
サーバーを立てずにCSVを集計するため、DuckDBも追加しました。1万行の合成CSVを都市別に集計すると、Pythonで独立に計算した金額と一致し、合計は122,390,000円でした。Parquetに保存して読み戻した4万セルの差分は0です。集計表を載せた2ページの日本語PDFも作れました。
集計、保存、配布用PDFでは、それぞれ確かめたい内容が違います。金額は独立計算と比べ、Parquetはセル単位で照合し、PDFは文字抽出と描画の両方を見ました。複数人・複数プロセスの同時書き込みや、大規模な実データの処理能力は試していません。
Visual
CSVの集計から保存と日本語PDFの検証まで
1万行の合成CSVから、集計、Parquet保存、日本語PDFを作る経路を分けた。保存後はセルを照合し、PDFは文字抽出と描画で確認した。
DuckDBとTypstで処理した1万行のCSV。先ほどの6行のCSVとは別の入力を使っている。
図の読み方
- 1万行の合成CSVをDuckDBで集計し、Pythonの整数計算で独立に求めた金額と照合した。
- Parquetへ保存し、読み戻した1万行×4列の4万セルをCSVと照合すると差分0だった。1セルを変えた負例では差分1件を検出した。
- 集計結果をTypstのPythonバインディングへ渡し、2ページの日本語PDFを作った。都市名と金額の文字抽出、両ページの描画を確認した。
DuckDBの導入・集計値・負例・処理時間保存後の照合、別の実行からの読み戻し、導入時につまずいた設定と測定条件です。
DuckDB 1.5.6をPyPIから専用のPython仮想環境に導入しました。公式のPython APIで案内されているCSVの読み取りとファイルDBへの保存を試しています。
入力はID、都市、単価、数量を持つ1万行の合成CSVです。Pythonの通常の整数計算とSQL集計は、福岡40,788,000円、東京40,769,700円、大阪40,832,300円、合計122,390,000円で一致しました。
| 試したこと | 結果 |
|---|---|
| CSV読み込みと都市別のSQL集計 | 1万行。Pythonで独立に計算した都市別金額と一致 |
| Parquetへ保存して再読み込み | 最初に1万行を確認し、続いてCSVと1万行×4列、4万セルを照合すると差分0 |
| トランザクション内で1行追加しrollback | 行数が1万行に戻った |
| DBを閉じ、別のコマンド実行からread-onlyで開く | 1万行、合計122,390,000円を再取得 |
| 集計結果をTypstの日本語PDFへ渡す | 2ページ生成。都市・金額の文字抽出と両ページの描画も確認できた |
Parquetの入出力にはDuckDBの公式文書を参照しました。4万セルの照合では、意図的に1セルだけ変えると差分1件を検出できました。元のCSVとParquetのSHA-256は、試験の前後で変わっていません。
導入時には、uvの既定キャッシュに書き込めずつまずきました。DuckDBの外部アクセス設定も、無効化したあとに戻そうとするとエラーになりました。後者は設定を変更せず、拡張機能の自動導入・自動読み込みだけを無効にして試し直しています。
CSV作成からPDFの描画までの一回の処理は約0.572秒で、Python親プロセスの最大RSS(OSが報告する常駐メモリ量)は140,344 KiBでした。小さな入力を一回処理した値なので、一般的な処理速度の目安にはできません。
文書とPDFの変換と日本語PDFの作成
小さなDOCX・XLSX・PPTXでは、作成、編集、PDF化、数式の再計算までできました。日本語PDFはHTML経由と、追加したTypstのPythonバインディングで生成しています。Microsoft Office本体との互換性、複雑な既存帳票、書籍組版やPDF/UAへの適合は未検証です。
Office形式の編集・往復変換とPDF出力値と数式の変更、PDFフォーム、描画ツールによる差、LaTeXの失敗とTypstの導入条件をまとめています。
Office形式では、ファイルを作成したあとに値を変え、出力へ反映されるかを見ました。
| 対象 | 試した操作 | 結果 |
|---|---|---|
| DOCX | 小さな文書の作成、値10→20への編集、再読み込み、PDF/PNG化 | 編集後の文字列と描画を確認できた |
| XLSX | 2行の合成表と数式を作成し、B2を10→15に変更 | C2=B2*2が30、C3=SUM(B2:B3)が35 |
| PPTX | 1枚の合成スライドを作成し、値10→20へ変更 | 再読み込み、PNG、PDFの抽出結果に反映された |
| 形式往復 | ODT/ODS/ODPを経由してOOXMLへ戻す | 3形式とも変換終了0でファイルが生成された |
作成・編集にはクラウドPC上のライブラリを使い、変換にはLibreOfficeの非対話モードを使いました。Microsoft Office本体では開いていないため、複雑な既存文書の完全な互換性までは分かりません。
Pandocでは、同じMarkdownからDOCX、PPTX、HTML、EPUBを作れました。--pdf-engine=xelatexによる直接PDF化は失敗し、HTMLを経由したLibreOfficeでのPDF化は成功しています。
ReportLabで作った2ページのPDFとAcroFormは、pypdfとPopplerのコマンドで結合・分割・抽出・画像化できました。フォームの値を書き換えて再読み込みしても、対話可能な状態を保っていました。ただ、既定のPATHにあるpdftoppmではHelveticaの字間が乱れ、/usr/bin/pdftoppmでは正常でした。同じコマンド名でも結果が変わるので、使ったバイナリまで記録しておくと再現しやすくなります。
フォーマットファイルを使わないxetex -iniの最小構成なら、Noto Sans CJK JPで日本語PDFを生成できました。それでも、一般的な日本語LaTeX文書をそのまま組版するには不足があります。
そこで、PyPIのtypstパッケージ0.15.0を専用の仮想環境に導入しました。これはTypst公式CLIではなくPythonバインディングです。DuckDBで集計した都市別金額表を渡すと、2ページの日本語PDFができました。Typstの文書にあるフォント指定でNoto Sans CJK JPを使い、文字抽出と両ページの描画を確認しています。複雑な数式、縦組みの書籍、厳密な禁則処理、PDF/UAなどへの適合は検査していません。
画像変換と日本語OCR
日本語を含む画像の変換はできましたが、ImageMagickではAVIFを指定しても中身がPNGになる例がありました。OCRは同じ小さな合成画像8枚で3方式を比較し、普段の本文読み取りにはNDLOCR-Liteを選びました。
文字が合っていても、段組の読み順や表の行列まで合うとは限りませんでした。今回の比較は写真・手書き・古い印刷物を含んでおらず、日本語OCR全般の順位を付けられる規模でもありません。
Visual
OCRの文字と読み順と表構造を分けて評価する
CERには文字の誤りと読み順の違いが含まれる。正解のセル位置への文字の割り当てと、方式自身による表構造の復元は別の評価である。
合成画像8枚で、文字の認識、段組の読み順、表の復元を比べた。
図の読み方
- 表を除く7枚・正解931文字のCERは、文字の編集距離で測った。段組の読み順の違いも値に含まれる。
- 2段組ではNDLOCR-Liteが段ごとの読み順を保ち、YomiTokuとTesseractは左右の段を行ごとに交互に並べた。
- 正解セルへ評価側が文字を割り当てるとNDLOCR-LiteとYomiTokuは12/12一致したが、方式自身が4行3列を復元できたのは、この試験ではYomiTokuだった。
位置ずれを調べるため、別の合成PDFに、あらかじめ分かっている文字列と座標を埋め込む試験も行いました。文字認識を使わなくても、座標の扱いや埋め込みの段階でずれは起きます。ただし、最初のOCR試験に使ったPDF本体と当時の行データ・依存がそろっていないため、そのPDFの原因特定や修正には至っていません。記録にあった右端の不足も、新しい1語単位の条件では再現しませんでした。
埋め込み試験では、ReportLab・pypdfの版が対象ソースの依存指定と異なり、画像と文字層のフォントもそろっていません。3語に合わせた3.2ptのベースライン補正は一般化できず、2段組を列別の矩形で取り出せた結果も、プログラムによる抽出までです。
合成PDFをdotのクラウドブラウザーで開こうとすると、ローカルURLへのアクセスがERR_BLOCKED_BY_CLIENTになりました。制限を変えて迂回せず止めたため、検索UI、ハイライト、ドラッグ選択、クリップボードの照合はできていません。分かったのはこの経路の制限で、ブラウザー全般でPDFが使えないかどうかは分かりません。
画像変換とOCRの測定条件・CER・表構造・ライセンス合成画像8枚の比較、画像PDFへのOCR、既知の文字列と座標を使った埋め込み試験の詳細です。
日本語、簡体中文、繁體中文、韓国語の合成文は、InkscapeからPNGとPDFに出力し、目視でも確認できました。GIMP 3.0.4のPythonバッチ処理での縮小と、Inkscape 1.4でのSVGからPNG/PDFへの出力も成功しています。
拡張子はAVIFでも中身はPNGだった
ImageMagickでAVIFは、対応形式の一覧に読み取り専用を示すr--と表示されていました。それでもoutput.avifを指定したコマンドは終了コード0を返します。エンコードを担当する外部プログラム(delegate)が不足しているという警告が出ており、できたファイルの実体はPNGでした。拡張子と終了コードだけを見れば、AVIFを作れたと勘違いしそうです。
FFmpegで作ったAVIFを渡すとデコードは成功しました。このImageMagickではAVIFを読めても、書き込むことはできませんでした。SVG変換も標準的な処理では外部プログラムrsvg-convertの起動に失敗し、同じ入力をInkscapeに渡すと変換できました。
日本語OCRの3方式を同じ8枚で比較した
最初に見つかったTesseract 5.5.0にはengとosdの言語モデルしかなく、日本語を-l jpnで処理するとjpn.traineddataがないため失敗しました。そこで、次の3方式をCPUで比較しました。
- NDLOCR-Liteの公式タグ1.3.1
- YomiToku0.15.0の軽量構成
- 既存のTesseract 5.5.0に公式fastモデルのjpn・jpn_vertを追加した構成
入力は共通の合成画像8枚で、横書き、縦書き、2段組、罫線表、軽い劣化などを含みます。Noto系フォントで作った小さなセットで、一部は同じ本文を使っています。独立した実文書8種類を評価したものでも、日本語OCR全般のベンチマークでもありません。
文字の誤りはCER(文字誤り率)で比べました。Unicode NFKCで正規化して空白と改行を除き、編集距離を正解文字数で割っています。対象は表を除く7枚、正解931文字です。
| 方式 | 編集距離 / 正解文字数 | 表を除く7枚のCER |
|---|---|---|
| NDLOCR-Lite 公式タグ1.3.1 | 1 / 931 | 0.107% |
| YomiToku 0.15.0 軽量構成 | 67 / 931 | 7.197% |
| Tesseract 5.5.0+fast日本語モデル | 79 / 931 | 8.485% |
差が大きかったのは2段組です。NDLOCR-Liteは段ごとの読み順を保ちましたが、YomiTokuとTesseractは左右の段を行ごとに交互に並べました。この読み順の違いも7枚のCERに含まれるため、数字を単純な文字認識率として読むことはできません。
Tesseractは横書きにPSM3、縦書きにjpn_vertとPSM5を使いました。縦書きであることをあらかじめ指定しており、ページの向きを自動判定させる比較はしていません。罫線表(4行3列の12セル)では、次の差がありました。
| 表で確認したこと | NDLOCR-Lite | YomiToku 軽量 | Tesseract PSM3 |
|---|---|---|---|
| 正解セル位置へマッピングした場合の文字列一致 | 12 / 12 | 12 / 12 | 0 / 12 |
| 方式自身が4行3列の12セルを出力 | 出力なし | 成功、セル位置と内容も12 / 12一致 | 出力なし |
| TXT等の読み順・出力 | 列ごとの順序 | 行順に復元 | この設定では空文字 |
1行目は、評価側が正解のセル位置を知ったうえでOCRの文字を割り当てた結果です。NDLOCR-Liteがセルの境界と行列を自力で復元したわけではありません。Tesseractについては表向けのPSM変更や罫線除去を試していないので、空文字になった今回の設定だけで、表を認識できないとは判断できません。
普段使う日本語OCRにはNDLOCR-Liteを選んだ
- NDLOCR-Lite(採用):縦書き・2段組の本文を読み取れ、公開物のライセンスがCC BY 4.0で非商用限定ではありません。帰属表示と、別に使う依存ライブラリの条件は確認が必要です
- YomiToku(比較用):表構造の結果は良かったものの、コードと重みはCC BY-NC-SA 4.0です。商用ガイドラインでは、本番の業務処理などに商用ライセンスの確認が必要とされています
- Tesseract(比較用):軽く、横書きゴシック1枚を3回処理した中央値は0.91秒でした。NDLOCR-Liteは9.62秒、YomiTokuは10.16秒です。各回を別プロセスで実行し、起動・モデル読み込み・出力を含め、モデル取得時間は含めていません。実行先を2コアに制限した共有環境での小規模な測定なので、常駐させて連続処理する場合の速度とは異なります
比較に使った測定はモデル取得後に行い、試験用の子プロセスでは外向きIP通信を禁止しました。実文書は外部OCRサービスに送っていません。設定を整える前の補助実行は比較に含めておらず、その初期試行で実際に通信したかは、通信トレースがないため分かりません。
導入できても、そのまま動くとは限りませんでした。NDLOCR-Liteは起動コマンドがpdf_output_utilsの不足で動かず、公式ソースは変更せずにsrc/ocr.pyを呼び出すコマンドを用意しています。
画像だけのPDFに文字層を付けた
NDLOCR-Liteを呼び出すocr-jaで、画像だけの1ページPDFにテキスト層を付けました。処理前は0文字だった文字抽出が、処理後は正規化後151文字となり、正解と一致しました。MuPDFで「海辺の小さな研究室」「申込締切」「第二会議室」を検索すると各1件、存在しない語句は0件でした。
ただ、検索矩形は文字の上端を切り落としたり、隣の文字を含んだりしていました。対象の文字画素が検索矩形に収まる割合は、3語で75.50%、84.24%、72.91%です。検索する文字列は合っていても、位置には修正が必要な状態でした。対話型ビューアでの検索・選択は、利用できたブラウザ経路でPDFを開けず、未完了です。
別の合成PDFで座標と埋込みを切り分けた
最初のOCR試験の測定記録は残っていましたが、同じテキスト層付きPDF本体は取り出せませんでした。3語の包含率75.50%、84.24%、72.91%はその記録に基づく値で、ここで測り直したものではありません。
座標の影響を調べる試験には、新しい合成PDFを使いました。文字認識は行わず、既知の文字列と位置から透明な文字層を作っています。ページ回転0・90・180・270度、CropBoxの有無、正配置と故意ずれを組み合わせた16条件です。8語のうち日本語は3語で、英字4語とページ内で90度回転した英字1語も含みます。
| 条件 | 検索と文字画素の対応 |
|---|---|
| 画像だけ | 抽出0文字、8語とも検索0件 |
| 正配置の8条件×8語 | 64検索が各1件。回転座標を正しく変換すると文字画素包含率100% |
| 右12pt・下8ptへ故意にずらした8条件×8語 | 64検索は各1件のまま、包含率48.84〜82.58% |
| 回転変換を省く負例 | 表示画像への包含率0〜15.16%。表示座標をそのまま矩形内抽出へ渡した48件は対象語と不一致 |
各条件のPDF描画は、対応するCropBoxと回転を適用した元画像と一致しました。透明文字層をずらしても表示画素は変わらず、検索件数も同じです。PyMuPDFの座標仕様を踏まえて位置まで比べると、検索件数からは分からなかったずれが見えてきます。
別に作った2段組4行の合成PDFでは、格納順と座標順のどちらで抽出しても、「左列を読み切ってから右列」という意図した順序になりませんでした。左右の列を別々の矩形として指定すると期待順になりましたが、できたのはプログラムによる抽出までで、対話型ビューアのドラッグ選択・コピーは確認できていません。PyMuPDFの文字抽出と読み順の説明も参照しました。
埋め込み処理そのものも調べました。固定版NDLOCR-LiteからPDF埋め込みに必要な関数だけを取り出し、正確な文字列と文字画素の境界を渡しています。この試験ではOCRモデルも画像認識も実行していません。
| 日本語の対象語 | 検索件数 | 文字画素包含率 | 検索矩形上端のずれ |
|---|---|---|---|
| 海辺の小さな研究室 | 1 | 81.95% | 下へ2.895pt |
| 申込締切 | 1 | 84.57% | 下へ3.176pt |
| 第二会議室 | 1 | 79.91% | 下へ2.959pt |
使ったReportLabは4.4.9、pypdfは6.10.0で、対象ソースの依存指定4.2.5・6.4.0とは異なります。画像側と文字層側のフォントも違うため、フォントの寸法特性の差を含んだ結果です。
横書き文字のベースラインだけを動かすと、検索位置も同量移動しました。3.2pt上へ動かすと3語の包含率は100%になりましたが、この3語を見て選んだ値です。固定値3.2ptを一般的な修正として使うことはできません。
この合成条件では、認識誤りがなくても埋め込み段階でずれが起きました。ただ、最初のOCR試験のPDFと当時の行データ・依存はそろっておらず、その問題の原因を特定したとも、修正できたとも言えません。記録にあった右端の不足も、今回の1語単位の条件では再現していません。対象にしたのはこの固定版の実装です。
対話型ビューアも試しましたが、dotのクラウドブラウザーから合成PDFのローカルURLを開く段階でERR_BLOCKED_BY_CLIENTになりました。制限を変えて迂回せず停止したため、検索UI、ハイライト、ドラッグ選択、クリップボードの照合は未実施です。この経路の結果だけでは、ブラウザー全般でのPDF利用については判断できません。
追加した開発環境とDockerの起動条件
RustとPHPは、用意されていた環境に後から追加したものです。Rustではオフラインビルドと4テストが通り、PHPではPHPStan・PHPUnit・PCOVを使えました。どちらも小さな合成コードの試験ですが、わざと誤った値や型を入れると失敗するところまで確かめています。
追加したツールの版とRust・PHPの動作元から見つかった道具と後から導入した道具、それぞれの試験内容をまとめています。
Rustは先に単体で導入し、その後、依頼に沿ってasdf管理に切り替えました。asdf 0.20.2とRust/Cargo 1.89.0はこの作業で入れたもので、全利用者の環境に標準搭載されているという意味ではありません。PHPも同じ方式で追加できましたが、必要なライブラリをユーザー領域に準備する作業がありました。
| 導入の区分 | 道具と版 | 今回の環境での扱い |
|---|---|---|
| 最初の調査で見つかった構成 | Node、Python、GCC、LibreOffice、FFmpeg、Blenderなど | 調査時に存在していた。未変更の標準イメージ全体は確定できていない |
| 依頼して追加した開発環境 | asdf 0.20.2、Rust/Cargo 1.89.0 | Rust単体導入の後にasdf管理へ移行 |
| asdfで追加したPHP環境 | PHP 8.3.35、Composer 2.10.3、PCOVなど | 初めは見つからず、必要なライブラリを準備して導入 |
| DB試験用に追加 | MySQL Community Server 8.0.46 | 同一コマンド実行内のTCP試験に使用。常駐DBの標準提供とは別 |
| CSV分析・文書生成用に追加 | DuckDB 1.5.6、Typst Pythonバインディング 0.15.0 | PyPIから専用のPython仮想環境へ導入。標準搭載ではなく、Typst公式CLIでもない |
| 日本語OCR用に追加 | NDLOCR-Liteの公式タグ1.3.1、YomiToku 0.15.0の軽量構成、Tesseract用jpn/jpn_vertモデル | 専用環境で比較。通常の読み取りにはNDLOCR-Liteを選択。YomiTokuは非商用ライセンスの評価用 |
Rustでは、外部クレートに依存しない合成売上の整数計算プログラムを、Cargoのオフラインモードでビルドしました。4件のテストはすべて成功し、合計の期待値を4,300円から4,301円にわざと変えると、その1件が失敗してCargoは終了コード101を返しました。元に戻すと再び4件とも通っています。
生成バイナリは別のコマンド実行でもSHA-256が一致し、同じ結果を得られました。外部クレートの新規取得、実プロジェクト全体、別OS向けビルドまでは確認していません。
PHPはユーザー領域のasdfでPHP 8.3.35とComposer 2.10.3を準備し、合成コードで次を試しました。
- PHPStan 2.2.16:level maxの正常解析はexit 0、意図した型違反はexit 1
- PHPUnit 12.5.37:2テスト・2アサーションが成功し、意図した不一致はexit 1
- PCOV 1.0.12:Clover XMLを生成
既存アプリ全体や、実プロジェクトのDocker構成は検証していません。
MySQL Community Server 8.0.46は、起動からテスト、停止までを一回のコマンド実行にまとめると動きました。同じ実行内なら127.0.0.1のTCPでCLIとPHP PDOが接続でき、commit、rollback、utf8mb4、JSONを扱えます。PHPUnitのDB統合テストも1件・8アサーションが成功しました。
困ったのは、別のコマンド実行から起動中のサーバーへ接続したときです。127.0.0.1への接続は2回ともConnection refusedになり、その間も元の実行からはPDOで接続できました。正常停止後の次の実行では、コミット済みの行を読み戻せています。MySQLを使うことはできても、起動中のサーバーを別の実行から共有する使い方はできませんでした。ループバックと合成データによる小さな試験で、本番認証、安全な常駐運用、実プロジェクト全体の受け入れ試験は対象外です。
クラウド側のDockerは、最初の調査でdocker、podman、containerd、nerdctlをPATHに見つけられず、標準socketも見えませんでした。rootless Dockerも、UID/GIDの補助コマンドや権限条件がそろわず、必要条件を調べるところで止まっています。デーモンの起動までは試していません。
実行経路によって結果が変わった
HTTPとMySQLは、同じコマンド実行内ならTCP接続できても、別の実行からlocalhostへ接続すると失敗しました。ファイルを読み戻せることから、起動中のサーバーにも接続できると考えるとつまずきます。
Visual
同じ実行内の接続と別実行からの接続
MySQLは同一コマンド実行内のTCP接続で成功し、別実行からは接続拒否となった。ファイルの読み戻しは通信経路とは別に成功した。
同じサーバーへの接続でも、どの実行から呼び出すかで結果が変わった。内部のVM・コンテナ構成を示す図ではない。
図の読み方
- 同一コマンド実行内では、127.0.0.1のMySQLへCLIとPHP PDOが接続でき、1テスト・8アサーションが成功した。
- 起動中の同じサーバーへ別のコマンド実行から接続した2回は、Connection refusedとなった。元の実行からはPDO接続できた。
- 正常停止後の次の実行では、コミット済みの行を読み戻せた。保存と常駐サーバーの共有は別に評価する。
この違いはHTTPやブラウザ、socketでも見られました。ただし、ここから内部のVMやコンテナ構成までは分かりません。
HTTP・ブラウザ・Unix socket・stdioの経路別結果接続できた経路と、接続拒否や権限エラーになった経路の一覧です。
| 試験 | 結果 |
|---|---|
| 同じコマンド実行内のHTTPサーバーとクライアント | 成功 |
| 別のコマンド実行から、そのサーバーの127.0.0.1へ接続 | Connection refused |
| 標準クラウドブラウザから当該loopback URLへ遷移 | ERR_BLOCKED_BY_CLIENT |
最小のAF_UNIX socket作成 | EPERM |
| サンドボックスを有効にしたPython PlaywrightのChromium | ソケット生成などの権限エラーで終了 |
| stdioのechoサーバーとMCPの往復 | 初期化、tools/list、tools/callに成功(protocolVersionは2025-11-25) |
標準のクラウドブラウザでは、ページ閲覧、DOMの読み取り、簡単なJavaScriptの評価、スクリーンショットの取得ができました。Python PlaywrightのChromiumが権限エラーで終了した結果とは分けて考える必要があります。標準ブラウザを操作できても、任意のChromiumをヘッドレスで起動できるとは限りません。
通信も経路次第でした。公開サイトからHTTP/HTTPSの応答は取得できましたが、Pythonからの直接DNS解決は失敗しました。外部からの接続、公開ポート、SSHログイン先としての利用は確認していません。
HTTPについては、Python 3.12.14の標準機能だけでecho処理を行う試験でも、同じ実行内では通り、別の実行からは接続を拒否されたという報告を得ました。処理は45秒以内に停止し、127.0.0.1だけで待ち受ける条件です。ASCII 16 bytes、日本語UTF-8 27 bytes、バイナリ4,096 bytesを入力し、外部公開はしていません。報告された試験時間は14:48:45〜14:49:31 UTCでした。
| echo試験の経路 | 結果 | 条件・補足 |
|---|---|---|
| 同一コマンド実行内のHTTP | 3入力とも200応答でハッシュ一致 | 同じ呼び出し内のクライアントから応答を取得 |
| 別のコマンド実行からのHTTP | 3入力ともConnection refused | 待ち受け情報のファイルは読めたが接続できなかった |
| 元の実行からの再確認 | 別実行の失敗後も200応答でハッシュ一致 | 別実行の試行は14:49:05 UTC。元の実行の最後の応答確認は14:49:30 UTC |
| 子プロセスの標準入出力 | 3入力とも終了値0でハッシュ一致 | バイト列の往復のみ。MCPの仕様適合性は未試験 |
3入力は、一回のサーバー起動中に続けて試したものです。別実行の失敗後にも元の実行では応答していたので、サーバーが全期間停止していたための失敗とは考えにくい結果でした。ただし、独立した3環境での試験ではなく、VM・コンテナ・ネットワーク名前空間の内部構成も特定できていません。
このecho試験では標準クラウドブラウザの許可済み操作経路を確定できず、ブラウザからの接続は試していません。先ほどのブラウザ操作やMCPの往復とは試験内容が異なります。Docsの原画面を開けたことと、合成PDFのローカルURLを開けなかったことも、それぞれ別の対象で得た結果です。
ファイルとブラウザの状態保持
作業領域の確認用ファイルは、後続の操作でも翌日でも、同じハッシュで読み戻せました。シェルで設定したexportとcdは、次の独立した呼び出しの既定状態には引き継がれませんでした。再利用したいものはファイルに保存し、次の操作で内容を確かめて受け渡す方法が扱いやすいと感じました。
/tmpの挙動は一律ではありません。先に作った確認用ファイルは後の操作で見えなくなり、別の試験で作ったファイルは翌日も残っていました。異なるファイルを別々のタイミングで見た結果なので、/tmp全体のTTLは分かりません。
ブラウザについては、公開デモに合成値を保存して読み戻した記録があります。
Cookie・localStorage・IndexedDB・sessionStorageの読み戻し元タブのreloadと、独立した新規・再作成タブで結果が異なりました。
| 保存先 | 元タブのreload | 独立した新規・再作成タブ |
|---|---|---|
| Cookie | 読み戻せた | 再作成後も読み戻せた |
| localStorage | 読み戻せた | 再作成後も読み戻せた |
| IndexedDB | 読み戻せた | 再作成後も読み戻せた |
| sessionStorage | 読み戻せた | 元タブの値は引き継がれず空だった |
この表は当時の構造化された記録に基づいています。画面や操作応答は別ファイルに残っていません。翌日には以前のCookieがnullと表示されました。設定されていた12時間の期限とは整合しますが、期限切れだけが原因かは分かりません。
ブラウザ全体の再起動、別会話、環境交換をまたぐ保持は試していません。ファイルが残っていても、同じVM・プロセス・シェルが動き続けていたかどうかは判断できません。
12分の処理とPause前後の読み戻し
約12分の処理は最後まで動きました。Pause/Resumeについても、操作したと報告された時間帯の前後で、対象ファイルの内容は変わりませんでした。ただし、操作は申告に基づくもので、停止を示す独立したUIイベントは確認できていません。同一プロセスが存続したか、すべての作業が停止したか、端末の電源が切れていたかも分かりません。
時刻指定で公開情報を取得する試験では、指定時刻と取得開始の報告に67秒の差がありました。一回の報告値なので、通知遅延の保証や通常の遅延の目安には使えません。
12分の処理・定時実行・Pause前後の読み戻し処理中のtickと、操作の申告を挟んだファイル・補助スクリプトの結果です。
開始済みの試験用プロセスを約12分動かすと、5秒間隔でtick 0〜144の145件を記録しました。ブラウザを閉じたと報告された時間帯にも記録は進んでいました。端末の電源断や全クライアントの切断は機械的に測っておらず、この完走だけで何日も常駐するサービスを置けるかは判断できません。
時刻指定の公開情報取得では、結果通知を後から会話履歴で読み戻せました。指定時刻と取得開始の報告値の差は67秒でしたが、当時の独立した実行開始イベントやHTTP応答の原本は手元にありません。通常の遅延やSLAを示す測定にはなっていません。
Pause/Resumeの前後では、既存の3つの確認用ファイルと補助スクリプトを比べました。
| 段階 | 操作・読み戻し | 情報の出どころ |
|---|---|---|
| 操作前 | ファイルと補助スクリプトを確認 | スクリプトの実行記録 |
| Pause | 停止操作をした時間帯 | 操作したとの申告 |
| Resume | 再開操作をしたおおよその時刻 | 操作したとの申告 |
| 操作後 | 同じファイルと補助スクリプトを確認 | スクリプトの実行記録 |
ファイルは前後とも元の期待SHA-256と一致し、補助スクリプトも前後とも算術結果89を返しました。独立したUIイベントやサーバー記録がないため、分かったのは申告された時間帯を挟んでファイルの内容が保たれていたことまでです。読み戻しの間隔を停止時間と見なすことも、同一プロセスの存続や全作業の停止を判断することもできません。
公式のControl your dotでは、Pauseは現在のメインタスクを止める操作と説明されています。委譲先のすべてのタスクや、将来の予定実行まで止めるものではないとのことです。この説明の全動作を独立に確認できたわけではありません。
連携先を公開カタログで調べた
接続済みのアプリだけを見ると、dotで使える連携先の広がりは分かりません。そこで、実操作の試験とは別に、dotの公式文書と公開Plugin Directoryを調べました。OpenAIは発表で、プラグインを通じて4,000超のアプリに接続できると説明していますが、これは公表値で、この記事では接続して試していません。公開カタログには、仕事用の文書・タスク管理から、画像・動画制作、調査、旅行まで幅広い掲載があります。プラグインの公式説明
dotの公式文書に名前がある連携先
dot専用のComputers and appsでは、Gmailでメールを探す、Google Driveの文書を読んで更新する、GitHubのissueを調べてPRを準備する、といった例が紹介されています。また、メッセージの送り方にはSlackとMicrosoft Teamsが登場します。後者はdotに依頼したり返答を受け取ったりする窓口で、各サービス内の情報を検索するアプリ接続とは分けて考えたいところです。
| 連携先 | dotの公式文書にある使い方 | 実測との関係 |
|---|---|---|
| Gmail | 関連するメールを探す | 検索と本文の照合は実測。送信は未試験 |
| Google Drive | 文書を読んで更新する | ファイル検索、Sheetsの範囲・数式・現在値、Docsの本文・表を照合。文書更新は試していない |
| GitHub | issueを調べ、PRを準備する | リポジトリ一覧のみ実測。PR作成やpushの成功例にはしていない |
| Slack | dotにDMを送り、チャンネルやスレッドでやり取りする | 成功したSlackの情報検索とは接続経路が異なる |
| Microsoft Teams | dotとメッセージでやり取りする | 公式説明を確認。このアカウントでの操作は未試験 |
GitHubは、説明を読むときに特に注意が要ります。公開カタログのGitHub詳細ページにはWrite表示がある一方、ChatGPTのGitHub appのヘルプは読み取り用と説明し、編集やpushにはCodexを案内しています。dotがPRを準備すること、Codexでコードを変更すること、通常のChatGPTのGitHub接続で書き込むことは同じではありません。資料の表示だけから、どの接続でも直接pushできるとは判断しませんでした。
接続前に確認しておきたい違い
用途が似ていても、対象にできるデータや操作は違います。確認した公開資料では、次の条件が特に判断に関わりました。
| 連携先 | 確認した条件 |
|---|---|
| Google Drive・Calendar | DriveではDocs・Sheets・Slidesを扱い、Google Meetの会議・録画・文字起こしに関する操作はCalendarの説明に含まれる。Google側の認可範囲に加えて、ChatGPT側でその操作が使えることも必要。GoogleアプリのFAQ |
| SharePoint | OneDriveは職場・学校用で、個人用は対象外。通常の接続と、管理者が設定する検索用の取り込みは別。SharePointの説明 |
| Outlook | 共有・委任されたメールボックスやカレンダーの操作は、必要な権限があり、対応操作が有効な場合に限る。共有・委任メールボックスの添付取得は非対応。Outlookの説明 |
| Slack | キーワード検索と意味に基づく検索で条件が異なり、接続できるワークスペースは同時に一つ。dot自身のSlack窓口、組織向けの@ChatGPT、接続アプリの検索は別。Slackの説明 |
| Notion・Box | 許可されたページやファイルが対象。読んだ現行説明では個人向けの同期に対応しておらず、以前の同期手順はそのまま案内できない。Notionの説明、Boxの説明 |
カタログにReadやWriteと表示されていても、それだけでは接続済みとも、すべての読み書きが許可済みとも言えません。プラン、地域、ワークスペースの管理者設定、サービス側の権限、利用画面、操作ごとの承認が関係します。新しい連携を使うときは、目的に近い読み取りをまず一つ確かめ、編集や送信が必要なら、その操作と対象をはっきりさせて進めたいところです。プラグインの利用条件、ワークスペースでのdotの管理
アプリが見つからなくても、dotのブラウザでWebサイトを利用できる場合がありますが、ログインやサイト側の対応は別に確認する必要があります。企業向けspecialist dotsの計画は、個人向けdotで利用できる連携には含めていません。テキストメッセージは、開始ガイドが一部の米国Pro利用者向けの限定ベータを案内する一方、Learnのメッセージ案内は今後提供予定としているため、一般提供済みとは扱っていません。MCPを使う拡張についても、任意の自作MCPやlocalhost上のサーバーにdotが必ず接続できることは確認していません。
任せてみて気を付けたいと思ったこと
小さな文書の試作、形式変換、短い動画、CAD・GIS、コードのテストは、実際に動かせました。既存のプロジェクトを任せるときも、まず小さな入力で最後まで通しておくと、依存不足やファイルの受け渡しで止まる箇所が分かります。
そのとき残しておいて役に立ったのは、次の情報です。
- 実行ファイルの版と実体、使用したPython環境、作業ディレクトリ、設定の保存先
- 入力と期待値、終了コード、警告、出力ファイルの実際の形式、再読み込みした内容
- 同一コマンド内なのか、別のコマンドなのか、GUIなのか、ブラウザなのかという操作経路
- ファイルが残るか、プロセスが動き続けているか、対象へ接続できるかを別々に確認した結果
ImageMagickでは拡張子がAVIFでも中身はPNGで、追加動画は71フレームしかなく、GIS変換ではid属性が欠けていました。正常終了だけを見ていたら、いずれも成功と判断していたでしょう。一方、Kdenliveでは警告のような表示があっても、出力と復号に成功しました。成果物を別の道具で読み戻し、元の期待値と比べるところまで依頼する価値がありました。
公式のComputers and appsには、作業を再開したときに前の状態を使えることや、個人のブラウザとはログイン状態が別であることが説明されています。ただ、ソフトごとの互換性、CPUの専有量、再起動後の保存期間までは保証されていません。今回も、作業を続けられなくなった場面がありました。
私なら、入力と完成条件を揃えやすい小さな仕事から任せます。成果物を開いて確かめ、外部に保存できたところまでを完了条件にする。開発なら、検査したコミットと反映先も揃える。生成するところだけでなく、受け取った後に使える状態まで頼むのがよいと思います。
次に確かめたいこと
Docsの本文やSlackの返信は読めましたが、複雑な文書や長い履歴をどこまで扱えるかは、まだ試し足りていません。Custom Rulesの保存後の挙動、長期記憶、自発的な通知も気になるところです。次に試すなら、次の条件を揃えたいと思います。
用途ごとの未確認事項と次に試す条件
| 次の検証 | 今回までに済んだこと | 次にそろえる条件 |
|---|---|---|
| Docsの複数タブ・複雑な表 | 1タブ、120非空段落、結合を含む2表、DOCX・PDF・原画面の一部 | 複数タブ・子タブ・セル内改行等を持つ既存文書。画面の全文・書式検査は別途 |
| Slack返信の独立照合と要約 | 1スレッドの全ページ、一括、境界、詳細・簡潔表示 | 同じスレッドの原画面またはエクスポート、訂正から結論を判断できる正解 |
| Sheetsの変更後再計算 | 4種類50式セルの式・現在値・表示 | 許可された検証セルの変更・復帰、期待値、反映時間 |
| Calendarの日跨ぎ・例外 | 4種類の予定と8境界条件、UTC/JST等価な検索期間 | 日跨ぎ時刻付き、繰り返し変更・取消、夏時間などの既存対象 |
| OCR PDFの旧問題再試験 | 新合成16条件、読み順、埋込み処理の局所対照 | 旧ハッシュと一致するPDF、画像・行座標・依存、操作できるビューア |
| 環境消失後の復元 | 指定版の再取得と同じ環境内のCSV21条件 | 利用を許可された別環境と、依存・モデルまで含む保存セット |
| Custom Rulesの実行時効果 | 内容確認から保存完了までの1例 | 無害な操作の条件比較、設定変更・復帰の範囲、実際の確認挙動。本番の削除や送金では試さない |
| 記憶の訂正 | 訂正後の定期報告で完了扱いを確認した1例 | 会話文脈等の影響を切り分けた対照。翌日の新しい依頼への適用も確認する |
| 自発通知の品質 | 依頼順序に対する評価例。成功率は未計算 | 公開または合成の対象資料、観察期間、期限変更等の通知対象の正解と受信記録。無関係な変更を区別し、見落とし・誤通知・重複通知を記録する。定時依頼とは分ける |
| 定時・イベント実行 | 1回の時刻指定試験と、後から会話での結果読み戻し | 対応サービスを確認し、保存された条件、イベント発生、実行結果、通知受信を別々に記録する |
| 複数依頼の並行 | 複数案件の利用体験。比較条件を揃えた試験は未実施 | 独立した2依頼で、方針変更や成果物の混線、待ち時間、完了後の連絡を追う |
| 仕事の負担 | 確認・差し戻しが残った事例。削減率は未計算 | 同じ入力と完了条件で、手作業・確認・差し戻しの時間を測る。生成時間だけで削減率を出さない |
Docsは最初の2種類の検索、Slackは4回の検索では試験対象が見つからず、探し方を変えてそれぞれ1文書・1スレッドを取得できました。検索で見つからないときは、読む機能の問題なのか、対象を探せていないのかを分けて考える必要がありそうです。Docsの全タブ取得やSlackの返信とページ継続の仕様も踏まえて、次はより複雑な対象で確かめたいと思います。
Custom Rulesは保存まで確認できましたが、設定を変えて実行結果を比べる試験はしていません。記憶の訂正が新しい依頼にも残るか、自発通知が必要な変化を拾えるかも、別に確かめる必要があります。
dotについてよくある質問
- dotとは何か
会話していない間もタスクを進めるOpenAIのエージェントです。自身のクラウドPCとブラウザを持ち、接続を許可したアプリの情報も使います。公式説明と実測した範囲は、できることの早見表で分けています。
- dotの料金はいくらか
Proは月額100・200・500米ドル、Business Premiumは年払いで1人あたり月額100米ドル、月払いでは125米ドルです。Businessのワークスペースは有料席が最低2席必要です。地域・通貨・提供条件は料金の節を参照してください。
- dotはどの地域とプランで使えるか
確認時点ではProとBusiness Premiumで段階的に提供され、Enterpriseには管理者が有効化するベータがあります。地域と年齢の条件、初期設定の対応画面は開始ガイドで確認できます。アカウントへの提供状況も別に確かめてください。
- まず何を頼むとよいか
入力と出力がはっきりした小さな作業から始め、成果物をどう検証するかも伝えます。CSV集計、日本語PDF、OCR、短い動画、関数のテストなどの依頼例を、試した条件と一緒に示しました。
- 会話していない間も動くか
公式にはバックグラウンドで仕事を進めると説明されています。実測では約12分の処理が完走しましたが、何日も続く常駐や通知の品質は未検証です。作業が動く四つのきっかけを分けて扱っています。
- 確認なしにどこまで操作するのか
Custom Rulesで操作ごとの扱いを選べますが、必須の安全要件と確認は外せません。dotがルールに従う際に間違える可能性もあります。今回は設定の保存まで試し、実行判断への効果は未検証です。承認と設定の流れを参照してください。
- データはモデル学習に使われるか
背景調査そのものは直接学習に使われないと説明されていますが、会話やタスクへ取り込まれた情報は通常のデータ設定に従います。プランによる扱い、人間による限定的な確認、削除の範囲は記憶とデータの節で整理しました。
- Slack・Google以外のアプリも使えるか
公式の公表値はプラグイン経由で4,000超です。この記事で接続して実測した数ではありません。公開カタログとdotの公式文書では、掲載、認証、使える操作を分けて確認しました。
- 接続した自分のPCでは何ができるか
検証用テキストの作成・編集・再照合と、アプリ内ブラウザでの公開ページの読み取りは成功しました。Dockerデーモンはアクセス拒否、cmuxは接続先未発見でした。既存リポジトリやPC全体のGUI操作は、このローカルPC試験に含めていません。
- Dockerやlocalhostは使えないのか
環境と経路で結果が異なります。クラウド側のDockerは必要条件の確認で止まり、localhostはHTTPとMySQLの同一実行内で成功し、別実行からは失敗しました。実行経路の図と結果を参照してください。
- ファイルや追加したソフトは残るか
翌日にも同じ内容を読み戻せた一方、記事の改訂中には旧ファイルと追加ツールが見えなくなる事例もありました。保持期間は不明です。重要な成果物は外部へ保存し、そこから開けるか確かめておくことを勧めます。
- 自分のPCを閉じても作業は続くか
公式にはクラウドで完結する作業を継続できると説明されています。接続したローカルPCを使う仕事には、そのPCがオンラインでChatGPTアプリが開いている必要があります。三つの実行先を分けて考えます。実測の約12分の完走を、電源断後や長期間の継続保証にはしていません。
