LT(5分)

Kotlin Multiplatform環境でOpenAPI Generatorを導入する

kumamushin1 村田 真矢

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

以下のポイントに焦点を当ててお話します。

  1. Kotlin Multiplatform環境でのOpenAPI Generatorの設定と使用方法
  2. OpenAPI Generatorでクライアントコードを生成する上での工夫

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

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

Swift Macrosを活用したXcodeプレビュー上でのView Debugging

Scior Scior

Xcodeのプレビューは動作や表示を簡単に確認することができるため、UIKitやSwiftUIを利用した開発において非常に便利です。
一方、通常の実行時に利用できるCapture View Hierarchyなどのデバッグ機能や、サードパーティのデバッグ用ライブラリを使うことができないため、
プレビュー上では各Viewの位置やサイズの確認が難しいという課題があります。

本トークでは、プレビュー環境特有の制約を回避しながら、Swift Macrosを使うアプローチで、プレビュー上で動作するViewのデバッグ機能を実装する方法について説明します。

このトークで話す内容:

  • RuntimeでViewを辿る動的アプローチとコードに手を加える静的アプローチの比較
  • 現状のプレビュービルド時特有の制約
  • MemberMacroとSyntaxRewriterを利用したViewの加工
  • SyntaxとViewを紐付けるための実装の工夫
  • デバッグ機能の実装と動作デモ
1
レギュラートーク(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
ルーキーズLT(5分)

If you don't know, you're in trouble! Understand Objective-C grammar

kent_strong_dev Kent Strong

Are you a Swift developer looking to expand your skills into Objective-C? Join us for a comprehensive session that bridges the gap between Swift and Objective-C. This talk will demystify the complexities of Objective-C grammar. It includes method declarations between Objective-C and Swift, memory management with ARC, and understanding header and implementation files, and more. You will learn the key differences and similarities between the two languages, enabling you to maintain and integrate Objective-C code in your Swift projects with confidence.

ルーキーズLT(5分)

WWDC24での生成AIネタを語りたい

kana_cll かなみー

注意!! プロポーザル期間中に発表が聞けないため、タイトル詐欺になる可能性があります。

5月から6月にかけて多くのビッグテック企業が発表を行い、その中でも生成AIに関連するトピックが注目されています。これまで私たちが開発してきたアプリは、私たちの意図通りに動作していましたが、今後はシステムが私たちの予想を超える応答を返す時代へと移行しています。ビッグテック企業が生成AIについてどのようなテーマで語ったか、そして6月に開催されるWWDCで生成AIがどのように扱われるか語らせてください。

はたして発表日当日トークタイトルどおりの内容のセッションになるでしょうか。

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

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

不安定なテストコードって200種類あんねん

yimajo 今城 善矩

Swiftが公開され今年で10年目となったように、iOSアプリ開発も長い年月をかけて運営し開発を続けていく現代では、プロダクトにおけるテストコードの量も自然と大量になっているはずです。そのうえ大人数がプロジェクトに関わっているのなら、機能追加や不具合の修正に加えてテストコードも日々大量に増え続けていることでしょう。

そして現代のプロジェクトでは、新たに開発した機能や不具合の修正は既存の全てのテストコードが正常に成功しないとマージできないという開発のフローを採用しているはずです。そのような開発フローにおいて、意図せず稀に失敗するようなテストコードが紛れ込んでいると、自分が関与していない不安定なテストが自分の開発リズムに割り込んでくる厄介な状況が発生します。

さらには大量のテストコードが実行時間をかけた末に失敗してしまうと、各メンバーがスムーズに作業を進められず、開発時間が不要に伸び開発体験が低下してしまうのも問題です。

このトークでは、結果が不安定となるテストコードの原因を分類し、具体的な例を交えながら改善点について解説します。

また、Xcode 16で正式統合されそうなswift-testingを活用することで、ある種の不安定なテストを解決できるのではないかという事についても話しができればと思います。

LT(5分)

好きなSwift発表ドラゴン

Kyomesuke Kyome

好きなSwift発表ドラゴンが
好きなSwiftの言語機能を発表します

Swiftは2014年にWWDCにて発表された、Appleの開発するオープンソースのプログラミング言語です。
「モダン、安全、高速、インタラクティブ」を特徴とし、iOSやmacOSなどのAppleプラットフォームだけでなく、LinuxやWindowsでも利用でき、アプリケーション開発のみならずCLIやサーバーサイド向けのソフトウェア開発も可能です。現在はSwift 5までバージョンを重ねており、来るSwift 6にて大幅に機能が追加される見込みなど絶賛成長中の言語です。

本LTでは定番の言語機能から正式名称がわからない言語機能まで発表していきます。
Swift初心者の方からベテランの方までSwiftの素敵な言語機能を確認してSwift力を高めていきましょう!

3
LT(5分)

目まぐるしく変わるCI環境に合わせて、CI環境移行を容易にするMakefile

shichimi_0_o 山岸恵介

Swiftでのアプリ開発において、CI環境の構築や移行は大変です。しかし、Makefileを活用することで、その作業を簡単に行うことができました。
Swiftでのアプリ開発において、継続的インテグレーション(CI)環境の構築や移行は、多くの開発者にとって悩ましい課題です。特に、目まぐるしく変化するCIツールやプラットフォームに対応するのは容易ではありません。そんな中、Makefileを活用することで、この問題を驚くほど簡単に解決できました。
たとえば、以下のような内容をMakefileに記述しました。

makefile
test:
bash run_tests.sh

coverage:
bash run_coverage.sh

このように、テストやコードカバレッジの実行をMakefileで一元管理することで、CI環境の移行が非常にスムーズになりました。新しいCIツールに移行する際も、.ymlファイルのようなワークフローが記載されてるファイルを変更するだけで済むため、時間と手間を大幅に削減することができました。

この方法は、Swiftでのアプリ開発だけでなく、他の言語やプロジェクトにも応用できるため、CI環境に悩む全ての開発者にとって有益です。ぜひ、Makefileを活用して、より効率的な開発環境を構築してみてください。

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

大解剖!SwiftUIを用いたショート動画タイムラインの実装と解題解決までの冒険譚!

tsuzuki817 續橋 涼

このセッションでは、実務の中で経験したSwiftUIを用いたショート動画タイムラインの実装と課題解決について解説します!
プロジェクトの初期設計から実装、そして直面した課題とその解決方法まで、実際の開発経験を元にした具体的なストーリーを共有します。

  1. プロジェクトの概要
    • ショート動画レイアウトの目的と要件
    • 初期設計
  2. SwiftUIを用いたレイアウトの実装
    • 動画の再生・停止やアニメーションの追加
    • 直面した課題とその解決方法
  3. パフォーマンスの問題
    • フレームレートの低下やメモリ使用量の増加
    • 解決策としてのAVPlayerの新しい利用方法
    • 動画データの非同期読み込みとキャッシング
  4. 完成したショート動画のデモ

このセッションは、SwiftUIの基礎を理解しているiOS開発者を対象としています。
特に、動画コンテンツを扱うアプリケーションを開発しようと考えている開発者にとって有益です!

参加者は、SwiftUIを用いたショート動画レイアウトの実装方法やAVPlayerを使った再生、キャッシュの仕組みなどを学び、複雑なUIの実現とパフォーマンスの最適化についての具体的な知識を得ることができます。開発中に直面するであろう課題を予測し、それに対する解決策を事前に知ることで、実際の開発において役立つ実践的なノウハウを身につけることができます。

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

iOSエンジニア以外にも知っておいてもらいたいiOSアプリ開発事情

konifar konifar

iOSアプリ開発は、サーバーサイドエンジニアやAndroidエンジニア、デザイナーやプロダクトマネージャーといった様々な役割のメンバーと一緒に進めることが多いですね。
しかし、iOSアプリ開発に軸足を置いている人からすると当たり前のことが伝わっていないことが多々あり、それが原因で協業しにくくなることがあります。

たとえば、アプリリリース時の審査プロセスです。審査プロセスがあること自体知らない人もいますし、存在は知っていても審査期間や審査結果のばらつきについては知らない人も多いです。

他にも、デザイナーに対してはSwiftUI事情や限界の話、プロダクトマネージャーに対してはOSサポート事情や段階的更新などリリース関連の話、サーバーサイドエンジニアに対してはAPIインターフェースや強制アップデート機構の話など、最初に認識を揃えておくとよさそうな話が意外と多いです。

このトークでは、そういった「iOSエンジニア以外にも知っておいてもらえるとよいiOSアプリの開発事情」についてまとめてお話します。社内にそのまま共有すれば、より認識が揃って仕事がしやすくなるような内容を目指します。

14
ルーキーズLT(5分)

You still don't know this? Findings from a TikTok clone in Flutter

kent_strong_dev Kent Strong

Flutter is a multi-platform system that allows you to write code once to output a variety of applications for iOS, Android, and the Web. Here are some insights gained from building a clone of the famous TikTok app in Flutter. I will share the information on user registration and login, uploading videos and thumbnails, uploading attached information to a cloud database, state management and screen transitions, other libraries used, and more. Some of the content is directly applicable to iOS native app development, so even those who have never touched Flutter will be able to see it.

ルーキーズLT(5分)

Kotlin Multiplatformを導入したアプリのサイズ最適化に挑む

shumpei_nagata Shumpei Nagata

Kotlin Multiplatform(KMP)はここ数年で導入事例も増え、ノウハウも多く公開されるようになりました。
2023年末に安定版となったこともあり、その導入のハードルもかなり下がってきているのではないでしょうか。

しかし、アーキテクチャやSwiftとの互換性について語られることが多い一方で、その他の部分のノウハウは少ないです。
その中でもサイズの最適化は特に重要なトピックの一つです。
可能な限りサイズを小さく保つことは、ユーザ・アプリ提供者の双方にとってメリットに繋がります。

このトークでは、サイズ制約の厳しいApp Clipの開発にKMPを使った経験を踏まえ、
以下のポイントに焦点を当てサイズ最適化のノウハウをご紹介します。

  • SwiftとKotlinの言語仕様的な違い
  • KMPで生成するFrameworkのビルド設定
  • KMPコードを導入するiOSアプリ側の設定
7
レギュラートーク(40分)

iOSアプリのUI実装おける数学的エッセンスを取り入れた考え方や計算を活用したTips集

fumiyasac 酒井文也

「数学を利用した実装って難しいんでしょ?」
「数学苦手だったし思い出しかないし正直ナニモワカラナイ...」
「ぶっちゃけUI実装の中で数学っぽい要素ってある?」

ちょっと待って下さい!日頃の業務や個人開発の中で取り組んでいるUI実装においても、より自然な表現や触り心地等を実現するための調整対応や、SceneKit・ARKitを活用した比較的簡単な実装を利用する場合、アニメーションやベジェ曲線を利用する場合等、実は何気ない形であっても触れ合う機会は多いと思います。

本発表では、比較的皆様にとっても馴染みがある様な、具体的なUI実装例・AnimationやInteractionを伴う表現等に含まれている数学的な要素の紹介から、それらの要素が実装や表現の中において、どの様な点で影響を与えるかに加えて、実装観点から見たTipsをご紹介します。

学校教育でも触れてきた数学的なエッセンスが、どの様な形で具体的な実現イメージに変化する(すなわち抽象から具体への変化する)過程と解説が、今後の参考になれば嬉しく思います。

4
LT(5分)

iOSエンジニアが知るべき生成AIの力 — Pull Request要約で言葉の壁を乗り越えろ

TRAsh___ Hiroya Hinomori

チームエンジニアリングでグローバルなメンバーと連携していると、どうしても言語の壁が辛いことが多々あります。そういった壁を今、勢いのある生成AIの力を使って乗り越えられるのではないか。
さまざまな手法を試しました。その中で特に効果的だったのが生成AIのPull Request要約ツールでした。

今回は数あるPull Request要約ツールの中の「PR Agent」を使って、グローバルメンバーとのGitHub上のコミュニケーションを円滑にした話をします。

セキュリティとか大丈夫なの?
Swiftに対応してる?
使うとどうなるのか?
でも生成AIって嘘つくんでしょ?
といったiOSエンジニアにとって気になるポイントを解説します。

このトークを通じて、生成AIがコーディング以外の場面でどのように活用できるかを知っていただき、チームのコミュニケーションがより円滑になる一助となれば幸いです。

1
ルーキーズLT(5分)

iOSエンジニアが知るべき生成AIの力 — Pull Request要約で言葉の壁を乗り越えろ

TRAsh___ Hiroya Hinomori

チームエンジニアリングでグローバルなメンバーと連携していると、どうしても言語の壁が辛いことが多々あります。そういった壁を今、勢いのある生成AIの力を使って乗り越えられるのではないか。
さまざまな手法を試しました。その中で特に効果的だったのが生成AIのPull Request要約ツールでした。

今回は数あるPull Request要約ツールの中の「PR Agent」を使って、グローバルメンバーとのGitHub上のコミュニケーションを円滑にした話をします。

  • セキュリティとか大丈夫なの?
  • Swiftに対応してる?
  • 使うとどうなるのか?
  • でも生成AIって嘘つくんでしょ?

といったiOSエンジニアにとって気になるポイントを解説します。

このトークを通じて、生成AIのコーディング以外での活用方法を知っていただき、少しでもチームのコミュニケーションが円滑になる助けになればと願っています。

ルーキーズLT(5分)

WWDC24のアップデートを組み合わせてアプリを作ってみた

touyou_dev 藤井陽介

アップデートをいち早く理解する一番簡単な手段といえば、そう!小さなアプリを作ってみることです。
このLTではWWDC24で発表されたアップデート内容のいくつかを組み合わせて作ったアプリをもとに、アップデート内容を紹介していきます。

つまり!現時点ではどんな内容になるかわかりません!笑

できうる限り強みを生かしたいいアプリに仕上げるつもりなので、どんな内容になるのか?どんなアプリになるのか?そんなところをぜひ想像しながら一緒にWWDC24を振り返りましょう!

2