採択
ポスターセッション

不安定なテストコードは200種類もあるわけがないねん

yimajo 今城 善矩

テストコードの結果が不安定となってしまう原因を細かく分類しても、到底200種類になんてならないでしょう。このポスターセッションでは、テストが不安定になる実例を数種類紹介します。

紹介する不安定なテストコードというのは100%失敗するようなそんな甘いものではありません。CIサーバでビルド失敗時にガチャのようにリビルドすれば、たまに成功するようなテストコードです。ポスターセッションでは、なぜそのテストコードが不安定で、どのように解決したかについてクイズ形式にしたいと思っています。

4
ポスターセッション

Meet swift-property-name

yimajo 今城 善矩

Swift 5.9からSwift Macroが使えるようになり、iOSアプリ開発の現場でもその活用が進んでいます。Swift Macroは手作業で書く必要があったコードを自動生成できボイラープレートを減らす上で非常に有効です。

このポスターセッションでは、
Swift Macroの簡単な概要と従来のコード生成系ライブラリにはない長所を説明し、私が公開した超絶便利なswift-property-nameというSwift Macroの実装について詳しく紹介します。

このセッションで取り上げない内容として、Swift MacroのFreestanding MacroとAttached Macroのさらに細かい分類については触れません。さらに、コンパイル時間はどうなるのか、手作業でボイラープレートを書くほうが温かみがあるではないか、などの話題にも触れません。それらの話は、他のセッションに期待したり、各種ドキュメントを参照していただくのが良いと思います。

私が今回話すのは、複数あるSwift Macroの実装方法のなかで、私が何を考えてそのような実装にしたのかだけです。このトークを通じてみなさんのiOSアプリ開発の効率化にも何かしら役立てていただければ幸いです。

ポスターセッション

The Composable Architectureの良さを改めて整理する 2024秋

yimajo 今城 善矩

The Composable Architecture(TCA)はiOSアプリ開発において関数型スタイルの原則を取り入れているOSSのフレームワークでありライブラリです。このポスターセッションでは、2020年5月にv0.1がリリースされ現在まで4年を経過しアップデートされ続けているTCAの良さを整理します。

そもそもiOSアプリ開発においてフレームワークが何の役に立つのでしょうか?現代はSwift Concurrencyがあり非同期処理は簡単に捌けます。SwiftUI.ViewもあるんだからModelという奴をつくりObservationで使えるようにしたり、もしくはObservableObjectにViewModelなんて名前をつけてそれっぽくやったらアプリなんて簡単にできるじゃないですか。さらにXcode 16ではオンデバイスでAIが候補を出してくれたり、Swift Assistがあなたの代わりにコードを用意してくれます。またSwift Macroによって、より無駄なコードを書く必要もなくなってもいます。

そのような現状で、TCAもSwiftの進化にあわせて進化し、互換性を保ちながら弱点を解決しさらに使いやすくなっています。このセッションでは、iOSアプリの作り方を知っているだけでは解決に至らない課題について説明し、TCAがどのようにそれらを解決するかを具体的に解説します。

1
ポスターセッション

複雑な実装を紐解くための図解化&言語化ノート活用術の紹介

fumiyasac 酒井文也

業務や個人開発を問わず、機能実装の準備段階や進行中に、GitHubに公開されているコードや動画プラットフォームで提供されるサンプル実装を参考にする機会は多いと思います。しかし、そのようなコードをただ動かして実装を見るだけでは、断片的な理解で終わってしまったり、応用可能なポイントを見逃してしまうことがあります。

私自身もそのような経験をたくさんしてきました。特にiOSアプリ開発において、UI実装や表現に関連する複雑な実装コードを読み解く際には、手書きノートを活用して理解を深めています。具体的には、重要な部分を「簡単な図解と説明を交え、自分の言葉で整理」する取り組みを行っています。

このトークでは、公開されているサンプル実装や私が自主的に取り組んだUI実装を題材に、書き起こした図解や説明を活用した事例を紹介します。これにより、業務や個人開発だけでなく、円滑なコミュニケーションの機会にも応用できる方法をお伝えします。

会場では、これまでにまとめたノートのアーカイブを持参する予定ですので、皆様とインプット術や複雑な実装に向き合う方法について意見交換ができれば嬉しく思います。具体的な事例を元にコードを紐解くアイデアも共有し、積極的なディスカッションを期待しています。

採択
ポスターセッション

年表で振り返るWWDC

yamakentoc yamaken

WWDC(Worldwide Developers Conference)はいつから始まったか知っていますか?
2010年…?2000年…?いえ、実はWWDCの始まりは1990年代まで遡ります。実はその前身となるイベントはさらに昔から開催されていました。

昔のWWDCの情報は簡単に得られるものではありませんが、今回、可能な限り昔のWWDCを中心に調べてみました。
A0サイズのポスターにWWDC創設期から現在までの各年のWWDCで、「どのような出来事があったか」「どのような技術が発表されたか」を年表でまとめます。

「そんなこともあったな」とか「あ〜!懐かしい…!」など、皆さんと一緒に振り返りながら楽しむことができればと思います。

2
ポスターセッション

Xcode Previewsビルド高速化のための戦略

yamakentoc yamaken

依存関係が複雑なプロジェクトほど、Xcode Previewsビルドに時間がかかってしまいます。ビルド時間を短縮する方法として、Preview用のTargetを作成する方法があります。依存ファイルを減らすことでビルド時間の短縮を狙いますが、Targetを設定するだけでは期待通りに機能しないことが多いです。

例えば、Viewが依存関係が複雑なクラスを参照している場合、そのクラスが依存している全てのクラスをコンパイルする必要があり、更にそのクラスが…のように依存関係が続くと、結局膨大な量をコンパイルするため、ビルドに時間がかかってしまう問題があります。
本ポスターセッションでは、この問題に対する解決策を提案します。

ポスターに掲載する内容

  • Targetを活用したPreviewのビルド時間短縮の手順
  • Viewが依存関係の複雑なクラスを参照する場合に生じる問題の詳細
  • その問題に対する解決策の提案

私が担当しているプロジェクトでは、この方法を用いることで、約120秒かかっていた初回のPreviewビルドが約23秒になりました。本セッションを通じてTargetを活用したPreviewビルドの高速化について学ぶと共に、提案した解決策は適しているものなのか、もしくは別の解決策もあるんじゃないかなどを議論できればと考えています。

1
ポスターセッション

Visionフレームワークと正規表現を用いたテキスト認識による賞味期限の管理方法

kyuriza62 ぎゅ

Visionフレームワークは、Appleが提供する画像処理ライブラリであり、このフレームワークを使うことで、顔認識・テキスト認識・物体検出・画像分類などの画像認識機能を実現できます。例えば、顔認識ではユーザーの顔を検出して認証に使うことができ、テキスト認識ではレシートや書類の文字を抽出することができます。

特にテキスト認識は、画像や動画内の文字を抽出することができ、正規表現という特定のパターンに一致する文字列を探索したり加工するための方法と組み合わせることで、より高度なデータの抽出に利用することが多いです。

みなさんは、賞味期限に様々なフォーマットがあることをご存知でしょうか。例えば、YYYY/MM/DD、MM-DD-YYYY、MM/DD-YYなど様々なフォーマットで商品の賞味期限が表現されています。

本セッションでは、正規表現とテキスト認識を組み合わせた応用例として、賞味期限を画像から抽出してアプリ内で表示・管理する方法を紹介し、実装コードの例も交えて説明いたします。

このセッションを通して、賞味期限をアプリ内で管理するための具体的なTipsや実装方法を共有します。興味のある方は、ぜひ一緒にお話ししましょう。

2
ポスターセッション

10年以上続くプロジェクトのディレクトリ構造を整理する

yamakentoc yamaken

皆さんのプロジェクトのディレクトリ構造は綺麗な状態ですか?
ディレクトリ構造は、プロジェクト初期には綺麗に整理された状態でも、ルール化や継続的なメンテナンスがされなければ徐々に複雑化していきます。
私が開発しているiOSアプリのプロジェクトはリリースしてから10年以上経ちますが、機能追加やアーキテクチャの変更に伴い、ディレクトリ構造がカオスな状態になっていました。
本ポスターセッションでは、そんな10年以上続くプロジェクトのディレクトリ構造をどのように整理したか、その過程と得られた知見を詳しく説明します。

ポスターに掲載する内容

  • ディレクトリ構造が複雑化することの問題点
  • 現状のディレクトリ構造の全体像
  • 整理するために実際に行った具体的な手順
  • それによって得られた知見

本セッションを通じて、あなたのプロジェクトのディレクトリ構造も整理するきっかけにしませんか?

1
ポスターセッション

最適なディレクトリ構造の配置ルールについて考える

yamakentoc yamaken

皆さんのプロジェクトのディレクトリ構造は綺麗な状態ですか?

おそらくすぐに「YES」と答えるのは難しいかもしれません。ディレクトリ構造は明確なルールが無いと、時間とともに複雑化しがちです。私が担当しているプロジェクトもその一例で、基本的なアーキテクチャの方針に基づいた大まかなルールはありますが、具体的な配置は各開発メンバーの裁量に任されています。その結果、時間とともに複雑化してしまいました。

今回、そんな複雑化したディレクトリ構造を整理し、どのように配置すれば最適かを考えてみました。
現状の構造を俯瞰することで見えてきた課題や、実際に適用してみてわかったアンチパターン、未だに悩んでいる配置についても共有します。

ディレクトリ構造の配置については正解がないと思います。各プロジェクトに応じた最適解があり、個々の考え方も異なるでしょう。本セッションでは、私が担当しているプロジェクトを一例として取り上げ、「こんなルールもいいんじゃないか」、「そのルールだとこういう問題も出てくるんじゃないか」などを議論し、ディレクトリ構造の整理とルールについて深く考える機会にしたいと考えています。

3
採択
ポスターセッション

Haptic Feedbackでクセになるユーザー体験を提供しよう!

15531b イッセー

Haptic Feedbackを使ったことがありますか?触覚を通じてユーザーに情報を伝える技術、それがHaptic Feedbackです。

現在、Haptic Feedbackはさまざまなアプリで使用されており、特に最近リリースされたアプリではその使用が急増しています。この技術はユーザーに高い没入感を提供しており、Apple Pencil ProにもHaptic Feedbackが導入されました。

本ポスターセッションでは、Haptic Feedbackを導入するメリットやAppleが推奨する使用方法、実際のコード例を交えて詳しく説明します。さらに、実際のアプリにおける使用シナリオについても紹介します。

Haptic Feedbackは、ユーザーのアクションやUIアニメーションにほんの数行のコードを加えるだけで、簡単に没入感を提供することができます。ただし、乱用は禁物です。適切なタイミングと場面で使用することで、ユーザー体験を飛躍的に向上させることができます。
さらに、Core Hapticsフレームワークを使用すると、カスタマイズしたフィードバックを作成することが可能です。振動のパターンや強度を細かく調整することで、ユーザーに伝えたいメッセージを明確に伝えられます。

Haptic Feedbackを駆使して、ユーザーの心を惹きつけるインタラクションを実現しましょう。

2
採択
ポスターセッション

WWDC24体験記 〜現地でのタイムライン〜

ojun_9 ojun

このポスターセッションではWWDC24に現地参加した経験をもとに、現地ならではの細かな情報を共有します!

WWDC24への参加記事は多く見られますが「ご飯ってどこで何を食べたの」、「いつどのタイミングでどこに行ったの?」、「寒暖差どんな感じ?」、「時差ボケ大丈夫なの?」など、細かな情報はあまり存在しない印象があります

そこで、このセッションでは、A0サイズの大きな紙にWWDC24滞在中の情報を写真と言葉でまとめ、タイムライン形式で紹介します!
タイムラインを眺めながらワイワイできたら嬉しいです!

3
ポスターセッション

SwiftUIで作った25個のアプリから学ぶ個人開発の魅力

tsuzuki817 續橋 涼

みなさん個人開発を楽しんでいますか?
このセッションでは SwiftUI が発表されてから5年間で私が作成した25個の個人開発アプリから 成功と失敗、そしてそれらがもたらした利益や学びを振り返ります!

  • 成功したアプリの事例紹介と分析
    成功したアプリの具体的な事例を挙げ、それがどのように成功したのか、どれだけの収益を上げたのかを分析します。
  • 失敗したアプリの事例紹介と失敗からの具体的な学び
    失敗したアプリについても具体的な事例を紹介し、その失敗から得られた教訓を詳しく説明します;;

ぜひこのポスターセッションに参加して、一緒に「ああでもない」「こうでもない」とざっくばらんに議論しましょう!
何気ない会話から新しいアプリのアイディアが生まれるかもしれません。

3
採択
ポスターセッション

3次元回転とクォータニオン:iOSのAccelerateフレームワークでの実践

usamik26 宇佐見公輔

コンピューター上で3次元のオブジェクトを回転させるとき、3次元回転操作の表現としてクォータニオン(四元数)がよく使われます。数学ではベクトルや行列がよく使われますが、クォータニオンは行列よりもメモリ効率が良く、計算が高速です。

このポスターセッションでは、クォータニオンの有用性をiOSのAccelerateフレームワークに含まれるsimdモジュールを使って解説し、SceneKitで実際に描画する実例を示します。

• クォータニオンの基礎:19世紀に数学者ハミルトンが考案したクォータニオンの基礎を解説。
• simdモジュール:コード上でのクォータニオンの扱い方。
• 回転の補間:クォータニオンを活用した軌跡の補間、滑らかな回転アニメーションの実現。
• 3次元オブジェクトの回転:SceneKitで回転を描画する実例。

3次元グラフィックスの基礎を知りたいiOSアプリ開発者向けの内容です。

4
採択
2024/08/23 14:30〜
Track D
スポンサーセッション(20分)
スポンサーセッション

MV State PatternでSwiftUIを受け入れる

Hiroma Tsuchiya

私たちのチームでは来たるべき超巨大アプリの開発に備え、向こう5年間は大規模なリファクタリングを必要としない堅牢な設計を目指してPoCを去年から開始しました。
PureなSwiftUIが全面的に採用され、基盤となるアプリアーキテクチャはどうするべきかという議論も重ねました。
本セッションではあまり聞き馴染みのないアーキテクチャである「MV State Pattern」について視覚的に分かりやすく解説しつつ、以下のポイントに的を絞ってお話しします。

【ポイント】
・MV State Patternとは
・なぜ採用したのか
・SwiftUIとの親和性
・実際の使用感はどうなのか

これらの知見が今後アプリアーキテクチャを考える皆さんの意思決定の一助となれば幸いです。

1
ポスターセッション

VisionOS時代に備えて、usdz徹底解説

ig4ry0 igaryo

Appleの新しいデバイスVision Proの登場により、従来のiOSの平面的な表現とは異なる3次元的なUI戦略も進み、3Dモデルの需要が急増しています。その際、Apple独自の3Dファイルフォーマットである.usdzを利用する機会も増えていくと予想されます。

本セッションでは、usdzファイルの特性やメリットの説明から、作成方法、表示方法など、usdzを利用するために必要な知識を網羅的にまとめます。このセッションを通じて、参加者がusdzファイルを開発者として効果的に利用できるようになることを目指します。

さらに、Unityを用いてusdzファイルを利用する方法や、サーバー上にある3Dモデルをアプリケーションで描画する際のTipsなど、私がusdzファイルを使用して得た実践的な知見を共有します。

3
ポスターセッション

チーム開発効率化とデザインの一貫性を実現する、SwiftUIのカスタムフォントスタイル

gaussbeam HANYU, Koji

SwiftUIでのアプリ開発では、フォントの指定はText("Hello").font(.title)のように簡単に行えます。
しかしこの方法では、SwiftUIフレームワークのフォントスタイルをそのまま使うため、特にAndroidアプリも開発するようなチームでは、デザインの一貫性を維持しつつ効率的に開発を進めることが難しくなります。

本セッションでは、カスタムのフォントスタイルとモディファイアを定義し、一貫性のあるUI実装をより効率的に進める方法を紹介します。
具体的には、以下の内容について、コードを交えて解説します。

  1. フォントスタイルを定義し、フォントサイズとウェイトを紐づける方法
  2. カスタムモディファイアを作成し、定義したフォントスタイルを簡単に適用する方法
  3. フォントスタイルのサンプル画面を作成し、スタイルを簡単に確認できるようにする方法

これらの工夫により、iOSエンジニア以外のメンバーとのコミュニケーションが円滑になり、デザインの一貫性を保ちながら効率的にアプリ開発を進められるようになります。
本セッションを通して、チーム開発をより円滑に進めるヒントが得ることができます。

関連リンク

1
ポスターセッション

iOSアプリに軽量なSnackbarを導入し、スムーズなユーザーコミュニケーションを実現する

gaussbeam HANYU, Koji

モバイルアプリにおいては、ユーザーの操作に応じた適切なフィードバックを提供することが重要です。しかし、UIAlertControllerを使ったアラートの表示は、時としてユーザーの操作を阻害することがあります。

本セッションでは、Material Designで定義されているSnackbarコンポーネントに着目します。
Snackbarは、ユーザーの操作に応じた短いメッセージを素早く表示するのに適しており、取り入れることで操作完了時やエラー時のメッセージ表示をスムーズに行える効果が期待できます。

本セッションではまず、Snackbarの基礎概念や利点、アラートとの違いを整理して解説します。
続いて、VIPERアーキテクチャのiOSアプリを例に、軽量なSnackbarを設計・実装するためのポイントを、具体的なコードを交えて紹介します。

Snackbarを活用することで、ユーザーとのコミュニケーションをより円滑にし、ユーザー体験を向上させることができます。
本セッションが、iOSアプリ開発におけるユーザーインタラクションの設計の選択肢を広げるきっかけになれば幸いです。

聴講者が得られる知見

  • Snackbarの基礎概念と利点の理解
  • Snackbarとアラートの違い、使い分けの方法
  • VIPERアーキテクチャにおける、軽量なSnackbarの設計と実装方法
1
レギュラートーク(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