採択
パンフ記事(4ページ)

はじめよう!Swift OpenAPI Generatorによるスキーマ駆動開発:導入手順と活用のコツ

kamimi_01 kamimi / かみみ

OpenAPI Specification活用してますか?HTTP APIのインターフェース定義で仕様の認識合わせにうってつけ。エコシステムも充実しています。

WWDC23ではSwift特化のGenerator、Swift OpenAPI Generatorが発表されました。Swift Package pluginとして提供されたことでコードの生成から利用を、Xcodeを離れることなくスムーズに行えます。

似たコードを何度も書かずに済むという利点の一方、自動生成ならではのコツも存在します。例えばドキュメント生成のためだけなら気にしなくてよかったspecの書き方があります。また現時点の自動生成は未熟な点もありこのGenerator独自の実装方法を知る必要もあります。

本記事ではそんなSwift OpenAPI Generatorの導入手順や活用のコツを実際のコードを交えてご紹介します。

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

チーム開発に欠かせない5つのiOS開発ツール

_matatabiz またたび

iOSアプリを担当することになって、何から手をつけていいかわからない経験はありませんか?
このセッションでは、チーム開発で役立つ実用的な5つのツールを
実際の導入手順や基本的な設定、注意点などを説明します。

  1. Makefileでビルドの自動化
  2. SwiftLintでコード品質の向上
  3. SwiftFormatでコードフォーマットの統一
  4. Loggerでログ管理の改善
  5. SnapshotTestでビジュアルテストの自動化

効率的な開発と円滑なチームコラボレーションの両方を実現するために、5つのツールの活用方法とチーム開発の重要性を探求しましょう。

1
LT(5分)

Appleプラットフォームにおける3Dアプリケーション開発方法の比較

rizumi_jp izumi

WWDC23にてApple初のXRデバイスであるVision Proが発表されたことで、今後3D表現を用いたアプリケーションの開発需要がますます高まることが予想されます。

Appleプラットフォームで3D表現を用いるアプリケーションの開発方法として現在メジャーなものは、RealityKit、SceneKitを使う方法や、Metalを利用する方法に加え、UnityやUnreal Engineといったゲームエンジンを使う方法が存在します。

このトークでは、これらの3D表現のためのフレームワークやゲームエンジンの比較を行い、それぞれの特性とユースケースについて解説します。

2
ルーキーズLT(5分)

新卒エンジニアが挑む!! Twitterライクなアプリを3週間でつくる研修

ハッカソンや業務委託での開発のような、限られた時間と制約のある環境で多機能なアプリを開発することは容易ではありません。

弊社の新卒研修では、3週間でTwitterライクなアプリを開発する研修が行われました。ユーザー認証、投稿や一覧表示の基本機能に加えて、いいね、フォロー、リツイートなどの様々な機能を一通り実装しました。

開発期間が限られ、制約もある中、チームメンバー同士で技術選定やアーキテクチャについて詳細に話し合いました。そしてチームメンバーのスキルや開発期間を考慮し、実装要件を満たすための適切な設計を考えました。

本トークでは、限られた時間と新卒メンバー同士の環境下で、どのように設計や技術選定を行い、ハイレベルな実装要件を達成したかについて共有します。
また私が感じた、新卒エンジニアから見たチーム開発での重要なポイントや改善点を共有します。

7
採択
2023/09/01 16:40〜
Track B
レギュラートーク(20分)

モーダルの遷移を理解する

yaso_san 八十嶋祐樹

SheetやAlertなどのモーダルは、どこのViewやUIViewControllerからでも呼び出して遷移することができますが、それゆえに遷移の実装が無秩序に散らばってしまいがちです。本来のモーダルの構造を考慮せず状態を管理できていない場合、ユーザー操作以外で画面遷移をしなくていけなくなったりすると、確実に動作させることは難しいでしょう。

また、以前のSwiftUIの遷移は不完全なところがあり、UIKitを使う判断をすることも多かったかもしれませんが、最近では改善されてきて遷移を宣言的に管理することも現実的になっています。

モーダルに関わるUIの様々な問題点や最新のAPIの動向を把握し、より最適なモーダル遷移の実装を考えてみましょう。

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

iOSではじめるWebAR 2023

ikkou HEAVEN chan / ikkou

iOSDC Japan 2020、2021で発表してきた『iOSではじめるWebAR』シリーズの最新版です!

先日のWWDC23で、SafariのレンダリングエンジンであるWebKitがWebXR Device APIに対応することが発表されました。

Spatial Webを見据えた“これから”を考える布石として、iOS 15.4から“限定的に”対応しているWebXR Device APIの最新状況の他、AR Quick Lookやmodel要素といったiOSにおけるWebARの“現状”をコンパクトにお伝えします。

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

Fluid Interfaces - 理論と実践

akihiro_kokubo Akihiro Kokubo

Fluid InterfacesはAppleの提唱するデザイン思想で、iOSの世界では避けては通れません。
“Fluid” でない体験は、摩擦を生み、ユーザの信頼を損ねます。
Appleは “とにかく作ってみること” を強調しているため、ここでは実際に作ることを重視します。
このトークでは、デモアプリが配信され、デモを交えて理論と実践を行き来して、”Fluid” な世界に足を踏み入れます。

このトークで話す内容

  • Fluid Interfacesとは何か
  • 何がインターフェースを “Fluid” にするのか
  • なぜFluid Interfacesが重要なのか
  • 5つの事例と背後にあるデザインの理論
  • Fluid Interfacesを実践する際の心得
  • 独自に実装した3つの “Fluid” な体験のデモ・考察・議論

対象者

  • インターフェースの追求に楽しさ・喜びを感じる人
14
レギュラートーク(40分)

お互いの特徴を見比べ見極めながらiOS&Androidアプリを並行開発するヒントを見つけるプロセスと解法

fumiyasac 酒井文也

iOS/Androidのネイティブアプリを並行開発時には、考え方の違いをネガティブに捉えず、共通点や相違点等から理解のヒントを得る事が重要だと考えています。
本発表では、いわゆる「1粒で2度美味しく」取り組む際の「Positiveに壁を越えて楽しむ」過程や着眼点を紹介する予定です。

【UI実装やLayout処理観点の違いを見極める】

  • 類似したUI表現をする際の要点
  • iOSでのUI表現をAndroidアプリではどう考えるか
  • 画面遷移処理と連動するUI表現事例

【iOS/Androidでの共通点や類似点を探し出す】

  • 実装は異なるが考え方自体は近い点
  • 頻出表現におけるアプローチと共通点

【明確に違いがある部分を知る】

  • DI機構
  • 端末固有機能部分
  • API非同期通信処理
  • Webサイト経由での画面遷移
2
レギュラートーク(20分)

RxSwiftからSwift Concurrencyへ〜通信処理を効率よくリファクタリングするためのテスト戦略〜

417_72ki 417.72KI

Swift Concurrencyの登場から2年が経過し、実際のプロダクトでもRxSwiftからSwift Concurrencyへの移行が進んでいることでしょう。
しかしいきなり脱RxSwiftしようとすると得てして想像以上に影響範囲が広くなるため、影響範囲を抑えるべくミニマムなリプレースから始めていくことになります。

本トークでは、どんなシンプルなアプリでも非同期処理から逃げられない通信周りの処理について、RxSwiftによる実装からSwift Concurrencyによる実装へ最小工数で移行したプロセスについて説明します。

  • RxSwiftベースの通信処理実装
  • モックライブラリを使った通信処理のテスト実装
  • RxSwiftベースのテストとSwift Concurrencyベースのテスト
  • deprecated を使った未移行箇所の特定方法
3
レギュラートーク(20分)

Animoji で始まる ARKit 開発

Megabits_mzq_jp Megabits

Apple は今年の WWDC で Vision Pro を発表しました。AR の将来がとても期待できます。皆さんも AR の開発に興味が湧いていると思います。

AR コンテンツを開発するとき、プログラミングの部分だけでなく、3D に関する知識も必要になります。しかし、ゲーム開発をやったことない、3D を触ったこともないから、どこから勉強すればいいかわからないことがありませんか。今回、Animoji を通じて、AR コンテンツの作り方を一緒に体験しましょう。

Animoji は、カメラで撮影した人の顔の動きを検知し、キャラクターがリアルタイムで同じ表情を表現するものです。今回は、Blender を使用したモデルの準備から、ARKit の実装まで、最初から一つの AR コンテンツを完成します。この流れを体験したら、将来 AR コンテンツを作りたい時参考になるでしょう。

ルーキーズLT(5分)

VIPERアーキテクチャのプロダクトコードで新卒メンバーへのOJTを2年間やって見えてきたアプリ開発者育成のスタートダッシュで大切なこと

Yutaka Kono

昨今のiOSアプリ開発に関わる技術トレンドの変化は目まぐるしく、後進育成においても、何を・どこまで・どのように教えるのが良いのか、悩む人も多いのではないでしょうか。

私たちのチームでは、過去2年間、チームの新卒入社メンバーに向けたOJTを実施し、VIPERベースのアーキテクチャのプロダクトコードを題材に、アプリ開発のスキルのインプットと開発チームへのオンボーディングをフォローしてきました。

本トークでは、トレーナー・トレーニーの両方の視点から過去2年分のOJTを振り返り、

  • どのタイミングでアーキテクチャっていう概念をレクチャーしたの?
  • 一番最初、アプリの中のどの部分のコードを書くタスクをお願いしたの?
  • リモートワークでOJTを進めていくときにコミュニケーションで気をつけた部分は?

などのトピックを中心に、開発者の育成をスタートする上で大切なことをお話しします。

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

Fluid Interfaces と 遊び心

akihiro_kokubo Akihiro Kokubo

Fluid InterfacesはAppleの提唱するデザイン思想で、iOSの世界では避けては通れません。
“Fluid” でない体験は、摩擦を生み、ユーザの信頼を損ねます。
Appleは “遊び心” と “とにかく作ってみること” を強調しているため、ここでは遊び心を持って実際に作ってみます。
このトークをきっかけに、”Fluid” な世界に足を踏み入れてみましょう。

このトークで話す内容

  • Fluid Interfaces とは何か
  • 何がインターフェースを “Fluid” にするのか
  • なぜ Fluid Interfaces が重要なのか
  • スクロールという動作を対象として、遊び心を持って “Fluid” な体験を追及する

対象者

  • インターフェースの追求に楽しさ・喜びを感じる人

持ち物

  • 遊び心
12
レギュラートーク(20分)

Swiftを活用したKMM導入戦略

oskmr_ miseri

ネイティブアプリのロジック共通化にKotlin Multiplatform Mobile(KMM)を導入するアプリが増えてきました。
しかし、KMMでiOSのロジックを共通化するにあたっての設計や、Swiftで使いたい技術との共存など、より便利に使うためのベストプラクティスはまだまだ未知数な部分が多いのではないでしょうか。

私たちのアプリではKMM活用した新アーキテクチャを設計し、大規模なリアーキテクチャを進めています。

そこで本トークでは「タップル」アプリにおける新アーキテクチャについて紹介し、

  • Swiftを活かして共通化するためのtips
  • KMMを導入する画面、導入しない画面の基準
  • SwiftUIとSwift Concurrencyをどのように活用するか

についてお話しします。

8
ルーキーズLT(5分)

新卒エンジニアが陥りがちなパッション駆動開発の落とし穴

ystg1302 神原良継

皆さんが駆け出しの頃、「どう実装していいかわからない」「このバグを解決する方法がわからない」といった壁に直面した際、どのように対処していたでしょうか?
例えば、新規プロジェクトを別で作成して解決するまでトライアンドエラーを繰り返したり、それっぽい記事が見つかるまでググったり、公式ドキュメントを何時間もかけて漁ったりでしょうか?
これらのやり方は決して悪いことではありません。むしろ長期的な成長を考えれば、自力で解決する力がついたり、求める情報を見つける過程で新しいことを知れたりと、良いことづくしです。

ですが、業務として開発する際は別の話です。
効率的な解決方法や時間の重要性も考慮する必要があります。

本LTでは、先輩に質問すれば迅速に解決できる課題に数時間かけることのメリットとデメリットを提示しつつ、自己成長と効率的な業務遂行の両立を図るためのベストプラクティスを提案します。

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

SaaSアプリに最適⁉︎KMMで共通基盤を構築事例

1wa46 NAO HONDA

SaaS モバイルアプリケーション開発のための共通基盤としてKotlin Multiplatform Mobile(KMM)を使用する事例を紹介します。特にSaaSドメインでは、モバイルデバイス管理(MDM)のサポートが必須となります。そのため、UI以外を共通化し、複数のプラットフォーム(iOS、Androidなど)で効率的な開発を可能にするKMMは、この要件を満たすのに適しています。このセッションでは、開発効率、コードの再利用、テスト/CI、そしてメンテナンス性に焦点を当て、KMMの活用によるこれらの要素の改善方法を示します。また、このプロセスで遭遇した課題やそれらの解決策についても詳しく説明します。このセッションは、複数のプラットフォームでの効率的なアプリ開発を目指す開発者や、SaaS環境でのKMMの活用を探しているテクノロジーリーダーにとって、手助けとなる情報を提供します。

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

Accessibilityフレームワークの全て

coffeegyunyu 日向強

iOS 14より、Accessibilityフレームワークが登場しました。
Accessibilityフレームワークが初めて導入されたiOS 14では、カスタムコンテンツをUIコンポーネントに含めるなど、アクセシビリティの向上につながる機能が追加されました。
時は進み、現在のAccessibilityフレームワークではカスタムコンテンツのみならず、さまざまな機能が含まれるようになりました。
当トークでは、Accessibilityフレームワークの機能を俯瞰し、アプリ開発者に対し、iOS上でどうアクセシビリティ向上が図れるのかを見ていくトークとなります。

2
採択
パンフ記事(8ページ)

シークレットキー管理と安全な開発手法

AkkeyLab akkey

皆さんはシークレットキーをどのように管理していますか?
GitHub Sponsors を利用することで、一定の第三者にコードを公開する手法が登場するなど、ソースコードの公開スタイルは様々です。ただし、機密情報の管理方法には注意が必要です。契約を結んでいない技術者に機密情報が見える状態は、漏洩や不正アクセスなどのトラブルを引き起こす可能性を高めます。
本稿では、既存のチーム開発スタイルを維持しつつ、機密情報を Git のコミットに含めない開発手法を紹介します。Xcode Cloud への対応はもちろん、KMM(Kotlin Multiplatform Mobile)などの異なる開発スタイルでも有効な方法です。これは特に OSS活動 で力を発揮しますが、業務委託契約など、多様な働き方が進む中でトラブルを未然に防ぐためのノウハウとして活用できます。

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

AR動画作成用ツールをSwiftで実装する

shmdevelop 服部 智

近年、ARやVRが注目を集め、それに伴い空間感のある映像表現の需要は高まり続けています。

私が撮影スタジオ作業に携わる中で、空間内位置情報取得とカメラトラッキングデータ取得の準備と手間に大きな課題を感じていました。
そこでiPhoneを活用することでその課題を解消した制作ワークフロー実現が期待できます。

  • ARKitを使った空間内位置情報取得
  • カメラ情報取得
  • ジンバルロックへの対応
  • 映像保存
  • ゲームエンジン、DCCツールへの取り込み

ソースコードの解説と、データ取得からAR動画書き出しまでのデモにより、分かりやすく説明します。

このトークを聞くことで、AR表現や空間データの面白さと可能性を実感していただけることを願っています。
この分野に興味がある方は、ぜひ一緒にARの未来を切り拓きましょう。

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

Swift Concurrency×KMMを活用したリアーキテクチャ戦略

oskmr_ miseri

Kotlin Multiplatform Mobile(KMM)を導入するにあたってこのような課題を感じたことはありませんか?

  • どこまでロジックを共通化した設計にすればいいのかわからない
  • Objective-Cのコードが挟まれるから、新しいSwiftの技術が使えないのでは?

本トークでは、「タップル」アプリにおけるKMMとSwiftを相互に活かすための大規模なリアーキテクチャについて以下の内容を中心に紹介します。

  • どのような新アーキテクチャを設計したのか
  • Swiftを活かして共通化するための抽象クラスやprotocolの設計
  • KMM化を適用する画面としない画面の基準とは
  • SwiftUIとSwift Concurrencyをどのように活用するか

このトークを通じて皆様のKMM導入を考えるきっかけとなれば幸いです。

10
採択
2023/09/02 17:25〜
Track B
ルーキーズLT(5分)

スクロールを制する者はセクションを制す〜Compositional LayoutにおけるUISegmentedControlの活用〜

Daue_Ueda23 おじおじ

UI作成において、Compositional Layout(複数のセクションを一つのUICollectionViewインスタンスで管理するためのレイアウト)を使用すると、特定のセクションだけのスクロールイベントを取得するのが難しいという問題があります。
これは、通常の方法(デリゲートメソッド)では全体のスクロールイベントは取得できるものの、セクションごとのスクロールイベントを直接取得することはできないためです。

例えば、セクションごとにUISegmentedControlを設置するといったケースでは、この問題を解決するために工夫が必要となります。
その一つの方法として、visibleItemsInvalidationHandler(表示中のセルが変わった時に呼ばれるハンドラ)を利用する方法があります。
具体的な使用例とその効果について、このLTで解説します。