LT(5分)

音声からリアルタイムで3Dコンテンツを生成する技術と visionOS への応用

AkkeyLab akkey

Apple Vision Pro の登場により、3Dコンテンツの活用領域が大きく広がりました。
また、 Apple も近年 AI 分野に力を入れていると言われており、3Dコンテンツに対して AI をどのように活用するかが非常に重要です。
このトークでは、 音声から3Dコンテンツをリアルタイムで生成する技術と、それを visionOS 上で描画・操作する技術についてご紹介します。

  • 音声から3Dコンテンツをリアルタイムに生成
    • 応答に時間がかかるという特性の対処方法
    • 大きくなりがちな通信容量問題の対処方法
  • visionOS 上での描画と操作
    • USDZ ファイルを RealityKit Framework を使って描画する方法
    • 3次元操作を複数ジェスチャーに対応する方法

visionOS 向けのアプリ開発に興味がある方はもちろん、3Dコンテンツ生成に AI を活用するノウハウを学びたい方にとっても貴重なトークとなることでしょう。

1
LT(5分)

いかにしてvisionOSで360° Street Viewを表示したか

shmdevelop 服部 智

Apple製のグラス型デバイスが登場するのを待ち望んでいた私は、「世界各地のストリートビューを360°で見たい!」という夢を持っていました。
そして、ついにApple Vision Pro実機を手に入れ、その夢をSwiftで実現することに挑戦しました。

しかし、最初の実装は失敗に終わりました。
一体何が足りなかったのでしょうか?
どのような調査が必要だったのでしょうか?

様々な試行錯誤を経て、ついに実装が成功しました。
その過程で明らかになった必要な実装とデータについて詳しく解説します。

さらに、実機での表示に成功したときの感動と感想を皆さんと共有します。
そして、当日は実機を使ったライブデモも行います。

このプレゼンテーションでは、調査と実践の物語を熱く解説し、具体的な技術的課題とその解決策について詳しくお話しします。
是非、この物語を聞いてください。

1
LT(5分)

SQLiteとSQLite.swiftを深掘りする

devkyousuke devkyousuke

iOS開発を進める中で、ローカルデータベースの実装が必要になったことはありませんか?

技術選定を行う際に、SQLiteが選択肢として浮かぶことは少なくないでしょう。
なぜSQLiteが選択肢として浮かぶのか、疑問に思ったことはありませんか? また、なぜSQLiteが選ばれるのでしょうか?
このセッションでは、SQLiteを用いた開発の利点と、SQLite.swiftを使ってローカルデータベースを構築した経験をもとにお話しします。

このトークでは、以下の内容について紹介します。

  • SQLiteを選定する基準
  • SQLite.swiftを活用する利点

このトークを通じて、皆様が同じような場面に遭遇した際の参考になれば幸いです。

LT(5分)

Apple Vision Proの現地購入レポート

nkjzm Nakaji Kohki

今年の2月にApple Vision Proがリリースされましたが、残念ながら日本での販売はありませんでした。しかし、VR元年の頃からApple製のHead Mounted Displayを心待ちにしていた私は、どうしても「いち早く手に入れたい!触りたい!!」という想いから、はるばる日本から現地へ飛び購入をしてきました。

このセッションでは、国外でガジェットを購入する際に必要となる様々な知見(具体的には決済方法、関税、技適マークなど)について、現地のリアルな体験を交えながらご紹介します。ぜひ皆さんが同じようなチャレンジをする際の参考にしていただければと思います。

LT(5分)

DJコントローラーでアプリを操作したい!!!!!

EXCode013 mori

最近、弊社ではDJ部が立ち上がりました。
ということで自分もDJコントローラーを購入したのですが、ふと思ったのです「これでアプリを操作してみたい」と

このLTではMIDIを単語しか知らないエンジニアがiOSアプリにどうやって信号を渡すか
実際にリストをターンテーブルで操作できるのか?入力だけじゃなくて出力もできるのか?
などCoreMIDIと格闘した末にゲームコントローラー以外でアプリを操作するのを実演したいと思います。

  • CoreMIDIについて
  • MIDIコントローラーの操作を受け取る方法について
  • MIDIコントローラーへの出力方法について
LT(5分)

これだけは伝えたい! Interactive Widget 開発の肝

monoqlo monoqlo

みなさんは日頃ウィジェットを活用していますか?

iOS 17ではウィジェット上にButtonやToggleの設置が可能となり、ついにユーザーとインタラクティブなやりとりができるウィジェットをつくれるようになりました。

一方で、ウィジェットには様々な制約があり、無理なものは無理と割り切った上で設計する必要があります。SwiftUIで通常のiOSアプリを開発するのと同じように書ける部分もあれば、そうではない部分もあるため、その違いを認識することは非常に重要です。

例えば、ユーザーのボタン押下後にネットワーク通信が必要な場合や、何度か画面遷移が必要な場合、あるいはiPad向けに広いスペースを使ったウィジェットをつくる場合… ウィジェット開発ではどんなことに気をつけた方が良いでしょうか。

このLTでは、英語学習アプリにインタラクティブなウィジェットを追加した際の経験をもとに、「これだけは押さえておきたい」というポイントをギュッと5分に詰め込んでお伝えします。

1
LT(5分)

なぜダークモード対応が必要なのか 〜モビリティアプリにおけるダークモード対応戦略〜

tsuboyan5 tsuboyan

ダークモード対応の意義は単に見た目のかっこよさにとどまりません。
特にモビリティアプリにおいて、ダークモードは安全性の向上にも寄与します。例えば夜間にルートナビを見せる状況で、周囲の暗さにあわせた表示方法があれば、目にかかる負担を極力減らし運転への集中を保つことにつなげられます。

Luupでは、このような安全性の観点からアプリのダークモード対応を実施しました。

このLTでは、以下について紹介します

  • なぜダークモード対応が必要なのかをHIGやいくつかのプロダクトの実例を交えて考察
  • 4年以上運用されている規模の大きなアプリでダークモード対応を進める上で出てきた課題やその解決策
3
LT(5分)

VRM×WebViewでリッチなAIアバターを表現する

oskmr_ Osaka Miseri

VRM(Virtual Reality Modeling)とは3Dキャラクターモデルを作成し、それをデジタル空間で使用するためのフォーマットです。
VRM形式のモデルは、さまざまなアプリケーションやゲームで広く利用されています。
恋するAIのアプリでは、WebViewを活用してVRMアバターの表情やモーションなどリッチな表現を実現しました。

本セッションではWebViewでVRMを利用してAIアバターアプリを実装するまでの以下の内容についてお話しします。

  • VRM×WebViewでモーションや表情の変化を実装する手法
  • WebViewでVRMを利用する際に直面した課題とその解決策
  • 恋するAIアプリでの実装例

このセッションを通じて、VRMを活用したアプリの開発手法を習得し、皆さんも3Dアバターを活用したアプリを開発してみましょう。

3
LT(5分)

人生最高の経験 WWDC2024初参加の学びと挑戦 〜現地参加して得られた価値〜

akkiee76 Akihiko Sato

WWDC2024に初めて現地参加し、iOSエンジニアとしてこれまでにない貴重な学びと経験を得ることができました。

このLTでは、参加に至るまでの準備とその過程で直面した困難について触れつつ、WWDC2024の現地参加で得られた新しい知識やインスピレーションについて詳しくお話しします。

まず、WWDC参加するための準備として、チケットの入手方法、渡航計画、宿泊施設の確保など、具体的なステップや注意点を含めて、特に初参加者が直面する不安に対して、WWDCを120%楽しめる実践的なアドバイスを紹介します。

次に、WWDC2024のセッションやワークショップで得られた最新技術や知識について紹介します。また、直接Appleのエンジニアと交流することで得られたインサイトや、iOSエンジニアたちとのネットワーキングの重要性についても触れます。

最後に、WWDC2024への参加がもたらした価値について、個人的な視点からお伝えします。高額な旅費を支払ってでも参加する価値があるのか、実際に体験したことを基にした率直な感想を共有します。参加することで得られる技術的な成長だけでなく、プロフェッショナルとしての成長や新たな視点を得ることの重要性についてもお伝えできればと考えております。

このLTを通じて、皆さんが「来年のWWDC2025に参加したい!」というモチベーションになることを願っています。

3
LT(5分)

小さい・・・!だがこれでいい!、AppleのOSSコントリビュート

Nao_RandD Nao-RandD / ナオランド

OSSのコントリビュートに対して、不安や敷居を不用意に大きくしていないだろうか?

「ましてや、AppleのOSSなんて仮にトライしてもメタメタにされる・・・」、と過剰に ざわざわ・・・ する必要はない。

実際にはオープンで新参者にも公正なスタンスのコミュニティが待っている。

驚くほど小さな修正でも価値がある。
先日、初めてAppleのOSSにコントリビュートした。
内容はselfキーワードが不要な部分を削除するだけ、それでも、レビューを貰いマージすることができた。

小さな修正であっても、どういった構成や方針を元に運用されているかを知るキッカケになり、非常に勉強になった。

具体的なステップとして、以下のポイントを取り上げていく。
・OSSプロジェクトの探し方
・PRを立てるまでの具体的な一例
・取り組んで得られたこと

コントリビュートはPRを送信するだけではない、質問に答えたりバグを報告することも含まれる。(Swift.orgのContributingより)

エンジニアであるなら、人生でOSSにコントリビュートしてみたい気持ちが少なからずあるのではないだろうか?
平凡な自分が踏み出した小さな一歩を共有して、誰か1人の一歩を踏み出すキッカケができたなら嬉しい限りである。

「だがこれでいい!」の精神で、OSSにコントリビュートしよう!

1
LT(5分)

ローカルプッシュ通知で実現するスマートアラーム機能

_nkmrh nkmrh

iOS アプリにおいてユーザーエンゲージメントを向上させるためには、ローカルプッシュ通知の活用が重要です。
ローカルプッシュ通知は、デバイス上で直接スケジュールされるため、即座に実装でき、効果的に使用することで、ユーザー体験を大幅に向上させることができます。
このトークでは、具体的なスマートアラーム機能の実装方法と、その効果を高めるための戦略を紹介します。

トーク内容

  • ローカルプッシュ通知の基本概念と仕組みを理解する
  • スマートアラーム機能の概要
  • 具体的な実装方法
  • 効果を高めるための戦略
LT(5分)

「UIは英語なのにアプリ内リンクを開くと日本語サイトだ!」を防ぐコツ

FromAtom FromAtom

スマホアプリでは利用規約やプライバシーポリシーなど、静的URLを利用することがよくあります。
多言語対応をしないのであれば、URLをベタ書きしてしまえば良いのですが、言語によってURLを変更したい場合には翻訳機能を利用するでしょう。

しかし、翻訳の実装を間違えてしまうと英語設定のアプリで日本語ページのURLを開いてしまい、ユーザー体験を損ねてしまいます。
URLの指定ミスは見た目ではわかりにくく、クラッシュやエラーも発生しないため、問題に気づきにくいです。

このトークではString Catalogを利用して静的URLの翻訳を管理し、
さらにそれをUnitTestで検証することで、ユーザー体験を損ねないようにする方法についてお話します。

LT(5分)

SwiftUIにおけるTrailing Closureの効果的な使い方

hicka04 佐藤 光

SwiftにはTrailing Closureという強力な記法が存在しており、引数の最後のClosureを引数リストの外に展開して書くことができます。

SwiftUIでもTrailing Closureが積極的に利用されており、主に子のUI要素を構築する @ViewBuilder のClosureを最後に持ってくることで、UIの階層構造を表現しています。

一方でSwiftUIにおけるClosureは、タップなどのアクションを実行するためにも使われます。 @ViewBuilder なClosureがない場合、アクションのClosureを引数の最後に持っていきたくなってしまいますが、Trailing Closureは引数ラベルがないため、そのClosureがUIを構築しているのかアクションを実行しているのかはClosureの中身を読む必要があります。

本セッションでは私がおすすめするSwiftUIにおけるTrailing Closureの使い方についてご紹介します。誰もがわかりやすいSwiftUIのコンポーネントを作れるようになるために、まずは引数内のClosureの位置を意識してみるのはいかがでしょうか。

LT(5分)

Instruments入門

n3k0w3n nekowen

iOSアプリ開発において、ユーザーに快適な操作感を提供するためには、パフォーマンスの最適化は欠かせない要素です。
最適化を行うためにはボトルネックとなっている箇所を特定する必要がありますが、どのように調査するのが効率的でしょうか?

Instrumentsはアプリのパフォーマンスを可視化するための強力なプロファイラです。メソッドの実行時間やメモリの消費量といった基本的なパフォーマンス計測から、Swift ConcurrencyのTaskやActorのトレースなど、さまざまな機能別の計測が可能です。
Instrumentsで何ができるのか、どういった情報が得られるのかを知っておくことで、パフォーマンスチューニングが必要な箇所を迅速に発見し、全体像を把握しやすくなります。

本セッションでは、Instrumentsの基本的な使い方に加え、実際のパフォーマンスチューニング事例をご紹介します。
これからInstrumentsを使ってパフォーマンス計測を始める方や、既に使っているがさらに深く理解したい方の参考になれば幸いです。

3
LT(5分)

Swiftでお手軽にWebAPIをつくる

yochidros yochidros

普段iOSアプリを開発している皆さん。 たまにはバックエンドの開発にも挑戦してみたいと思いませんか?
VaporやHummingbirdといったWebフレームワークを使うとなるとハードルが高く感じるかもしれません。

しかし、これらのフレームワークで使われているSwiftNIOというライブラリさえあれば、簡単かつお手軽にCloud RunやAWS Lambdaで動作するWeb APIを作ることができます。

本トークでは、SwiftNIOの紹介から、実際にSwiftがCloud RunやAWS Lambdaで動作する流れを説明します。
皆さんのバックエンド開発の一歩を後押しできれば嬉しいです。

概要:

  1. SwiftNIOの紹介
  2. AWS Lambdaの利用例 (echo bot)
  3. Cloud Runの利用例 (echo bot)
LT(5分)

複雑な起動処理をシンプルに

olive_okamo olive

アプリでは起動時に様々な処理をさせたいことが多々あるかと思います。
例えば、お知らせの表示や利用規約への同意取得などが挙げられます。
また、iOSアプリは通常の起動に加えて、Push通知やUniversal Linkなど、複数の起動パターンも存在します。

メタバースプラットフォームclusterではそういった要件が増えるたびにロジックが増え、クラスが肥大化して可読性が低下し、大きな技術的負債となっていました。
また、バーチャル空間での体験をUnityで開発し、Unity as a Libraryとして取り込んでいるため、UnityFrameworkと連携する起動処理にも苦労していました。

このセッションでは、私たちが複雑な起動処理にどのように立ち向かっていったかを紹介します。

  • 責務過多になっていたViewControllerからの分離
  • 任意のタイミングで起動処理を実行する
  • UnityFrameworkとの連携
LT(5分)

まだxcprettyを使っていませんか?今こそxcbeautifyに置き換えよう!

ikesyo ikesyo

CI環境などでxcodebuildのログ出力を整形したり、テスト結果をJUnit形式のXMLとして出力するために、まだまだ(意識せずとも)xcprettyを使用している方も多いと思います。しかし、xcprettyはほとんどメンテナンスされておらず、Xcodeのここ数年の新機能に対応できていない部分があります。

そこで、xcprettyからの置き換えとしてxcbeautifyを使用してみましょう。実は、fastlaneでもxcodebuildのフォーマッターとしてxcbeautifyが推奨されるようになっています(参照: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)。

このLTでは、私たちのプロジェクトでの実体験を元に、以下の内容を紹介します:

  • xcpretty使用時に直面した問題点
  • それらの問題をxcbeautifyでどのように解決したか
  • xcbeautifyのその他の優位性
  • xcbeautifyへの移行方法

これらのポイントを急ぎ足でご紹介し、皆さんがxcbeautifyに移行する際の参考になればと思います。

1
LT(5分)

iOS/iPadOSの「ViewController」の歴史を振り返る

haseken_dev haseken

アプリ開発をする上で、「ViewController」というクラスを意識しないことは、ほぼないのではないでしょうか?
iOS 2.0の「UIViewController」を皮切りに、様々なViewControllerが提供され、私たちはそれらを実装、カスタマイズして利用してきたかと思います。

では、これまでにどれだけのViewControllerが登場してきたのでしょうか?
このセッションでは、これまでに登場したViewControllerの歴史を振り返ります。

想定する方々:

iOS/iPadOS、それ以外のプラットフォーム向けアプリ開発者

ゴール:
知らなかったViewControllerを知り、今後の参考にできる

アジェンダ:

  1. 最も多くのViewControllerが登場した年と、最も少なかった年
  2. 最も多くのViewControllerを保有するFramework(UIKitを除く)
  3. 代表的なViewController紹介(4~5つ程度)

    ・Frameworkごとに機能と実装例の紹介
    ・Frameworkごとに1つまで紹介

※対象は「UIViewController」または「UINavigationController」を継承するクラスとします。

LT(5分)

iOSエンジニアらしい方法でiOSアプリを定期配布する

nato_ring ring

アプリ開発を行っていると、週1回、月1回など決まったタイミングで定期的にアプリを配布したい場面がしばしばあります。

近年登場したXcode Cloudにはスケジュール配布機能が備わっており、手軽に定期配布することが可能です。
しかし、頻度のカスタマイズ性に乏しく、例えば月に1回の定期配布を行うことはできません。

BitriseやCircleCIをはじめとする素晴らしいCI/CDサービスを使用する方法もありますが、実は私たちiOSエンジニアは既にこの問題を解決する手段を持っています!

本トークでは毎月1回アプリを定期配布するのに試行錯誤した末に辿り着いたベストプラクティスとSwiftの可能性についてお話いたします。
Swiftでこんなことができるという驚きと感動をお届けできれば幸いです。

2
LT(5分)

レガシーなUIKitアプリにSwiftUIとマルチモジュールを導入する際の課題と解決策

fromkk かっくん

私が個人事業主として開発を手伝っているアプリは、UIKitとStoryboardをベースにした既存の実装があり、かなりレガシーなものとなっています。
このアプリの一部機能を作り替える際に、SwiftUIとTCA(The Composable Architecture)を用いたモダンな設計を導入しようと試みました。

しかし、パッケージ側からアプリ側の既存画面を呼び出す必要があり、多くの課題に直面しました。
このトークでは、開発中に発生した具体的な問題と、それにどのように対応したのかを以下のポイントに分けてお話しします。

依存関係の管理: モジュール間の依存関係をどのように整理したか。
画面遷移の実装: SwiftUIからUIKitの画面を呼び出す際の具体的な方法とその課題。

1