プロジェクト名: wol-light 開発経緯・仕様まとめ(Windows 10 / Antigravity / Gemini 3.1 Pro(High))

目次

1. プロジェクト概要

ネットワーク管理アプリ「Fing」の代替を目指し、特定のPCに対して「スキャン」「Wake-on-LAN (WoL)」「起動後の死活監視」を完結させるAndroidアプリの構築。

2. 開発フェーズと実装内容

フェーズ1: ネットワークスキャン基盤の構築

  • 技術選定: Kotlin, Coroutines, UDP/DatagramSocket。
  • 実装機能:
    • クラスC(/24)のサブネット内を非同期で高速スキャンする IpScanner の作成。
    • InetAddress.isReachable() を利用したPingによるデバイス検知。

フェーズ2: Wake-on-LAN と ARP解決のパズル

  • 技術的課題: Android 11以降のセキュリティ制限により、/proc/net/arp からのMACアドレス取得が困難に。
  • 解決策:
    • ArpResolver を実装し、キャッシュからの取得を試行。
    • MACアドレスが取得できない場合、ユーザーに手動入力を促すダイアログ(UX)での補完。
    • UDPポート9へのブロードキャストによるMagic Packet送信機能の実装。

フェーズ3: デバイス管理とリアルタイム監視の統合

  • 永続化: Jetpack Room を導入。スキャンしたデバイスに名称を付けてデータベースへ保存する機能を実装。
  • 死活監視:
    • 10秒間、1秒間隔でPingを打ち続けるシーケンシャルなステータス更新ロジックの実装。
    • WoL送信からOS起動までのタイムラグを視覚的にカバー。

3. 発生した課題と対応策

  • ビルド環境: エージェント環境(JAVA_HOME未設定)とローカル環境の差異を、gradlew.bat の直接実行により解消。
  • ランタイムエラー:
    • View.FOCUS_DOWN のインポート漏れ等のUI連携ミスを、Android StudioのLogcatを活用して特定。
    • Roomスキーマの不整合による起動クラッシュへの対応(アンインストールによるリセット推奨)。

4. 結論と今後の方針

Gemini(Antigravity)によるプロトタイプ作成を通じ、Androidネットワークプログラミングの核心(制限事項とその回避策)を明確化した。

以降のブラッシュアップ(UIの改善、ウィジェット化、さらなる安定化)については、現在正常稼働している Claude Code版のコードベース を主軸として継続する。