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

Unity as a Libraryを用いたiOSアプリケーション開発における課題と改善策

rizumi_jp izumi

Unity as a Libraryは、Unityで書いたコードをライブラリとしてiOSアプリケーションに組み込むことができる仕組みです。
この仕組みによってUnityを用いた3D表現を取り入れつつもSwiftUI / UIKitを用いたネイティブUIの提供を実現することができます。

Unity as a Libraryは強力な仕組みですが、ビルド時間増加や実機 / シミュレーター切り替えが容易にできず開発体験が低下してしまう問題や、ネイティブとUnity間でのデータの取り回しやUnityからネイティブ機能を利用したい場合の課題など、様々な課題が存在します。

このトークでは、Unity as a Libraryの概要を説明した後に、実際にUnity as a Libraryを利用しているアプリを開発している中で直面した課題とその改善について紹介します。

1
LT(5分)

Unity as a Libraryを用いたプロジェクトのビルド環境改善

rizumi_jp izumi

Unity as a Libraryは、Unityで書いたコードをライブラリとしてiOSアプリケーションに組み込むことができる仕組みです。
この仕組みによってUnityを用いた3D表現を取り入れつつもSwiftUI / UIKitを用いたネイティブUIの提供を実現することができます。

Unity as a Libraryは強力な仕組みですが課題も多く、Unity Projectのサイズが大きくなることによりビルド時間の増加やエラーが起きること、実機 / シミュレーターの切り替えが容易に行えずに開発体験を悪化させてしまう、といったビルド関連の課題があります。

このトークでは、Unity as a Libraryの概要を簡単に説明した後に、実際にUnity as a Libraryを利用しているアプリで行ったビルド改善について紹介します。

1
LT(5分)

チーム開発を強化するiOS開発者のためのMakefile入門:知識共有で効率アップ!

_matatabiz またたび

新規プロジェクトに参画してREADMEの開発環境構築を実施するだけで一日が終わってしまった経験はありませんか?

make コマンドは、長い歴史を持つビルドツールですが、iOSプロジェクトにも簡単に導入することができます。
Makefile の力を借りて知識の共有と開発プロセスのスタンダード化を実現する方法を紹介します。

開発環境構築をコマンド一発で完了したい
あの人の神コマンドをチーム内で共有したい

そんな悩みを Makefile で全てタスク化することで解消し、成功への道を歩みましょう。

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

Visualizing Project Module Dependencies with XcodeTargetGraphGen

yimajo 今城 善矩

モジュール分割していてもアプリの成長とともにプロジェクトの複雑さは増加し、依存関係を把握しきれず、さらに依存関係の改善を後回しにしたり放置することもあるのではないでしょうか。

そこで開発したのがSwift製ツール「XcodeTargetGraphGen」で、GitHub上で公開しています。これは.xcodeprojからモジュールの依存関係を抽出しマーメイド記法で可視化します。開発者はこのツールにより全体像掴みアーキテクチャの改善点を特定でき、もちろんGitHub ActionsによりPR時の自動化も可能です。

このセッションでは.xcodeprojについて解説し、導入方法とCI実行によるユースケースを通じ依存関係の自動可視化がどのようにプロジェクトの理解に役立つか実演します。

依存関係に頭を悩ませている方、あるいは大規模なプロジェクトを手掛ける方へ役立つ情報となるはずです。

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