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

Bitriseでのクレジット浪費を防ぐ!必須の設定とベストプラクティス

zizi4n5 Shingo Takagi

iOSアプリ開発でよく使われるCI/CDサービスの一つにBitriseがあります。
皆さんはBitriseでビルドがハングしてしまい、大量のクレジットを無駄にしてしまった経験はありませんか?

このトークでは、Bitriseのクレジットを無駄にしないための必須設定とベストプラクティスについて紹介します。
これらの設定を活用することで、効率的なビルド管理が可能になります。

具体的には以下のポイントをカバーします:

・すべてのステップに対して、一括で一定時間出力のないステップを検出し中止する設定方法
・各ステップに対して、個別に一定時間出力のないステップを検出し中止する設定方法
・各ステップに制限時間を設定する方法
・ビルド開始時にXcodeシミュレーターの起動をチェックし、ハングする場合にワークフローを再起動する方法

さらに、これらの設定手順や実際の活用事例を具体的に紹介します。
このトークを通じて、Bitriseのクレジットを無駄にしない効率的なビルド管理を実現しましょう!

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

アプリ内課金の動作確認・テスト方法まとめ

ozum1n ozumin

このトークでは、アプリ内課金の動作確認方法と StoreKit2 におけるユニットテストについて、包括的に解説します。
アプリ内課金を安全に実装するためには、動作確認とユニットテストが非常に重要です。
本セッションでは、アプリ内課金の実装を StoreKit2 にリプレースした経験をもとに、以下の内容をお話しします。

  1. アプリ内課金の動作確認方法:
    StoreKit Testing in Xcode、Sandbox、TestFlight の3種類の方法について、それぞれで何が確認できるのか、これらの具体的な確認方法を解説します。特に Xcode 15 では、様々なエラーをシミュレーションできる新機能が追加され、動作確認の幅が広がりました。この機能についても詳しく紹介します。
  2. StoreKit2 でのユニットテスト:
    StoreKit2 を使用したユニットテストの具体的なコード例と、実際に直面した課題や解決方法について解説します。また、iOS 17.0 以降の API によってテストの幅が広がった点についても紹介します。

本トークを通じて、最新のアプリ内課金の動作確認方法とテスト方法について体系的に学ぶことができます。

3
LT(5分)

僕もMainActorにアイソレートされたい!

ojun_9 ojun

現代のiOS開発において、非同期処理やマルチスレッドの問題は避けて通れない課題です。
そんな中で登場したSwiftのActorは、これらの課題を解決してくれます。

しかし、Actorが何なのかをよく分からないまま利用することは多いのではないでしょうか?
本LTでは、Actorの基本的な仕組みと、実際にどのように動作しているかを解説します。
特にMainActorに焦点を当て、アクター境界の概念を掘り下げ、非同期処理をよりシンプルかつ効果的に管理する方法を学びます。

それではみなさん、アクター境界で会いましょう!

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

Universal Linksでもう躓かない! 〜陥りやすい罠とその回避方法〜

kudokai00 くどかい

Universal Linksとは、SafariまたはWebサイトを経由することなく、アプリ内のコンテンツに直接リンクすることができる機能です。

実装過程で「設定は正しいはずなのにアプリに遷移しない」という経験はありませんか?

このトークでは、Universal Linksの設定方法と実際に業務で直面した落とし穴について詳しく解説します。まず、Universal Linksの基本概念と、その利点を説明します。次に、実際の設定手順をステップバイステップで紹介し、必要なファイルやコードの具体的な例を示します。

さらに、Universal Linksの設定時に直面しやすい問題点とその解決策について詳しく掘り下げます。例えば、Apple App Site Associationファイルの配置場所や内容、ドメインの設定、iOSアプリ側の設定など、細かい設定ミスが原因でリンクが動作しないことが多いです。これらの落とし穴を具体例と共に説明し、効果的なトラブルシューティング方法を提供します。

このトークを通じて、Universal Linksの設定時に直面する典型的な問題を回避するための知識を得ることができます。また、Universal Linksの設定や実装をスムーズに進めるためのヒントとコツを提供します。

2
ルーキーズLT(5分)

テストのためのモック生成マクロ、理想を追求してみる

KeyNumberLV Kiichi

ユニットテストを書く際、依存先としてモックを使用することがありますよね。
みなさんは、どのようにモックを作成していますか?

手作業で1つ1つ作成することもあれば、mockoloなどの自動コード生成ツールを使うこともあるでしょう。
加えて最近では、swift-spyableなどのマクロを用いたモック生成ライブラリも開発されており、それらを使っている方もいるかもしれません。

しかし、これらのライブラリには以下のような課題が存在します。

  • 同名関数をモックできない
  • 少しの記述ミスでテストがクラッシュして修正に時間がかかる
  • モックした関数の挙動を途中で変えるのが難しい

このような課題を踏まえ、今回の発表では、

  • モック生成とはどうあるべきか?
  • なぜ/どうやってマクロで実現するのか?

を中心に、テストのためのモック生成マクロにおける理想を追求してみます。

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

SwiftSyntax・SourceKit・SwiftUIで実現するソフトウェア可視化の世界

_ockey_ Ockey

ソフトウェア可視化(Software Visualization)という研究分野があります。
これは、ソフトウェアの構造や開発プロセスなどを可視化することで、その理解を支援しようというものです。

ソフトウェア可視化には、頻繁で継続的なリリースが求められるアプリにおいて、コード理解を支援して開発効率を上げるポテンシャルがあります。
にもかかわらず、Swiftで書かれたコードを可視化するツールはまだあまり世に出ていません。
そこで、ビルドが成功する度に静的構造と影響範囲を可視化するツールを試作しました。

このトークでは、Swiftを対象としたソフトウェア可視化ツールの開発経験をもとに、

  • Swiftを対象とした既存のソフトウェア可視化ツール
  • SwiftSyntaxを使って型や変数、関数の宣言箇所と呼び出し箇所を特定する方法
  • ソースコードを解析して親子関係を維持しながら型や変数、関数を抽出する方法
  • SourceKit(SourceKitten)を使って型や変数、関数を呼び出している箇所から定義元を特定して依存関係を抽出する方法
  • SwiftUIを使ってクラス図ライクで移動可能なUIを実装する方法

についてお話しします。
このトークを通じて、Swiftで書かれたコードを解析するハードルを下げ、オリジナルの開発支援ツールを実装しよう!と思ってもらえることを目指します。

4
ルーキーズ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
ルーキーズ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を活用する利点

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