聴講メモ:CA.aab #6

Android エンジニアに転身したのもあり、会場に来てみた。ひとつひとつの取り組みが大きく聴き応えがあった。AIエージェントをQAテスト自動化に活用するユースケースはナルホド感ありとても興味惹かれた。画像ベースのE2Eテストは構築コストもメンテコストも掛かるイメージなので、試験項目書に基づく指示通り&実質目視でテストしてくれる未来が来て欲しいし、AIエージェントとの相性も良いと思った。

イベントページ:https://cyberagent.connpass.com/event/353611/


RemoteBuildCacheの導入とビルド時間メトリクス計測のススメ

@zume_poposora さん

  • ビルド時間計測のメトリクス構築
    • ビルド時間の課題:開発生産性体験の悪化、CIコスト増大
    • メトリクス構築 → ボトルネック発見、進捗可視化、改善サイクルの確立
    • measure-builds-gradle-plugin (Automattic) を使用
      • 外部サービスに収集データや分析情報を送信
    • ビルド時間 アーキテクチャ OS情報、ビルド成否、gradle 設定情報 → 環境情報を取得送信することでビルド時間との相関性調査に
    • ローカルビルドキャッシュだけでは効率化に限界(以下ABEMA例)
      • CI runner が分かれており環境ごとでしかキャッシュ活かせない
      • M3/M4 などでもフルビルド2,30分かかり生産性下げている
    • リモートキャッシュにより:
      • 他の開発者のローカルPCでも使えるようにした
      • 大規模やマルチモジュール構成に対し恩恵大きい
  • RBCの導入
    • gcp-gradle-build-cache でリモートキャッシュを導入
      • 導入の前提条件の説明(何が必要か、セキュアの担保)
      • リージョン指定の必要性、キャッシュの自動削除設定について
  • RBCの効果
    • 定性的に「かなり早くなった」
    • 運用費:ABEMA規模でも1万円程度(CIも安くなるので十分payできる)

縦横無尽に駆け回るフォーカスをユーザーフレンドリーに制御する feat. Compose for TV

@taked_oO さん

  • リモコン操作:フォーカスに対して、アイテムを目立たせる、自動スクロール
    • フォーカスの操作性がユーザー体験に重要
    • Leanback ライブラリ:RecyclerView だとフォーカスわからないがわかりやすくなる
      • Android View ベース、Adapter を触りたくない課題感
  • Leanback → Compose for TVへの移行
    • 全然フォーカス目立たなかったり挙動怪しい…
    • 自分で仕上げる必要あり → フォーカス移動をどう実装したのかという話
  • フォーカス移動のしくみ:カーソル方向に最近似の要素
    • なぜ?選出ロジックの説明
    • 純粋に位置関係だけに基づいていて、Column Row といった component 単位を考慮できていない
      • Column 間移動した時、移動前のフォーカス位置(コンテクスト)が失われる
  • コンテクストを復元するために、、
    • modifier.focusRestorer を追加するだけ
    • タブ移動しても右側のリスト選択位置維持される、定期的な初期化が必要:compose.runtime.key を使用
    • restore 直後は、位置ベースのフォーカスロジックが働く:fallback 先を指定
  • 柔軟なフォーカス制御
    • focusRequester, focusProperties

Arbigent AIエージェントによるテストフレームワーク

@new_runnable さん

  • 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/playerScreenType で定義し、選ぶだけ
    • 遷移先を型定義 Compose の navigation は type-safe (Navigation 3にも引き継がれている)
    • ナビゲーションインターフェイスを共通化(Activity/Fragment)
  • 苦労点
    • 裏の Activity 上の画面に画面遷移させたい
      • A-B は navigation graph 上繋がっていない
    • 解決アプローチについて

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です