レギュラートーク(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
レギュラートーク(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
レギュラートーク(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 がどのように実現されているか気になる方
レギュラートーク(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
レギュラートーク(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
レギュラートーク(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.

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

XcodeでもGitHub Copilotが便利な理由とその活用法

Shota Nakaguchi

近年注目度が上がっている生成AIですが、その中でもGitHub Copilotはコーディングをサポートするツールとして最も注目度の高いサービスの一つです。
GitHub Copilotは2024年2月にリリースされたGitHub Copilot Enterpriseや、現在開発段階で非常に注目されているCopilot Workspaceなど、より便利な機能が追加予定であり、今後デファクト・スタンダードになると私は期待しています。

しかし、このように注目されているGitHub Copilotですが、iOS開発においては少し盛り上がりに欠けているような印象があります。最も大きな理由としては、Xcodeが公式にサポートされていないためだと考えられます。

本セッションでは、GitHub Copilotの「Chat」機能に焦点を当て、Xcodeが公式にサポートされていない中でも使い方次第でとても便利なツールであることを実際のデモ動画などを交えて紹介いたします。

また、その他にも以下のトピックについてお話しいたします。

・ 弊社におけるGitHub Copilot普及のための取り組みとそのポイント
・ 全社的に実施したGitHub Copilot使用者のアンケート結果(全社/iOSチームの比較も紹介)
・ VScode(公式サポートエディター)とXcodeでできることの差

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

Kotlin MultiplatformとOpenAPI Generatorを用いた効率的なアプリ開発

kumamushin1 村田 真矢

アプリ開発において重要な通信系処理ですが、OpenAPI Generatorを利用することで、OpenAPIのAPI定義書からクライアントコードを自動生成することができます。
このトークでは、OpenAPI GeneratorをKotlin Multiplatformで活用し、より効率的にアプリを実装する具体的な方法と工夫を紹介します。

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

  1. Kotlin Multiplatform環境でのOpenAPI Generatorの設定と使用方法
  2. 実際のプロジェクトでの適用例とその効果
  3. 開発効率を向上させるための工夫

Kotlin MultiplatformでAndroidとiOSの開発を効率化したうえで、更に楽に実装できるようにしていきましょう!

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

Meet swift-property-name: 自作Swift Macroによるコード生成の解説

yimajo 今城 善矩

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

このトークでは、
Swift Macroの簡単な概要と従来のコード生成系ライブラリにはない長所を説明し、私が公開したswift-property-nameというSwift Macroの実装について詳しく紹介します。

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

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

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

Mastering AsyncSequence - 使う・作る・Delegate などのパターンから移行する

treastrain treastrain / Tanaka Ryoga

これまで、データが非同期に流れてくる処理には Delegate パターンなどが用いられてきました。また、Apple プラットフォームでは Combine といったフレームワークも使用されてきました。

これらのほとんどは、Swift 5.5 で追加された AsyncSequence を使用する方法へと移行できます。実際、Apple が提供するフレームワークでも、従来 Delegate パターンが用いられてきたような非同期にイベントを伝える API について、最近新規に追加されたものは AsyncSequence を採用しています。この AsyncSequence に移行することで、Swift Concurrency が持つアクター分離などのさまざまなメリットを享受できます。一方で、非同期なシーケンスならではのメモリリークにも注意が必要です。

このトークでは、AsyncSequence の基礎について簡単におさらいし、Delegate パターンからの移行方法、移行するメリットや注意点について、iOS アプリの具体例を用いながら詳しく紹介します。

Delegate、今までありがとう。これからは AsyncSequence でやっていくよ。

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

ユーザー全員に快適なiOSアプリを: アクセシビリティ対応の実際

kana_cll かなみー

iOSアプリのアクセシビリティ対応は、全てのユーザーに高品質な体験を提供するために重要です。私自身、アクセシビリティ機能を使ってアプリを操作する機会がなく、開発中も必要だと感じていませんでした。しかし、ある方から「操作が難しい」と言われたことがきっかけとなり、考え方が変わりました。

本セッションでは、アクセシビリティの概要、必要性、そしてiOSが提供しているアクセシビリティ機能についてお話します。
また、アクセシビリティ対応を実際にアプリに適用する際の考え方や、開発者への情報共有の方法、フィードバックの活用についても私の経験を基にお話しします。提供しているアプリを万人に使ってもらいたい方や、後でアクセシビリティ対応が必要と言われて苦労したくない開発者の皆様にとって、このセッションが少しでもアクセシビリティについて考える機会になれば嬉しいです。