Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AppClip × Yappli

AppClip × Yappli

--- 1 ---
AppCilp × Yappli というタイトルで、Yappli のアプリプラットフォームで App Clip を実装した話します。よろしくお願いします。
--- 2 ---
ヤプリで iOS エンジニアをしています、三宅と申します。
僕はヤプリが 3 社目で、Yahoo、BANK の 2 社でサーバーサイド、フロントエンド、モバイルを経験してヤプリにジョインしました。
よろしくお願いします。
--- 3 ---
今日のアジェンダですが
実装背景や大変だったところ、プラットフォーム特有の課題をお話しつつ最後まとめの流れでできればと思います。
--- 4 ---
まずはおさらいで App Clip とは何かですが、
--- 5 ---
アプリをインストールしていなくてもサービスの一部の体験をユーザーに素早く提供できる iOS 14 で公開された新機能です。
フルパッケージをインストールしてやっと体験してもらえるアプリのコンテンツを、インストールせずともミニマムに体験してもらえるので、とても魅力的な新機能です。
--- 6 ---
App Clip の実装を行なった背景ですが、
--- 7 ---
フルパッケージをインストールせずともコンテンツの一部を体験してもらう新しいタッチポイントとなるため、素早くミニマムに体験してもらえたり、App Clip からアプリインストールへの流入に繋がるなどメリットがあります。
また、新しい技術が既存の仕組みとどう親和するかや、プラットフォームへ機能化するにあたっての課題洗い出しもできればという背景から実装に着手しました。
--- 8 ---
それっぽいことを話したのですが、ノリで始めたところもあり、「やってみたい」という気持ちが先行していたところもあります。
ヤプリでは可能な範囲で新しいことに挑戦できる環境で、今お話している App Clip もそうですが、Widget や SwiftUI もミニマムで導入してみるなど積極的に行っています。
--- 9 ---
まずは完成したものをご覧ください。
--- 10 ---
今回はQRコードのみの対応ですが、QRコードを読み取って App Clip を起動しています。
既存の画面を App Clip 経由で表示する方向で実装を進めました。
--- 11 ---
実装上大変だったところですが、実装済み機能を App Clip で提供したので、既存実装との親和性の面でいくつか躓きました。
--- 12 ---
大きく Socket Stream が利用できない点と、こちらについてはよく知られている 10MB 未満の制約の2点で躓きました。
まず Socket Stream が利用できない点ですが、もともと gRPC を利用していたので、この実装を変更する必要があり、急遽 REST 形式の API に変更対応を行いました。App Clip 対応の画面を新規で実装する場合には、事前に通信方式を確認しておきましょう。
また、App Clip のサイズは 10MB 未満にしなければならないという制約があります。既存のクラスに根深く紐づいていたので、Objective-C 時代の Base クラスから剥がして、不要なコードが App Clip のターゲットに含まれないように対応を行なったり、不要なリソースファイルを削除することで、10MB 未満になるように調整を行いました。
App Clip のサイズ確認にはいくつか方法があり、App Store Connect へアップロードするときに走るサイズバリデーションを確認したり、Xcode でサイズレポートを生成したり、CI でサイズレポートを自動生成することもできます。
アプリサイズレポートの生成については、Apple のドキュメントが用意されているので参照してみてください。
その他今回は影響がありませんでしたが、Enterprise で利用できないなど App Clip にはいくつか制約があるため、確認しておきましょう。
--- 13 ---
つづいてプラットフォーム特有の機能化にあたっての課題をピックアップして紹介します。
--- 14 ---
実際には書かれていること以上にありますが、特有の課題でいうと App Store Connect に App Clip 用の設定項目が追加されたことが大きくひとつ挙げられるかと思います。
運用しているアプリは、App Store Connect での申請情報を CMS で事前に設定し、ビルド時に API を利用して自動で登録や更新をしています。そのため、機能化して運用するためには、新しく追加された App Clip 用の設定を CMS に追加する必要があります。更には、ビルド時に自動で App Store Connect に登録されることが好ましいです。しかし App Store Connect API では App Clip 関連の API が提供されていないので、機能展開するとなると、弊社の場合は 600 以上のアプリのビルドで App Clip の情報設定を手動で行う必要があり、現実的ではありません。(機能提供を現実的に行うのはもう少し先になりそうです。)
1度手動で登録してしまえばあとは変更のタイミングだけ手動で行えばよいというのも、新規申請アプリが多くなるほど運用コストがかかってしまうため、プラットフォームとしての機能提供を現実的に行うのはもう少し先になりそうです。
--- 15 ---
今回の検証実装を経て、既存設計との親和性やプラットフォームとして機能提供するにあたっての課題がいくつか見えてきました。
アプリだけの実装に止まらず、CMS やビルド周辺の対応、apple-app-site-association ファイルの管理など必要な対応が多々あります。
今後のニーズと課題の解決次第で、App Clip の機能化など検討できればと思っています。
--- 16 ---
ご清聴ありがとうございました!

0d568ed3303bf0c47e2e9c456a9b15c9?s=128

Atsushi Miyake

October 28, 2021
Tweet

Transcript

  1. "UTVTIJ.JZBLFJ04&OHJOFFS "QQ$MJQ :BQQMJ "QQ$MJQ :BQQMJ

  2. ࣗݾ঺հ ໊લ ࡾ୐ಞ࢙ "UTVTIJ.JZBLF UXJUUFS !UTVTIJ ܦྺ :BIPPɺ#"/, ɾ4FSWFS4JEF,PUMJO ɾ4XJGU

    ɾ/VYUKT झຯ υϥϜɺԻָ ήʔϜ ೣͱ༡Ϳ
  3. ΞδΣϯμ       "QQ$MJQͱ͸ ࣮૷എܠ ׬੒ͨ͠΋ͷ

    ࣮૷Ͱେมͩͬͨͱ͜Ζ ϓϥοτϑΥʔϜ΁ͷػೳԽͷ՝୊ ·ͱΊɾల๬
  4. "QQ$MJQͱ͸🤔

  5. "QQ$MJQͱ͸ ΞϓϦΛΠϯετʔϧ͍ͯ͠ͳͯ͘΋ αʔϏεͷҰ෦ͷମݧΛϢʔβʔʹఏڙͰ͖ΔJ04Ͱެ։͞Εͨ৽ػೳ

  6. ࣮૷എܠ

  7. ࣮૷എܠ ɾΠϯετʔϧ͍ͯ͠ͳ͍Ϣʔβʔ΁ͷ৽͍͠λονϙΠϯτ ɾٕज़ݕূ΍ϓϥοτϑΥʔϜ΁ͷػೳԽͷ՝୊ચ͍ग़͠

  8. ࣮૷എܠ ࣮ࡍ͸ϊϦͰ࢝Ίͨ෦෼΋͋Δ

  9. ׬੒ͨ͠΋ͷ📱

  10. None
  11. ࣮૷Ͱେมͩͬͨͱ͜Ζ😵

  12. ࣮૷Ͱେมͩͬͨͱ͜Ζ ɾ"QQ$MJQͰ4PDLFU4USFBN͕ར༻Ͱ͖ͳ͍ H31$͔Β3&45"1*ʹมߋ ɾ.#ະຬͰύοέʔδ͢Δඞཁ͕͋Δ $SFBUJOH"QQ4J[F3FQPSU "VUPNBUFUIF(FOFSBUJPOPGUIF"QQ4J[F3FQPSU IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOYDPEFSFEVDJOHZPVSBQQTTJ[F 5JQT &OUFSQSJTFͰͷ഑৴͸ "QQ$MJQΛར༻Ͱ͖ͳ͍

  13. ϓϥοτϑΥʔϜ΁ͷػೳԽͷ՝୊📚

  14. ϓϥοτϑΥʔϜͱͯ͠ͷػೳԽͷ՝୊ "QQ4UPSF$POOFDUʹ"QQ$MJQ༻ͷઃఆ߲໨͕૿͍͑ͯΔ ՝୊ ࣮૷ྖҬ "QQ$MJQ༻ΞΠίϯ͕ඞཁ "QQ$MJQ$BSEͷ৘ใ ଟݴޠ͝ͱʹ  ɾλΠτϧ ɾαϒλΠτϧ

    ɾը૾ $.4 $.4 $.4Ͱઃఆͨ͠"QQ$MJQͷ৘ใΛ "QQ4UPSF$POOFDU΁൓ө Ϗϧυ
  15. ·ͱΊɾࠓޙͷల๬

  16. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠🙇