プロジェクト名: 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によるデバイス検知。
- クラスC(/24)のサブネット内を非同期で高速スキャンする
フェーズ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版のコードベース を主軸として継続する。