ポスターセッション

サイドローディングがやってくる? 新法とEUの事例をもとに、アプリ配信の未来を考えましょう

iKichiemon kichiemon

2024年6月12日、「スマホ特定ソフトウエア競争促進法」が可決され成立しました。
これによりApp Store以外のストアからアプリをインストールする「サイドローディング」が義務化されることになります。

もしサイドローディングが認められると、どのような変化が起こるでしょうか。
アプリ配信者として、どのような選択を取るべきなのでしょうか。

新法成立の影響が身近なところにまで及ぶかもしれません。
改めてこのタイミングで、アプリ配信を取り巻く社会的な動きを知っておくことは、将来の備えとして大事なことだと考えます。

本セッションは、サイドローディングの賛否について、提言するものではありません。

新法に対する様々な意見を整理しながら、法律の内容や目的について理解を深めた上で、
先行するEUを事例として、これから起こりうる変化を想像します。

ポスターセッション

Appleの『ホーム』を使いたい!HomebridgeとMatterを使った経験から、最新のスマートホーム事情を紹介します【2024年夏】

ni_san2000 にーさん

Appleが発表したスマートホーム規格の「HomeKit」に対応しているアクセサリは、iOSやmacOSの『ホーム』アプリやコントロールセンターなどから操作できるという、他のスマートホーム製品にない強みを持っています。
しかし、日本国内でよく知られているスマートホームのメーカーの中で、HomeKitに対応している製品を出している企業は非常に少ないという課題があります。
このポスターセッションでは、HomeKit非対応のアクセサリを『ホーム』アプリに追加する方法であるHomebridgeとMatterに焦点を当て、私自身が実際に構築した『ホーム』アプリで一元管理できるスマートホーム環境を紹介します。
さらに、現状できることや得意・苦手な点を説明し、これからスマートホームを始める際のおすすめの方法を解説します。
このセッションを通じて、私自身がスマートホーム環境の構築で感じた課題感をもとに、2024年夏現在の国内のスマートホーム事情をキャッチアップできる内容をお届けします。

1
ポスターセッション

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実装を題材に、書き起こした図解や説明を活用した事例を紹介します。これにより、業務や個人開発だけでなく、円滑なコミュニケーションの機会にも応用できる方法をお伝えします。

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

ポスターセッション

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
ポスターセッション

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

tsuzuki817 續橋 涼

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

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

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

3
ポスターセッション

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

ig4ry0 igaryo

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

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

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

4
ポスターセッション

チーム開発効率化とデザインの一貫性を実現する、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アプリのパフォーマンスを向上させるための重要な最適化技術です。
このトークでは、インライン展開が実際にどのように行われているのかを、アーティファクトや中間言語を通じて詳しく解析します。

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

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

論理条件を表すPredicateの罠

rila_____ rila

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

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

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

2
LT(5分)

カレンダー+ローカライズの戦い

tokorom 所 友太

Apple Vision Pro向けに「カレンダーを壁に貼り付ける」というだけのシンプルなアプリを作り始めました。
基本的には「カレンダーを表示する」だけですのですぐに実装できるものと甘くみていました。
しかしOSの言語設定に応じて「カレンダーをローカライズする」という要件を加えた途端、泥沼にハマることになりました...

このLTではカレンダーをローカライズするに際にぶちあたった予期せぬ問題とそれにどう対処し、もしくは諦めたかという苦しい戦いの経緯を赤裸々に語ります。

LT(5分)

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

tokorom 所 友太

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

このLTでは、iOS18でのSharePlayの進化や、今年ついに発売されたApple Vision ProでのSharePlayの利用方法について楽しく解説します。
アップデートされた内容を中心に、SharePlayの歴史と進化についてもさらっと復習する予定です。

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

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

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

Sossui_Swift sosuiiii

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

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

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

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

②SwiftUIについて

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

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

4
LT(5分)

Agoraを用いた1on1ビデオ通話機能の開発と品質向上への取り組み

本発表ではAgoraを用いた1on1ビデオ通話機能の開発について、その実装方法と品質向上への取り組みを紹介します。
Agoraの基本的な使い方について紹介し、iOSアプリからAgora機能の呼び出し方、映像のViewへの出力などのビデオ通話機能の実装について解説します。
特に、通信環境の不安定さが品質に及ぼす影響と、それをどのように克服するかに焦点を当てます。具体的には、AgoraAPIを活用して通信品質を最適化する方法を紹介します。
さらに、ビデオ通話中に他の作業を同時に行うためのPicture in Picture(PiP)機能の導入についても触れます。PiP機能を利用することで、ユーザーエクスペリエンスを向上させるとともに、作業効率を上げることが可能となります。
このプレゼンテーションを通じて、ビデオ通話機能の開発に関心がある方々に、具体的な開発方法と品質向上への取り組みを理解していただき、それを自身のプロジェクトに活かしていただければ幸いです。

2
LT(5分)

What's Changed in App Review 2023-2024

monolithic_adam Adam Henry

App Store Review Guidelinesは長くて難解だと感じている方はいませんか?この5分のライトニングトークでは、一緒に最新のガイドラインを解読し、重要な変更点を理解しましょう!

このトークでは、以下のポイントに焦点を当てます。

  • 2023-2024年における主な変更点
  • 新しいガイドラインが誰のアプリに影響を与えるのか
  • 開発者が注意すべき具体的なポイント

このトークに参加することで、App Review Guidelinesの最新情報を把握し、アプリ開発におけるリスクを軽減する方法を学べます。ぜひ、一緒にApp Review Guidelinesを理解しましょう!

3