ルーキーズLT(5分)

気軽に自分専用ライブラリを作ってみよう

KeyNumberLV Kiichi

個人で複数のアプリを開発していると、同じコードを何度も書くことがあるのではないでしょうか?
一つのアプリ内では、共通処理の実装をまとめて便利に使えていても、アプリが複数にまたがると、それを諦めてしまうこともきっとあると思います。
例えば自分の場合、ローディング表示やファイル共有のUI、データ永続化や広告表示のロジックなんかはどのアプリでも同じものを使っており、毎回コピペして使っていました。
しかしアプリが増えてくると、コピペも手間だし、実装を改善しても他アプリには反映されないしで、だんだん開発のモチベーションが下がってきてしまいます。
だからと言って、一般向けOSSを作ったり、既存ライブラリにコントリビュートしたりするのはハードルが高いな…と。

そんな時に役立つのが、自分専用のライブラリです!

というわけで今回の発表では、

  • 自分専用ライブラリのメリット
  • ライブラリ作成・分割の考え方
  • 実際に作ったライブラリの例
    を中心に説明します。
    また、気軽に素早くライブラリを作るための雛形生成スクリプトについても紹介します。

自分専用ライブラリを作って、いろんなアプリを気軽に楽しく個人開発していきましょう!

※ 対象:

  • 個人開発で複数のアプリを開発している方・する可能性のある方
  • swift packageの作成や公開にハードルを感じている個人開発者の方
レギュラートーク(20分)

visionOSで動画の進行と共に空間演出を表示するSwift実装

shmdevelop 服部 智

Apple Vision Proでは、動画を再生するとその場面に応じて、現実空間に対してリアルタイムな演出効果が表示される斬新な体験ができます。

例えば、突然飛行機が上空を通り過ぎたり、周辺がヨーロッパの街並みに変わったり、たくさんの風船が表示されたり。

グラス型端末の没入感と相まって、これまでとは一線を画した体験です。

この面白い機能はどうやって実装するのでしょう。

何がきっかけで演出が始まるのでしょうか?
演出はどう作るのでしょうか?
動画のスキップ、一時停止には対応しているのでしょうか?

これらの疑問に答えるため、このセッションでは作業手順を説明し、ソースコードを解説し、ライブデモを行います。
実装はSwiftで行い、Apple Vision Proのシミュレータと実機で動作します。

具体的には以下の内容をカバーします:

  • HLS動画へのmeta data埋め込み
  • meta data受信後制御
  • 周辺を変える演出、戻る演出
  • Particleによる演出

このセッションを通じて、参加者は実際にvisionOSでの空間演出を実装するための具体的な手法を学び、自分で独自の体験を作り上げるスキルを身につけることができます。

visionOSの可能性を知り、今後も体験が進化していくワクワクを届けたいと思います!

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

マネージャーの見る世界 〜エンジニアリングマネージャーは何をエンジニアリングしているのか?〜

huin huin

エンジニアリングマネージャー(以下、EM)という仕事について、みなさんはどんなイメージを持っているでしょうか?

「EMはツラい仕事」「EMになるとコードが書けないから嫌」と敬遠されがちな役割ではありますが、一方で、iOSDCの参加者の中にはすでにEMとしてお仕事をされている方、(ポジティブにせよネガティブにせよ)将来のキャリアパスとしてEMをイメージしている方もいるのではないでしょうか。

近年、マネジメントに関する記事・書籍は増えてきたものの、環境や組織によって異なるEMの仕事について、具体でイメージするのはなかなかに困難です。

そこで本トークでは、私自身のトータル5年ほどのマネジメント経験をもとに、EMが普段どのような視点で業務をしているかをお話しします。
具体的には下記のようなトピックでお話をする予定です。

  • マネージャーとは何をする仕事か?
  • マネージャーの持つべきスキルとマインドセット
  • マネージャーにとってのエンジニアリング
  • マネージャーの悩みと苦しみ、それらへの対処

本トークをEMの一つのサンプルとして、将来のキャリアとしてマネージャーを考えている方や、すでにマネージャーとして活躍されている方にとってのヒントになれば幸いです。

7
LT(5分)

Apple silicon徹底比較

66nylon_y Roku

Apple silicon搭載Macが登場してしばらく経ち、たとえ複雑なコードをビルドしたとしてもMacがとてつもなく熱くなる現象が久しくなりました。
それだけでなくビルド時間の現象や電池の持ちの改善など、日々我々に多大な恩恵を与え続けてくれています。

さて、皆さんはM1, M2, M3...と進化する中で、歴代のApple siliconの差分を追えていますでしょうか。
Mの後に続く数字がインクリメントされるだけで満足していないでしょうか。
(少なくとも私はそうでした)

このLTでは、歴代のApple Eventや公式の情報などを参考に、各世代のApple siliconの性能の進化を用語解説を交えつつ比較しながら5分にまとめて発表します。
さらに可能であれば、社内・社外の皆様に協力を仰ぎ、それぞれお持ちのMacでのビルド時間を計測してもらい、実際各Macでどのくらいビルド時間に差分が出るのかを検証してみたいと思います。

このLTを聴くことで、Apple siliconの恩恵により感謝し、効能を実感しながら日々のビルドを回せるようになることを祈っています。

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

SwiftUIを用いたCRUDシステムをDDDで設計し実装してみる話

やまひろ

Flutterでは宣言的UIが利用され、SwiftUIもいわゆる宣言的UIとなっています。
ドメイン層を設計し、その上でUI層を考えて設計することが非常に重要です。
特に、画面のデザインに設計が引っ張られることで以下のような問題が発生することがあります。

・DDDのコアドメインにUIの知識が混入する
・ドメイン層の知識がUI側に漏れる
・ドメイン層の設計がうまくできていないため、拡張性が低い

これらのアンチパターンを避けるためには、しっかりとした設計と実装が必要です。
本セッションでは、よくあるCRUDの初歩的なシステムを例に、DDDの知識を基にした設計とその後の実装方法について解説します。
独自の視点や経験を交えながら、システム構築のアプローチを総合的に紹介します。

話の進め方としては以下の通りとなります。

  1. CRUDの要件定義
  2. DDDの基本概念
  3. 設計プロセス(ドメインモデル図とユースケース図の作成)
  4. ドメイン層の実装
  5. UI層の実装
  6. テストコードの作成
  7. まとめ

この流れを通じて、個別の知見を総合的にどう活かしてシステム構築を行うか、大きな視点でのアプローチを紹介します。
これにより宣言的UIを用いたシステム開発において、DDDの知識をどのように適用し、良い設計と実装を実現するかの手助けとなれれば幸いです。

2
ルーキーズLT(5分)

ChatGPTを利用したiOSアプリ開発の真髄

kazutoshibaba うまとし

近年、AI技術は急速に進化し、開発プロセスにおいても大きな役割を果たすようになりました。
特に、OpenAIのChatGPTは、その自然言語処理能力を活用して、開発者の支援ツールとして注目を集めています。
本セッションでは、ChatGPTを利用したiOSアプリ開発の実践的な手法と、そのメリットについてご紹介します。

本セッションでは以下の内容についてトークします。

  1. ChatGPTを用いたiOSアプリ開発の具体例
    • Swiftコードの生成とリファクタリング
    • デバッグと問題解決
    • エラーメッセージの解析と修正提案

  2. ChatGPTのメリットと課題
    • ChatGPTを活用することで得られるメリット
    • ChatGPTの限界と今後の課題
    • 人間のレビューとのバランス

対象聴講者
• AI技術を活用して効率的に開発を進めたいiOSアプリ開発者

ChatGPTを活用することで、iOSアプリ開発の効率を飛躍的に向上させることが可能です。
本セッションを通じて、AI技術をどのように実際の開発プロセスに取り入れるかを具体的に学び、実践するためのヒントを提供します。
ぜひ、皆さんの開発プロセスにChatGPTを取り入れ、新たなレベルの生産性を実現しましょう。

3
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
採択
2024/08/24 10:30〜
Track C
レギュラートーク(40分)

Apple Siliconを最大限に活用する方法

EXCode013 mori

皆さん、Apple Silicon使っていますか?
ビルド時間の短縮によってその強力な性能を開発現場で実感している方も多いと思います。

このApple Siliconですが、実はCPUとGPU以外にも様々な機能があることを知っていますか?
例えば代表的な例として機械学習を高速化するNeural Engineが挙げられます。
実はその他にもVideo EncoderやML Acceleratorなど一部の処理を高速化するハードウェアが搭載されています。

またiPhoneに搭載されたAシリーズから始まり、近年Macに搭載されたことで全AppleプラットフォームでApple Siliconが搭載されています。
これによりMacを含めてWatchやTV、Vision ProでもiPhoneと同じアプローチで高速化することが可能になりました。
このトークではApple Siliconに搭載されている特殊エンジンの概要と、それらを効果的に利用するためのテクニックについて解説します。

  • Apple Siliconの各種専用エンジンの基本的な概要とその機能
  • 高速化を担当するフレームワークの概要
  • 実際にどれほど高速化されるのか
  • 高速化以外でのパフォーマンスへの影響
  • プラットフォームごとの違いとその影響
2
ルーキーズLT(5分)

iOSでもネットワークグラフを描画したい!

charlie_dev_ios チャリオ

皆さんはネットワークグラフというものをご存知でしょうか?ネットワークグラフは身近な例ではSNSでの人の繋がりや路線図など、モノの繋がりを視覚化するために使用されます。しかし多くの場合、ネットワークグラフの作成にはデータが扱いやすく描画ライブラリが多く存在するPythonやJavascriptなどが使用されます。

でもそんなネットワークグラフをiPhoneやiPadで眺め、あわよくば触りたい、Webではなくネイティブで実装したい、そうは思いませんか?

本トークではiOSでネットワークグラフの描画を実現する過程を紹介します。ネットワークグラフ描画の仕組みについて簡単な解説から始め、SwiftUIとグラフィック処理や計算が得意なMetal、それぞれの切り口で実装して得た課題や試行錯誤の結果を共有し、最終形をお見せします。

あなたもネイティブ表現力の可能性を探ってみませんか?

1
LT(5分)

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

shmdevelop 服部 智

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

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

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

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

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

1
ルーキーズLT(5分)

Base64で動画や画像を保存してみた

yuhei.ueno

文字データでデータをやりとりしていた時代に戻ろう!(爆)
そのBase64を使い、画像や動画や音声をiOS上で扱ってみようという試みです。
またそういったデータをUserDefaultsやCoreDataに保存して使ってみて、実用性はあるのか?というのも調べてみようと思います。

また最近ではこんな使い道もあるのでは?こんなところに使われているよ という点も調べてみようと思います。

Wikipedia引用
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。

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

Deep Dive into swift-testing

ojun_9 ojun

「レガシーコードとはテストのないコードである」という言葉があります。
iOSアプリの開発において、ユーザに長く使われる持続可能なアプリを作るためにユニットテストは欠かせません。
多くの開発者がXCTestを利用していますが、Objective-Cランタイムへの依存やSwiftで利用できないAPI、Swift Concurrencyとの統合の難しさなど、複数の課題があります。

そこで注目したいのが、Appleが新たに公開したユニットテスト用ライブラリであるswift-testingです。
swift-testingは現代的な設計を取り入れ、Objective-Cランタイムの依存を最小限に抑え、Swift Concurrencyとのシームレスな統合を可能にしています。
これにより、効率的なテストの検出や実行、パラメータ付きのテストや高度なテストケースのサポートが実現されます。

このトークでは、まずXCTestの歴史とその限界について触れ、続いてswift-testingの特徴と利点を詳しく解説します。
さらに、swift-testingがiOSアプリ開発に与える影響や、具体的な導入方法、そして私達の開発プロセスにどのような変化をもたらすのかを探ります。
このトークを通じて、次世代のユニットテストの在り方を理解し、より良いテスト戦略を構築するための知識を提供します。

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

Blender で作成した 3D モデルを Vision Pro で使用する

Mika

次世代の空間コンピュータである Vision Pro は、クリエイターに新たな可能性を提供します。この画期的なデバイスは、リアルとデジタルの境界を曖昧にし、今までにない没入感とインタラクティブな体験を実現します。特に、Blender で作成した 3D モデルを Vision Pro で使用することにより、これまで想像していた以上の現実感を持つプロジェクトを構築することが可能です。あなたも自慢の自作 3D モデルを目の前に配置してみたいと思いませんか?

トークでは、Blender で作成した 3D モデルを Vision Pro で活用するための具体的な方法を解説します。

  • Blender で作成した 3D モデルの連携方法
  • アニメーション付き 3D モデルの連携方法
  • RealityConverter を使用して、USDZ 形式に変換する手順
  • モデルのテクスチャやマテリアルの最適化方法、インタラクティブ要素の追加

Blender に馴染みの薄い iOS 開発者でも自身のプロジェクトにすぐに応用できる情報を得ることができます。Vision Pro の可能性を最大限に引き出すためのノウハウをこのセッションで学び、次世代の Vision Pro 体験を共に創り上げましょう!

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

Swiftで実現する!iPhone画面をApple Vision Proにリアルタイム表示

shmdevelop 服部 智

Apple Vision Proで見ている視界に、手元で操作しているiPhoneの画面をリアルタイムで表示する実装方法について解説します。

通常、visionOSではiPhoneの画面を直接表示することはできません。
しかし、送信側のiOSアプリと受信側のvisionOSアプリを実装し、連携させることでこの表示を実現しました。

空間に浮かぶ美麗なiPhone画面は、存在感がありとても魅力的です。
この表示を実現するためには、多くの試行錯誤と調査が必要でした。

このセッションでは、以下の要素をどのように連携させるかについて、具体的なソースコードと共に解説していきます。

  • Multipeer Connectivity
  • CAMetalLayer
  • ReplayKit: iOS System Broadcast
  • VideoToolbox
  • WebSocket
    さらに、会場でライブデモも行いますので、実際の動作をその目で確認いただけます。

このセッションを通して、ワクワクする機能実装の知見を皆様と共有できることを楽しみにしています。是非ご参加ください。

2
LT(5分)

SQLiteとSQLite.swiftを深掘りする

devkyousuke devkyousuke

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

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

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

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

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

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

iOSエンジニア視点から見るデザインシステム構築とその関わり方

komaji504 komaji

UI実装において、同じViewを複数箇所で実装してしまうと、デザイン変更に対する更新漏れや、実装箇所ごとにUIの差異を生んでしまうことがあります。こうした一貫性の欠如は、ユーザーにストレスを与える要因となります。これらの課題に対するアプローチの一つにデザインシステムがあります。デザインシステムとは、コンポーネントやスタイルガイドなどのプロダクト開発に必要なリソースセットです。デザインと実装がシステムとして相互連携することで、一貫性のあるUIを効率的に実装できます。

しかし、デザインシステムの構築は容易ではありません。さまざまなリソースが必要で、構築には時間がかかります。また、デザインと実装が相互連携できるようにコンポーネントを作成する必要があります。さらに、プロダクトの進化に合わせて継続的に改善できるようにする必要があります。

本トークでは、以下のトピックを中心に、私が携わるプロダクトのデザインシステム構築におけるiOSエンジニアの具体的な取り組みをお話しします。

  • 機能開発と両立させるデザインシステムの部分的な導入
  • 相互連携のためのスタイルレビュー会とコンポーネントのAPI設計
  • SwiftUIの標準APIを活用したメンテナブルなコンポーネント実装

このトークが、デザインシステムの構築、そして一貫性のあるプロダクトを効率的に開発するための参考になれば幸いです。

2
採択
2024/08/24 17:05〜
Track A
LT(5分)

全力の跳躍を捉える計測アプリを作る

juginon Ogijun

Apple Vision Proの発表と同時に紹介された空間ビデオ機能。 iPhone 15 Proで撮影した動画を3Dで確認できるものですが、この仕組みはiPhoneに搭載された2つのカメラの距離差を利用して物体の距離感を計算し実現しています。

実は、この技術は陸上競技においても使われています。走幅跳などの長さの競技では、高精度なステレオカメラを用いて跳躍後に離れた場所から正確に距離を計測できるようになっています。
そして、昨年までのiOSDCでは走りがメインでしたが、僕は跳躍種目の方が得意です。

2眼のiPhoneを使えば、このシステムを模倣できるのではないか?実際にメジャーで計測するのと比べてどれくらい差が出るものなのか?
陸上競技歴17年の私が実際に体を張って検証した結果を動画で紹介しながら、全力疾走のスピード感はそのままに全力の跳躍と同じ迫力で紹介します。

3
LT(5分)

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

nkjzm Nakaji Kohki

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

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

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

MEet Flutter Add-to-App: Unlocking Our Productivity

ichi

Flutter Add-to-App(以下A2A)は、既存のネイティブアプリにFlutterを部分的に統合する機能です。
2023年2月、マネーフォワード MEは新サービスのリリースに伴い、A2Aを導入しました。

この技術的挑戦から1年以上にわたる開発において、iOS/Androidの実装の共通化による開発速度の改善や、例えばアプリの仕様策定やデザインなどの業務の大幅な削減など、全体的な開発生産性が飛躍的に向上しました。
また、新しい技術を取り入れることで生じた課題にも迅速かつ効果的に対処するため、GitHub Actionsなどのツールを活用したいくつかの自動化プロセスを導入しました。
A2Aの導入はさらに、iOS/Androidエンジニア間や他チーム、他部門とのコミュニケーションを促進し、プロジェクトチーム全体の協力体制を強化できました。

今回のトークでは、これらA2Aの導入による開発環境の改善や、具体的な自動化プロセスやAndroidの連携方法などについて詳しく説明します。

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

ABEMAにおける新課金商品の設計とAB検証プロセスの実践

kangnuxlion 康 建斌

ABEMAは「新しい未来のテレビ」として多様な動画コンテンツを提供しています。2024年2月から「ABEMAプレミアム」に加え、新たな課金商品の提供を開始し、課金商品の設計とAB検証が重要な役割を果たしています。本セッションでは以下の内容を解説します。

  1. 課金商品設計
    ABEMAの課金商品設計は、ユーザーの利便性とビジネスの持続可能性を両立させています。サブスクリプションと都度課金の2つの商品を採用し、ビジネス面とアプリ内課金のバランスをどのように取るかを説明します。
  2. AB検証の重要性
    AB検証は、課金商品の効果を測定する重要なツールです。異なる商品をユーザーにランダムに割り当て、その結果を比較して最適な設計を見つけ出します。AB検証の設計、実施、結果の解釈について詳しく説明します。
  3. 課金商品設計とAB検証の実例
    具体的な事例を通じて、ABEMAの課金商品設計とAB検証のプロセスを解説します。
  4. 今後の課題と展望
    最後に、課金商品設計とAB検証における今後の課題と展望を議論します。新たな課金モデルの開発や、精緻なAB検証の実施など今後の取り組みについて述べます。

このセッションを通じて、参加者がABEMAの課金商品設計とAB検証の具体的なプロセスを深く理解し、自社のアプリ開発やビジネス戦略に応用するための実践的な知識を得られることを目指します。

2