ルーキーズLT(5分)

ビジネス影響と戦うiOS15サポート終了戦記

ystg1302 Antony

タップルでは、毎年最新技術への対応とセキュリティ向上を目的に、一定の閾値を任意の数値が下回った場合、下位iOSバージョンのサポートを終了してきました。
しかし、iOS15のサポートを終了すると、iOS16にアップデートできない端末が複数あるため、アプリが使用できなくなるユーザが発生してしまいます。
都度課金でもなくフリーミアムでもない、課金ユーザからの売り上げがほとんどを占めているタップルにとって、iOS15のサポート終了は"売り上げに大きく関わる"決断です。

当然ビジネスチームからは、「売上に大きな影響が出るのでは?」という懸念が出ました。
今回私たちは、ビジネスチームと一方的に対立するのではなく、ユーザの利益、会社の利益、そしてiOSチームの利益のバランスを考えながら、適切な決断を行うために協力しました。

本LTでは、我々がどのようにビジネスチームや分析チームとコミュニケーションを行ったのか、また、その過程でどのような解決策を提案し、どのようにしてiOS15のサポートを終了するに至ったのかをお伝えします。
目次

  1. ビジネスチームとの売り上げ影響に関する議論
  2. 売り上げ影響を可能な限り下げるための提案と実践
  3. 結果と改善点
採択
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
採択
2024/08/23 17:45〜
Track B
ルーキーズLT(5分)

5分で話し切る Roomplan

alt9800 おだやか

iOS16(iPadOS)以降に提供させれているSwiftAPIであるRoomPlanはすごい速度でお部屋をスキャンしてミニチュアハウスを作れます。

普段地図や位置情報で楽しく遊んでいる私が、どのように自身の活動にiOSのアプリ作成を取り入れ、RoomPlanにより作成したデータを利用しているかを5分で話し切ります。
モバイルアプリケーションを専業とされている方のみならず、測量や建築、環境デザインに携わっている方など周辺領域に広く届くように、アプリケーション構築が気軽に行えることをお伝えすることもテーマの一つです。

旅行先でもスキャンがしたくてたまらないようなモバイルスキャン星人を増殖させます。

1
レギュラートーク(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
LT(5分)

ScreenTime APIのDeviceActivityReportを使って自分だけのスマホ利用レポートを作ってみよう

samor127 下森 周平

Screen Time APIで利用できる機能の一つに、アプリの利用時間を可視化できるDeviceActivityReport機能があります。iOSの設定画面では棒グラフでのレポートを閲覧できますが、DeviceActivityReport機能を使えば、自身のアプリに任意のSwiftUIベースのレポートを組み込むことが可能です。

このLTでは、DeviceActivityReportを組み込んだアプリを気軽に作れるように、以下の内容をカバーします。

  1. DeviceActivityReportで取得可能なデータ一覧
    どのようなデータが取得可能かを具体的に説明します。

  2. DeviceActivityReport有効化に必要な手順
    初心者でも分かりやすいように、具体的なステップを順を追って説明します。

  3. DeviceActivityReportの実装時に培った知見
    実装過程で得た知見や注意点について具体例を交えて紹介します。

これらの内容を通じて、参加者が自分のアプリにDeviceActivityReportを簡単に組み込めるようになることを目指します。

ルーキーズLT(5分)

【MetalKit】マンデルブロ集合を描きたい!シェーダーを書きたい!

TOMOQ8192 tomoq

友人と 2 人で参加したハッカソン.
私たちは推しのフラクタル図形であるマンデルブロ集合を描画するアプリの制作を決意する.
ただマンデルブロ集合を描画するため,先人たちの築いてきたUIライブラリを無視して 1 枚の長方形を設置する.

このLTではほぼ初めてであったiOSアプリの開発の体験をもとに,MetalKitによるシェーダーの利用とマンデルブロ集合についての紹介をします.

※マンデルブロ集合:数学的に定義される複素数の集合であり,複素平面上では自分自身のミニチュアがそっくりそのまま自分の中に入っているような特徴を持つフラクタル図形の一種である.描画には膨大な計算量を要するが,シェーダーをはじめとした並列計算によってより効率的に描画することができる.

1
ルーキーズLT(5分)

UWBで遊びたいがために12年ぶりにiOSアプリを作り始めた話

gzock Ryo Sasaki

普段はIoTエンジニアをやっています。最近はUWBで遊んでいます。UWBのモジュール同士で通信させてもつまらないです。やっぱりスマホでUWBを捕まえて遊びたい! でもAndroid勢はUWB搭載してるやつがほとんどいない。そうだ、久しぶりにiPhone用のアプリを作ろう! 大丈夫!だって12年前まではObjective-CでiOSアプリ何個も作ったことあるもん! ・・・はい、大変でした。そんな話です。

ルーキーズLT(5分)

SwiftUI+SPMマルチモジュールを採用したプロジェクトの疎結合な画面遷移を考える

ios_hamada da-hama

みなさん、「SwiftUIを用いたプロジェクトのビルド時間を短縮したい」と考えたことはありませんか?

iOSDC2021以降、SPMマルチモジュール構成をプロジェクトへ採用するサービスが多く見られます。
マルチモジュール構成では、小さくモジュール分割を行い依存を疎結合に保つことでビルド時間の短縮が期待できますが 画面遷移時にFeatureモジュール同士で呼び出しを行い、依存関係が密結合になっている場合、ビルド時間の短縮が効果的ではありません。

本LTでは、Protocolに各画面の生成処理を記述し、画面遷移先を抽象化してDIする手法を紹介します。
これによって、SPMマルチモジュールにおいて、疎結合な画面遷移が可能となり、効果的にビルド時間の短縮が可能となります。
また、複数のDI手法や画面遷移実装を比較し各手法のメリットデメリットを紹介していきます。

以下の順番に従い、各実装の問題点と解決策を交えながら説明します

  • SPMマルチモジュールの導入
  • NavigationStack を用いた MainApp での"単純な"画面遷移
  • RouterProctocol を定義し画面生成処理を抽象化
  • DIを用いた疎結合な画面遷移を可能に
    • @Environment を用いた一般的なDI
    • swift-dependencies を用いたリッチなDI
9
ルーキーズLT(5分)

あ〜誰か、よくあるグラフ機能の実装方法「10選」を5分で教えてくれないかな〜?

yamakentoc yamaken

「急にグラフを実装することになったけど、Swift Chartsを使えばSwiftUIでグラフを実装できるってのは聞いたことあるなぁ〜」「iPhoneの標準アプリでこんなグラフの機能があるからできると思ってたけど、触ってみたらAPI多すぎるし、ドキュメント見ても実例とかほぼ無いしよく分かんないな〜」「他の開発も並行しているから1個1個検証してる時間なんてないし…」「あ〜〜〜!どこかに、グラフでよくある機能の実装方法を、時間がないから5分で…しかも一気に知りたいから『10選』も教えてくれる…そんなLTがないかな〜〜〜!」

…と思ってるそこのあなた!!!
このLTではSwift Chartsを使って、よくあるグラフ機能の実装方法10選を5分で共有します!
グラフの見た目や軸のカスタマイズ、注釈の表示、タップやスクロールを可能にしたり、アニメーションをさせたりなどよくある機能の実装方法について話します。

Swift Chartsでこんなグラフを描画したいと思ってもドキュメントは文字だらけで実際どう実装するかは中々探せません。自分はドキュメントのほとんどを読んでまとめ記事を書いた程です。
https://qiita.com/yamakentoc/items/55a7d7264691b2caf592

このLTを通じて、あなたのアプリにすぐにグラフと便利な機能を追加してみませんか?

ルーキーズLT(5分)

Int型が準拠しているプロトコルを徹底調査!5分で厳選プロトコル紹介

y_oh22 Yoji Ohara

SwiftのInt型は、数値計算からコレクションのインデックスとしての利用まで、幅広い用途で使用されています。しかし、Int型がどのプロトコルに準拠しているのか、具体的にはどのような機能を提供しているのかを深く理解している開発者は意外に少ないかもしれません。そこで、私がApple Developer Documentationを調査し、Int型が準拠しているすべてのプロトコルをリストアップしました。

しかし、これらすべてを時間内に紹介するのは難しいため、特に興味深いプロトコルを厳選してご紹介いたします。例えば、数値操作に関連するプロトコルや、CustomStringConvertibleプロトコルといった意外な用途に対応しているプロトコルについて解説します。

レギュラートーク(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
LT(5分)

新規アプリのCI/CD環境をXcode Cloudだけで構築する

oskmr_ Osaka Miseri

Xcode Cloud活用していますか?
リリースから2年弱が経ち、Xcode Cloudを利用しているプロダクトも増えてきたと思います。Xcode CloudはAppleが提供するCI/CDツールで、特にiOSアプリの開発において強力なサポートを提供します。

今年1月にリリースされた「恋するAI」アプリでは開発から運用までXcode Cloudのみの環境で開発を行なってきました。
他のツールと比べて若干の癖のあるXcode Cloudですが、SPMやTestFlight Internal Testingを活用することで従来よりも低価格・低コストで新規アプリの開発を進めることができました。

このセッションではXcode Cloudのみの環境で開発するにあたって利用したワークフローや既存ツールとの差異などを中心に以下の内容をお話しします。

  • Xcode Cloudをより活用するための設計やワークフロー
  • Xcode Cloudを活用してアプリのデバッグ環境を効率化する
  • GitHubActionsやBitrise等他のツールと比較してのメリット・デメリット
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で発表されるであろう新技術についても触れ、フレームワークを最大限に活用するための具体的な方法を紹介します。

LT(5分)

とにかく型安全なHTTP

the_uhooi uhooi

2023年9月、swift-https-typesというパッケージの1.0.0がAppleからリリースされました。
このパッケージはHTTPを型安全に扱えるライブラリであり、HTTPクライアントとサーバーの両方を対象に設計されています。

めちゃくちゃ便利なのですが、まだ使っている人が少ないように感じます。
何のライブラリも使わず、標準の URLSession のみでHTTPクライアントを実装している方にぜひ使ってほしいです。

本LTでは、軽快な音楽と共にswift-https-typesがいかに型安全かテンポよく紹介します。

Don't worry, This is type... (safe!)

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

バリデーション付きフォームの大量生産から学ぶ「ちょうどいい設計」

Studio_Rookery hirano masaki

皆さんはバリデーション付き入力フォームを50個実装しないといけなくなった場合どのようにコードを設計しますか?

これに限らず広範囲のコードの設計を行う際

  • 人によって実装にばらつきがない
  • テストが書きやすい
  • 読みやすい
    といったことを目標にすると思います。

しかし最初から理想の形を目指すのは至難の業です。
理想を追い求めすぎて過剰設計になったり、流行りのアーキテクチャを試したもののうまくマッチしなかったり…

このトークでは実際にあった大量のバリデーション付きフォーム画面を題材にスケールする設計の考え方を紹介します。

まずは「良いコードを書こう」と考えず愚直に動くコードを実装します。
そこから気になる部分を見つけて改善するステップを繰り返していきます。
改善の際にはコードの良し悪しだけでなくチームの状況やプロジェクトの要件も加味していきます。

各ステップごとにコードの Before / After を提示するので「何をしたことでどんな効果があったか」がわかります。
コードが洗礼されていく過程を一緒に体験できるので設計を行う考え方を学べます。

コードの量は多めですがライブラリは使いませんので初学者の方でも楽しめる内容です。
Swift の新機能の PropertyWrapper や ResultBuilder をフルに使うので Swift のおさらいにもなります。

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

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

tanakasan2525 たなたつ

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

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

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

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

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

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

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

Wallet API, Verifier APIで実現するIDカード on iPhoneの世界

samor127 下森 周平

近年、デジタル空間における個人認証の需要が増す中、iOSではiOS 15.4からWalletアプリへ運転免許証や州IDの搭載ができるようになりました。
更には、iOS 16からWallet APIを通じた個人情報の共有、そしてiOS 17からはVerifier APIを用いた対面での個人情報の共有が可能となりました。
これらの機能はまだ米国でしか使えませんが、マイナンバーカード機能がiPhoneに搭載されることが発表されるなど、日本でもIDカードのデジタル化に対する期待が高まっています。

そこで、このセッションでは上記のデジタルIDに関連する機能が日本でも利用可能になった場合に備えて以下の内容を話します。

  • デジタルIDを支える国際標準 ISO18013-5の概要
  • Wallet API, Verifier APIで可能になるユースケースの紹介
  • Wallet API, Verifier APIの具体的な実装例
  • ISO 18013-5に準拠した対面での個人情報共有機能を実装する際に得られた知見の共有

このセッションを通じて、日本におけるデジタルID時代を一緒に妄想し、将来に備えましょう!