Money Forward Developers Blog

株式会社マネーフォワード公式開発者向けブログです。技術や開発手法、イベント登壇などを発信します。サービスに関するご質問は、各サービス窓口までご連絡ください。

20230215130734

DroidKaigi 2023参加レポート

はじめに

こんにちは、マネーフォワードホームカンパニーでモバイルエンジニアをやっている nyafunta9858 です。 9/14から9/16までの3日間にわたり開催されていたDroidKaigiに今年もオフラインで参加してきました! 例年と同様に様々なAndroidの技術にどっぷり浸かりながら、久しぶりに開催されたAfter PartyやMeetupといったコミュニケーションの場としても魅力的なカンファレンスだったと思います。

この記事では社内の参加者からの推しセッションや現地の様子などをご紹介していきたいと思います。 気軽に読んでいただければと思います。

Day1/Day2

今年もセッション以外の面でも充実したカンファレンスだったように思います。 スポンサーブースは昨年よりもクイズ形式の展示をされているブースがとても増えており、昨年と比べても非常に賑わっていたように感じました。 今年も開催されたスタンプラリーと相まって、ブースのスタッフの方々との交流の生まれるコミュニケーションの場として盛り上がっていました。

また、今年は時間帯でテーマの変わるMeetupのスペースが常設されたりと、よりコミュニケーションの場としての機会が増えていました。 筆者はタイミングが合わず参加できなかったのですが、もし来年もあればぜひ参加してみたい!と思えるほどに常に多くの方が参加されていました。

※蛇足ですが、昨年気になっていたネイル体験が今年も催されていたので試してみました。初の試みです。

Day3

3日目はワークショップとしてコードラボを開催しつつ、キャリアをテーマにパネルディスカッションが行われました。 登壇者のキャリアの話から参加者からの質問・疑問に答えていただいたりと、その場でしか聞けない貴重な話が満載だったように思います。 その中での話題のひとつとして英語学習に関する話がでてきたのですが、絶賛英語化を推進している企業の一員としても一エンジニアとしてもとても興味深かったです。 まず3年間、前向きに取り組んでみるのが大事なんだなと、非常にためになるお話を聞くことができました。

そのあとはキャリア相談会が開催されたり周囲のエンジニアとお話をしたりという交流の場となったのですが、 久しぶりにオフラインでお会いした方や一度直接会ってお話したかった方など、色々なひととお話することができ非常に楽しい時間でした。

推しセッションのご紹介

iOSとAndroidで定期購入の意図しない解約を防ぐ

非自発的解約とは、例えばクレジットカードの期限が切れていたなどの理由により、定期購入において支払いが正常に行われなかったことによって起きた解約のことです。 セッションでは非自発的解約を防ぐ機能として、猶予期間(Grace Period)とアカウントの一時停止(Account Hold)の2つの紹介がありました。 サンドボックス環境での検証方法や、支払いの失敗から正常化までを時系列でわかりやすく解説がされており、これから定期購入機能をアプリに実装する開発者は必見の内容だと思います。 DroidKaigiは主にAndroidの技術に関するセッションが多いですが、本セッションはiOSの定期購入についても触れられており、Androidとの違いについても理解することができます。

MVIに基づくStateMachineアーキテクチャ:KMPとJetpack ComposeとSwiftUIを組み合わせる

セッションの内容は主に、Kotlin Multi Platoform(KMP)を利用したMVIアーキテクチャの実現とコンポーネントや実装面について解説されています。 MVIの基本となる、Processor/Reducer/Intent/ActionなどをKMP内でどのように実装するかをコードを踏まえて説明があるため、非常に分かりやすい内容となっています。また、昨今は開発の効率化の方法を模索する中で、KMPの導入検討をする開発者の方もいると思いますが、KMPを利用する利点・欠点の説明もされているので、導入にあたっての参考資料としても是非見て欲しい内容となっています。 本発表のソースコードは一般公開されており、リバースエンジニアリングしてみたところプロジェクト構成が非常に整っています。Gradle Pluginを使ったビルドスクリプトの整理や、Mavenを使ったソース公開など参考にできる内容が非常に多いです。Android開発に役立つエッセンスが満載なので、是非KMP導入など関係なくソースコードの方もご覧いただけたらと思います。

突撃!隣のコードレビュー

Androidアプリの開発に限った話ではないですが、コードレビューはプロダクト開発においてとても重要な要素です。 こちらのセッションではコードレビューに前向きな気持ちで取り組むために、チームで取り組んでいることや個人でできる工夫などが紹介されていました。 チームでの取り組みについては、3つのプロダクトの実例からそれぞれのチームが抱えるコードレビューの課題と、どのように改善に取り組んだのか、結果どのような効果が得られたのかが紹介されており、とても興味深い内容でした。 個人でできる工夫については、レビューに取り組む際の姿勢や考え方をレビュアー・レビューイ双方の視点で紹介しており、こちらもとても参考になる内容でした。 他社のリアルな事例を知ることができるのはこういった大きなカンファレンスの利点だと思いますが、皆さんやはり気になるのかセッション会場は満席で、エンジニアのコードレビューに関する関心の高さも感じられました。

Kotlinハイパフォーマンスプログラミング

このセッションでは、Kotlinの便利な記法の隠れたコストが実は存在することを知ることができます。よく使われるCollection操作にもコストがかかることがあると知って、驚きがありました。 セッションの中でも説明されていますが、可読性も最適化のために必要であり常に最適化することが正しいわけではないですが、知識として知っておき気に留めておくといざ大きなデータを処理するときに役に立つセッションだと思いました。

できる!アクセシビリティ向上

アクセシビリティについてあまり知識がない、またはこれからアクセシビリティについて取り組みたいといったひとにとって非常にいい内容だったように感じました。 障害のある方だけでなく、アクセシビリティの考慮が効果を発揮するシーンがあるといった話から始まり、Talkbackの事例ではAndroid端末以外に用いられるスイッチデバイスを例に挙げ、どういった考慮が必要で動作確認はどのようなものになるのかなど、あまり考えが及んでいなかったシーンでもイメージしやすいように話が構成されており、非常に分かりやすかったです。 また、contentDescriptionの説明では設定される値のパターンが分かりやすく整理され、それぞれどういった要件・仕様の際に選択するのが良さそうか?という実践を意識した話をされていた点はとても納得感を感じられるものでした。

レイヤードアーキテクチャにおける例外との向き合い方

一般的なアーキテクチャ原則は「関心の分離」でUI Layer, Domain Layer, Data Layerなどへ分割する概念はみなさんも慣れていると思います。このセッションでは小規模のプロジェクトではうまくいっていたのが規模が大きくなると例外が複雑になるといった問題がある点に触れ、ただExceptionの種類を増やすだけで済む問題ではないので、システム例外(ローガルのデータ取得失敗)やビジネス例外(間違ってるパスワード)などの分類法を使って各レイヤでエラーハンドリングするようにしようと話されていました。「関心の分離」を推進し、より高い生産性を得られるようにしようという内容に共感してまたじっくり参考にしたいと思いました。

Jetpack Composeを活用した強力なUI表現の実装実例

豊富なUI表現やエフェクトは、ユーザーに対して直感的な経験を与える一方でその実装の難易度、複雑さのために活用してみる機会があまりなかったかと思います。しかし、このセッションでは既存の伝統的なAndroid Viewを使っていた時期と比べても、Jetpeck Composeを使ったリッチなUIの実装がより楽しくなったと感じました。フォント・色変更、Gradient、画像イメージの描画、アニメーションそしてShaderまで扱っており、興味を持たせる内容が多くありました。こういったUI実装に苦労していた方々には役立つ内容になっているかと思います。

スポンサーブースについて

今年も事前準備からスタッフとしてスポンサーブースに参加させていただきました! 弊社のアプリを使っていると生の声をいただいたり技術的なご質問をいただいたりと、非常にありがたい気持ちでいっぱいです...!

今年は企画として、AndroidやDroidKaigiにまつわるクイズを出題しました。 いつ来ても何度来ても楽しんでいただけるように、2日間それぞれ午前午後でクイズの内容を変えてお送りしましたが、皆さまお楽しみいただけましたでしょうか?

私が考えたクイズも出題していたのですが、ブースにいる間は解説を含め、色々とお話をさせていただきました。 どうせならAndroidらしい内容にしたいと思って作ったクイズだったので、楽しんでいただけたのでしたら幸いです。 また、こちらのクイズについては近日中に解説記事を公開する予定です。楽しみにお待ち下さい。

おわりに

過去の同僚であったり、SNSでは知っていたけどオフラインは初めての方だったりと、今年は昨年よりも多くの方とお話をさせていただきました。 今後も引き続き、色々なカンファレンスに参加していく予定ですので、見掛けた際はぜひお声がけください。色々とお話をしましょう!

また、X(旧Twitter)で告知しておりましたアフターパーティも無事に開催されました。 こちらに参加いただいた皆様もありがとうございました。 今後も機会があればAndroidに関連する技術を発信していきたいと思っておりますので、今後も楽しみにお待ちくださいませ。