daily-log
2026年3月24日の開発日記
朝5時、PRレビューコメントの確認から始まった一日。終わってみれば、Chrome拡張の会計サービス連携をエクスポート機能・ログ機能・UI構造・ドキュメントの4軸で一気に押し進めていた。金額の型変換が3度裏切り、CTI切替の仕様がサービスリスト取得を阻み、公式APIの壁がビジネスモデルの構造を浮き彫りにした。
今日やったこと
1. エクスポート機能の強化
PR #1のマージから始まり、6件の機能追加・修正を積み重ねた。
主な成果:
- スプレッドシートURL分離(仕訳帳用 / 連携明細用)
- 金額を数値型に変換 + カンマ区切り書式設定
- 残高試算表エクスポート(HTMLスクレイピング方式、BS+PL統合シート)
- 年度フィルタバグ修正(全年度展開 → 選択年度のみ)
- 重複チェックの型不一致問題3パターンを修正
2. エクスポートログ機能とUIリファクタリング
エクスポート結果を事業者×サービス×年度のマトリクスで可視化し、UI構造をミラーカラム3列に刷新した。
主な成果:
- エクスポートログ機能(chrome.storageに保存、マトリクス表示)
- リアルタイム進捗表示(マスがポコポコ埋まるアニメーション)
- モーダル → ミラーカラム3列目への移行
- タブ構造再構成(設定 / エクスポート / インポート)
- 事業者×年度×サービスの2段ネスト表示
- デッドコード削除、resolveJournalToRowsのlib.js分離
3. 会計サービスのビジネスモデル調査とAPIドキュメンテーション
Chrome拡張で蓄積したAPI知識を包括的リファレンスにまとめ、会計サービスのビジネスモデル構造を掘り下げた。
主な成果:
- 内部APIリファレンス(全13セクション)を
memo/に作成 - 勘定科目マスタのAPI取得 → エクスポート形式でスプレッドシートに書き出し
- 年度切替の仕様検証(日付パラメータでは跨げない → PATCH必須)
- 配布リスク評価 + ZIP配布の法的整理
- 公式v3 API制限の調査(仕訳APIは上位プラン限定)
- 競合サービスのプラン比較調査
詳細: 会計サービスのビジネスモデル調査とAPIドキュメンテーション
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | 金額の数値化 | String(d.totalValue) を数値のまま渡す | 成功 | Sheets API RAWモードはJSON型を反映する |
| 2 | カンマ区切り | formatSheetColumns で #,##0 設定 | fmt.columns is not iterable エラー | ヘッダー背景色エントリにcolumnsがない → ガード追加 |
| 3 | 重複チェック① | 数値 vs 文字列 | 重複追記された | normalizeRowでString()統一が必要 |
| 4 | 重複チェック② | カンマ付きFORMATTED_VALUE vs 素の数値 | 再び重複追記 | replace(/,/g, '') で除去してから比較 |
| 5 | サービスリスト | accounts?cti=XXX のGETで取得 | 全事業者が同じサービスになった | GETではセッション切替されない → CTI切替POST必須 |
| 6 | 年度切替 | 日付パラメータで跨年度取得 | 2024年度指定なのに2025年度データが返る | セッション年度に依存 → PATCH必須 |
| 7 | 残高試算表indent | CSS label-indent-* をそのまま使用 | 勘定科目のインデントが不統一 | 補助科目あり(indent=1) vs なし(indent=3) → 論理階層で固定 |
| 8 | インポートの事業者名 | getEntityName() でDOM検索 | 「不明」と表示された | ポップアップと会計ページでDOMコンテキストが違う → レジストリから取得 |
今日の学び
- Sheets APIの
FORMATTED_VALUEは書式適用後の文字列を返すため、数値比較には使えない。UNFORMATTED_VALUEか、比較時にカンマ除去が必要 - 内部APIは年度パラメータを無視してセッション年度のデータを返す。年度切替はPATCH必須
- HTMLのCSSクラスに埋め込まれたメタ情報(indent level)は便利だが、値の統一性は保証されていない
- 公式仕訳APIは上位プラン限定。通常プランでは使えない