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

ハードとソフトの両面からアプローチするiOS × Object Captureの課題

oka_yuuji oka yuji

iOS 17.0より、RealityKitを使用してObject Capture APIが利用可能になりました。
このAPIにより、デバイス上で対象物のスキャンから3Dオブジェクト生成までできるようになりました。
しかし、現行のサンプルコードでは、撮影者が対象物の周りを自ら移動してスキャンを行う必要や、精度を高めるためには多くの写真が必要です。
このため、スキャンの環境と撮影時間(枚数)が課題と感じます。
そこで

  • 自動回転するターンテーブルの開発
  • 少数の写真でも精度の良い3Dオブジェクトを生成する

ことで解決できるのではと考えました。
本トークでは、Object Captureの基本概念から、上記の課題に対してハードウェア(自動回転するターンテーブル)とソフトウェア(少数の写真でも精度の良い3Dオブジェクトを生成する)の両面からアプローチした事についてデモを交えたながら解説したいと思います。
このトークを聴き終えた後にはきっとObject Captureの基本を理解し、自身でも3Dオブジェクトを生成したくなるでしょう!

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

大規模開発を成功に導くDesign Docの書き方

hatakenokakashi 佐藤 剛士

皆さんは、実装レビュー中に設計レベルの考慮漏れを指摘され、手戻りが発生した経験はありませんか?

そのような事態を防ぐためのツールがDesign Docです。

Design Docは実装の前段階で作成されるドキュメントで、プロジェクトの目的や実装の大まかな方向性、影響範囲、検討した代案などを示します。
事前にレビューを受けることで実装の精度を高め、手戻りを減らすことができます。

Design Docの作成は、モバイル開発ではまだ珍しいことかもしれません。
しかし複数チームに影響する開発を進める場合や、チーム全体が利用するコンポーネントを導入する場合など、iOS開発でもDesign Docを作成することで開発が効率よく進む場面が多々あります。
このトークでは、私が経験したプロジェクトを元に、Design Docの効率的な書き方や書くべき場面、その内容をお伝えします。

さらに、具体的な事例を紹介し、Design Docを元にどのように開発が進んでいったのかを詳しく解説します。
例えば、アプリ全体に影響がある追加認証としてのPasskeyの導入などです。

開発が複雑になり、変更の影響が複数チームに渡るほど、変更内容の指針が必要となります。

このトークを通じて、Design Docが大規模な開発を成功に導くための不可欠なツールであることを実感していただければと思います。

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

アプリへ最新のカメラ撮影機能を搭載する

Naoya_Maeda_app Maeda Naoya

iPhoneのカメラは年々進化しており、iPhone一台で高品質な写真やビデオを撮影することが一般的になっています。

例えばハードウェア性能が向上したことで、48MPの高解像度撮影や、Apple ProRAWやApple Log等の特殊な撮影ができるようになっています。

こうした進化したカメラ機能を自分のアプリに組み込むことで、独自のUIを使ってカメラを操作するだけでなく、標準のカメラアプリでは実現できない色温度や焦点位置の細かな調整、他のフレームワークと連動したユニークなアプリの開発が可能になります。

しかし、カメラ性能が向上しているにも関わらず、開発者がどのような新しい機能を利用できるのかについてはあまり知られていません。こうした新機能はAVCaptureのAPIを利用してアプリに組み込むことができますが、実際にドキュメントを読んで実装しようとすると、不十分な記述に惑わされ、試行錯誤してなんとか実装することになります。

このセッションでは、AVFoundationを使った最新のカメラ機能の概要と実装方法について解説します。カメラの基本的な撮影や応答性の説明から始め、近年のAVCaptureのAPIのアップデートについて体系的に紹介します。48MP撮影やApple ProRAW / Apple Log等の特殊撮影の基本知識とその実装についても、デモを交えて説明します。

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

iOSだけじゃない、macOS MDMの世界

YusukeIwaki

企業でiPhoneやiPadを社用端末として利用する際、MDMと呼ばれるデバイス管理の仕組みが使われていることは、ここ数年のiOSDCで語り尽くされてきました。
いっぽうで、我々エンジニアが使っているパソコンはmacOSです。社用端末として使っていますよね。あれ、でもmacOSのMDMってあまり話題に上がっていませんよね。

実際には、macOSにもiOSと同様にMDM機能が存在し、ここ数年のWWDCでもmacOSのMDMの進歩は実はホットな話題です。とても気になるので、自分でオープンソースのMDMを作って中古のMacbookをメルカリで買って、その機能性をいろいろ確かめてみました。

・業務に必要なアプリの自動インストール
・SSH設定の自動化
・WiFi設定の配布・自動更新

などなど、これらのMDMの機能は、デバイスの"管理"だけでなく、PCセットアップの自動化など、エンジニアチームにとって大きな利便性をもたらしてくれそうです。

市販のMDMを使うだけでは面白くないので、自分でMDMをつくっての業務改善にチャレンジしてみませんか。
このセッションではMDMのプロトコルやその実装方法などについてもわかりやすく説明したいと思います。

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

AI時代のSiriに備える

Jiro Nagasaki

AIの著しい発展に伴い、近い将来Siriがより賢くなることが予想されます。
反面これまでを振り返るとSiriにまつわる技術はショートカットアプリやWidgetの登場とともに大きく変遷してきました。
このセッションではSiriの歴史を振り返りながら、Siri対応の開発ノウハウを紹介します。具体的には以下の内容に触れていきます。

・SiriKit
・Custom Intents と Siri
・App Intents と Siri
・「Siriからの提案」
・サンプルアプリを用いたSiri対応の詳細説明
 ・App Intents 実装の最小構成
 ・AppEnum の使い方
 ・AppEntity と EntityQuery の使い方

Siriをフル活用するための開発に乗り遅れないよう、キャッチアップに役立ててください!

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

Swift Reactを使ってWebフロントエンド開発を始めよう

omochimetaru omochimetaru

近年、SwiftのコードをWebブラウザで動作させることが簡単になってきました。ブラウザが提供するAPIも、Swiftから利用することができます。

しかし残念ながら、ダイナミックなGUIを含む実践的なWebフロントエンド開発にSwiftを採用することはまだ難しいでしょう。それは、HTMLを宣言的に記述するためのライブラリが不足しているからです。JavaScriptにおいても、生のDOM APIでGUIを実装するのは難しいとされており、様々なライブラリが利用されています。

そこで私は、Swift Reactという宣言的HTMLレンダラーを開発しました。これは、広く使われているJavaScriptのライブラリであるReactのコンセプトに基づきつつ、それをSwiftらしいAPIとして再設計し、一から実装したものです。

このトークではまず、Swift Reactを使うことで簡潔で読みやすいコードでWebフロントエンドが書ける事を紹介します。そして、宣言的なインターフェースを支える、仮想DOMによる状態管理と差分検知の実装について解説します。また、簡単な手順で新規にアプリケーションを構築できる事を伝えます。

この発表を聞けば、SwiftによるWebフロントエンド開発をすぐにでも始めたくなるでしょう。

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

Observation時代のiOSアプリの作り方

koher koher

Swift 5.9でObservationが導入されました。これはCombineのObservableObjectを置き換えるもので、iOS 17から利用可能です。iOS 17のシェアが高まるにつれ、今後Observationを採用するプロジェクトが増えると予想されます。

Observationを導入する際には、単にObservableObjectと@Publishedを@Observableで置き換えることも可能です。しかし、より積極的にObservationの利点を活かすこともできます。たとえば、エンティティをstructではなく@Observable classとして実装することでパフォーマンス上の利益が得られるケースがあります。しかし、これは値型中心の言語であるSwiftにおいては異質なアプローチです。また、CombineではViewModelが別のObservableObjectを監視する際に一手間必要だったので、そのような設計は避けられることがありました。しかし、@Observableでは同様の問題は発生しません。このように、Observationの導入がコーディング上の設計に影響を与える可能性があります。

本セッションでは、まずObservationについて説明し、その後、Observationを使ってどのようにiOSアプリを作れるのか、パターン別に解説します。

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

存在しない画面表示を溢れ出させない、ステートマシンで管理するアプリと画面の状態

kuroruri くろるり

突然ですが貴方はデザイン上想定されない画面表示、仕様上存在しない画面表示を生み出したことはありますか?
画面の表示内容を isLoading: Bool / response: Reponse? / error: Error? のようなプロパティだけで扱っていたとしたら、通信終了後に isLoading を切り替え忘れるだけで通信が終わって結果が表示されたのに通信中表示が出たままになっている、そのような存在しない画面表示がすぐ出来上がります
上記は非常に簡単な例でしたが、画面表示内容だけに注目したデータ構造で扱っているとこのような存在しない画面表示が生まれるでしょう

本トークではそのような問題に対し、状態遷移を整理しデータ構造を作り、ステートマシンを列挙型と単方向データフローのアーキテクチャで管理することで存在しない画面表示を防止する方法を、下記のような内容で話します

  • 表示内容に注目したデータ構造が生む想定外の画面表示
  • ステートマシンの簡単な説明
  • 単方向データフローと列挙型によるステートマシンの導入
  • なぜ表示内容ではなく状態遷移からデータ構造を設計するのか
  • 複雑な画面を階層化されたステートマシンで整理する例
  • 状態の列挙に伴う画面プレビューの網羅性向上
  • ステートマシンによる状態管理設計がもたらすコーディング以外での変化
1
レギュラートーク(40分)

自動テストの信頼性を高めるミューテーションテストの活用

tarappo tarappo

iOSアプリ開発において自動テストは一般的になってきています。
しかし、どういった自動テストを用意すればいいのか、このテストは本当に価値を発揮できているのかと、不安に思うことはありませんか?

その不安を解消する手段として「ミューテーションテスト」を使ってみてはどうでしょうか。
ミューテーションテストは、プロダクトコードを意図的に変異させ、テストコードが適切に失敗するかを確認することで、自動テストの有効性を評価するテスト手法です。

とはいえ、多くのテストを実行するため、実行時間が大きな課題となります。
しかし、近年のマシンスペックの向上やXCTestを取り巻く環境の進化により、ミューテーションテストの実施が現実的になってきました。

本トークでは、ミューテーションテストの基本的な概念とその利点を説明し、さらに実行時間を短縮するための具体的なアプローチについて紹介します。

具体的には、「muter」というライブラリがおこなっているアプローチを元に、実行時間を短縮するための工夫を紹介します。
加えて、ミューテーションテストを実行した際の実行時間や出力結果を基に活用法を紹介します。

これにより、iOS開発における自動テストの価値を最大限に引き出す方法を学んでいただけることを目指します。

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

The Art of Code Review: より良いコードレビューをするためのテクニック

kurapy_nnn Natsumi Oishi

コードレビューはアプリやコードの品質向上とチームの成長に不可欠なプロセスです。
しかし、効果的なコードレビューを行うのは簡単ではありません。
コードレビューのやり方や観点については様々なところで紹介されていますが、やり方を知っているだけではPull Requestの差分から適切な指摘事項を見つけ出すことはできません。

このトークでは、より良いコードレビューを行うための実践的な方法について詳しくお話しします。
これにより、今まで何となくApproveしていたコードレビューにおいて、自信を持ってコメントやApproveできるようになる手助けになれば幸いです。

トピック:

  • コードレビューにおける障壁
  • コードレビューの技術を磨く方法
  • コードレビューの手間を減らす方法
3
レギュラートーク(40分)

Conquering 30+ Flutter Errors: Insights for iOS Devs

kent_strong_dev Kent Strong

Embark on a journey through more than 30 errors I really encountered during Flutter app development and release. This session offers an in-depth look at the troubleshooting process from an iOS engineer’s perspective. Learn how to diagnose and fix issues efficiently, avoid common mistakes, and improve your app release workflow. This talk is designed to equip iOS developers with the knowledge and confidence to tackle Flutter development head-on.

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

Firestoreからの大規模なデータ基盤移行プロジェクトを安全に進めるために行ったこと

satoshin21 satoshin21

2年前、弊社アプリはSQLiteからFirestoreへデータ基盤の移行プロジェクトを行いました。
Firestore自体は当時のユースケースとしてはベストな選択でしたが、ここ最近求められる新機能や施策の実現に対してFirestoreではコスト面や横断したデータの活用などの観点から実現が難しいと判断することが増え、今回アプリ・サーバーサイドと合わせデータ基盤を大きく作り変える決断をしました。
そうして始まった大規模な移行プロジェクトですが、今回は「グロースなどの開発を並行しながらデータ基盤を移行してほしい」というオーダーもあったため、iOSチームとして通常の施策実装と並行して安全にデータ基盤を差し替えていく仕組みを考え実践しました。

今回のトークでは安心・安全にデータ基盤を移行するためにアプリ開発チームとして工夫したこととその実践内容について、
以下の内容を踏まえつつお話していきます

  • なぜFirestoreから移行したのか
  • Feature Flag形式によるデータソースの切り替え
  • 型安全による実装の分離
  • SwiftUIとThe Composable Architectureによる実装
  • ユーザーに安全にデータを移行してもらうための仕組み
4
レギュラートーク(40分)

大解剖!SwiftUIを用いたショート動画タイムラインの実装と解題解決までの冒険譚!

tsuzuki817 續橋 涼

このセッションでは、実務の中で経験したSwiftUIを用いたショート動画タイムラインの実装と課題解決について解説します!
プロジェクトの初期設計から実装、そして直面した課題とその解決方法まで、実際の開発経験を元にした具体的なストーリーを共有します。

  1. プロジェクトの概要
    • ショート動画レイアウトの目的と要件
    • 初期設計
  2. SwiftUIを用いたレイアウトの実装
    • 動画の再生・停止やアニメーションの追加
    • 直面した課題とその解決方法
  3. パフォーマンスの問題
    • フレームレートの低下やメモリ使用量の増加
    • 解決策としてのAVPlayerの新しい利用方法
    • 動画データの非同期読み込みとキャッシング
  4. 完成したショート動画のデモ

このセッションは、SwiftUIの基礎を理解しているiOS開発者を対象としています。
特に、動画コンテンツを扱うアプリケーションを開発しようと考えている開発者にとって有益です!

参加者は、SwiftUIを用いたショート動画レイアウトの実装方法やAVPlayerを使った再生、キャッシュの仕組みなどを学び、複雑なUIの実現とパフォーマンスの最適化についての具体的な知識を得ることができます。開発中に直面するであろう課題を予測し、それに対する解決策を事前に知ることで、実際の開発において役立つ実践的なノウハウを身につけることができます。

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

iOSアプリのUI実装おける数学的エッセンスを取り入れた考え方や計算を活用したTips集

fumiyasac 酒井文也

「数学を利用した実装って難しいんでしょ?」
「数学苦手だったし思い出しかないし正直ナニモワカラナイ...」
「ぶっちゃけUI実装の中で数学っぽい要素ってある?」

ちょっと待って下さい!日頃の業務や個人開発の中で取り組んでいるUI実装においても、より自然な表現や触り心地等を実現するための調整対応や、SceneKit・ARKitを活用した比較的簡単な実装を利用する場合、アニメーションやベジェ曲線を利用する場合等、実は何気ない形であっても触れ合う機会は多いと思います。

本発表では、比較的皆様にとっても馴染みがある様な、具体的なUI実装例・AnimationやInteractionを伴う表現等に含まれている数学的な要素の紹介から、それらの要素が実装や表現の中において、どの様な点で影響を与えるかに加えて、実装観点から見たTipsをご紹介します。

学校教育でも触れてきた数学的なエッセンスが、どの様な形で具体的な実現イメージに変化する(すなわち抽象から具体への変化する)過程と解説が、今後の参考になれば嬉しく思います。

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

数百画面をUIKitからSwiftUIに移行するプロジェクトをリードする

masamichiueta Masamichi Ueta

SwiftUIは革命的なUIフレームワークであり、宣言的なUI構築を可能にします。UIKitを使っているアプリでこれからSwiftUIへの移行を考えているアプリ開発者は多いと思います。

私は現在、日本最大のフリマアプリ「メルカリ」を通じて全国のお店で利用できるスマホ決済サービス「メルペイ」で、既存画面のUIKitからSwiftUIへの移行プロジェクトをリードしています。このプロジェクトでは、数百画面に及ぶUIKitベースの画面をSwiftUIに移行しています。
この講演では、数百画面のUIKitベースの画面をSwiftUIに移行するプロジェクトのベストプラクティスを共有します。

この講演は、以下の方々に特におすすめです。
・既存のUIKitベースのアプリをSwiftUIへ移行していきたい方。
・宣言的UIフレームワークの有効性を信じていて、社内でSwiftUIへの移行プロジェクトを立ち上げたい方。
・Mobileアプリ開発の大規模なリファクタリングプロジェクトをリードするためのノウハウを知りたい方。

UIKitからSwiftUIへの移行は、多くのiOSエンジニアにとって興味深いトピックの一つだと思います。
私のプレゼンテーションが、より多くのiOSエンジニアのイノベーションを後押しすることを願っています。
一緒にSwiftUIの活用を進めていきましょう。

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

SwiftUI in 40 minutes: A Comprehensive Overview for Busy Engineers

kent_strong_dev Kent Strong

In this 40-minute session, we will delve into the expansive world of SwiftUI, checking its almost all the key components like categories, classes, structures, and functions in Apple Developer Documentation. Engineers are busy and often research only the articles they need to solve the problems they encounter at the time. But this session is designed for the busy engineer like you. Just watching this 40 minutes session, you can grasp overview of SwiftUI.

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

Clean Architecture x SwiftPM のマルチモジュール構成でビルド時間を短縮しよう!

ikuraikuraaaaaa Suguru Takahashi

【概要】
iOS アプリケーション開発におけるビルド時間の短縮は、開発効率を大幅に向上させる重要な要素です。本セッションでは、Clean Architecture と Swift Package Manager (SwiftPM) を組み合わせたマルチモジュール構成による実践的なアプローチを紹介し、具体的な実装例を通してビルド時間を短縮する方法を解説します。

【対象者】
・ ビルド時間に課題を感じている方
・ アーキテクチャの選定に悩んでいる方
・ Clean Architecture や SwiftPM によるマルチモジュール構成に興味がある方

【トーク内容】
・ Clean Architecture x SwiftPM のマルチモジュール構成がもたらすメリット
・ MVVM からのリアーキテクチャを通した具体的な実装方法
・ 実装する上での課題とその解決策の紹介

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

コードレビューマスタリー:ガイドラインとメトリクスを活用したチームの成功

akkiee76 Akihiko Sato

コードレビューの場面で「定量的なレビューが難しい」「レビューアーの育成が停滞している」と感じたことはありませんか?これらは多くのチームが直面する共通の課題です。

本セッションでは、レビューガイドラインを活用した定量的なコードレビュー手法を紹介し、チームの技術力向上を目指します。実際に以下の7つの観点について具体的に説明します。

  • 設計
  • 理解容易性
  • 命名
  • コードスタイル
  • 機能要件
  • ドキュメント
  • テスト

これらの観点をSwiftデザインパターンの具体例を交えて解説し、定量的なコードレビュー手法を学びます。例えば、設計では責務原則、命名ではモデリングのベストプラクティスを紹介します。

さらに、レビューコメントから技術力を可視化するKPI戦術も紹介します。この手法でチームメンバーの弱点を明確にし、育成やオンボーディングの指標として活用できます。どのようなメトリクスを収集し、分析するかを詳しく説明します。

また、PR-AgentやCodeRabbitを活用したAIコードレビューの手法や、効率化するプロンプトも紹介します。属人的なコードレビュー前にAIを用いることで手戻りを削減し、生産性を向上させる方法を具体的に紹介します。

このセッションに参加することで、効果的なコードレビュー戦術を学び、チームの技術力向上に役立つ実践的な手法を得ることができるでしょう。

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

Swift on Windowsでデスクトップアプリやプラグインを開発する方法を学ぼう

arasan01_me あらさん

Swiftにおけるクロスプラットフォーム対応はこの1年で目覚ましい発展を遂げたトピックです。その中でも、Windows環境で動かすSwift、つまりSwift on Windowsは非常に大きな変化を迎えました。
iOS、iPadOS、macOS向けに開発したアプリケーションやフレームワークをWindowsでも動かせるようにすることは、非常に価値のある取り組みです。

しかし、Swift on Windowsに挑戦するためにはどのように取り組めば良いのかご存知でしょうか?

本トークでは、Swift on Windowsでの開発を始めるためのセットアップ方法、ライブラリの選定や自らによるWindows対応、クロスプラットフォームの設計、デバッグのコツなどを詳しく話します。
具体例として、スタンドアロンのWindowsアプリの開発方法や、Open Broadcaster Software(OBS)のプラグイン開発を例に上げて、実践的な開発方法を解説します。

このトークを通じて、Swift on Windowsを活用して世界のデスクトップOSシェアの7割を超えるWindows向けにプロダクトを提供する新たな選択肢を紹介します。また、自信を持ってクロスプラットフォーム対応のSwiftコードを書くための考え方も提供します。

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

Engineers don't get it! Communication Gaps with Business Side

kent_strong_dev Kent Strong

技術者とマネージャーの間に存在する終わりなき争い。エンジニアとビジネス側の間で発生する認識の相違。これらはしばしばプロジェクトの進行を阻む大きな障害となります。

ビジネスサイドやマネージャーは主に顧客満足を中心にものを見ています。一方で、開発者は自分が作っている製品・プログラムを中心にものを見ている場合が多く、場合によっては認識の齟齬が発生します。

例えば、顧客の要望が適切に管理されていない場合、あたかもわがままな変更要求に付き合わされているとエンジニアには思えてしまうことがあります。

一方で、コードのリファクタリング、自動テストの導入、新技術の導入など、ビジネスサイドや顧客にしっかりと意義が伝わっていない技術的な変更は、単にお金や時間を無駄に消費するだけと捉えられることも少なくありません。

本セッションでは、

  • プロジェクトマネジメントの視点(PMBOKなど)
  • ビジネスサイドの視点(NLPコミュニケーション、制約理論など)
  • 筆者の経験から実際に有効だった戦略
    を交えながら、こうした摩擦の原因を解明し、エンジニアリングとビジネスの間での効果的なコミュニケーションと協力関係を築くための実践的な知識を紹介します。
1