2026年3月26日の開発日記
朝、Claude Codeの許可プロンプトにマウスで応答する往復に嫌気がさしてStreamDeck連携を組み、昼から会計サービスのAPIキーをターミナルに叩き込んだらservices: ["conac"]が返ってきて手が止まった。認証手段を3回乗り換え、Chrome拡張のUIを2回作り直し、公開APIにないエンドポイントをDevToolsで掘り当てた一日。
今日やったこと
1. 会計サービスAPI・OAuth認証の試行錯誤
APIキーで連結会計スコープしか取れず、公式MCPを経由してOAuthトークンを取得、そのトークンでREST APIを直接叩けることを発見した。最終的に自前OAuthアプリを登録し、refresh_token(540日有効)を手に入れた。
主な成果:
- APIキー → MCP OAuth → 自前OAuthアプリと3段階で認証手段を切り替え
- 会計サービスAPI (v3) で仕訳の取得・登録・削除に成功
- refresh_tokenで自動化の土台が整った
- Chrome拡張 vs APIの速度感比較 → エクスポートはChrome拡張、インポート・削除はAPIに移行
2. Chrome拡張エクスポート・インポート機能改善
エクスポートデータの整合性検証関数を3つ追加し、テストを162→200に拡充。一括インポート機能を組み上げ、UIを「使い捨てURL方式」に2回作り直した。
主な成果:
validateJournalRow/validateJournalBlock/validateExportDataを lib.js に追加- 事業者データ一括取得にN/M形式の進捗表示を追加
- インポートパネルUIを全事業者一覧 + 年度ラジオボタンに再設計
- 仕訳インポートCSVサンプルフォーマットへのリンクを追加
詳細: Chrome拡張 - エクスポート整合性検証と一括インポート機能
3. 公開APIの棚卸しと自動仕訳ルール戦略
公開APIに未登録明細・連携明細・自動仕訳ルールのエンドポイントが存在しないことを確認。DevToolsで内部APIを掘り当て、ルールをローカルGitで管理する構想をまとめた。
主な成果:
- 未登録明細 / 連携明細 / 自動仕訳ルール → 公開APIに全て存在しない
- 内部APIからルール取得可能なエンドポイントを発見
- 自動仕訳ルールをサービス側に置かずローカルGit管理する方針を決定
- 仮勘定消し込みフローの構想を策定
4. AutoHotKey + StreamDeckによるClaude Codeマルチペイン制御
Claude Codeを4ペインで並行実行する環境で、許可プロンプトへの応答をStreamDeck化した。最初は自動フォーカス方式(AHK + PreToolUseフック)を試したが、WTが2つ開いているとフォーカスの奪い合いが発生して断念。StreamDeck + AHKの半自動方式に転換した。
主な成果:
- launch-4pane.ps1で4ペイン分割 + PANE_POS環境変数の自動設定
- claude-approve-pane.ahk: 「CC:」タイトルのWTを特定し指定ペインにEnter送信
- StreamDeck XLに4ペイン分のbatファイルを登録
- Chromeを見ながらStreamDeckで許可プロンプトに応答可能に
詳細: AutoHotKey + Stream DeckでClaude Codeマルチペイン制御
5. MCPの価値判断の整理
会計APIの認証試行錯誤を通じて「CLI環境でMCPは必要か?」という問いに答えを出した。ステートフルなプロトコル(CDP等)にはMCPが有利、REST APIには直接叩いた方が柔軟という整理。
詳細: Claude Code CLI環境でMCPは必要か?
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | API認証 | APIキーでトークン取得 | 失敗 | conac(連結会計)スコープのみ。確定申告にAPI自体がない |
| 2 | API認証 | 公式MCP経由でOAuth認証 | 成功 | トークンは取れるがrefresh_tokenがなく1時間制限 |
| 3 | API認証 | MCPのトークンで直接REST API | 成功 | MCPは薄いラッパー。トークンは共通 |
| 4 | API認証 | 自前OAuthアプリ登録 | 成功 | refresh_token 540日有効。自動化の土台が整った |
| 5 | インポートUI | URL永続化方式で実装 | 使いづらい | URLは毎回変わる。永続化する意味がない |
| 6 | インポートUI | 使い捨てURL方式に変更 | 採用 | プロトタイプを触って初めて気づいた |
| 7 | スプレッドシート書き込み | 94件のJSONを1コマンドで送信 | 失敗 | Windowsコマンドライン長制限(約8,191文字) |
| 8 | スプレッドシート書き込み | バッチ分割で送信 | 成功 | 10〜20件ずつに分割して解決 |
| 9 | 内部API調査 | DevToolsで自動仕訳ルールAPI発見 | 成功 | JSON/CSV両方で取得可能 |
| 10 | ペイン制御 | PreToolUseフック+AHKで自動フォーカス | 失敗 | WT2つ開くとフォーカス奪い合い |
| 11 | ペイン制御 | StreamDeck+AHKの半自動方式 | 成功 | Chromeから目を離さず許可応答できる |
今日の学び
- クラウド確定申告サービスには公開APIがない。法人向けクラウド会計のみAPIが存在する
- MCPのOAuthトークンはREST API直叩きに流用できる。MCPはプロトコルの抽象化であり、認証は同一基盤
- 自前OAuthアプリのrefresh_tokenは540日。MCPの1時間制限を回避できる唯一のルート
- UIの設計は机上で考え続けるより、プロトタイプを触って壊して作り直す方が正解に速くたどり着く
- WindowsのCLIでJSON大量データを扱うときは、コマンドライン長制限を常に念頭に置く
- 全自動(フォーカス奪取)より半自動(StreamDeck)の方が、マルチペイン環境では確実に動く。人間がどのペインに応答するか判断する余地を残す設計が正解
明日やること
- 自動仕訳ルール取得をChrome拡張に実装し、JSONをリポジトリにコミット
- インポート機能の実機テスト(実際に仕訳を投入して検証)
- api-inventory-and-roadmap.md の未実装項目に優先度を付ける