レギュラートーク(20分)

インライン展開の深層解析

hokuron hokuron

インライン展開は、iOSアプリのパフォーマンスを向上させるための重要な最適化技術です。
このトークでは、インライン展開が実際にどのように行われているのかを、アーティファクトや中間言語を通じて詳しく解析します。

また、実際に運用されているコードを用いて、インライン展開の効果とその背後にあるメカニズムを具体的に解説します。
あまり親しみがない機能かもしれません。このトークを通じてインライン展開の基本的な理解と実践的な知識を得て、ご自身のアプリに組み込むきっかけとなれば幸いです。

採択
2024/08/23 15:40〜
Track B
レギュラートーク(20分)

iPhoneへのマイナンバーカード搭載におけるデータ規格についての理解を深める

shindyu shindyu

5月に発表されたように、Appleウォレットでマイナンバーカードを利用できるよう準備が進められています。
このトークでは、iPhoneにマイナンバーカードを搭載する際に重要となる以下の点について詳しく解説します。

  1. モバイル運転免許証の国際標準規格「ISO 18013-5シリーズ」
  2. デジタル身分証明書の国際標準規格「ISO 23220シリーズ」

これらの規格についての理解を深めるとともに、関連するAPIや実装方法についても紹介します。
このトークを通じて、iPhoneでのマイナンバーカードの利用に関する技術的な知識を習得し、
実際の開発や実装に役立てたり、デジタル身分証明書の未来を想像するきっかけになれば幸いです。

10
レギュラートーク(20分)

論理条件を表すPredicateの罠

rila_____ rila

Predicate は true/false を返す論理条件です。
コレクションのフィルタ、検索に利用されます。SwiftDataのフィルタにも利用されています。

このPredicate論理条件の中身は &&, ||, =, <= など見慣れた論理式や、 allSatisfy() のようなシーケンスオペレーションが使えるため、ただの true/false を返すメソッドやクロージャのように思えてしまいます。
しかし、これをメソッドだと思って扱っていると思わぬ形でランタイムエラーに遭遇します。

このトークでは、PredicateマクロでPredicateの論理条件を書く時にはまった罠、注意点をお話しします。

2
採択
2024/08/22 18:45〜
Track C
レギュラートーク(20分)

続・SharePlayの歴史と進化:iOS18とApple Vision Proにおける新展開

tokorom 所 友太

iOSDC Japan 2023でご好評いただいた「SharePlayの歴史と進化」の続編です。

このセッションでは、iOS18でのSharePlayの進化や、今年ついに発売されたApple Vision ProでのSharePlayの利用方法について詳しく解説します。

20分のセッションでは、SharePlayの歴史を振り返りながら、iOS18での新機能やアップデート内容、そしてApple Vision Proでの実際の利用シーンを紹介します。SharePlayの最新情報にどっぷりと浸かることができる内容です。

具体的な内容は以下の通りです。

  1. SharePlayの歴史:初期のリリースから現在までの進化を概観します。
  2. iOS18でのSharePlayのアップデート:新機能や改善点を詳細に解説します。
  3. Apple Vision ProでのSharePlay:新しいデバイスでの具体的な利用シーンとその可能性について紹介します。

このセッションを通じて、SharePlayの新しい可能性や利用方法について深く理解していただけることを目指しています。ご期待ください。

3
レギュラートーク(20分)

複雑なインタラクションを伴うフリックカード機能を、SwiftUI化かつコンポーネント化した話

Sossui_Swift sosuiiii

[はじめに]
UIKitで作られた画面や既存機能をSwiftUI化する際に、
GeometryReaderや描画パフォーマンス、イベントの伝搬・連携、状態管理などで困った経験はありませんか?
この問題と正面からぶつかり、誰でも再現可能なシンプルなI/Fでコンポーネント化した経験を踏まえたお話をさせてください。
※Introspectなどのライブラリは未使用

[背景]
10年続く弊社プロダクトでは、InterfaceBuilderを使ったフリックカードの構成が限界を迎えていました。
「施策に追従するための実装コスト」や「AIを使った最適化」のハードルはエベレスト級で、
若手の多い弊チームでは尚更難易度が高いものとなっていました。

[主題]
このトークセッションでは、主に次の2点についてお話しします。
①設計について

  • UIKitからSwiftUIへのリプレイス
  • SwiftUIの思想に合わせたシンプルなI/F設計
  • 複雑なインタラクション管理
    これを踏まえて「若手でも再現可能な状態」にするために、どのように実装したのか

②SwiftUIについて

  • 描画パフォーマンスが落ちないように工夫したこと
  • 親Viewと子Viewのイベント連携

などなど..数ヶ月以上に渡る壮絶なバトルについて、色濃くお話しできたらと思います。
よろしくお願いいたします!

4
レギュラートーク(20分)

Unlisted App Distribution を使ってアプリを限定的に配信する

ry_itto 伊藤凌也

アプリを取り巻く要件の中にはUIデザイン、機能仕様、リリース要件などさまざまなものがあります。この中でもリリース要件は選択肢が少ないため、自由度がかなり低いと言えます。

そんなリリース要件の中で、限定されたユーザーにだけアプリを配布し、利用できる仕組みが必要な場合があります。そんな要件を受けたときに、どのような選択肢があるでしょうか?
Firebase App Distribution、TestFlight、Apple Business Manager など、さまざまな手法がありますが、私の所属するチームでは、その中でも Unlisted App Distribution を採用しました。

このセッションでは、数ある手法の中からUnlisted App Distributionを選択するに至った経緯と、他の配信方法との比較検討の結果についてお話しします。また、Unlisted App Distributionを選択した際に気をつけるべき点についても詳しく説明します。

2
レギュラートーク(20分)

認証エラーハンドリング百人一首

みなさん、認証機能のエラーハンドリングはどのように行っていますか?
近年のアプリの認証機能は、自社のサーバーだけでなく、Firebase Authorizationなどの認証系SaaSを活用していたり、Apple、Google、LINEといったSNSアカウントを利用した外部システムと連携したものがほとんどだと思います。

それに伴い、私たちがハンドリングしなければならないエラーの種類はどんどん増えており、

  • ユーザーに適切なエラーダイアログを出すことが困難
  • エンジニアの不具合の原因特定の難易度が高い

といった課題があります。

本トークでは、タップルが認証機能を刷新する中でおよそ140ものエラーを分類し向き合った経験をもとに、
上の句、下の句を扱う百人一首のように

  • 「エラーコード」に対してどんな「エラーダイアログ」を出すべきか
  • 「ユーザーからの問い合わせ」に対してどんな「回答」をすべきか

を “問題解決までのスピード” に着目してお話しします。

本トークを通じて、いままで雰囲気で扱っていたエラー分類への解像度が上がることで、
皆さんのサービスでユーザーが自己解決できる認証エラーが増え、認証の突破率やユーザーの獲得数が増加すること、そして今まで時間を使っていた不具合調査の時間が短縮されることを目指します。

4
採択
2024/08/23 15:05〜
Track D
レギュラートーク(20分)

空間ビデオフォーマット、MV-HEVCが写し撮る世界

Ridwy なめき ちはる

Apple Vision Proで空間ビデオを見るのは、まるでその場にいるかのようなリアルで素晴らしい体験です。この空間ビデオの記録にはMV-HEVC(Multiview High Efficiency Video Coding)という規格が用いられています。「Multiview」とは左右の目それぞれのフレームを指し、視差まで再現できるため、平面的なディスプレイにはないリアルさを感じられるようになっています。

では、どのように撮影を行えば良いのでしょうか?配信時に注意すべき点は?さらに、Vision Pro以外のユーザーにはどのように対応するのでしょうか?本トークではこれらの疑問に答えつつ、MV-HEVCに焦点を当て、この規格を理解し、空間ビデオの持つポテンシャルと具体的な活用方法について考察します。

規格自体のリリースは2014年と古く、両目の視差を利用した立体視に関してはさらに前から研究が行われており、ステレオスコピック動画の撮影のコツや、どんな表現に向いているのかについてはそれらを参考にできます。AVFoundationとVideoToolboxのAPIを使って2台のカメラで撮った動画から空間ビデオを作成する方法も紹介します。
このトークが、空間ビデオを活用した新しい魅力的な体験を構築する一助となれば、非常に嬉しく思います。

7
採択
2024/08/22 19:20〜
Track D
レギュラートーク(20分)

Server-Driven UI入門: 画面のStateを直接受け取るアプローチ

SwiftUIの登場によって、画面のStateを使ってUIを構築するState-Drivenなアプローチが可能になりました。
クライアントでは、バックエンドからいくつかのAPIをコールし、それらを組み合わせて画面のStateを構成し、SwiftUIのViewに渡すことでUIを表示することができます。

では、画面に一つのAPIで画面のStateをそのまま受け取れる場合、クライアント側にはどのようなロジックが残るでしょうか?
if文やSwitch文のような分岐を持たないアプリは実現できるのでしょうか?

本トークでは、BFF(Backend for Frontend)と呼ばれるクライアント用の中間サーバーを活用し、
可能な限りロジックをバックエンドに寄せたServer-DrivenなUI構築を実務で取り組んだ経験を通して

  • 要件に合わせたResponse構成の工夫
  • Server-DrivenなUI構築が上手くハマる具体的な事例

といった、クライアントが可能な限りプレゼンテーションロジック以外を持たない構成とその活用について紹介します。

さらに、本トークでは実際にBFFの導入が難しい方に対しても、極端な事例を通じて

  • どこまでのロジックをバックエンドで持つべきか
  • バックエンドとのシステム境界をどう考えるべきか

といった疑問への一つの指針を提供します。

6
レギュラートーク(20分)

iTunes・おぼえていますか 〜ScriptingBridge今昔物語〜

417_72ki 417.72KI

手塩にかけて育てたミュージックライブラリがぶっ壊れた経験はありますか?私はあります。

5年前、OSX Catalinaの登場時にiTunesが廃止され機能ごとにアプリが分かれました。
その後、新しいミュージックアプリでは様々な問題が起こりました。

  • アルバムアートワークが消えた
  • 読み仮名のコピーができない
  • ジャンルが勝手に書き換わる

(※全部筆者が経験したことです)

万単位にのぼる楽曲を1個1個精査して正しい状態に復旧するのは当然ながら非現実的です。
更にミュージックアプリの使い勝手の悪さも相まって泣き寝入りを余儀なくされました。

ですが、そこに救世主が現れました。そう、 ScriptingBridge です。
しかし ScriptingBridge はObjective-CがベースなのでSwiftで扱うには一工夫が必要です。

本セッションでは、macで他アプリケーションと連携するための仕組みである ScriptingBridge をSwiftのみで扱う方法と、それを使ってミュージックライブラリから楽曲情報を取得・編集する方法を紹介します。

また、壊れた楽曲情報を半自動で復旧する為のガワとしてNowPlayingアプリを実装した話をします。

1
レギュラートーク(20分)

UICollectionViewを活用した、快適で動的なレイアウト作成

shoryu927 tatsubee

SwiftUIが登場してからおよそ5年が経ちましたが、複雑なレイアウトを表現する場面では、依然としてUICollectionViewが力強い味方です。

特に、Compositional LayoutとDiffable DataSourceの導入により、App Storeのような複雑なレイアウトも簡潔に、かつ容易に実装することが可能になりました。
セクションの順番さえ決まっていれば、その特定のセクションに対してアイテムのグルーピング方法を適切に指定するだけで、複雑なレイアウトを表現することができます。

しかし、セクションが不定の場合はどうでしょうか?たとえば、セクションによっては大きな単体のCellを表示したり、複数のCellを横方向に並べてスクロールさせたいが、その順序がサーバーサイドの都合により変化するような場合です。
UICollectionViewCompositionalLayoutでは、セクションに対して直接表現方法を指定するため、順序が不定では実現が難しいかと思われがちです。
しかし、セクションのenumに一工夫することで、このような動的なレイアウト生成も実現することができました。

本セッションでは、このように「受け取るデータの種類によってCellを自由に出し分ける必要がある場面」での、我々の成功パターンについてお話しします。

レギュラートーク(20分)

AVAssetWriterで動画を作って学ぶグラフィックスの基礎

iOSアプリで動画を作成したことはありますか?
難しそうに思える画像生成や動画生成も順を追って理解していくことで意外とできるようになるものです

このトークではクライアント側での動画生成を試してみた経緯とそこで学んだ実際の動画の演出などについてお話しします。

  • なぜクライアント側で動画生成することになったのか?
  • AVAssetWriterによる動画生成の流れ
  • 動画で使われてる効果(移動・回転・拡大縮小・ドロップシャドウ・ブラー・フェードイン・アウト)の実装

このトークを通じて、AVAssetWriterを使った簡単な動画生成の流れとCore Graphicsを使ったレンダリングの基本を学ぶことができます。

採択
2024/08/23 15:05〜
Track A
レギュラートーク(20分)

iPhoneの外部センサーを使わない位置測定 --測定誤差を添えて--

mrs1669 しろくま

iPhoneの進化により、位置測定技術は著しく向上しています。

GPSをはじめ、Wi-Fi、Bluetooth、そしてLiDARを利用した位置測定機能が搭載されています。 しかし、GPSは屋内で正確に計測することが難しく、Bluetoothは事前に機器の設置が必要です。LiDARなどの深度センサーはレーザー光を飛ばして反射光を計測するため、センサーを常に外部に向けておく必要があります。

今回は、これらの外部信号を用いずに、iPhone内蔵のジャイロセンサーと加速度センサーのみを使用して位置測定と距離測定を行う方法についてお話しします。 具体的には、xyz方向の3軸加速度データと3軸角速度データを用いて位置測定を行います。

このトークでは、以下の内容について詳しく説明します。

  1. 加速度データと角速度データを用いた位置測定の方法
  2. 実際の計測結果とその測定誤差についての解析
  3. 測定誤差を抑えるためのキャリブレーション方法とその効果

特に測定誤差に関する部分では、実際に計測をしたところ、大きな測定誤差が発生して大変苦戦しました。 どのような誤差が発生したか、そしてそれにどのように対処したかについて具体的な事例を交えて説明します。 これにより、同様の技術を利用しようと考えている方々にとって有益な情報を提供できると思います。

7
採択
2024/08/23 16:50〜
Track C
レギュラートーク(20分)

ゼロから始めるiOSセキュリティ ~ OWASP Mobile Top10から学ぶ脆弱性対策

soh_satoh Soh Satoh

あなたのアプリは本当に安全に作られていますか?

Webアプリに比べて、おろそかになりがちなネイティブアプリのセキュリティ。
脆弱性診断を行うセキュリティエンジニアは、セキュリティに関するオンラインコミュニティ「OWASP」が発行する検証基準「MASVS」などをもとに、脆弱性診断を行っています。
また、彼らは、開発者が特に気をつけるべきセキュリティリスクを「OWASP Mobile Top10」として公開しており、これらを理解することは、セキュアなアプリケーション開発を行ううえで非常に重要です。

このセッションでは、実際にiOSアプリの脆弱性診断を行っている筆者が、OWASP Mobile Top10の中から特によく見かける脆弱性を紹介します。

そのうえで、それらに対する対策方法を解説し、各種脆弱性への理解を深めることを目的とします。

内容

  • 安全でない内部ストレージへの情報保存 (M9: Insecure Data Storage)
    • 機微情報の適切な保存方法
  • 安全でない暗号化 (M1: Improper Credential Usage)
    • 暗号鍵のハードコードと難読化の有効性
  • 安全でないローカル認証 (M3: Insecure Authentication/Authorization)
    • バイパスが容易な生体認証
7
レギュラートーク(20分)

プロジェクト固有のLintやFormatをどう実現するか

r_plus taikikomaba

一般的なユースケースであればSwiftLintやSwiftFormatなどにコントリビュートするのが良いと思われるが、プロジェクト固有のルールやガイドラインとしてこうしたい、こう揃えておきたいというケースもあるはずです。このトークではそんな時に固有のLinterやFormatterをどう実現するのが良いかを追っていきます。

2
レギュラートーク(20分)

結局RoomPlanって何ができるのさ?今更始める間取り図作成

alt9800 おだやか

iPhone / iPad Proに搭載されているLiDARセンサを利用したリアルタイムスキャンにより、お家の間取り図を簡単に作成できるRoomPlanはもう触ってみましたか?
LiDARを利用した3Dスキャンは、すでに様々なデベロッパーよりApp Storeで提供されていますが、
WWDC2022においてAppleが提案した新しいSwiftAPIであるRoomPlanは、膨大な情報量を保持するスキャン結果から、非常にシンプルに壁、床、そして家具を再構築できます。

このセッションでは

  • RoomPlan APIことはじめ
  • RoomPlan の簡単な仕組み
  • RoomPlan で作成した3Dオブジェクトの活用

を中心にiOSを彩るAR環境の一端をお話していきます。

類似の3Dオブジェクトの構築技術であるフォトグラメトリを利用したObject Captureとの比較や、LiDARセンサより得られるデータの取得、開発の中で困った点や、Reality ConverterやReality Composerとの連携について共有していきます。

1
レギュラートーク(20分)

iOSエンジニアが知っておくべきvisionOS向けUI開発のポイント5つ

sejm_laice そえじま

Apple Vision ProおよびvisionOSが登場して早一年が経ちました。
毎日SwiftUIを触っているであろうiOSエンジニアの皆さんにとって、visionOS向けのUI開発で陥りがちなポイントを紹介します。

visionOSは皆さんが慣れ親しんだSwiftUIフレームワークを使用してUI開発が可能であり、基本的にはiOSやiPad OSアプリケーションの開発と大きな違いはありません。
しかし、visionOS向けに新しく追加されたUIコンポーネントであるOrnamentや、普段使わないWindowsやVolumesの概念などはまだ知らない方も多いでしょう。

そこで本セッションでは、visionOS向けのアプリケーションを開発する際に気を付けるべきポイントを以下のトピックに分けて詳しく紹介します。

・ Window向けUI構築で意識する点
 Windowの特性と、それに応じたUIの配置やデザインのポイントを解説します。

・ Ornamentについて
 Ornamentコンポーネントの使い方や、利用シーンについて具体例を交えて紹介します。

・ visionOSでは必須のHoverEffectについて
 HoverEffectの重要性と、適切な使用方法について実例を交えながら説明します。

4
レギュラートーク(20分)

既存アプリにおける Swift Concurrency への漸進的な移行戦略

kotetu 栗山 徹

Swift Concurrency が初めて発表されてから約3年が経過しました。特に非同期処理の実装においては Swift Concurrency を選択することが一般的になってきました。

Swift Concurrency 登場以前から開発されているアプリの場合、非同期処理や UI 更新のためのデータバインディング目的で RxSwift を使うケースが多く、歴史の長いコードベースほど RxSwift への依存が大きくなっています。このため、機能開発と並行して徐々に Swift Concurrency へ置き換えていく、といったケースも多いのではないでしょうか。

本トークでは、既存の RxSwift で実装された箇所との共存を図りながら Swift Concurrency へ置き換えていく過程で気をつけるべき点や苦労した点について私の経験を交えてご紹介します。来るべき Swift 6 に備えて今からできる対応についてもご紹介します。

本トークでご紹介する主な内容は次のとおりです。

  • RxSwift で実装された処理と Swift Concurrency で実装された処理との繋ぎこみ
  • テストコードの修正で遭遇した問題
  • 漸進的な移行を実現するために Protocol を活用する
  • Sendable チェックとの戦い
1
レギュラートーク(20分)

Vision Framework の歴史と現在、そして未来

itaru_sugimoto 杉本至

AppleのVision Frameworkは、機械学習とコンピュータビジョンの強力なツールです。このプロポーザルでは、今ではなくてはならない存在となり、日々お世話になっているVison Freameworkの進化の軌跡をたどり、現在の機能と利用事例を探り、将来の可能性について考察します。

2017年にWWDCで初めて発表されたVision Frameworkは、iOSデバイス上での画像認識と分析を簡単にすることを目的としています。このフレームワークは、顔検出、テキスト検出、オブジェクト追跡など、多岐にわたる機能を提供し、アプリ開発者がユーザー体験を向上させるための新しい道を開きました。

Vision Frameworkは、リアルタイムでの画像処理を可能とし、Core MLとの統合により、カスタム機械学習モデルを活用して、より高度な画像分析を実現しています。

このプロポーザルでは、その歴史を振り返り、現在の実用性を評価し、さらにWWDC2024で発表されるであろう新技術についても触れ、フレームワークを最大限に活用するための具体的な方法を紹介します。

レギュラートーク(20分)

ユーザーエンゲージメントを向上させるApp Intents活用術

tanakasan2525 たなたつ

みなさんは日常的にショートカットアプリを活用していますか?
私は楽をするためにショートカットを駆使して、さまざまな自動化を行っています。

ショートカットアプリにあなたのアプリを連携させるためには、App Intentsを利用する必要があります。
App Intentsを活用することで、ショートカットアプリだけでなく、SpotlightやSiriからの提案などの場所にも、あなたのアプリが表示されるようになり、アプリの起動導線が増加します。
さらに、Interactive Widgetsやアクションボタン等からアプリの機能が呼び出せることで、未対応の他のアプリと差別化でき、ユーザーにとって欠かせないアプリになるかもしれません。

このトークでは、App Intentsを最大限に活用してアプリのエンゲージメントを向上させるための具体的な知識や方法を紹介します。

・App Intentsの概要解説
・SpotlightやSiriなどのOSの機能との連携について
・Interactive WidgetsなどのApp Intentsの活用方法

また、このような機能の実装をスムーズに行うために、日頃の実装で気をつけるべきことなどについてもお話しします。

みなさんのアプリの可能性を広げ、ユーザーに愛されるアプリ作りの一助になればと思います。

2