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

SwiftUIでアクセシビリティに優れたiOSアプリを構築する

kzytcbn315 たっち

アクセシビリティは、すべてのユーザーにアプリを利用してもらうための重要な要素です。

このセッションでは、SwiftUIを使用してアクセシブルなiOSアプリを構築するための具体的な技術と知見を紹介します。具体的には、以下のポイントについてお話します。

VoiceOverの設定 - 視覚障害者向けのナビゲーション補助。
Dynamic Type対応 - ユーザーがテキストサイズを調整できる機能。
カラーコントラストの最適化 - 色覚多様性に対応したデザイン。
インタラクション要素の設計 - タッチやジェスチャーの使いやすさの向上。

このセッションを通じて、アクセシブルなアプリ開発のための具体的な知識とスキルを習得しましょう。

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

ノートアプリにUndo機能を実装! UndoManager導入ポイント

watura watura

noteのiOSアプリにはこれまでUndo/Redo機能がありませんでした。しかし、この春にUndoManagerを導入しUndoに対応しました。

UndoManagerは、アプリにUndo・Redo機能を提供してくれる強力なクラスです。
特にnote アプリのような編集アプリにとって、Undo機能は必須の機能の一つといえます。
しかし、意外とUndoManagerを使いこなしているアプリは少ないのが現状です。

本トークでは、UndoManagerの基礎から、実際のアプリへの導入方法、そしてその際のはまりポイントまで、実体験に基づいて解説します。

[内容]

  1. UndoManagerの概要とUndo・Redo方法
  2. Undoのグルーピング機能
  3. note アプリへのUndoManager導入
  4. 導入時に遭遇したはまりポイントと解決策
  5. UndoManagerを使ったテストの書き方

一緒にUndoManagerを使いこなし、アプリのユーザーエクスペリエンスを向上させましょう!

5
ポスターセッション

【図解】公式アプリから見る技術カンファレンス

S_Shimotori_pub S_Shimotori

技術カンファレンスは様々な方がそれぞれの形で貢献し作り上げるイベントです。
公式サイトや公式アプリはイベントの内容や方針がよく表れるものであり、その開発はITエンジニアならではの貢献のひとつです。
オープンソース化されているものならば使用されている技術も必見です。iOSアプリエンジニア、もしくはAndroidアプリエンジニアとしてソースコードを読んだり実際に開発に参加したりした方も多いでしょう。
毎年ゼロから開発している公式アプリであればその年の最新の設計や流行のライブラリを窺い知る貴重な資料になります。

本ポスターセッションでは、カンファレンスの公式iOSアプリを通してカンファレンスについて考えます。

ポスターに掲載する内容

  • 各カンファレンスのイベント内容の紹介
  • アプリのコンテンツ内容や設計の紹介
  • OSS開発の運営体制や技術領域の考え方の紹介

対象カンファレンス

  • iOSDC Japan 2023(「fortee」「名札交換」)
  • DroidKaigi 2023
  • FlutterKaigi 2023
  • try! Swift Tokyo 2024

このポスターセッションが技術領域の垣根を超えた交流やカンファレンスへの貢献の促進につながれば幸いです。

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

VIPERプロジェクトのUIKitからSwiftUIへの移行

spycwolf spyc

みなさんの会社ではUIKitからSwiftUIへの移行をどのように進めていますか?
また、移行の際に既存のシステムアーキテクチャをどう扱えば良いか悩んでいる方も多いのではないでしょうか。

私たちのiOSアプリ「note」では、VIPERというアーキテクチャを採用しています。
VIPERはiOSアプリ開発にクリーンアーキテクチャの一種で、View、Interactor、Presenter、 Entitiy、 Routingなどに責務を分割するアーキテクチャです。

本セッションでは、noteのiOSアプリにおいて、UIKitからSwiftUIへの移行した際、どのようにVIPERアーキテクチャと向き合っていったかを共有します。

  1. SwiftUIにおけるVIPERアーキテクチャ採用の理由
  2. Viewレイヤー以外の変更点
  3. 移行時の課題とその対処方法

多くの現場でUIKitからSwiftUIへの移行が進んでいるかと思いますが、このセッションでは実務で得た具体的なノウハウをお伝えし、皆様のプロジェクトに役立てていただければと思います。

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

TextKit 2でテキスト操作の限界に挑む!

0si43

WWDC21でTextKit 2が発表されました。NSTextLayoutManagerを中心とした新しいテキスト操作へのアプローチは無限の可能性を感じさせた一方で、その実用には多くの困難が伴います。本セッションではそんなTextKit 2を使うことで、テキストとレイアウトの柔軟な関係を実現し、テキスト操作の限界に挑みます。

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

iOSアプリ開発者のためのCompose Multiplatform入門

spycwolf spyc

Compose MultiplatformはiOS、Android、Desktopアプリ間でUIコードを共有できる宣言的UIフレームワークです。
これまでKotlin Multiplatformというクロスプラットフォームのフレームワークが存在しましたが、UIコードの共有はできませんでした。

しかし、Compose Multiplatformが登場により、この制約が解消されました。
Jetpack ComposeはAndroid開発向けの宣言的UIフレームワークですが、Compose Multiplatformを使うことで、同じUIコードをiOSアプリにも適用できます。

本セッションでは、以下の内容について解説します。

  1. Compose MultiplatformとJetpack Composeの違いと連携方法
  2. Compose Multiplatformプロジェクトの構築とiOS/Androidコンポーネントの共有
  3. 実装デモと導入時の課題および対処法

Jetpack ComposeとCompose Multiplatformのノウハウを身につけることで、効率的なクロスプラットフォーム開発が実現します。
iOS/Androidの垣根を越えた開発を目指す方の参考になればと思います。

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

マスタリング キーボードショートカット

0si43

iOSアプリでキーボードショートカットに対応するケースは多くありません。しかし、あなたのアプリがiPadで使用でき、長文のテキスト入力が必要な場合、キーボードショートカットを実装することで操作性が向上します。iOSアプリでは UIKeyCommand を使用することで、カスタムのキーボードショートカットを作成できます。
本セッションでは、あまり知見が知られていないキーボードショートカットについて深く掘り下げます。

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

iOSアプリのネットワークエラーを適切に扱う

0si43

モバイルアプリ開発において、ネットワークエラーは当然想定しなければならないエラーです。ただネットワークエラーになった場合にアプリとして対処できることは「回線の復旧を待ってリトライ」であることがほとんどであり、正直雑に処理しているケースがほとんどではないでしょうか?
しかしネットワークエラーの適切なハンドリングによって、更なるUI/UXの向上が実現できるかもしれません。たとえば、YouTubeアプリはオフライン状態を検知した場合、アプリ内のダウンロード済動画への導線を表示するプレミアムユーザー向け機能があります。
本セッションでは、ネットワークエラーを適切に扱うための考え方と、実際の対応方法について話します。
具体的には以下の内容を扱います。

  • ネットワークエラーのハンドリング方針
  • URLSessionのタイムアウト関連設定
  • NWPathMonitorの通信監視
3
レギュラートーク(20分)

Xcode Cloud時代の自動化戦略

watura watura

note社では自動化に力をいれ、リリースフローを大幅にカイゼンしました。
具体的には、SlackからAppStoreConnectやTestFlightへの登録、リリースブランチの作成、メンテナンスやリリースノートの作成を自動化しました。
さらに、CI/CDを全面的にXcode Cloudに移行することで、煩雑だった証明書やプロビジョニングプロファイルの管理からも開放されました。
本トークではエンジニアがエンジニアリングに注力するために、実施した自動化とCI/CD最適化とそのポイントを紹介します。

[内容]

  • App Store Connect API の活用方法
  • Slack Slash Command を利用したApp Store Connect/TestFlightに登録方法
  • リリースブランチ、リリースノート自動生成
  • Xcode Cloud 全面移行とそれに伴う注意点
  • Xcode CloudでSnapShot TestingやMagicPodの利用
5
レギュラートーク(20分)

エンジニアへの新たな軌跡(奇跡): 30代からの挑戦と持続可能な成長

akkiee76 Akihiko Sato

201x年、30代前半未経験のおじさんエンジニアが誕生しました。

もともと趣味の個人開発でアプリを作成していましたが、とあるきっかけでカジュアルゲームのiOSアプリ開発を手伝うことになりました。振り返ると当時の自分にとっては、変数名を大文字で宣言する、似たようなViewControllerを大量生産する、脳死コピペで実装するといった初歩的なエンジニアリングのミスは日常茶飯でした。

しかし、開発していたアプリが無料ランキングで1位になったことで転機が訪れました。その後、Android、フロントエンド、バックエンド開発、プロジェクトマネジメントと業務領域を広げ、転職を繰り返しながら今に至ることができました。

では、どうして今日に至るまで成長し続けることができたのでしょうか。このセッションでは、これまで取り組んできた学習方法を中心に、持続可能な成長方法を詳しく紹介します。

【このセッションで紹介する主なトピック】

  • 私のキャリアの歩み
  • 個人開発時代の学習方法
  • キャリア形成の考え方
  • 効果的な学習方法
  • 挑戦を続けるためのマインドセット
  • 「Connecting the dots」のエピソード

このセッションが皆さんのキャリアのサポートとなることを願っています。

Nothing is too late to start !

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

CICD環境との付き合い方:CICD導入からアプリの大規模Replaceに伴うCICD移行までの4年間の軌跡

taka1068 Takanori Hirobe

アプリ開発においてCICD環境はなくてはならない存在です。エンジニアの開発生産性向上、そしてエンドユーザへ良いプロダクトを届け続けることなどはその導入目的となるでしょう。
アプリのCICD環境を構築する方法はさまざまあります。自前でビルドサーバを用意する方法、そして数多あるSaaSの中でチームや組織に合うサービスを選択することも良い方法です。

本セッションでは株式会社出前館が提供するエンドユーザ向けアプリ出前館アプリにおけるCICD環境(bitrise)の導入、React NativeからFlutterへの移行に伴う改修、そして新たなCICD環境(Teamcity)への移行についてお話します。4年間という短い期間にこれだけの取り組みをしてきたチームは少ないと自負しており、その苦労と葛藤について共有します。

CICD環境はチームや組織の事情、そしてプロダクトなどさまざまな要素の影響を受けます。本セッションを通して、これらの変化に柔軟に対応しつつ、CICD環境と付き合う術を共有できれば幸いです。

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

lim PWA=ネイティブアプリ? PWAの可能性と限界を探る

base_front matsue

iOS 16.4 からPWA(Progressive Web Apps)にリモートプッシュ通知を送ることが出来るようになりました。

これによって、PWAとネイティブアプリの大きな差の一つが無くなったことになります。

そこで今回は iOS上のPWAで出来ることを振り返りつつ、どこまでネイティブアプリに近づけられるかを検証します。

このセッションを通して、PWAの可能性と限界を理解しつつ、ネイティブアプリでサービスを提供する意味を考えていければと思います。

2
ルーキーズLT(5分)

iOSDCのチケットがAppleウォレットに保存されるまで

muno_92 muno92

iPhoneやApple Watchから簡単にクレジットカードなどを利用できるAppleウォレットにはイベントのチケットも登録できます。

そう、iOSDCのチケットも今年からAppleウォレットに保存できるようになりました!

受付時にメールが見つからなかったり、チケットサイトにログインできなかったりして困った経験がある方もいらっしゃるのではないでしょうか。
Appleウォレットにチケットを保存すればそうした困りごとからも解放されます。

筆者はiOSDC Japanが運営に使用しているWebシステム「fortee(フォルテ)」のAppleウォレット・Googleウォレット連携を実装しました。
しかし、Appleウォレットは公式ドキュメントの奥深くに潜らないとデバッグ方法が見つからなかったりと、初見だと実装時にハマるポイントがいくつかありました。

この発表では

  • Appleウォレット対応が実装されるまでの経緯、苦労した所
  • iOSDCのチケットが発券されてからウォレットに保存されるまでの流れ

を通して一般的なWebシステムからAppleウォレットにチケットを保存する方法を解説します。

  • 話すこと
    • Appleウォレットの概要、その中身
  • 話さないこと
    • Appleウォレットの追加元(iOSアプリ・App Clip・Webシステム)ごとの細かい実装方法
6
ルーキーズLT(5分)

ほぼノーダメージでレガシーモジュールから脱却する方法

dsxsxsxs デスクス

「あのモジュールは負債まみれで入れたくないけど、この型や定数が必要で仕方なく使っている…」
そんな悩みを抱えていませんか?
技術負債から脱却するためには、大規模な改修がつきもので、その分リスクも高くなります。

このLTでは、コードベース全体に破壊的な変更を抑えつつ、ほぼ無傷でレガシーモジュールへの依存を剥がす方法を紹介します。

  • 事前計画と調査方法
  • 依存注入、typealiasを利用して逆転勝利する方法
2
レギュラートーク(20分)

お疲れ様! Firebase Dynamic Links! お別れの日に備えよう!

hiroaki_iOS hiroaki

2025年8月25日にFirebase Dynamic Links(以降 FDL)サービスが終了を迎えます。
本発表では、FDLとお別れをする方法などについて、いくつかの方法を提案させていただきます。

本発表は以下に該当する方に参考にしていただければと思っています。

  • 対応を考えたいがどうしたら良いかわからない方
  • 自前で実装を考えている方

本発表では以下の内容で説明します。

  1. FDLの機能のおさらい
  2. FDLの移行手段
    • 外部サービスを使用する
    • 自前実装を行う
  3. 自前実装を選択をした場合に必要な技術のおさらい
    • iOSのUniversal Links機能
    • App Storeを用いた流入元計測
    • Deferred DeepLinks
  4. FDLの用途ごとの自前実装構成プランの提案
    • 特定のリンクからアプリを起動する場合(アプリがない場合はWebページを開く)の構成
    • アプリがない場合にストア遷移をする場合の構成
    • ショートリンクを用いた際の構成
    • Deferred DeepLinksを使用する場合の構成
8
レギュラートーク(20分)

グラフ実装の選択肢!Swift ChartsとDGChartsのどちらを使うべきか?

yamakentoc yamaken

現在、iOSでグラフを実装するには様々な選択肢があります。WWDC22ではSwift ChartsというApple公式のframeworkが公開されましたが、それまでは多くのプロダクトがDGCharts(旧Charts)というサードパーティ製のライブラリを使用していました。WWDC23ではSwift Chartsにアップデートが加えられましたが、DGChartsも引き続きアップデートされています。

では、今グラフを実装するならSwift ChartsとDGChartsのどちらを選ぶべきでしょうか?
このトークでは、Swift ChartsとDGChartsの性能を比較して、どちらを使うべきかを検討します。

具体的には以下の内容について比較・検討します。

  • 基本機能とグラフの種類
  • グラフの見た目や機能のカスタマイズ性
  • 各ツールで同じグラフを実装する際の難易度
  • 大規模データセットを利用した場合のパフォーマンス

また、Swift ChartsとDGChartsの基礎についても学ぶことができるため、事前知識がなくても聞くことができます。
このトークに参加してSwift ChartsとDGChartsの違いを深く理解し、あなたのプロジェクトに最適なグラフツールを一緒に探してみませんか?

4
ルーキーズLT(5分)

iOS の技術ニュースをより的確に、より安定して効率よく発信していくための取り組み

ry_itto 伊藤凌也

皆さんは iOS Osushi をご存知でしょうか?
有志で運営を行っている、週1回更新で iOS の技術ニュースを発信しているサイトです。

そんな iOS Osushi ですが、その記事の作成・まとめ作業の大半は手作業で、まとめるまでにかかる時間はおよそ1時間ほどかかる場合もあり、少なからず管理メンバーたちの負担になってしまっています。

このセッションでは、負担になってしまっている特に「リリース情報の要約」の作業を生成 AI を用いて自動化し、効率化している取り組みについてご紹介します。

このセッションでは以下の内容を話します。

  1. iOS Osushi の現状の紹介
  2. 利用できる生成 AI の種類の比較・選定
  3. 適切な粒度でのリリースの要約にするための試行錯誤
2
ルーキーズLT(5分)

大解剖!Flutter での iOS UI 表現方法を学ぶ!

ry_itto 伊藤凌也

内容

最近採用されることが多くなってきた UI フレームワークFlutterですが、その Flutter で iOS の UI をどう実現しているかご存知でしょうか?
Flutter での iOS の UI の実現は実は独自に描画されたもので、全てが iOS 標準の UI をそのまま使っているわけではないのです。

このセッションでは、そんな Flutter での iOS の UI の実現方法について Flutter の描画エンジンの話から実際の UI を見てどのような差異があるのか説明していきます。

このセッションは以下のような流れで行います。

  1. Flutter とは?概要と描画エンジンについて
  2. Flutter で作られた iOS の UI と本来の UI の比較
  3. Flutter での iOS UI 実現の現状の課題感

対象

  • Flutter に興味がある方
  • Flutter で iOS の UI がどのように実現されているか気になる方
1
レギュラートーク(20分)

大解剖!Flutter での iOS UI 表現方法を学ぶ!

ry_itto 伊藤凌也

内容

最近採用されることが多くなってきたUIフレームワークFlutterですが、そのFlutterでiOSのUIをどう実現しているかご存知でしょうか? FlutterでのiOSのUIの実現は、実は独自に描画されたもので、全てがiOS標準のUIをそのまま使っているわけではありません。

このセッションでは、そんなFlutterでのiOSのUIの実現方法について、Flutterの描画エンジンの話から実際のFlutterのソースコードを追いながら説明していきます。

このセッションは以下のような流れで行います。

  1. Flutterとは?概要と描画エンジンについて
  2. Flutter本体のソースコードを追ってみる
  3. Flutterで作られたiOSのUIと本来のUIの比較
  4. iOSネイティブのUIをFlutterで使うには
  5. FlutterでのiOS UI実現の現状の課題感

対象

  • Flutter に興味がある方
  • Flutter で iOS の UI がどのように実現されているか気になる方
ルーキーズLT(5分)

Method Swizzlingを行うライブラリにおけるマルチモジュール設計

yoshikma28 松原 良和

Method Swizzlingはメソッドの実行時の挙動を動的に変更する強力な機能ですが、複数のライブラリが同じメソッドに対してSwizzlingを行う場合競合が発生しやすく、アプリケーションの安定性に影響を与える可能性があります。Method Swizzlingを行うライブラリがSwift Package Managerのマルチモジュール構成を採用する場合はこのアプリケーションへの影響を考える必要があります。
本トークではMethod Swizzlingのようなアプリケーション全体に影響を与えるAPIを利用したライブラリにおいて、Swift Package Managerのマルチモジュール構成を採用した場合でも正しくSwizzlingが行われるよう、各モジュールが独立して機能するように設計した事例について紹介します。このアプローチによりMethod Swizzlingを用いたライブラリでも、安全にマルチモジュール構成下での利用ができるようになります。

【内容】
・Method Swizzlingを用いたライブラリの例
・Method Swizzlingがアプリケーション全体に与える影響
・Method Swizzlingが正しく動作するマルチモジュール構成

本トークによって、開発者の皆さまがより良いモジュール設計ができるようになると幸いです。

2