iOSDC Japan 2021 トーク一覧

採択 他イベントOK レギュラートーク(20分)

バーチャル背景を導入しよう

BOBG1018Vi ぼぶ BOBG1018Vi

新しい生活様式になってから約二年が経とうとしています.その中で,アプリやサービスを通して人とお話する機会が非常に増えてきました.これに伴い,通話アプリの種類は会議からタレントとの交流まで多岐に渡るものとなりました.そしてこれらのアプリには,「背景を隠せるようにしたい」「専用の背景を提供したい」「コラボコンテンツを提供したい」といった機能のニーズがあるかと思います.

本トークでは,バーチャル背景の実現方法を2つご紹介いたします.また,これらの方法は,既に本番プロダクトに導入済みであり,実現方法に加えて,本番導入に伴うtipsもご紹介したいと思います.

具体的には,

ARKitを使った方法

  • バーチャル背景の実現方法
  • パフォーマンス周り
  • 他の手段とのメリデメ
  • 副次的に得られそうなメリット

CoreMLを使った方法

  • バーチャル背景の実現方法
  • パフォーマンス周り
  • 他の手段とのメリデメ

本番プロダクトに導入する際のtips

  • 開発
  • 申請

皆様の体験向上に貢献できれば,幸いです.

6
採択 他イベントOK レギュラートーク(20分)

僕たちが『Appのプライバシーに関する質問への回答』そして『ATT』に対応するまでの物語

FromAtom FromAtom FromAtom

2020年末、僕たちは「Appのプライバシーに関する質問への回答」の準備に追われていた。この情報が出た当時「アプリ担当者が、収集データと使用目的を調べれば良いよね」と呑気に構えていた僕は、同僚の発言で目が覚めた。

「集めたデータを別チームが分析に使っていたら、どうすれば良いんでしょう?」

弊社の提供する6つのiOSアプリから収集された様々なデータは、BigQueryとLookerが完璧に整えられた社内を縦横無尽に飛び交っていた。このデータ全ての流れを、利用目的を、利用部署を知っている人はいるのか。このトークでは1つ目のトピックとして、この調査プロジェクトについて話そう。


年は明けて2021年、なんとか「Appのプライバシーに関する質問への回答」を終えた僕たちは、広告SDKの更新やATTモーダルの実装を終え、iOS14.5にあわせて無事にリリースしていた。そして数週間後、一通のリジェクト通知が届く。

「XXXをトラッキング目的で使っているなら、ATTで許可をとりなさい。」

そのときようやく気がついた。世間ではATTについて「IDFAを取得できなくなる」点のみ語られていたが、実際はすべてのトラッキング用データに関係していた。普通に考えればApp Tracking Transparencyという名前から分かることだ。同時に思い出した。弊社のBigQueryやLookerには、iOSだけでなく、Android、Webのデータが混在して収集されていることを。そして、一体どれがATTで許可を得たデータなのか、誰にもわからないことを。

このトークでは2つ目のトピックとして、ATTにちゃんと対応するために始まった横断プロジェクトについて話そう。

※このトークでは『この場合はこの対応をすれば正解』といった具体的な例は話しません。

7
採択 他イベントOK レギュラートーク(40分)

Combine を使ったコードのテストを Scheduler で操る方法とその仕組み

kalupas0930 アイカワ kalupas0930

WWDC は async/await で盛り上がっていて Combine ロスなので、Combine について発表したいと思います。

Combine は複数のイベントを扱うのが楽だったり、debounce operator などを利用した時間を制御するような処理も容易に記述できるので、有用なシーンはまだまだあると個人的には思っています。
しかし、Combine を使って時間の制御などを行い始めるとテストが難しくなっていきます...

このトークでは、そんな Combine を使ったコードのテスト方法と仕組みについて以下のような内容で発表したいと思っています。

・ViewModel 内で Combine を利用するコードの基本的なテスト方法
・combine-schedulers というライブラリによって Combine の時間を操りテストを劇的に改善する方法(より正確なテスト・テストの実行時間の削減が可能)
・combine-schedulers の仕組み

発表で紹介させて頂く combine-schedulers は、最近話題になっている The Composable Architecture(TCA) や isowords の作者である Point-Free さんが作っているライブラリで、TCA との相性も良かったりします。

しかし、このライブラリは TCA には依存しておらず、TCA を利用していないコードでも十分に効果を発揮できるものになっています(本トークも TCA に依存しない形式にします)。

さらに、このライブラリには他にも様々な機能があります。
特に UIKit や SwiftUI のアニメーションを操る機能もあるのですが、時間に余裕があれば紹介させて頂きたいと思っています!

12
採択 レギュラートーク(40分)

宣言的UIの状態管理とアーキテクチャ - SwiftUIとGraphQLによる実践

sonatard そな太 sonatard

SwiftUIではViewが状態を持たなくなることによりシンプルにコードでUIを表現できるようになりました。
しかし状態がなくなったわけではありません。この状態をどう管理していくかが問題になります。

宣言的UIコミュニティでは、状態管理手法について数年さまざまな議論を経て変化を遂げてきました。
その中で一定の答えが出ようとしています。その歴史と現在の回答を説明したいと思います。

本発表でみなさんがシンプルでスケーラブルなコードにより高速にiOSアプリを開発できる体制を構築するお手伝いができたらと考えています。

この発表では、以下について解説します。

  • なぜ状態管理のアーキテクチャを考える必要があるのか?
  • 宣言的UIの状態管理アーキテクチャの歴史(Flux、Redux、GraphQL)
    • Fluxが提案された根本的な理由と現代における異なる解決手段
    • Redux(The Composable Architecture)のボイラーテンプレートと正規化の課題
  • コンポーネントとカプセル化
    • 状態とは何か?
    • 2つのSingle Source of Truth
    • Lifting State Up(State Hoisting)
    • Reducerの必要性
    • 状態の種別と管理方法、状態における新たな認識と捉え方
  • 宣言的UI(SwiftUI)と宣言的データフェッチング(GraphQL)によるシンプルなアーキテクチャの実現
    • なぜAPI仕様であるはずのGraphQLが状態管理に関係するのか、クライアントキャッシュ
    • GraphQLとViewModel
    • Fragment Colocationによるスケーラブルな開発
    • RESTのためのクライアントキャッシュ
7
採択 他イベントOK レギュラートーク(40分)

App Store用スクリーンショットの自動生成をアラビア語対応してSwiftUIで実装してみた

ainame 生井智司 ainame

みなさんがApp StoreでiOSアプリを探す際には必ずスクリーンショットを見てUIの良し悪しやアプリの機能などのイメージを掴んでからアプリをダウンロードするのではないでしょうか。App StoreのスクリーンショットはiOSアプリを運営していく上で重要な要素です。アプリの対応言語が1言語の場合は、デザイナーが1から丁寧にデザインして仕上げてくれたものを利用することも多いかと思いますが、これが言語の数や対応画面サイズが増えていくと、その必要数が爆発的に増え、対応コストが跳ね上がることになり人手での定期的な更新は難しくなります。

既知の解決策としてfastlaneというツールのsnapshotとframeitを利用することで、ある程度決まった定番のデザインでこのスクリーンショットを自動生成することが出来るのですが、とある理由から私が業務で開発しているアプリ(20カ国・言語以上のApp Storeのローカライズ対応済み)では採用出来ませんでした。それはframeitではRTL(Right-To-Left)言語であるアラビア語などが対応していなかったことや言語毎のフォントの準備やサイズの調整が難しかっためです。

この発表ではApp Store向けのスクリーンショットを多言語化して運用していく上での課題となる点を触れ、snapshotとframeit相当の処理を自前のSwift製のCLI実装する際に得た知見や、SwiftUIを画像のレンダリングエンジンとして活用する利点などについて紹介したい思います。

6
採択 レギュラートーク(40分)

Swift 5.5 async/await を支えるモナド、継続、コルーチン

inamiy 稲見 泰宏 inamiy

従来の iOS アプリ開発では、主に Grand Central Dispatch を用いた非同期計算(イベントループ、マルチスレッド、マルチコア)と、
それらの処理をパイプライン合成可能な単位にラップしたリアクティブプログラミングが主流でしたが、
Swift 5.5 の登場により、いよいよ言語仕様としての async/await と Structured Concurrency が導入されます。

普段、私たちが Swift プログラミングで書く同期的なコードが、 async/await キーワードを付けるだけで、いとも簡単に非同期のコードに変換できてしまう。
さらに、協調的マルチタスクによって、スレッドを大量消費したりブロッキングすることなく、実行途中の関数を一時停止したり再開できる。
まるで魔法のようにも見えるこれらの仕組みですが、その裏側は一体どのように動き、解釈できるのでしょうか?

理論的背景からコンパイラ・ランタイムの実装に至るまで、テーマが非常に多岐に渡るとても奥深い領域ですが、
今回の発表では主に前者について、関数型プログラミングの観点から解説を試みようと思います。

重要なキーワードは、ずばり「モナド」「継続(コールバック)」「コルーチン」。

関数型プログラミング界の三銃士を連れながら、皆様の心の中の継続を呼び起して協調的な発表になるよう目指します。

16
採択 他イベントOK レギュラートーク(20分)

100日間AR表現を実装して見つけた面白い実装を全力解説

shmdevelop 服部 智 shmdevelop

ARKitは進化を続けていて表現できる内容も年々増えています。
LiDARセンサーやiOSの機能と連動して、少し工夫することで面白い機能が実現できます。

私は100日間AR表現実装チャレンジを通して多様なAR表現を実装してきました。
その中で「これは面白い!」と人に伝えたくなる実装がいくつか出てました。

  • LiDARで認識した世界にカラーボールをぶつけて色付け
  • リアルタイム顔ペイント
  • BlotterMedia風身体エフェクト
  • AR謎解き
  • 視線トラッキング

眠らせておくにはもったいない実装の数々を熱く紹介していきます!
聞いた人がワクワクするような内容になるはず。

Swift、ARKit、SceneKit、Metal Shader Languageなどを中心にした実装。
デモとコード解説を軸に、AR表現に興味を持った人がさらに興味を持つようなセッションです。

1
採択 他イベントOK レギュラートーク(20分)

App Size Optimizationへの挑戦

皆さん、こんな経験はありませんか?

  • App Storeのアプリページに流入するユーザがインストールしてくれない
  • インストール後に何故かアプリを起動してもらえない

ネイティブアプリの広告業界にはApp Store Optimization(ASO)という言葉がありますが、App Size Optimization=アプリサイズの最適化は1つの重要なファクターになっています。

大容量プランが出てきたとはいえ、マスユーザーは常に低速回線、ギガ数の残りと戦ってるのです。

このセッションでは実際にリリースから7年経ってFat IPAとなってしまったアプリを25%以上のサイズ圧縮を行なっていった中で実際に挑戦して効果があったこと、なかったことをお伝えします。

また、App Size Optimizationは圧縮してから始まるといっても過言ではありません。実際に大きな機能をリリースする中で徐々に太っていくことを防ぐことはできるのでしょうか?

アプリサイズが大きくなっていくことを防ぐために私たちが考えたこと、運用上で効果的なアイデアもお伝えします

3
採択 他イベントOK レギュラートーク(20分)

PickGo for Partnerの移行方法から学ぶ 既存のネイティブアプリをFlutterへリプレイスする方法

entaku_0818 遠藤拓弥 entaku_0818

PickGo for Partnerは配送ドライバーのためのアプリとして2015年からiOS/Androidアプリを提供しています
そして2021年5月にFlutter化とFlutter版への完全移行を実施しました。
WebViewを利用しており、計画的には問題なく移行できる想定ではあったものの、既存で今もなおユーザーが利用しているアプリを移行するということはとても大変なもので技術力と精神力を大きく使ったと振り返ると思います。今回この移行で培った知見をまとめて皆様に共有することで、同じようなことをする方がより省力で移行が実現できるようにまとめたものです。

2
採択 他イベントOK LT(5分)

あなたの知らないSafariのExperimental Featuresの世界

ikkou HEAVEN chan / ikkou ikkou

Safariには、設定 → Safari → 詳細 → Experimental Featuresという、そこそこ深い場所にある「実験的なWebKitの機能」に、文字通りSafariの標準機能には組み込まれていない実験段階の機能が羅列されています。普段気にしている方はそう多くないかもしれませんが、オフになっているものをオンにすることで動作するようになる機能もありますし、その逆もまた然りです。

本トークでは正式版が公開されている“iOS 14.x”時点の「実験的なWebKitの機能」の概要を眺めながら、特に注目の機能について解説します。
なお、もしもiOSDC Japan 2021当日以前に“iOS 15”がリリースされた場合は、質疑応答や公開資料の中で補足します。

ちなみにAR的な観点から現時点で最も注目している実験的な機能は“HTML <model> element”です!!

3
採択 他イベントOK LT(5分)

最強の500系エラー画面を探し求めて

akatsuki174 akatsuki174 akatsuki174

メンテナンス時や障害時など、アプリ側で500系エラーが表示されてしまう場面はあると思います。そんなとき「情報を伝えているようで、何も伝えていない画面」ではなく、ちゃんと意味のある画面を表示したいですよね。

ではどんな要素を表示したらそのような画面を作ることができるのでしょうか。私はそれを解明すべく、約半年に渡ってTweetDeckに「鯖落ち」検索タブを常設しました。「○○が鯖落ちしてる」というツイートを見かけたら該当のアプリを起動してスクショ撮影。もし未インストールのアプリだったらアプリをインストールするところから開始。そうして集めたエラー画面のスクショたちからは、様々なことが学び取れました。

そこで、本発表では次の事項について説明したいと思います。これを元に500系エラー画面を刷新すれば、きっとユーザはよりあなたのアプリを好きになってくれる、はず。

・「イケてない」500系エラー画面とは
 ・なぜイケてないのか
・「親切な」500系エラー画面とは
・私達はどのような500系エラー画面を作るべきか

※発表の中では具体的なサービスのエラー画面スクショは使用せず、あくまで要素の紹介に留めます。

9
採択 他イベントOK LT(5分)

M1チップの脆弱性M1racleを読み解く

lovee 星野恵瑠 lovee

WWDCの直前に、いきなりアップルのM1チップにM1racleと名付けられた脆弱性の話が出てきました。

簡単にどんな脆弱性かを説明しますと、M1チップでは、任意の二つのアプリがCPUの管理外で、独自で秘密なチャンネルを構築し、交信できるということです。しかもこれハードウェアの脆弱性なので、そもそものハードウェアの設計を変えない限りどうにもできない、つまり既存のM1チップのMacやiPad Proは全てどうにもならない、ということです。

え?やばくね!??どうしようどうしよう!!

このLTは、その発見者にM1racleと名付けられた脆弱性の発見や対策などについて話します。

注:大事な話なので2回言います。このトークは技術の話はしません!このトークは技術の話はしません!!

採択 他イベントOK LT(5分)

Hacking the Tesla API

wa_kinchan きんちゃん。 wa_kinchan

Teslaのハードウェアとソフトウェアの洗練さは、まさに車業界のAppleですよね!
エンジニアなら、誰しも憧れで一度は乗ってみたい、触ってみたいですね?
ちまみに、わたしは持ってません。
このプロポーザルが採択されたら、弊社NOT A HOTELの社長のTesla Model Xを借りて乗ってみようと思います。
Unofficialですが、Tesla APIを使ってハックして遊びます。
以前はFlutter appで自社アプリに組み込んで遊んでみました(Twitter参照)が、SwiftUI nativeなアプリへ移植を試みます。
https://twitter.com/wa_kinchan/status/1366964772894203904?s=20

6
採択 他イベントOK LT(5分)

SwiftUI.Textを使いこなす5分間

n_atmark あつや n_atmark

皆さんSwiftUI.Text使ってますか?

SwiftUI.Textには知っていると便利な機能がいくつか存在していて、例えば

Text("iOSDC Japan")
+
Text("2021").fontWeight(.bold)

このように書いて、Textを結合することができたりします(これはSwiftUI.Textに public static func + (lhs: Text, rhs: Text) -> Text が定義されていて、Textの結合ができるようになっています。)

このLTでは、SwiftUI.Textに存在する不思議な(面白い)挙動をする機能について紹介します。

1
採択 他イベントOK LT(5分)

iOS 15以降のNotificationのあり方について考える

haseken_dev haseken haseken_dev

みなさま、notificationは利用されていますでしょうか。
私もappで提供する機能の一部として動作させる、マーケティングで活用するなど、様々な用途で利用してきました。

一方で、必要ないタイミングで通知した、あるユーザーにとって不要な情報を配信してしまったなど、
意図せずユーザー満足度を下げてしまうこともあったかと思います。

そんな中、WWDC21にて多くの新機能が発表されました。
集中モードやNotification summaryでnotificationの受け取るタイミングなどをユーザー自身が制御可能となり、
Interruption Levelにより、配信時の挙動がより細かく定義されました。

これにより、これまでの配信内容を見直す必要性が出てきており、
今までと同様では期待する効果を得るどころか、
ネガティブな印象を与えてしまい、appがアンインストールされるなどの可能性も出てくるかと思います。

本LTでは、新機能をおさらいしつつ、今後どのような影響が考えられるか、
またiOS 15以降のnotificationのあり方についてこれまで通知してきた内容を基に考察していきます。

[想定する方々]
・notificationをマーケティングなどで利用している方々

[ゴール]
・次の日からすぐにiOS 15リリース後のnotificationについて検討が行える

[アジェンダ](検討中)
・これまでのnotificationについて
・WWDC21で追加された新機能
  ・Notification summary
  ・集中モード
  ・Interruption Level
・iOS 15リリース後に想定される影響について
・iOS 15リリース以降のnotificationの内容について考察

8
採択 LT(5分)

Nearby Interactionを利用した空間認識

yoshimi

今年の4月、Apple製の紛失防止タグ「AirTag」が発売されました。
AirTagはUWB(超広帯域無線通信)技術が使われていて、高い精度で位置を検知することができます。
このUWB技術を使った空間認識を開発者でも使えるようにするフレームワーク Nearby Interaction について紹介したいと思います。

  • Nearby Interaction フレームワークの使い方
  • Nearby Interaction フレームワークの使用例
  • Nearby Interactionがサードパーティ製アクセサリをサポート(iOS15~)
4
採択 LT(5分)

5分でわかるIDFA / ATT

koooootake 神武 koooootake

みなさん、IDFAとは何者か知っていますか?ATTはどのように表示していますか?

2021年4月末にリリースされたiOS14.5から、AppTrackingTransparency(ATT)のリクエストをしない場合、IDFAの共有がデフォでオフになる仕様に変更されました。これはユーザがプライバシー情報の開示をコントロールするために欠かせない変更となりますが、ATTはどのように表示すべきか、代替手段はあるのか悩む人は多いはず。

そこで、このトークでは
・IDFAとは
・ATTの表示タイミングや事前確認ポップアップを試行錯誤して実装した結果Appleにリジェクトされた戦績
・代替手段のSKAdNetworkの解説
を5分で面白くお伝えしようと思います。

7
採択 LT(5分)

やってみよう!iOSDCデザインスポンサー!

FromAtom FromAtom FromAtom

ありがたいことに、ピクシブ株式会社では2年連続でデザインスポンサーをおまかせいただきました。他のスポンサー枠とは毛色が異なる「デザインスポンサー」。みなさんの企業・団体・個人でもデザインスポンサーをして、iOSDCを自分色に染めてみませんか?

このトークではデザインスポンサーをやってみたい方たちの参考になるように、

  • デザインスポンサーがやること
  • デザインスポンサーのスケジュール感
  • デザインスポンサーを引き受ける"前"にやっておくこと
  • デザインスポンサーの難しさ

についてお話します。

採択 他イベントOK レギュラートーク(20分)

初めてのハードウェア対応

_ykkc Takeshi Yokokoji _ykkc

私たちのチームは今年の6月に新規レジアプリ「STORES レジ」をリリースしました。
世の中でお会計の際に使われているレジですが、レジの機能をアプリで置き換えるためには様々な周辺機器との連携が必要でした。

例えばSTORES レジではこんなハードウェアに対応しました。

  • レシートプリンター
  • バーコードリーダー
  • キャッシュドロアー
  • クレジットカード / 電子マネー決済端末

このトークでは具体的な対応内容や苦労した点、ハードウェア対応の全体像などをご紹介させていただきます。

コンテンツ

  • ハードウェア対応の概要
  • CoreBluetooth Framework の使い方と具体的な実装例、ハマったところ
  • External Accessory Framework の使い方と具体的な実装例、ハマったところ
  • MFi登録申請の概要と流れ、弊社での具体的な対応例
  • ハードウェア対応で苦労したこと

ハードウェア対応?そんな仕事しないし...と思っているそこのあなた!
いつかあなたのプロジェクトにもハードウェア対応が必要になるかもしれません!
そんな時に役に立つTipsをお話しします!

2
採択 他イベントOK レギュラートーク(20分)

iOSアプリ開発者がテスラを買って色々調べたりアプリを作ったりしつつまだ見ぬApple Carを想像する

kenmaz kenmaz kenmaz

巷ではApple Carが自動車業界の大変革を起こすのではと噂されていますが、そんな未来をちょっとだけ先取りして体験できるのが「テスラ」です。私はiPhoneが登場した時のような衝撃を受け、気づいた時にはテスラモデル3の購入ボタンを押していました。テスラ車にはテクノロジーに興味のある方なら誰もが興味を持つであろう機能が盛り沢山です。また、非公式ながら車体の情報を取得・操作するためのAPIや、ハードウェアの情報にアクセスするためのインターフェースが備わっていたりと、ソフトウェア開発者がテスラ車自体を拡張する余地がいくつかあります。「このAPIを使えば楽しそうなことができそうだな」とワクワクしながら考えることは、我々モバイルアプリエンジニアの最も得意とするところかと思います。このトークでは、実際にテスラを購入していじくり倒して得た知見をご紹介します。このトークを通じてテスラの面白さを知ってもらいつつ、まだ見ぬApple Car OS(?)アプリ開発の世界について色々と想像してみましょう。

アウトライン(検討中)

  • テスラモデル3自体とその先進的な機能群についての紹介
  • 非公式のTesla APIを使ったiOS/Apple Watchを開発し実際にリリースした話
  • Tesla API の詳細
  • 全ての走行データが蓄積されるのでログ好きにはたまらない話
  • Webブラウザも備えているのでなんでもありな話
  • 車載カメラに記録された動画でいろいろ遊べる話
  • Apple Carを想像する
8