採択
レギュラートーク(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時代を一緒に妄想し、将来に備えましょう!

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

iOSアプリ開発のいま:初学者が業務レベルに到達するためのポイント

usamik26 宇佐見公輔

iOSアプリ開発のチュートリアルや入門書は多く存在しており、学校の授業で扱われることもあります。しかし一方で、実際のアプリ開発の業務では、より多くの知識が求められます。このギャップに初学者がとまどうことも少なくありません。

このトークでは、初学者が業務レベルに到達するには何が求められるのか、いくつかのポイントについて具体的にお話しします。初学者への学習の方向性を示すとともに、中級〜上級者にも初学者が感じるギャップを捉える機会になればと考えています。より俯瞰的な内容は、パンフレット記事をご覧ください。

・UIフレームワーク(UIKit、SwiftUI):どのくらい使われているのか、どちらを学ぶべきか
・LinterやFormatter:なぜこれらを導入する必要があるのか
・プロジェクト構成、パッケージ管理(SwiftPMなど):プロジェクト構成で何を考えておくのか
・デザインや設計のガイドライン(HIGなど):何を知っておくべきか、ガイドラインの読みかた

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

SwiftUI移行のためのインプレッショントラッキング基盤の構築と最適化

pihero13 Koki Hirokawa

UIKit から SwiftUI への移行、進んでいますか?
私が開発に携わっているアプリでは、画面内の一部のコンポーネントにのみ SwiftUI を利用しており、現在画面全体の SwiftUI 移行を検討しています。
すぐにも移行を進めたいところですが、そのためにはユーザの行動ログを収集するためのインプレッショントラッキング基盤が必要不可欠です。

基盤実装には、分析要件を満たすための I/F 設計・ユーザ体験を損なわないためのパフォーマンス・OSバージョンごとの品質担保・デバッグ容易性など考慮すべき観点がいくつもあります。
本トークでは、インプレッショントラッキング基盤を実現する上での UIKit と SwiftUI の違いや、これらの観点に対するアプローチについてお伝えします。

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

Flipperのカスタムプラグインを利用して快適にデバッグする

to4iki Toshiki Takezawa

みなさん、Meta社(旧Facebook社)が開発したモバイルアプリ開発のためのデバッグツール「Flipper」をご存知でしょうか。

Flipperはデスクトップアプリを通じて様々な情報を取得したり操作を行ったりと、幅広くデバッグを支援してくれる便利なツールです。
類似のデバッグツールとしては、HTTPプロキシを立てて端末の通信をキャプチャし、リクエストやレスポンスの内容を参照・改変するCharlesが有名かと思いますが、FlipperにはCharlesにはないカスタムプラグイン機能が存在します。自分たちのアプリの要件に合わせたカスタムプラグインを作成することで、バグ調査や開発効率の改善に役立てることができます。

このトークでは、Flipperの基本的な解説からユースケース、カスタムプラグインの作成方法、活用事例までを以下の流れに沿って、ソースコードと共に解説していきます。

  • Flipperで出来ること、出来ないこと
  • カスタムプラグインの作成方法
  • iOSアプリへの組み込み
  • Mirrativで利用しているカスタムプラグインの紹介
    • WebSocketベースのPub/Subライブラリのデバッグ
    • Unityとの双方向通信のデバッグ

このトークを通じて、みなさんのモバイルデバッグの選択肢が広がれば幸いです。

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

影響範囲を限定しながらSwiftUIをサブビューとして部分適用する

to4iki Toshiki Takezawa

弊社では、モジュール分割による影響範囲の限定化とともに、UIViewControllerから呼び出すサブビューの位置付けでSwiftUIを利用しています。
最大限SwiftUIの力を活用できているとは言えず、UIViewControllerから呼び出すことでオーバーヘッドがあるのも事実ですが、UIKitやStoryboard中心の開発を行っていた頃と比較して開発体験の向上が見られるようになりました。

本トークでは、UIKitベースのプロジェクトにおいてSwiftUIを適用したいと迷っている方向けに、具体的な事例を交えながら以下のポイントについて順を追って解説します。

  • コードベースの課題認識とゴール設定
    • SwiftUIをどこまで適用するか
  • 施策実装と並行し隙間時間でコード改善する進め方
  • 修正による影響範囲を明確化、限定化するためのモジュール分割の指針立て
2
レギュラートーク(20分)

【実録!】10年の歴史を誇るタブ直下画面をフルSwiftUI化するまでの旅路

_t12o_ t12o

突然ですが、みなさんが開発しているアプリで一番古くからある画面はどこですか?

マッチングアプリ『タップル』は今年でリリースから10周年を迎え、Swiftのアップデートに伴ってその姿形を変えてきた歴史があります。
iOS業界の中でも古いプロダクトになりつつあり、時代の流れとは裏腹に、何年もの間メンテナンスされてこなかった実装が健在しています。

しかし、これらの実装はSwift 6.0の登場により変遷の時を迎えるかもしれません。
そこで本セッションでは実録と称して、IBベースの画面で作られていたタブ直下の画面をフルSwiftUI化し、さらにSwift 6.0対応までのリプレイスの記録を以下の流れに沿って解説します。

  • IBからSwiftUIへの移行
  • リアーキテクチャ(RxSwiftからSwift Concurrencyへの移行)
  • そしてSwift 6.0対応へ

共に古き悪しきコードを討伐していきましょう!

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

ログビューアのUI/UXについて全員で考えてみないか?

the_uhooi uhooi

「(舞台上でしゃがみながら)ログビューアのUI/UXについて、マジで今日全員で考えたくて」


os.Logger という、iOS 14.0から使えるロギングのAPIがあります。
print よりもログに特化しており、使っている方も多いと思います。

私はOSログを確認できるSwiftUIのビューをOSSで公開しています。
わずか1行でiOSアプリ上にログビューアを表示できます。

Xcode 15から、OSログビューアが一新されました。
UI/UXについて、できる限りそれに近づけようとしています。

しかし難しい…!
macOSアプリであるXcodeのUI/UXを、iOSアプリ上でどう表現するか。

「検索バーでフィルタリングを実現するのは難しいから、文字列検索と分けて用意しよう」
「スマホはパソコンと比べて画面が小さいので、折り返しを多用するのもよくないよな」

など工夫しました。

本トークでは、私がログビューアのUI/UXをどう考えて設計したかと、改善の余地について紹介します。

もくじ

  • OSログの出力と取得
  • 自作ログビューアのUI/UX解説
  • ログビューアのUI/UXを全員で考えよう

「どうでもいい正解を愛するよりも、面白そうなUI/UXを愛せよ」
全員で一緒に、よりよいログビューアのUI/UXを追求しましょう!

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

動かして学ぶDockKit入門

Naoya_Maeda_app Maeda Naoya

iPhoneのカメラは年々進化しており、さまざまな用途で使用されるようになってきています。例えば、近年ではiPhoneのカメラを使用して、映画やYouTube動画を撮影するクリエイターも登場しています。

このようにiPhoneのカメラがさまざまな用途で使われる中、DockKitフレームワークが発表されました。DockKitフレームワークのAPIを組み込んだビデオカメラアプリを、DockKit対応スタンドにセットすることで、人物を自動で追尾するようにDockKit対応スタンドを動かすことができます。

しかし、DockKitフレームワークはWWDC2023で発表されていたものの、DockKit対応スタンドが発売されたのはつい先日で、DockKit対応スタンドを使用して、開発者がどのような機能を利用できるのかについてはあまり知られていません。

このセッションでは、DockKitフレームワークの基本的な概要やAPIの説明から始め、DockKitフレームワークで開発者ができることを体系的に紹介します。セッション中はベルキンのAuto-Tracking Stand Pro with DockKitを使用したデモを交えて説明します。

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

visionOSアプリのUI設計と実装テクニック

tanakasan2525 たなたつ

iOSアプリエンジニアなら、一般的なiOSアプリのUIデザインでアプリを作ることはお手の物ですよね?では、visionOSアプリを作ることになったらどうでしょうか?

各コンポーネントのスタイルやレイアウトはどうするべきか、何ができて何ができないのか、AppleのvisionOSアプリのUIはどうやって実現されているのかなど、多くの悩みどころが出てくると思います。

このトークでは、iOSアプリエンジニアである私が実際にvisionOSアプリのUIデザインと開発を行う中で直面した課題や得た知見を、特に以下のポイントに焦点を当てて紹介します。

・基本概念とデザイン原則:visionOSのUIデザインにおける基本的なコンセプトやガイドラインなどを紹介。
・デザイン要素:iOSとは異なるUIコンポーネントの特性やデザイン要素などの紹介。
・開発効率を上げるテクニック:visionOSアプリ開発を効率化するためのXcode Previewsやシミュレータの活用法。
・制限と工夫:visionOSの様々な制限を紹介しつつ、実現したいUIをどのようにして実装するか紹介。

このトークを聴くと、visionOSアプリとして使いやすく美しいUI/UXになっているか、実現できるUIなのかを判断できるようになり、チームでの開発もさらにスムーズに進められるようになるでしょう。

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

いわゆる「AIの時代」で、マルチプラットフォーム開発で何か変わる?

andrekandore アンドレカンドレ

最近、かなり注目を浴びているLLMベースの「AIアシスタント」にかなりの熱を感じています。

そこで、LLMのアシスタント(Copilot、OpenAIなどで)、自然言語間の翻訳だけでなく、プログラミング言語間の翻訳も得意そう。
そこでどこまでできるのかを試してみました。
チャレンジをしてみた感想と今後の展望の考えについて話す!

詳細

発展途上のAIのアシスタントを用いて、マルチプラットフォームの開発をどこまでできるかちょっとやってみる?!

  • Swiftでデータモデルを書いたら、Kotlinで排出して再利用できそう?
  • ビジネスロジックをJavaでサーバサイドで書いたら、ネイティブのSwift/Kotlinのクライエントで使用できる?
  • UIをSwiftUIで書いたら、KotlinのJetpack Composeに直接転換できる??

最後に

  • それぞれのAIによりNative開発の新時代が来るなら、どのような支障があるのか、どのような開発フローを要するかについて考察を話す

※ スライドだけではなく、ライブコーディングをチャレンジしながらやるつもりです!

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

Metal でメディアアートへ踏み出そう

Megabits_mzq_jp Megabits

「自分が持っている iOS 開発の技術をデザインやアートで活かしたらどうなるか?」大学でデザインを勉強している私がよく考えています。これからもうすぐ卒業する私が、その答えになる作品を作りました。

私の卒業研究で、スマホで使える、あるメディアアートの制作ツールを作りました。

Slit-scan は John Whitney が 1958 年に開発した VFX のための撮影技術です。その後、様々なアーティストに使われています。動くものを強調するのが特徴です。

本来の Slit-scan では、細いスリットを通じて撮影します。しかし、それを完成するにはなかなか難しい。複雑なセッティングが必要です。多くの人は、すでにある動画を後処理して、エフェクトの一部として使っています。Slit-scan そのものを目的として制作する人が少ないです。

実は、Slit-scan を簡単でできるものは、私たちのそばにあります。この iPhone です。私は、iOS で自由に Slit-scan できるツールを作って、そのツールで作品を作りました。

このトークでは、作品と使用している技術を紹介します。主に Metal で 240 fps でカメラからの画像を処理する方法です。そして、私たち iOS 開発者に馴染みのある技術をアートやデザインの領域に使ったらどんな可能性があるのかをお見せしたいです。

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

Overview: ownership

ojun_9 ojun

本トークでは、Swift 5.9における重要な変更点であるnoncopyableタイプの導入に焦点を当てます。
noncopyableタイプはオブジェクトや変数が一意の所有権を持つことを意味し、Swiftの従来の型とは異なる新しいパラダイムを提供します。
このトークでは、noncopyableタイプの背景、Swiftの従来の型システムとの違い、新しい~Copyableと~Copyableではない型の宣言方法について詳しく説明します。

さらに、Swiftの所有権モデルに与える影響、メモリ管理とコードの安全性にどのように貢献するかを考察します。
具体的には、noncopyableタイプを使用することで、無駄なコピーを避け、メモリの効率的な使用が可能になる点について触れます。

また、所有権モデルの進化に伴い、開発者がどのようにして安全で効率的なコードを書けるようになるか、実際のコーディング例を交えて解説します。
これにより、最新の言語機能を最大限に活用し、高品質なiOSアプリの開発に役立てることができるでしょう。

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

AWSをSwiftでフル活用する方法

takoikatakotako かびごん小野

SwiftとAWSの連携は、これまであまり注目されていなかったかもしれません。
しかし、現在ではSwiftからAWSを活用することが驚くほど容易になってきています。

このトークでは、AWSもiOSも大好きな私が、Swiftを使ってAWSをどのように活用できるかを具体的に紹介します。
実際のコード例を交えながら、以下のポイントを中心に解説します。

  • AWS SDK for Swiftの基本的な使い方
  • iOSアプリ開発を便利にするAWSのサービスの紹介
  • AWSとSwiftを活用したWebアプリケーションの構築
  • SwiftからAWSを利用するときの注意点

このセッションを通じて、みなさんのアプリやサービスにAWSを取り入れて可能性を広げるお手伝いができたら嬉しいです。

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

テストのためのモック生成マクロ - モック生成の理想とマクロによるアプローチを徹底検証!

KeyNumberLV Kiichi

ユニットテストを書く際、依存先としてモックを使用することがありますよね。
みなさんは、どのようにモックを作成していますか?

手作業で1つ1つ作成することもあれば、mockoloなどの自動コード生成ツールを使うこともあるでしょう。
加えて最近では、swift-spyableなどのマクロを用いたモック生成ライブラリも開発されており、それらを使っている方もいるかもしれません。

しかし、これらのライブラリには以下のような課題が存在します。

  • 同名関数をモックできない
  • 少しの記述ミスでテストがクラッシュして修正に時間がかかる
  • モックした関数の挙動を途中で変えるのが難しい

このような課題を踏まえ、今回の発表では、

  • モック生成とはどうあるべきか?
  • なぜ/どうやってマクロで実現するのか?

を中心に、テストのためのモック生成マクロにおける理想を追求してみます。

また、具体的な実装例・使用例を交えながら

  • マクロで実現できること/できないこと
  • 設計方針の提案と比較

についても考察し、これらの理想の実現を目指します。

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

生成AIでユニットテストを手軽に運用する方法

pickles_ib takashico

「ユニットテストを導入したいけど、どのように書いたら良いのかわからない」
「テストは書いているけど、もっと楽に書けるようにしたい」
と課題に感じたことはありませんか?

かくいう私もその一人で、同じ課題を持っていましたが、
生成AIを活用してテストコードを自動出力させることで、ユニットテストの実装コスト削減を行いました。

本トークでは、この取り組みや結果について紹介します。
・テストコードのルール策定について
 チームで運用するにあたり、ルール決めをする必要があります。
 ここではどのようなことを考えてルールを決めていったのか、実際使っているテストコードルールを用いて紹介します。
・生成AIによる出力精度を高めるための工夫
 実際に使用しているプロンプトの構成を用いて紹介します。
・開発プロセスへの組み込みと実際の運用について
 開発フローに自然と組み込めるように、GitHub Actionsを用いたPR上での出力など、実運用するための取り組みについて紹介します。
・ユニットテスト以外での生成AIの応用事例
 コード生成以外にもレビューなどの活用事例について紹介します。

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

Bitriseでのクレジット浪費を防ぐ!必須の設定とベストプラクティス

zizi4n5 Shingo Takagi

iOSアプリ開発でよく使われるCI/CDサービスの一つにBitriseがあります。
皆さんはBitriseでビルドがハングしてしまい、大量のクレジットを無駄にしてしまった経験はありませんか?

このトークでは、Bitriseのクレジットを無駄にしないための必須設定とベストプラクティスについて紹介します。
これらの設定を活用することで、効率的なビルド管理が可能になります。

具体的には以下のポイントをカバーします:

・すべてのステップに対して、一括で一定時間出力のないステップを検出し中止する設定方法
・各ステップに対して、個別に一定時間出力のないステップを検出し中止する設定方法
・各ステップに制限時間を設定する方法
・ビルド開始時にXcodeシミュレーターの起動をチェックし、ハングする場合にワークフローを再起動する方法

さらに、これらの設定手順や実際の活用事例を具体的に紹介します。
このトークを通じて、Bitriseのクレジットを無駄にしない効率的なビルド管理を実現しましょう!

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

アプリ内課金の動作確認・テスト方法まとめ

ozum1n ozumin

このトークでは、アプリ内課金の動作確認方法と StoreKit2 におけるユニットテストについて、包括的に解説します。
アプリ内課金を安全に実装するためには、動作確認とユニットテストが非常に重要です。
本セッションでは、アプリ内課金の実装を StoreKit2 にリプレースした経験をもとに、以下の内容をお話しします。

  1. アプリ内課金の動作確認方法:
    StoreKit Testing in Xcode、Sandbox、TestFlight の3種類の方法について、それぞれで何が確認できるのか、これらの具体的な確認方法を解説します。特に Xcode 15 では、様々なエラーをシミュレーションできる新機能が追加され、動作確認の幅が広がりました。この機能についても詳しく紹介します。
  2. StoreKit2 でのユニットテスト:
    StoreKit2 を使用したユニットテストの具体的なコード例と、実際に直面した課題や解決方法について解説します。また、iOS 17.0 以降の API によってテストの幅が広がった点についても紹介します。

本トークを通じて、最新のアプリ内課金の動作確認方法とテスト方法について体系的に学ぶことができます。

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

Universal Linksでもう躓かない! 〜陥りやすい罠とその回避方法〜

kudokai00 くどかい

Universal Linksとは、SafariまたはWebサイトを経由することなく、アプリ内のコンテンツに直接リンクすることができる機能です。

実装過程で「設定は正しいはずなのにアプリに遷移しない」という経験はありませんか?

このトークでは、Universal Linksの設定方法と実際に業務で直面した落とし穴について詳しく解説します。まず、Universal Linksの基本概念と、その利点を説明します。次に、実際の設定手順をステップバイステップで紹介し、必要なファイルやコードの具体的な例を示します。

さらに、Universal Linksの設定時に直面しやすい問題点とその解決策について詳しく掘り下げます。例えば、Apple App Site Associationファイルの配置場所や内容、ドメインの設定、iOSアプリ側の設定など、細かい設定ミスが原因でリンクが動作しないことが多いです。これらの落とし穴を具体例と共に説明し、効果的なトラブルシューティング方法を提供します。

このトークを通じて、Universal Linksの設定時に直面する典型的な問題を回避するための知識を得ることができます。また、Universal Linksの設定や実装をスムーズに進めるためのヒントとコツを提供します。

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

SwiftSyntax・SourceKit・SwiftUIで実現するソフトウェア可視化の世界

_ockey_ Ockey

ソフトウェア可視化(Software Visualization)という研究分野があります。
これは、ソフトウェアの構造や開発プロセスなどを可視化することで、その理解を支援しようというものです。

ソフトウェア可視化には、頻繁で継続的なリリースが求められるアプリにおいて、コード理解を支援して開発効率を上げるポテンシャルがあります。
にもかかわらず、Swiftで書かれたコードを可視化するツールはまだあまり世に出ていません。
そこで、ビルドが成功する度に静的構造と影響範囲を可視化するツールを試作しました。

このトークでは、Swiftを対象としたソフトウェア可視化ツールの開発経験をもとに、

  • Swiftを対象とした既存のソフトウェア可視化ツール
  • SwiftSyntaxを使って型や変数、関数の宣言箇所と呼び出し箇所を特定する方法
  • ソースコードを解析して親子関係を維持しながら型や変数、関数を抽出する方法
  • SourceKit(SourceKitten)を使って型や変数、関数を呼び出している箇所から定義元を特定して依存関係を抽出する方法
  • SwiftUIを使ってクラス図ライクで移動可能なUIを実装する方法

についてお話しします。
このトークを通じて、Swiftで書かれたコードを解析するハードルを下げ、オリジナルの開発支援ツールを実装しよう!と思ってもらえることを目指します。

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

visionOSで動画の進行と共に空間演出を表示するSwift実装

shmdevelop 服部 智

Apple Vision Proでは、動画を再生するとその場面に応じて、現実空間に対してリアルタイムな演出効果が表示される斬新な体験ができます。

例えば、突然飛行機が上空を通り過ぎたり、周辺がヨーロッパの街並みに変わったり、たくさんの風船が表示されたり。

グラス型端末の没入感と相まって、これまでとは一線を画した体験です。

この面白い機能はどうやって実装するのでしょう。

何がきっかけで演出が始まるのでしょうか?
演出はどう作るのでしょうか?
動画のスキップ、一時停止には対応しているのでしょうか?

これらの疑問に答えるため、このセッションでは作業手順を説明し、ソースコードを解説し、ライブデモを行います。
実装はSwiftで行い、Apple Vision Proのシミュレータと実機で動作します。

具体的には以下の内容をカバーします:

  • HLS動画へのmeta data埋め込み
  • meta data受信後制御
  • 周辺を変える演出、戻る演出
  • Particleによる演出

このセッションを通じて、参加者は実際にvisionOSでの空間演出を実装するための具体的な手法を学び、自分で独自の体験を作り上げるスキルを身につけることができます。

visionOSの可能性を知り、今後も体験が進化していくワクワクを届けたいと思います!

2