0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

100万行超える自作アプリのデバッグ作業をArgon4に任せてみた

0
Posted at

1. 始めに:140万行を超えていた自作アプリ

個人開発で Windows / Android 向けの All in One Notebook 「HisatorNotebook」 を開発・公開しました。

「自分が毎日使う作業環境を1つのアプリで完結させたい」と機能を足し続けた結果、現在(ビルド b591)では以下の機能を統合しています。

  • 6種類の専門ページ:マインドマップ / ギャラリー / フリーノート / 便箋型文書 / Markdown(Mermaid図対応) / 動画編集
  • PDF・Office 直接編集:PDF ペン書き込み、Word(.docx)・Excel(.xlsx / 独自数式エンジン内蔵)・PowerPoint(.pptx)の閲覧・編集
  • 2分割・2×2 4画面分割 & 全12形状のマウスジェスチャー
  • 学習・リサーチ統合:広告非表示 YouTube 視聴、317資格試験対策&AI問題生成、CPU / GPU / LLM 性能・料金比較
  • AI & 3大 AI CLI 直結:APIキー不要のプリペイド AI(ChatGPT / Gemini / Claude)に加え、Claude Code / Codex CLI / Antigravity CLI を直接起動
  • 30言語対応(日・英・中・韓・西・仏・独・葡・露の 9言語フル翻訳)

実際のアプリ画面

▼ マインドマップ画面(階層ノード・グループ囲み・全体図ミニマップ)
マインドマップ画面(階層ノード・グループ枠・全体図ミニマップ)

▼ 2×2 の4画面分割ワークスペース(マインドマップ × 内蔵MCP連携図 × ギャラリー × Markdown仕様書)
2×2 4画面分割(Quad Split View)

公開ページ(Microsoft Store / 公式サイト)

現在 Microsoft Store および公式サイト・GitHub にて公開中です(Freeプランは ¥0・クレジットカード不要)。

▼ Microsoft Store(Windows 10 / 11 版)

Microsoft Store から入手


2. 直面していた壁:1ファイル31万行、合計140万行超のデバッグ

機能追加を重ねた結果、自動生成物を除くコード行数は以下の規模になっています。

ディレクトリ ファイル数 コード行数 内容
lib/(アプリ本体 Dart) 1,688 1,193,629 行 本体だけで約119万行
test/(回帰テスト群) 706 222,001 行 検証・回帰テスト
packages/・worker/・HisatorNotebook/ 他 420 128,519 行 改修プラグイン・決済Worker・9言語HP等
主要ソース合計 2,814 1,544,149 行 本体+テストで約141.5万行

最大の壁だった2つの超巨大ファイル

  • lib/screens/mind_map_screen.dart:312,489 行(約 14.2 MB) ── UI・キャンバス描画・各種ビューア
  • lib/providers/mind_map_provider.dart:142,260 行(約 6.4 MB) ── 状態管理・永続化・同期

1ファイル31万行あるため ファイルの丸ごと読み込みは不可能 で、さらに Windows / Android の二重実装や複数モードの絡み合いにより、1箇所の修正が別機能を壊しやすい状態でした。

そこで Antigravity 上で Argon4 を選び、数十件の指摘が並ぶ 検証結果レポート.md の修正を丸ごと任せてみました。


3. Argon4 が迷子にならなかった「3つの仕込み」

投げた指示は以下の2行だけです。

@[検証結果レポート.md]
これの修正作業を行って

119万行の lib/ を迷わず横断できたのには、コードベース側の 3つの仕込み が効いています。

① 行番号マップと「過去の地雷リスト」

CLAUDE.md や qa.md に 「巨大ファイルの丸読み禁止」 と主要クラスの行番号インデックス、過去に踏んだバグの地雷リストを明記し、探索を高速化しました。

② part 拡張ファイル(mcp_ext/w01.dart〜w612.dart)での局所化

巨大ファイルを直接膨らませず、修正単位で part ファイルへ切り出す構造にしたことで、ピンポイントな grep と安全なパッチ適用を可能にしています。

③ アプリ内蔵 MCP サーバー(全320ツール)によるライブ診断

ローカル待ち受け(127.0.0.1:8765/mcp)でレイアウト検査・孤立データ監査・ドライラン検証などを行える 計320個の MCP ツール を内蔵しており、AI自身がアプリの内部状態を直接検証できます。

▼ アプリ内の AI & 3大 CLI(Claude Code / Codex CLI / Antigravity CLI)統合ランチャー
AI & 3大 CLI 統合ランチャー


4. Argon4 が解決したデバッグ実例 4選

ビルド b588〜b591 のセッションで、Argon4 が実際に原因特定からテストまで自走した代表例です。

事例①:「部分折りたたみ × 孫世代の格納ボックス」の置き去りバグ

「一部の子だけ折りたたんだ枝」の孫世代に「格納ボックス(Ctrl+G)」がある状態で親を移動・整列すると、孫ボックスだけが元の座標に取り残されるバグです。
Argon4 は並列サブエージェントで14万行の mind_map_provider.dart と拡張ファイルを調査し、再帰収集ヘルパー(w600MoveWithRiders)の適用漏れを特定。移動後の全座標を 1px単位で検証する単体テスト まで自動作成しました。

事例②:縮小ズーム時だけ座標がズレる Matrix4 の罠

回帰テスト中に発生した、縮小表示(scale < 1.0)時だけ操作バーの位置がズレる不具合です。

Argon4 が突き止めた原因
Flutter の Matrix4.getMaxScaleOnAxis() は X・Y・Z軸 の最大スケールを返します。2D キャンバスを 0.5 倍に縮小しても Z軸の 1.0 が最大値として返り、等倍扱いで座標計算されていました。

拡大時は正常に動くため気づきにくい初見殺しのバグでしたが、テスト失敗ログから数ステップで根本原因を特定・修正しました。

事例③:初回だけ 2,884ms かかる監査を 70ms 台へ高速化

MCP の list_orphan_files が起動後の初回だけ約2.9秒かかる問題では、Windows ごみ箱退避ファイル(.hnmap zip)の展開とバックアップ要約(最大30世代)が Windows の OS ごみ箱設定時のみ起動時ウォームアップから漏れていた ことを特定しました。

lib/providers/mcp_ext/w611.dart
void w611ScheduleOrphanScanWarm() {
  if (!_w611Enabled) return;
  if (_w611WarmFuture != null || _w611WarmTimer != null) return;
  _w611WarmState = 'scheduled';
  _w611WarmTimer = Timer(_kW611WarmDelay, () {
    _w611WarmTimer = null;
    unawaited(w611WarmOrphanScanCaches());
  });
}

別 isolate での20秒遅延ウォームアップに加え、「ウォームアップ中のリクエストは二重走査せず完了を待つ」「テスト時は Timer を立てない」 処理まで一発で実装してきました。

事例④:既存ユーザーを壊さない移行設計と「直さない判断」

MCP 認証トークンを URL クエリ(?token=)廃止・Authorization ヘッダー必須へ変更した際も、旧設定が ~/.codex/config.toml に残っている既存ユーザーだけは張り替え完了まで自動移行ウィンドウで通す(ブラウザ由来の Origin: null 等は即拒否)という配慮まで実装されました。

さらに %APPDATA% 保存パス変更案など、既存ユーザーのデータ消失リスクがある項目は「後方互換性のため据え置き」と自ら切り分けて報告 してきた点が非常に優秀でした。


5. 1セッションの成果と運用のコツ

Argon4 デバッグセッションの実績まとめ

  • 横断修正:1セッションで Dart 37ファイル + 決済 Worker + 内蔵仕様書 を一括修正
  • テスト・解析:新規テスト作成 + 既存回帰テスト 22スイート(201テスト以上)全パス、dart analyze エラー 0件
  • リリース完走:難読化ビルド、バイナリ検算、9言語リリースノート生成、GitHub・公式サイト更新まで自動化

▼ その他の機能画面(ギャラリー / 317資格試験対策 / CPU・GPU・LLM性能比較)
ギャラリーページの2次元グリッド画面
試験対策画面
性能比較画面

大規模アプリを Argon4 に任せる3つのコツ

  1. 「丸読み禁止+行番号マップ」を置く:探索速度と命中率が大きく上がります。
  2. 「後方互換性を最優先」と明示する:保存パス変更などの破壊的リファクタリングを防げます。
  3. UI抜きでテストできる層を作る:状態層・MCP層でヘッドレス検証できると「修正→テスト→解析」を最後まで自走してくれます。

おわりに

個人開発で100万行を超えても、適切な足場(地図・分割・MCP・回帰テスト)× Argon4 の並列探索・推論力 があれば、以前より速く安全に改善を回せています。

HisatorNotebook は Windows(Microsoft Store / zip)および Android で 無料(¥0) から使えますので、ぜひ触ってみてください!

▼ Microsoft Store ページはこちら

Microsoft Store から入手

▼ 公式サイト(全機能紹介・Android版 / zip版ダウンロード)

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?