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
レギュラートーク(20分)

App Store Connect APIを使った業務改善

iseebi Nobuhiro Ito

iOSアプリをテストしたりリリースする際に、皆さんはApp Store Connectを頻繁に使用していると思います。App Store Connectは主に人が操作するWebシステムですが、App Store Connect APIを使用することで多くの操作を自動化することが可能です。
レポーティングやアプリ内課金の操作や、Fastlaneを使った操作ではお使いの方も多いかと思いますが、申請やTestFlight、メンバー管理など多くの操作を自動化でき、ちょっとした調査にも便利に使えることをご存知でしょうか。
このセッションでは、実際の開発チームにおいて行ったTestFlightや申請業務の業務効率化の例を通じて、App Store Connect APIの使い方や、簡単に試す方法をご紹介します。

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

理論から実践へ:チームで実践するSwift Concurrencyの導入

akkiee76 Akihiko Sato

皆さんのプロジェクトでは、Swift Concurrencyの導入は進んでいますか?

ここ1年で、iOS 15のサポートを終了するアプリも増えており、Swift Concurrencyの導入が本格化しています。現場でのSwift Concurrency移行時には、複雑なBlock構文、レガシーライブラリからの脱却やRealmのスレッド移行に苦労しましたが、その過程で多くの知見を得ることができました。

このセッションでは、既存アプリの非同期実装をSwift Concurrencyに移行する方法や、チームで効率的に移行しリリースする方法に焦点を当て、その手法を詳しく紹介します。

【主なトピック】

  • Swift Concurrency導入の実践例
  • Swift Concurrency導入時の注意点とその回避方法
  • Strict Concurrency Checkingの適切な設定方法
  • 導入作業をチームタスクとして定量化する方法
  • リスクを抑えたリリース方法

将来的なSwift 6への移行に備えて、この機会にSwift Concurrencyに移行しましょう!

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

The Art of Code Review: より良いコードレビューをするためのテクニック

kurapy_nnn Natsumi Oishi

コードレビューはアプリやコードの品質向上とチームの成長に不可欠なプロセスです。
しかし、効果的なコードレビューを行うのは簡単ではありません。
コードレビューのやり方や観点については様々なところで紹介されていますが、やり方を知っているだけではPull Requestの差分から適切な指摘事項を見つけ出すことはできません。

このトークでは、より良いコードレビューを行うための実践的な方法について詳しくお話しします。
これにより、今まで何となくApproveしていたコードレビューにおいて、自信を持ってコメントやApproveできるようになる手助けになれば幸いです。

トピック:

  • コードレビューにおける障壁
  • コードレビューの技術を磨く方法
  • コードレビューの手間を減らす方法
3
レギュラートーク(20分)

既存の実プロダクトにおけるSwift Concurrency導入事例

rikusouda 吉岡 祐樹

Swift Concurrencyは、非同期処理を便利にするSwiftの機能です。iOSアプリ開発においてゼロからの開発でこの機能を利用する場合は比較的スムーズに導入できますが、既存のアプリに導入する際にはさまざまな課題が発生します。我々のチームでは、開発効率向上を目指し、すでにリリースされているアプリにSwift Concurrencyを全面的に導入しました。

まず、API通信のような非同期で結果が返る処理をasync/awaitに変換することから始めました。具体的には、従来のCombineのAnyPublisherを戻り値としていた非同期処理をasync関数に置き換えました。次に、UI更新以外の処理をなるべくメインスレッド以外で実行する試みを行いました。例えば、データの読み込みや保存といったI/O操作をバックグラウンドスレッドで実行するように変更しました。

さらに、SWIFT_STRICT_CONCURRENCYオプションを有効にすることで、コンパイル時に非同期処理に関する潜在的な問題を発見し、修正することができました。

本トークでは、導入ステップの具体的な手順の紹介や、導入途中で遭遇した問題とその解決策、そして私たちのチームが採用したSwift Concurrencyの利用方針について詳細に説明します。また、導入後に得られた効果やメリットについてもお話しします。

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

Conquering 30+ Flutter Errors: Insights for iOS Devs

kent_strong_dev Kent Strong

Embark on a journey through more than 30 errors I really encountered during Flutter app development and release. This session offers an in-depth look at the troubleshooting process from an iOS engineer’s perspective. Learn how to diagnose and fix issues efficiently, avoid common mistakes, and improve your app release workflow. This talk is designed to equip iOS developers with the knowledge and confidence to tackle Flutter development head-on.

ルーキーズLT(5分)

Interactive Widget:iOS17から始まるWidgetの新たな可能性

Takahiro_Kato15 Takahiro Kato

iOS14での登場以来、Widgetはユーザー獲得とエンゲージメント向上のために重要な役割を果たしています。
これまでも、Widgetのサイズ追加、スタンバイWidget、ロック画面Widgetなどの機能が追加され、ユーザーとの接点を拡大してきました。
しかしながら、今までユーザーはWidgetを受動的に利用しており、ユーザーがアクティブな操作をするためには、必ずアプリ本体を起動することが必要でした。

iOS17で、この制約を打破する「Interactive Widget」が導入され、直接Widgetからデータ更新や表示切替といったアクティブな操作が可能になりました。
この変化は、Widgetの利用価値を大きく高め、開発者にとって新たな可能性を開くものと考えています。

このLTでは、以下の内容に焦点を当てて解説します

  1. Interactive Widgetで実現できることとは?
  2. 実用的なInteractive Widgetの事例とそのメリット
  3. 実際のコードを用いたInteractive Widgetの実装方法

参加者は、Interactive Widgetを通じて、アプリの魅力をさらに引き出せるかについての具体的な知識と技術を得ることができます。

1
LT(5分)

しっくりくるものがない?CADと3Dプリンタで自分だけのAppleデバイスアクセサリを作ろう!

yoyokktt Kazuhiro Kamakura

iPhone, iPad, Apple Watch, AirTag, AirPods, Mac。
iOSDCに参加されている方なら、これらをたくさんお持ちだと思いますが、自分に合ったちょうどいいスタンドなどのアクセサリを見つけるのはなかなか難しいですよね。実際に使ってみないと、そのアクセサリが本当に良いかどうかわからないので、色々試してみたくなることはありませんか?
購入する以外にも、CADと3Dプリンタを使って自分で作るという選択肢が増えれば、様々なアクセサリを試すことができたり、世界に一つだけのオリジナルなものを作れたりと、日々の生活がさらに楽しくなります。
そこで、Apple公式の「Appleデバイス用アクセサリのデザインガイドライン」を元に、作り方の手順や完成データの探し方、私が実際に作ってみたものを紹介しながら、発表したいと思います!

8
ルーキーズLT(5分)

UXを落とさず、収益化したい!Native Adsを用いた、広告UXの改善

tommy__yj Yuto Tomita

個人アプリ開発において、収益化は非常に難題です。広告を置いて収益化したいけどUXは損ねたくない、、、!
そんな誰しもが持つ悩みをこのLTで解決します!

僕自身、動画広告やアプリ内課金を導入するほどではないけどなんとかしてバナー広告は避けたい!と何度も思ってきました。
そこでたどり着いたのが、Native Adsです。

Native Adsは広告のUIを自由にカスタマイズでき、アプリ内に自然に配置することが可能です。
自身でカスタムした広告は、好きな場所に配置することができアプリの世界観やUXを損なうことなく、広告を配置することができます。
しかし、その自由さがゆえにバナー広告よりも少し実装が手間であったりレイアウト崩れが起きてしまったりします。

このLTでは、僕自身がアプリにNativeAdsをどのように組み込んだのか、レイアウト崩れをどのように解決したのかをお話しします。

具体的には次のトピックについてお話しします。

  • Google Admob Native Adsとは
  • Native Adsの実装方法
  • 実際にハマったポイントとその解決策
  • 実際のアプリで使われているNative Adsの具体例

皆さんも、Native Adsを実装してアプリのUXを高めてみませんか?

2
ルーキーズLT(5分)

個人開発アプリでSwiftDataを使ったデータ永続化を導入してみた

marunomi_ maru

WWDC2023で発表されたSwiftDataは、iOS17以降で使用可能なアプリ内でのデータを永続化するための新しいフレームワークです。
アプリ内でのデータ保存には既存のRealmやCore Dataがありますが、ではなぜSwiftDataを選ぶべきなのでしょうか?
本LTでは、SwiftDataの基礎知識を整理し、デモアプリを用いてSwiftDataの魅力を伝えることを目指します。

LTで話すこと
・Swift Dataとは
・SwiftDataを使うときに考慮したいこと、詰まった所
・SwiftDataのいいところ
・従来のアプリ内データ保存(Realmなど)とSwiftDataの比較

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

Mastering iOS SDK Distribution: Makes you a professional engineer

kent_strong_dev Kent Strong

Join us for an in-depth exploration of advanced methodologies for distributing iOS SDKs. From Swift Package Manager to XCFrameworks, learn how to leverage these tools to simplify your development process and ensure seamless integration. SDK distribution skills are a key factor in making you a more exceptional engineer than your colleagues. Gain insights into the pros and cons of each method, real-world use cases, and tips for optimizing your workflow. This session is designed for iOS engineers aiming to elevate their expertise and adopt industry-leading practices in SDK distribution.

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

Firestoreからの大規模なデータ基盤移行プロジェクトを安全に進めるために行ったこと

satoshin21 satoshin21

2年前、弊社アプリはSQLiteからFirestoreへデータ基盤の移行プロジェクトを行いました。
Firestore自体は当時のユースケースとしてはベストな選択でしたが、ここ最近求められる新機能や施策の実現に対してFirestoreではコスト面や横断したデータの活用などの観点から実現が難しいと判断することが増え、今回アプリ・サーバーサイドと合わせデータ基盤を大きく作り変える決断をしました。
そうして始まった大規模な移行プロジェクトですが、今回は「グロースなどの開発を並行しながらデータ基盤を移行してほしい」というオーダーもあったため、iOSチームとして通常の施策実装と並行して安全にデータ基盤を差し替えていく仕組みを考え実践しました。

今回のトークでは安心・安全にデータ基盤を移行するためにアプリ開発チームとして工夫したこととその実践内容について、
以下の内容を踏まえつつお話していきます

  • なぜFirestoreから移行したのか
  • Feature Flag形式によるデータソースの切り替え
  • 型安全による実装の分離
  • SwiftUIとThe Composable Architectureによる実装
  • ユーザーに安全にデータを移行してもらうための仕組み
4
LT(5分)

swiftUIでCustomRefreshableを作ってみた

昆野 佑樹

swiftUIで pull to refresh を実現するにはApple純正のrefreshableを使うのが一般的です。
ただし、私が開発しているアプリでは、この純正機能を使用することで、レイアウト崩れや予期しない動作が発生していました。

具体的には、リフレッシュした後にスクロールview の画面が下にずれる問題が発生していました(詳細はこちら: https://stackoverflow.com/questions/76943913/swiftui-scrollview-refreshable-doesnt-work-appropriately)
他にも対応している、アプリがiOS15以下も対応していたため、そもそもScrollViewのリフレッシュが使えない。
私のUIKit経験値が低いために、UIKitでのリフレッシュバグが起きた際に対応しきれなかった。

そのためswiftUIのみでcustomRefreshableを作ろうと思いました。

ルーキーズLT(5分)

swiftUIでCustomRefreshableを作ってみた

昆野 佑樹

swiftUIで pull to refresh を実現するにはApple純正のrefreshableを使うのが一般的です。
ただし、私が開発しているアプリでは、この純正機能を使用することで、レイアウト崩れや予期しない動作が発生していました。

具体的には、リフレッシュした後にスクロールview の画面が下にずれる問題が発生していました(詳細はこちら: https://stackoverflow.com/questions/76943913/swiftui-scrollview-refreshable-doesnt-work-appropriately)
他にも対応している、アプリがiOS15以下も対応していたため、そもそもScrollViewのリフレッシュが使えない。
私のUIKit経験値が低いために、UIKitでのリフレッシュバグが起きた際に対応しきれなかった。

そのためswiftUIのみでcustomRefreshableを作ろうと思いました。

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

Package.swiftから始めるDX

417_72ki 417.72KI

Swift Package Managerの登場により、iOSアプリにおけるライブラリの導入に大きな変化が起きました。
最近ではアプリ開発でもSwift Packageによるマルチモジュール開発の手法が確立しつつあります。

しかし、何も考えずにPackage.swiftを書いていると不要なライブラリがキャッシュに混ざったり、余計なビルド時間がかかってしまう場合があります。

本トークでは、個人でライブラリを複数リリースした経験とそのライブラリを実際に使ってアプリ開発を行ってきた経験を元に、Package.swiftを最適化するためのポイントを紹介します。

具体的には、以下の内容を解説します。

  • Package.swiftの仕様をおさらい
  • 開発時にしか使わないライブラリやツールをリリース時にフェッチさせない手法
  • リリース時にヒューマンエラーを起こさないためのスクリプトによる全自動化
  • マルチモジュールパッケージで複数のモジュールに同じ設定(主にUpcoming Feature Flags)を反映させる手法

このトークを通じてビルド時間の短縮や不要なライブラリの混入を防ぐことでDX(開発者体験)の向上に寄与することを目指します。

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

魅せろ!Modal Sheets in Flutter

ma12441469 masaki futami

Flutterを用いてモバイルアプリを開発する際には、
showModalBottomSheetは必須の機能と考えます。
しかし、特定の要件や要求に対応するためには、showModalBottomSheetだけでは不十分な場合もあります。
例えば

  • モーダルシートのカスタムデザインや動作の必要性
  • 複雑な要件による対応
  • プラットフォーム間の一貫性
    そのため、外部パッケージを探したり、showModalBottomSheetに関する情報を調べることが日常茶飯事かもしれません。

そこで、今回はFlutterにおけるモーダルシートの基本について深く掘り下げ、
外部パッケージの紹介や、特定の要件に対応するためのモーダルシートの実装方法に焦点を当てて話していきたいと思います。
具体的には、以下の内容について説明します。

  1. そもそもモーダルシートとは何か?
  2. FlutterのshowModalBottomSheetの内部実装の解説
  3. 関連する外部パッケージの紹介
  4. 特定の要件に応じたモーダルシートの実装方法
  5. SwiftとFlutterにおけるモーダルシートの比較

このトークを通じて、Flutterのモーダルシートに関する理解を深めていただけることを心から願っています。

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

Observationフレームワーク最新事情2024

akkiee76 Akihiko Sato

WWDC2023でAppleが発表したObservationフレームワークは、オブザーバーパターンによりデータバインディングを高いパフォーマンスで実現することが可能なフレームワークです。

このセッションでは、昨年の発表以降におけるObservationの最新事情を探ります。また、今後iOS17以降をターゲットとするアプリでは、SwiftUI、Concurrency、Observationがデファクトスタンダードになることも踏まえながら、Observationの実践方法を紹介します。

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

  1. Observationフレームワークの概要
  2. Combine(ObservableObject)との比較
  3. Observationリリース後の機能変遷
  4. SwiftUIにおけるデータバインディングの手法
  5. Observationフレームワークを利用したアーキテクチャ
8
LT(5分)

新卒1年目で対外活動に取り組んだらとても良かった話

ryu_develop 中山 龍

私は23新卒iOSエンジニアとしてChatworkに入社し、この1年で多くの対外活動に取り組んできました。
具体的には、

  • iOSDC 2023や自社イベント、名古屋のモバイル勉強会をはじめ複数のイベント登壇(計8回)
  • Chatwork初開催となるモバイルインターンの運営
  • 自分で企画・準備をした若手を中心としたモバイルイベントの開催
  • 技術ブログの執筆(8記事)
    などです。

対外活動に取り組んでみると「日々の自分の活動をふりかえることができる」「自分の知見を共有することでフィードバックや思わぬ意見から学びが得られる」「さまざまな経歴を持った社外の方々と交流ができる」など、良いことがたくさんありました。
そして、通常業務と並行して対外活動に取り組むことで、自然と「通常業務での学びをイベントでアウトプット」 → 「アウトプットへの反応からの学びを通常業務に活かす」 → 「通常業務での学びをイベントでアウトプット」 …といったようなサイクルを回すことができたり、対外活動の取り組みが評価され、社内のアワードを受賞することができました。

このLTでは、僕が新卒1年に取り組んできた対外活動の経験を交えながら、そこから得られた学びや通常業務への学びの活用を共有し、対外活動に取り組む良さを紹介したいと思います。

1
LT(5分)

アプリ審査の疑問解消!1 on 1 App Reviewコンサルテーションの始め方

ryu_develop 中山 龍

iOS開発者にとって避けて通れない「アプリ審査」。
リリースには「新しい審査基準で審査が通るのか」「どのようなことが確認されるのか」といった疑問を抱えることが多いのではないでしょうか?
そこで、Appleでは審査プロセスをスムーズに進めるために「1 on 1 App Reviewコンサルテーション」を実施しています。

このセッションでは、私自身の経験を基に「1 on 1 App Reviewコンサルテーション」の詳細とその活用方法を紹介します。
具体的な手順や注意点を共有し、iOS開発者がアプリ審査の疑問を解消する手助けとなることを目指します。

2