Skip to main content

Mobile

Overview

アプリのアーキテクチャをまとめたセクション。

アプリスキーマ(ディープリンク)とは

ディープリンクとは?仕組みやAndroid・iOSでの作り方を徹底解説!

LINEのクーポンと押すとアプリが開く、X(旧Twitter)のソシャゲ投稿のリンクを踏むとゲームが起動するなど、Webページからアプリに飛ぶリンクのことを「ディープリンク」という。

  • スキーマ (app-schema-test://)
    • https:// やhttp:// の代わりに、カスタムURLスキーマを定義。これにより、Webページからアプリに戻ることが可能になる。
    • 例えば、app-schema-test://callbackにリダイレクトすると、app-schema-test:// を登録したアプリが起動される。
info

本来のアプリは独立したプログラムであり、Webページからアプリに移動するような機能はなかった。
だがURLを構築する「スキーム」「ホスト」「パス」を、それぞれアプリ内で動作するよう指定するように組み込んだ結果、ディープリンクが実現できるようになった。

アプリの設定変更

アプリ名

ホーム画面に表示されるアプリ名はiOS/Androidネイティブ部分の設定。

アプリアイコン

iOS

デフォルトではさまざまなサイズのアイコン画像を要求される。
xや3xなどのバリエーションは、Flutterのアセットと同じくディスプレイの解像度によって使い分けられる。
大きな画像を1つ指定して自動的にリサイズさせることも可能で、右側のインスペクタで「Single Size」を選択する。
この場合、細かな線が消えてしまうこともあるので注意。

Android

Androidのアイコンはシンプルな画像のほか、バックグラウンドとフォアグラウンドの2つのレイヤで構成されるアダプティブアイコンと呼ばれるものがある。
アダプティブアイコンはOSバージョン8.0以降で導入され、Androidのモデルによってアイコンの表示が変わる。
円形、角丸四角形、操作によってアイコンだけが動いて見えるアニメーションが加わるなどさまざま。
アダプティブアイコンの作成は任意だが、設定されているとアプリのブランディングに役立つ。

スプラッシュ画面

スプラッシュ画面とは、アプリ起動時に一瞬表示される画面のこと。

iOSとAndroidで異なるスプラッシュ画面の位置付け

スプラッシュ画面はiOSとAndroidで位置付けが異なる。
iOSはアプリがすばやく起動することを重視している。
アプリの最初の画面と似たスプラッシュ画面を表示することで、すばやく起動したように感じさせることが推奨されている。
表示時間をコントロールできない。 表現やブランディングの機会ではなく、文字を含めることは避けるようにガイドラインで定められている。

一方、Androidのスプラッシュ画面はアプリアイコンを中央に表示する標準レイアウトが提供され、ブランディングを意識して、アニメーションや色をカスタマイズ可能となっています。表示時間をコントロールすることも可能。

アプリID

iOSもAndroidもそれぞれアプリを一意に識別するIDがある。

  • iOSはBundle ID
    • Identifiersと呼ばれている
  • AndroidはApplication ID

このIDは他のアプリと重複しないように自分が所有するドメインを逆順にしたものを使用するのが一般的。
たとえば、所有するドメインが example.com であれば com.example.myapp のようになる。

tip

プログラムがまったく同じアプリでもアプリIDが異なると別のアプリとして扱われる。
これを逆手にとり、検証環境のサーバに接続するアプリと本番環境のサーバに接続するアプリを1台の端末に共存させることができる。

  • アプリIDが異なれば、OSは「別アプリ」と認識する

  • そのため、本番環境と検証環境を同時にインストール可能!

  • 実際の開発やリリース作業で活用されるテクニック

  • com.example.myapp → 本番環境アプリ

  • com.example.myapp.dev → 開発環境アプリ

    • (中身は同じアプリだけど、IDが違うので別アプリ扱い)

OSから見ると「別アプリ」になるため

  • それぞれのアプリは個別にインストールされる
  • それぞれのデータ(キャッシュや設定など)も別々に管理される

アプリIDの変え方

  • iOS: Xcode の General → Bundle Identifier
  • Android: build.gradle の applicationId

上記を変えるだけで、OS上では別アプリとして認識される。

アプリ配布

App StoreやGoogle Play Storeでアプリを配布するには、アプリにデジタル署名をする必要がある。

秘密鍵を使ってアプリに署名し、その秘密鍵とペアになる公開鍵の証明書をアプリの中に埋め込む。
こうすることで、アプリが改ざんされていないか検証できる。

iOSとAndroidとで証明書の取り扱いがまったく異なり、Flutterエンジニアにとっては敷居が高いものとなっている。
なお、AppleとGoogleの開発者アカウントが必要となる。
Appleの開発者アカウントとGoogleの開発者アカウントはそれぞれ以下から登録できる。

コード署名

コード署名とはアプリの開発元が正しく、配布されたアプリが改ざんされていないことを証明するしくみ。
秘密鍵を使ってアプリに署名し、その秘密鍵とペアによる公開鍵の証明書をアプリの中に埋め込む。
こうすることでアプリが改ざんされていないか検証することができる。

アプリ公開に必要なもの

iOSの場合

  • Apple Developer Program(年額$99)
  • Xcode
  • App Store Connectアカウント
  • アプリの署名(証明書・プロファイル)
  • flutter build ios + XcodeでアーカイブしてApp Storeにアップロード

Androidの場合

  • Google Play Console($25の登録料)
  • Android Studio
  • flutter build apkまたはflutter build appbundleでビルドしてGoogle Playにアップロード

アプリ開発でのFirebase使用

Firebaseは、Flutterアプリを開発・運用する上で便利な機能を提供する。

  • Firebase Authentication
    • Google, Apple, Emailなどのログイン機能を提供
  • Firestore / Realtime Database
    • クラウドデータベース
  • Firebase Hosting
    • Webアプリのホスティング
  • Firebase Cloud Messaging (FCM)
    • 一般的にプッシュ通知を送信したい場合は利用するサービス
  • Firebase Crashlytics
    • クラッシュレポートの収集
  • Firebase Analytics
    • ユーザー行動の解析

Resource