はじめに
こんにちは!メドピアにてモバイルアプリエンジニアをしている佐藤です。
1月27日、 がん専門医のための論文キュレーションアプリ 「 ClinPeer 」 を正式にリリースしました。私はAndroidアプリエンジニアとして要件定義から参画しました。
今回はClinPeerアプリ開発の裏側の第一回目の記事ということで、ClinPeerでのAndroidアプリ開発の構成や採用技術、Firebase Dynamic Links(FDL)の代替としてClinPeerではAdjustを採用した為、Adjustの活用事例について書いていきたいと思います。
モバイルアプリチームの開発構成
ClinPeerでモバイルアプリエンジニアとして参画したメンバーは以下の通りとなります。
- Androidアプリエンジニア:1人月
- iOSアプリエンジニア:1人月
- モバイルアプリテックリーダー:0.5人月
サーバーサイドチームと比較すると1/3となる人数だった為、広範にわたる仕様への理解と強い責任感が求められましたが、その分裁量を持って開発に取り組むことが出来ました。
採用技術
Androidアプリ開発においてはFullCompose + Clean Architecture + マルチモジュールで構成で開発を進めました。
弊社で他に展開しているアプリだと、レイアウトだけや一部の機能だけJetpack Composeを採用しているアプリがほとんどでFull Composeのアプリはなかった為、今回の開発を通じてFull Composeならではの設計や実装の知見が蓄積され、今後のアプリ開発にも活かせる貴重なナレッジを得ることが出来ました。
また、ClinPeerはFDLが求められるサービスでしたが、FDLは2025年8月25日に廃止される為、代替サービスとしてAdjustを採用しました。
そこでClinPeerにおけるAdjustの活用事例および実装例について、一部にはなりますが以下でご紹介します。
Adjustの活用事例と実装例
以下でご紹介する実装例はAdjustSdkを導入されていることが前提です。AdjustSdkの導入についてはこちらをご参照ください。
Adjustディープリンク(FDLの代替)
FDL同様にアプリ未インストール時にはストアページ、インストールされている場合はアプリを開くだけであればとても簡単です。
Adjustダッシュボード上のカスタムリンクから新規リンクの作成を進め、ユーザーの遷移先の設定でアプリをインストールしたユーザーの遷移先をアプリ内画面、サポートされているデバイスを使用するユーザーの遷移先をアプリストアに設定してリンクを作成します。
PC等アプリがインストール出来ない場合の遷移先はデフォルトではアプリストアとなっているので、PCから開いた時に特定のURLに遷移させたい場合は、「 フォールバックを追加 」からリダイレクトURLを設定するのがおすすめです。
カスタムリンクについて詳しくはこちらからご確認いただけます。
イベント送信
ClinPeerではイベント情報をFirebaseに送信していますが、Adjustにもイベントを送信しています。
Adjust上でもイベント送信することで流入元に応じたイベント計測や、設定したイベントを指標にした到達率の計測などが出来るようになります。
イベント設定もとても簡単で、Adjustダッシュボード上のイベントからイベント追加と進み、イベント名を設定してイベントを追加します。イベント追加時、ユニークイベントとして設定のチェックをONにすることで、デバイスで一度だけしかイベントが計測されないようにできます。
イベント追加後はイベントトークンが発行されますので、イベントを発火したい箇所で以下の通りにするだけでイベント送信が可能です。
val adjustEvent = AdjustEvent("abc123") Adjust.trackEvent(adjustEvent)
イベント送信について詳しくはこちらからご確認いただけます。
Androidアプリリンク
ClinPeerのアプリではブラウザ上での新規会員登録後のアプリ復帰でAndroidアプリリンクを用いており、Androidアプリリンクでの復帰時に会員登録情報をサーバ側と同期するようにしています。
この要件だけであればAdjustを用いずとも可能ですが、アプリ未インストール時やPCでの遷移先を制御したかった為、AndroidアプリリンクでもAdjustを活用しました。
活用するにはまず、Adjustダッシュボード上の対象アプリのAppView→Androidのプラットフォームから進み、Androidアプリリンクでディープリンクを設定のトグルをONに設定し、GooglePlayConsoleから取得したSHA-256 証明書フィンガープリントと任意のアプリスキームを設定して保存します。
それが完了したらAndroidManifest.xml
に以下を追加します。
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> <data android:host="設定したブランドドメイン.go.link" /> </intent-filter> </activity>
Adjustを用いない場合はこの後assetlinks.jsonファイルのホスティングが必要ですが、Adjustを用いた場合は自動でホストしてくれる為、とても手軽に進めることができます。
AndroidStudioのApp Links Assistantでデジタルアセットリンクの検証が問題ないことが確認出来たら、その後は設定したURLからアプリを起動することで、onCreate
またはonNewIntent
からディープリンク情報を取得できるので、取得した情報からハンドリングが可能です。
val data = intent?.data // ディープリンクに応じてハンドリング
Androidアプリリンクの設定について詳しくはこちらからご確認いただけます。
最後に
ClinPeerアプリ開発の裏側の第一回目の記事として、今回ClinPeer Androidアプリ開発の裏側とFirebase Dynamic Links(FDL)の代替であるAdjustの活用事例についてご紹介させていただきました。
今後もClinPeerアプリ開発に携わった多くのエンジニアがリレー形式でClinPeerアプリ開発の裏側を紹介していく予定ですので、お楽しみに!
是非読者になってください!
メドピアでは一緒に働く仲間を募集しています。 ご応募をお待ちしております!
■募集ポジションはこちら medpeer.co.jp
■エンジニア紹介ページはこちら engineer.medpeer.co.jp
■メドピア公式YouTube www.youtube.com
■メドピア公式note
style.medpeer.co.jp