319 Views
August 25, 26
スライド概要
YUMEMI.grow Mobile #28 で発表したスライドです。
https://yumemi.connpass.com/event/399875/
Android Engineer at Omiai Inc.
AI に実装を任せても人間の動作 確認はなくならない: Android における 動作確認と証跡作成の爆速化 YUMEMI.grow Mobile #28 1
自己紹介 ● ● ● ● 高田 晴彦 株式会社Omiai Flutter / Android エンジニア @tfandkusu ○ Qiita / Zenn / note / GitHub / X 2
AIコーディングエージェント 活用してますか? 3
Omiai における Figma + Claude Code を活用した開発 実装規約 スキル Claude Code Flutter 実装 Figma 仕様 フィードバック 個人技でなくチームとして統一された実装 4
Claude Code を活用した結果 ● ● 実装が3倍早くなった AI の待ち時間に別の実装を平行して進める 5
新たな気づき プルリク作成のための 動作確認と証跡撮影が 新たなボトルネックでは? 6
作業時間グラフ PJT1 PJT2 不具合 修正 AI 実装 動作確認 AI 実装 AI 実装 動作確認 動作確認 7
動作確認と証跡作成も AIにやらせれば良いのでは? 例えば Mobile MCP 8
DroidKaigi 2026 の発表たのしみ DroidKaigi 2026 公式サイトより引用 http://2026.droidkaigi.jp/timetable/1236044/ 9
AI による UI / E2E テストは構築に時間がかかる 検証用サーバー 検証のための知識 ● ● 検証環境構築 API の使い方 画面遷移方法 検証環境構築 API アプリが使う API Claude Code iOS / Android アプリ 端末操作 証跡取得 10
AI による UI / E2E テストが 整備されるまでの 手元改善 Tips を紹介 ● ● Android を対象 adb コマンドを使った手元改善 11
adb コマンドとは ● ● PC から Android 端末を操作するためのコマンドラインツール Android SDK インストールディレクトリの platform-tools ディレクトリにある ○ 標準的なパス : ~/Library/Android/sdk/platform-tools/adb 12
adbコマンドを使った手元改善の例 13
ログイン操作の例 メール アドレス 入力 6桁数字 認証コード 入力 ※ 実際の Omiai アプリは電話番号が主なログイン方法 14
adb コマンドによるキーボード入力の自動化 ターミナルで実行 adb shell input text [email protected] 自動入力 15
6桁数字認証コードの自動入力 検証環境の仮想的なメールボックス メールを読んで 6桁数字の認証コードを取得 スクリプト adb コマンド使用 adb shell input text 123456 16
補足 adb shell input text コマンドの意味 Android 端末 Android 開発用PC adb shell Android 端末の シェルに入る Linux input text 123456 17
adb コマンドを使うメリット 1. 2. ソフトキーボードによるテキスト入力の省力化 テキスト入力を自動処理に組み込める 18
ターミナルをアクティブウィンドウにする 手間がかかる ターミナルが起動していなければ 起動する アクティブウィンドウにする どこでも adb コマンドを 使えるようにする 19
Raycast の活用 高機能なランチャーアプリ Command + Space のようなショートカットキーでどこ からでも アプリを呼び出せる マウスを使わずキーボードだけ で補完がよく効いて軽快に操作 できる 20
多機能な Raycast 計算 為替 21
拡張機能で他サービスと連携 文書共有サービスの 「コンフルエンス」と連携し文 章を検索して開くことできる 22
Script Commands
あらかじめ設定したフォルダに置いたスクリプトを
どこからでも呼び出すことができる
シェルスクリプト
補完が効く
#!/bin/bash
Raycast 向け情報
# @raycast.schemaVersion 1
# @raycast.title Omiai Input Email
# @raycast.mode silent
# @raycast.packageName Omiai
シェルの環境変数は
引き継がないので、
PATH はここで定義
export PATH="${HOME}/Library/Android/sdk/platform-tools:${PATH}"
どこでも Android 端末に
メールアドレスを入力できる
adb shell input text "[email protected]"
adb コマンド呼び出し
23
Script Commands 動画 24
補足 無料機能のみ使用 月額課金 ● ● 複数端末で設定を同期 AI 機能 25
これまでのまとめ 動作確認の手元改善について 背景と対応 ● ● AI で実装は速くなった 動作確認が手作業だと時間かかる ○ ● スクリプトから adb コマンドを使うことで一部自動化して省力化 ○ ● AI まかせにするのは整備期間が必要 ターミナルを開いたりアクティブウィンドウにする操作が必要 Raycast の Script Commands で、どこからでも呼べるようにする 証跡作成に応用 26
証跡撮影 - スクリーンショット (一般的な方法) Android Studio で スクリーンショット 撮影 27
証跡撮影 - 動画 (一般的な方法) Android Studio で 録画 28
adb コマンドによるスクリーンショット撮影 ターミナルで実行 adb exec-out screencap -p > ~/ss/screenshot.png 29
補足 adb exec-out screencap -p > 保存先パス の意味 開発用PC Android 端末の シェルに入る Android adb exec-out > 保存先パス Android 端末 バイナリ形式で 標準出力を 開発用PCに戻す Linux スクリーン ショットを PNG 形式で 標準出力 screencap -p 30
adb コマンドによる録画 Android 端末のシェルに入る 開発用PCのシェルに戻る adb shell exit 録画を開始する Android 端末に保存された動画ファイ ルを開発用PCに持ってくる screenrecord /sdcard/video.mp4 CTRL + Cで録画を終了する ※ /sdcard/ フォルダは書き込み可能フォルダ。SDカー ドが刺さっているわけではないが、後方互換のために 伝統的にこのフォルダ名になっている adb pull /sdcard/video.mp4 実際は Raycast から動かせる形に変更している 詳細は補足スライド参照 31
Raycast から証跡作成スクリプト呼び出し スクリーンショット保存 録画開始 録画を終了して動画を保存 32
まとめ ● ● ● AI コーディングエージェントで実装を早くしても、動作確認と証跡撮影は人間の 仕事として残っている そこの AI 化は進めて行くとして、整備されるまでのテクニックとして、手元作業 の効率化への取り組みはオススメ よくやる検証作業はスクリプト化 ○ ○ Android 端末操作は adb コマンドを使う Raycast でどこからでも呼べるようにする 33
ありがとうございました 34
補足 録画開始シェルスクリプト adb shell "nohup screenrecord /sdcard/video.mp4 > /dev/null 2>&1 &" シェルのセッションが 終了しても プロセス維持 標準出力の破棄 エラー出力の統合 バックグラウンドで実行し 即座にコマンドを終了する 35
補足 録画終了シェルスクリプト adb shell "kill -2 \$(pidof screenrecord)" CTRL + C 同等の シグナル発行 screenrecord のプロセスIDを取得して kill コマンドの引数にする ffmpeg -i video.mp4 -vf "scale=540:-2" -y video_small.mp4 動画の解像度が、証跡にしては大きいので、 PC へ複製後、ffmpeg コマンドで解像度を小さくする 36
補足 Raycast の Script Commands を活用 した検証環境構築の爆速化 37
検証環境構築画面 ※ Omiai で使っている物では無く、AI で作成したイメージ 38
検証環境構築も Raycast から実行 検証用サーバー 検証環境構築 API 検証環境 構築画面 アプリが使う API Raycast iOS / Android アプリ Python スクリプト 39