レギュラートーク(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
採択
2024/08/22 17:20〜
Track B
レギュラートーク(40分)

StoreKit 2によるモダンなアプリ内課金

0si43

2024年4月、note iOSアプリはアプリ内課金機能をリリースしました。本セッションでは、StoreKit 2の導入、実装、テストについて説明します。これからアプリ内課金を実装しようとする方にとって、参考になる情報を提供できれば幸いです。
具体的には以下の内容を扱います。

  • noteアプリのポイント課金仕様
  • StoreKit 1とStoreKit 2の比較
  • StoreKit 2による実装
    • async/awaitによる非同期処理の簡略化
    • レシート検証の簡素化
  • テスト方法
    • sandbox環境とTestFlightを使ったテスト
    • StoreKitTestの活用
レギュラートーク(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
採択
2024/08/23 10:50〜
Track C
レギュラートーク(20分)

メインスレッドをブロックさせないためのSwift Concurrencyクイズ

tokizuoh tokizo

Swift 5.5のリリースから早3年、Swift Concurrencyは日々の開発に普及しつつあります。非同期処理を手軽に扱えるようになりましたが、あなたの実装には大きな落とし穴があるかもしれません!

アプリケーション開発において、メインスレッドの健全性はユーザー体験を左右する重要な要素です。メインスレッドがブロックされると、UIの遅延やフリーズが発生し、ユーザーにとってストレスフルな体験となります。
このトークでは、Swift Concurrencyを使った非同期処理におけるメインスレッドのブロックリスクを見極めるため、クイズ形式で知識を深めます。

以下のトピックを扱ったクイズを出題します。

  • TaskとDetached taskの違い
  • Global actorの継承
  • Actor contextの継承
  • Suspension pointの概念
  • Witness tableの概念
レギュラートーク(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 がどのように実現されているか気になる方
採択
2024/08/22 18:45〜
Track B
レギュラートーク(20分)

watchOS 最前線 〜現代のApple Watch向けアプリの作り方〜

kouki_dan kouki_dan

2023年秋に公開されたwatchOS 10では、Apple Watchのインターフェースが大きく変わり、TabViewやNavigationStackなどのUI/UXが大幅に変化しました。
このセッションでは、SwiftUI、WidgetKit、Live ActivityなどのiOSにおける一般的な技術要素をApple Watchでどのように適用していくべきかを体系的に学びます。特に、より使いやすくなったwatchOS 10のアプリ開発における重要なトピックを深掘りします。

また、ComplicationやスマートスタックがApple Watch上でどのように動作するかについても詳しく解説します。

このセッションをご覧いただくことで、iOSエンジニアがApple Watchアプリの開発を始めるための基礎知識を得ることができます。これまでの知識を他のAppleプラットフォームに応用し、スキルの幅を広げる最初の一歩を踏み出しましょう。

ルーキーズ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
LT(5分)

VSCodeとGitHub CopilotでかんたんSwiftスクリプト

417_72ki 417.72KI

Swiftでもシェルスクリプトのようなことができるのは既に知られていることかと思います。
しかし、標準の開発環境であるXcodeではSwiftスクリプトのサポートがほとんどされておらず、標準APIのコード補完すらできないのが現状です。

一方で、VSCode (Visual Studio Code)にSwiftプラグインを導入することでコード補完はもちろん、変数の型の確認が容易になるなどの恩恵を受けられます。
更に、GitHub Copilotも標準サポートされているのである程度の単純作業であればすぐにスクリプト化することができます。

本セッションではSwiftでスクリプトを書く際の注意点を紹介しつつ、実際に使っているシェルスクリプトをVSCode+GitHub CopilotでSwiftに書き直す様子をライブコーディングでお届けします。

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

Export Privacy Reports: Common Errors and Hidden Rare Error Fixes

kent_strong_dev Kent Strong

Unlock the secrets of exporting privacy reports in Xcode.

A privacy report in iOS development refers to a detailed document that outlines how an app collects, uses, and shares user data.

This session covers typical errors you might encounter and also introduces a rare error uncovered by the speaker which is not written on the internet. You would be in trouble if you needed to handle it on your own. But don't worry! Gain a competitive edge by mastering these troubleshooting strategies, ensuring your iOS apps remain compliant with privacy standards. Don’t miss out on these essential insights!

1