Android エンジニアに転身したのもあり、会場に来てみた。ひとつひとつの取り組みが大きく聴き応えがあった。AIエージェントをQAテスト自動化に活用するユースケースはナルホド感ありとても興味惹かれた。画像ベースのE2Eテストは構築コストもメンテコストも掛かるイメージなので、試験項目書に基づく指示通り&実質目視でテストしてくれる未来が来て欲しいし、AIエージェントとの相性も良いと思った。
イベントページ:https://cyberagent.connpass.com/event/353611/
RemoteBuildCacheの導入とビルド時間メトリクス計測のススメ
- ビルド時間計測のメトリクス構築
- ビルド時間の課題:開発生産性体験の悪化、CIコスト増大
- メトリクス構築 → ボトルネック発見、進捗可視化、改善サイクルの確立
- measure-builds-gradle-plugin (Automattic) を使用
- 外部サービスに収集データや分析情報を送信
- ビルド時間 アーキテクチャ OS情報、ビルド成否、gradle 設定情報 → 環境情報を取得送信することでビルド時間との相関性調査に
- ローカルビルドキャッシュだけでは効率化に限界(以下ABEMA例)
- CI runner が分かれており環境ごとでしかキャッシュ活かせない
- M3/M4 などでもフルビルド2,30分かかり生産性下げている
- リモートキャッシュにより:
- 他の開発者のローカルPCでも使えるようにした
- 大規模やマルチモジュール構成に対し恩恵大きい
- RBCの導入
- gcp-gradle-build-cache でリモートキャッシュを導入
- 導入の前提条件の説明(何が必要か、セキュアの担保)
- リージョン指定の必要性、キャッシュの自動削除設定について
- gcp-gradle-build-cache でリモートキャッシュを導入
- RBCの効果
- 定性的に「かなり早くなった」
- 運用費:ABEMA規模でも1万円程度(CIも安くなるので十分payできる)
縦横無尽に駆け回るフォーカスをユーザーフレンドリーに制御する feat. Compose for TV
@taked_oO さん
- リモコン操作:フォーカスに対して、アイテムを目立たせる、自動スクロール
- フォーカスの操作性がユーザー体験に重要
- Leanback ライブラリ:
RecyclerViewだとフォーカスわからないがわかりやすくなる- Android View ベース、
Adapterを触りたくない課題感
- Android View ベース、
- Leanback → Compose for TVへの移行
- 全然フォーカス目立たなかったり挙動怪しい…
- 自分で仕上げる必要あり → フォーカス移動をどう実装したのかという話
- フォーカス移動のしくみ:カーソル方向に最近似の要素
- なぜ?選出ロジックの説明
- 純粋に位置関係だけに基づいていて、
ColumnRowといった component 単位を考慮できていないColumn間移動した時、移動前のフォーカス位置(コンテクスト)が失われる
- コンテクストを復元するために、、
modifier.focusRestorerを追加するだけ- タブ移動しても右側のリスト選択位置維持される、定期的な初期化が必要:
compose.runtime.keyを使用 - restore 直後は、位置ベースのフォーカスロジックが働く:fallback 先を指定
- 柔軟なフォーカス制御
focusRequester,focusProperties
Arbigent AIエージェントによるテストフレームワーク
- https://github.com/takahirom/arbigent
- 冒頭デモ動画あり
- シナリオ同士の依存関係:起動後 → ブックマーク → 保存済みで確認
- Image assertion に、画像と自然文とでダブルチェックさせる機能あり
- 困りごと:テストがボトルネック
- UIテストの脆弱性:広告、AB、ダイアログ
- 要素特定が変更し落ちる
- 表示要素のローディング(外部環境の影響)
- AIエージェントにも課題
- 複雑タスクで意図しない動き
- 安定性や再現性に課題
- 手動のテスト項目書
- 前提条件、操作手順、期待値
- これを依存関係のある小さなシナリオに分解
- 依存関係の管理は、yaml で定義
- 誰がどうやって使うのか
- QAエンジニアや非プログラマー。エンジニアも CLI, GitHub Actions など
- どう動く?:仕組みを図示
- テストライブラリ Maestro を利用:モバイル、ウェブで動く
- アクセシビリティラベルだけでなく、プロンプトと共に矩形でマークアップしてAIの目を補助する
- 画像のダブルチェックで堅牢性を担保
- スクリーンショットテストライブラリ Roborazzi を統合
- 操作の結果画面が変化しなかったことを検知
- AI 自体が不安定さへの耐性があり。ローディングを待ってくれる、など
- MCP サポート
- UI 操作後にサーバーログを確認
- Google の SMURF の紹介:テスト評価のフレームワーク
- Speed / Maintenance / Utilization / Reliability / Fidelity 各項目への強み弱み
- Firebase App Test agent / Journeys for AS と比較(星取表)
SingleActivity化・フルCompose化を見据えたナビゲーション基盤の作成
@go_takahana さん
- ナビゲーション実装の現在:
- Navigation component を利用した Fragment ベースがメイン
- Activity ベースの画面遷移も残る
- Compose ベースの画面遷移も試験的に
- いま:Navigation 3 が発表
- 学習コスト掛かる上、パターンごとでトランジションの挙動が異なる:一貫性が損なわれる
- 新たなナビゲーション基盤の設計
- 遷移アニメーション
push/task/playerをScreenTypeで定義し、選ぶだけ - 遷移先を型定義 Compose の navigation は type-safe (Navigation 3にも引き継がれている)
- ナビゲーションインターフェイスを共通化(Activity/Fragment)
- 遷移アニメーション
- 苦労点
- 裏の Activity 上の画面に画面遷移させたい
- A-B は navigation graph 上繋がっていない
- 解決アプローチについて
- 裏の Activity 上の画面に画面遷移させたい