---
# System prepended metadata

title: 20240624 モバイルTechCafe～Google I/O 2024とWWDC24を振り返る～

---

# Google I/O 2024とWWDC24を振り返る
イベントページ：https://rakus.connpass.com/event/319977/
## ラクスモバイルチームPickUPセッション
### [★Google I/O 2024](https://io.google/2024/explore/intl/ja/)
- [デベロッパー基調講演](https://io.google/2024/explore/af9317b5-1c42-471a-99db-1bc8108d06a8/intl/ja/)
    - [Gemini API コンペティション開催](https://ai.google.dev/competition?hl=ja&_gl=1*zjwfyw*_up*MQ..*_ga*MTk0NDAwMzI5NC4xNzE4ODcxNDEx*_ga_P1DBVKWT6V*MTcxODg3MTQxMC4xLjAuMTcxODg3MTQxMC4wLjAuMTkwNjYwMTc1OA..)。MVPにはEVデロリアン。
    - [Gemini Nano](https://deepmind.google/technologies/gemini/nano/)がPixel8Proに搭載
        - デバイス内での活用に最適化されたコンパクトなGeminiモデル
        - 通信介さずデバイス上で直接実行されるので低遅延でセキュアなアプリ実装が可能に
            - Googleアプリではレコーダーの要約やメッセージの返信文サジェストとか
        - Chromeにも126から搭載。拡張機能などが捗りそう。
    - [AndroidがKMPを公式サポート](https://developer.android.com/kotlin/multiplatform)
        - GoogleWSも順次KMPに切り替え
        - Jetpackライブラリも徐々に対応(Room/SQLite/DataStore)
    - [Project IDXのBeta版公開](https://developers.googleblog.com/ja/start-building-with-project-idx-today/)
        - WEBやMobileによらず開発可能なクラウド統合開発環境
        - CodeOSSベースなのでVSCodeユーザーなら学習コストも低い
        - FlutterやGoなどテンプレも豊富で環境構築不要でサクッと試せるのはよい(勉強会にもよさそう)
        - Geminiによるコード補完も適用
        - さすがにネイティブ開発は無理そう
- [Android 開発ツールの新機能](https://io.google/2024/explore/9986e95b-c506-40f1-b233-54f7e7092fdb/intl/ja/)
    - [Android Studio KoalaがStableに](https://developer.android.com/studio)
        - StudioBot⇒Geminiに進化でCopilotいらず？
        - [その他新機能](https://developer.android.com/studio/preview/features)も(インラインブレークポイントとデバイスショートカットは嬉しい)
    - [FirebaseはCrashlyticsとGemini連携強化](https://firebase.blog/posts/2024/05/whats-new-at-google-io)
        - 最初に洞察を得たうえで調査できることで作業効率を上げられそう
        - [Device Streaming](https://developer.android.com/studio/run/android-device-streaming?hl=ja)により機種×OS依存問題に対しても再現調査できる
- [Flutterの新機能](https://io.google/2024/explore/da049081-00e1-4476-80da-1cd039302ac6/intl/ja/)
    - [WebアプリのWASM対応がStableに](https://docs.flutter.dev/platform-integration/web/wasm)
        - 社内ベンチマークではフレームレンダリング時間が最大3倍高速化したらしい
    - [DartMacros](https://dart.dev/language/macros)
        - 静的メタプログラミングサポートの追加によりボイラープレートを削減
        - JsonCodableという公式マクロの他、ゆくゆくは開発者独自で定義することも可能に
    - [2DゲームエンジンFlame](https://flutter.dev/games)の紹介(新ではないが)
        - [CodeLab](https://io.google/2024/explore/intl/ja/?q=codelab,flutter)もいくつかあるので動かすことでイメージ掴める
- [Google Play の新機能](https://www.youtube.com/watch?v=xry2mQbWrio)
    - リリース時の利便性が向上
        - セキュリティポリシー違反の事前チェック
        - ノーコードでのアプリの更新ダイアログの表示
        - レビュー提出前のアプリの削除
            - 特に3つ目はリリースプロセスの柔軟性に大きく貢献できそう
- [Android の新機能](https://www.youtube.com/watch?v=_yWxUp86TGg)
    - ComposeコンパイラーがKotlin2.0からKotlinリポジトリに含まれるように
        - 複雑な互換性を気にしなくてよくなる
    - Edge to EdgeがAndroid15からデフォルト適用なので[targetSdk35で対応必須](https://developer.android.com/about/versions/15/behavior-changes-15?hl=ja)か
        - [Edge to EdgeのCodeLab](https://developer.android.com/codelabs/edge-to-edge?hl=ja#0)もあるのでやっとくとよさそう
    - Composeの新機能
        - 遷移アニメーションの追加
        - パフォーマンス改善
            - 最初の描画にかかる時間が17%、再描画にかかる時間が20%改善とのこと
- [Android Studio の実用的なアプリ プロファイリング](https://io.google/2024/explore/d47ef4f0-2ca7-4b8f-b548-b3c5eeecc358/intl/ja/)
    - JetpackMacroBenchmarkで計測するアプリ起動時間はTTIDだけでなく[TTFDも必要](https://developer.android.com/topic/performance/baselineprofiles/measure-baselineprofile?hl=ja#time-to-full-display)
    - Iguana&AGP8.2からはAndroidStudioウィザードから簡単に[BaselineProfileを作成可能](https://developer.android.com/topic/performance/baselineprofiles/create-baselineprofile?hl=ja#create-new-profile)に
        - 作るだけで30%も初期起動改善するらしいのでやり得？
- [Jetpack Compose でパフォーマンスの問題を解決する具体的な方法](https://io.google/2024/explore/1f053ce4-2113-4030-a9a3-bbb48092b95f/intl/ja/)
    - [同内容のCodeLab](https://developer.android.com/codelabs/jetpack-compose-performance?hl=ja#0)の解説動画でCodeLabと一緒にやると理解しやすい
    - [Perfetto](https://perfetto.dev/)というシステムトレースツールでボトルネックのプロファイリングができる
        - ブラウザベースなのでチーム全員で共有する時とかはAndroidStudioのProfilerより使いやすそう
- [Android の最新のメディアおよびカメラ エクスペリエンスを作成する](https://www.youtube.com/watch?v=98QtLRrwyt8)
    - Compose向けの新規CameraXライブラリの追加(`camera-viewfinder-compose`)
        - 折り畳み式のデバイスやタブレットなどあらゆるデバイスでのカメラプレビューをひとまとめにできる
        - Camera2もしくはCameraXとの統合が可能
        - 現時点ではリファレンスもない状態
    - 低光量モードの追加
        - 単純なフラッシュとは異なり暗所での撮影時に自動的に補正をかけてくれる
        - Camera2もしくはCameraXの拡張APIとして実装。要APIレベル35以上
        - 搭載デバイスは現時点で90以上
    - カメラを使用する上位1000アプリのうち32.8%はCameraXに移行済みとのこと
        - (思ったより少ない？)
- [生成 AI を活用した独自の Android アプリを開発する](https://www.youtube.com/watch?v=L2ORMj0yak8)
    - オフラインでも使用できるAIモデル(Gemini nano)の追加
        - Android14以上の一部端末にのみ搭載
        - [AI Core](https://developer.android.com/ai/aicore)として既にプレビュー版が利用可能
            - https://android-developers.googleblog.com/2023/12/a-new-foundation-for-ai-on-android.html
    - 更に高機能な[Gemini Pro](https://developer.android.com/ai/google-ai-client-sdk)も利用可能
    - スマートフォンでは基本的に長文の入力は不向きなので、メールなどの文章生成や、文章、画像の要約をGeminiで行えるようにしているとのこと
---
### [★WWDC24](https://developer.apple.com/jp/wwdc24/)
- [基調講演](https://developer.apple.com/jp/videos/play/wwdc2024/101/)
    - 満を持しての[Apple Intelligence](https://www.apple.com/jp/newsroom/2024/06/introducing-apple-intelligence-for-iphone-ipad-and-mac/)の登場
        - 文章校正・要約、画像生成、Genmoji、Siriが強化され優れたアシスタントに
        - GPTとはハイブリッド利用(ローカル=Intelligence、オンライン=GPT)
- [XCode16の新機能](https://www.youtube.com/watch?v=BAQ9EhAm2eM)
    - 純正AIによるコード補完が利用可能に
        - OSがセコイアでApple Siliconという条件付きだが、完全ローカルで動作して学習データにも利用されないとのこと
        - Swiftの明示的ビルドを有効化
        - デバッグ時のスタックフレームビュー
        - Instrumentsのタイムライン表示
- [Swiftの新機能](https://www.youtube.com/watch?v=17fZZ1v_N2U)
    - Swift 6で登場した新機能をSwiftの歴史を振り返りながら紹介
    - 非同期でのデータ競合の安全性がかなり強調されているように感じた
        - [Swift6移行ガイド](https://developer.apple.com/documentation/swift/adoptingswift6)
- [Swift Testing](https://www.youtube.com/watch?v=WFnkNcvLnCI)
    - Swiftを使用してコードをテストするための新しいパッケージ、Swift Testingの紹介
    - XCTestの辛いところをかなり改善してくれているので期待大
        - 記述がシンプルになり可読性が向上する
        - 失敗した際にテストで利用された変数の値が全て表示される
        - パラメータテストはテスト関数の引数に渡せる様になり、テスト結果もパラメータ毎に表示されるようになる
        - テスト関数名とは別にタグやテスト名を自由につけられる
        - 全てのテストは並列かつランダムに実行される。
        - 移行時に依存関係があり失敗する場合は@Suiteに.sirializedをつけることで直列実行できる
        - throwされることをテストする場合、do catchブロックを使わずにexpectで確認できる
- [実行、ブレーク、検証：LLDBでの効果的なデバッグ方法](https://www.youtube.com/watch?v=PsW3RQN9R_Q)
    - XCodeに搭載されているデバッガのLLDBについて、デバッグに効果的な様々な使用方法をサンプルコードを使用して紹介
    - 既存からある機能も含めてデバッグに関する細かいテクニックを解説してくれているので、見るだけでデバッグに関する知識が深まる
        - 変数を見るコマンドは大体pでOK
        - ブレークポイントに条件を設定できるよ
        - n回呼ばれた後にブレークポイントで止まるようにできるよ
        - リビルドなしでデバッグ実行できるよ