採択
2024/08/23 13:55〜
Track D
レギュラートーク(20分)

ゲームボーイアドバンスでSwiftを動かそう

k_koheyi k-kohey

「SwiftってAppleデバイスでしか動かないじゃん?」
そう言われ続け10年、しかし現状は大きく異なります。
Swiftは現在、LinuxやWindowsのような他OSでも動作することに加えて、組み込み機器での利用を想定した軽量なバージョンも提供されています。
つまりSwiftは多種多様な環境で実行できるポテンシャルを秘めているのです。

そして、それはゲームボーイアドバンス(以降、GBA)のようなレガシーなデバイスも例外ではありません。
GBA開発は誰でも手軽に実行環境を用意できるという魅力があります。
今年4月からApp Storeでのエミュレータ配布が認められたのは記憶に新しいかと思います。

しかし、GBA向けに開発をするにはいくつかの工夫が必要です。
GBA向けにコンパイルの設定をしたり、リンク時に参照できないシンボルの解決をする等、開発環境を整えるのにも一手間かかります。
本セッションでは、SwiftのプログラムをGBAで動作するようにコンパイルする方法を解説します。また、Swift Packageを使った開発環境構築、BreakPointの貼り方等のデバッグ方法、および具体的なプログラム例も併せて紹介します。

このセッションを通じてGBAの開発環境を構築する方法や、swiftcやEmbedded Swiftについての知識を得ることができます。

4
採択
2024/08/23 14:30〜
Track A
スポンサーセッション(20分)
スポンサーセッション

月間4.5億回再生を超える大規模サービスTVer iOSアプリのリアーキテクチャ戦略

mathtanguu 小森 英明

2015年にサービスを開始したTVerは現在では月間4.5億回再生を超える大きなサービスに成長しました。
TVerのiOSアプリ開発における生産性と品質をさらに向上させ組織やプロダクトをスケール可能にするための取り組みとして、2024年度からはiOSアプリのリアーキテクチャに取り組んでいます。
本セッションでは、多くのユーザー/ステークホルダーを抱えるTVerアプリにおいてどのように事業リスクを最小化しながらリアーキテクチャプロジェクトを推進しているかについて紹介します。

<現在のアーキテクチャと目指すアーキテクチャ、その採用背景について>
・SPMを用いたマルチモジュール化
・UIKitからSwiftUIへの移行
・Design Systemの導入

<リスクを最小化するための戦略について>
・モジュールごとの段階的なリリース
・Feature Flagを用いた開放率のコントロール
・iOSのversion戦略

5
採択
2024/08/23 14:30〜
Track B
スポンサーセッション(20分)
スポンサーセッション

魅力的なiOSアプリを作るためのデザインガイド

avocadoneko Natsuho Ide

これまで主にWebサイトやWebアプリのデザインをしてきた私は、業務でiOSアプリをデザインするにあたり、エンジニアと「iOSアプリらしいデザイン」について議論する機会がありました。しかし私には「iOSアプリらしさ」とは何か理解できず、戸惑いを感じました。ただiOSのパーツを使うだけではiOSらしくはならず、見た目だけの問題ではないようです。

そこで私は、iOSアプリらしいデザインを分析し言語化することにしました。さまざまなアプリを観察し、Human Interface Guidelinesを読み込むことで、iOSアプリ特有の特徴があることに気づきました。

例えば、奥行きを感じる表現で直感的なインターフェースを提供し、タッチジェスチャーの活用で操作感を向上させることなどが挙げられます。これらの特徴を理解することで、見た目だけでなく、操作性やユーザー体験全体を通じてiOSらしいデザインを実現できます。

この登壇では以下の内容をお伝えします。

  1. iOSアプリらしいデザインとは何か、具体的な事例を交えながら考察した結果を説明
  2. iOSアプリらしいデザインにすることでのメリットを説明
  3. 弊社のiOSアプリ「workhub」を、よりiOSらしいアプリにするための改善点を見つける

iOSらしいデザインを理解し、実践することで、提供するアプリをより魅力的にしていきましょう!

10
採択
2024/08/23 14:30〜
Track D
スポンサーセッション(20分)
スポンサーセッション

MV State PatternでSwiftUIを受け入れる

Hiroma Tsuchiya

私たちのチームでは来たるべき超巨大アプリの開発に備え、向こう5年間は大規模なリファクタリングを必要としない堅牢な設計を目指してPoCを去年から開始しました。
PureなSwiftUIが全面的に採用され、基盤となるアプリアーキテクチャはどうするべきかという議論も重ねました。
本セッションではあまり聞き馴染みのないアーキテクチャである「MV State Pattern」について視覚的に分かりやすく解説しつつ、以下のポイントに的を絞ってお話しします。

【ポイント】
・MV State Patternとは
・なぜ採用したのか
・SwiftUIとの親和性
・実際の使用感はどうなのか

これらの知見が今後アプリアーキテクチャを考える皆さんの意思決定の一助となれば幸いです。

1
採択
2024/08/23 15:05〜
Track A
レギュラートーク(20分)

iPhoneの外部センサーを使わない位置測定 --測定誤差を添えて--

mrs1669 しろくま

iPhoneの進化により、位置測定技術は著しく向上しています。

GPSをはじめ、Wi-Fi、Bluetooth、そしてLiDARを利用した位置測定機能が搭載されています。 しかし、GPSは屋内で正確に計測することが難しく、Bluetoothは事前に機器の設置が必要です。LiDARなどの深度センサーはレーザー光を飛ばして反射光を計測するため、センサーを常に外部に向けておく必要があります。

今回は、これらの外部信号を用いずに、iPhone内蔵のジャイロセンサーと加速度センサーのみを使用して位置測定と距離測定を行う方法についてお話しします。 具体的には、xyz方向の3軸加速度データと3軸角速度データを用いて位置測定を行います。

このトークでは、以下の内容について詳しく説明します。

  1. 加速度データと角速度データを用いた位置測定の方法
  2. 実際の計測結果とその測定誤差についての解析
  3. 測定誤差を抑えるためのキャリブレーション方法とその効果

特に測定誤差に関する部分では、実際に計測をしたところ、大きな測定誤差が発生して大変苦戦しました。 どのような誤差が発生したか、そしてそれにどのように対処したかについて具体的な事例を交えて説明します。 これにより、同様の技術を利用しようと考えている方々にとって有益な情報を提供できると思います。

7
採択
2024/08/23 15:05〜
Track B
レギュラートーク(20分)

快適な開発と高セキュリティを実現するCryptoKitを活用したCoreDataのデータ暗号化術

Takahiro_Kato15 Takahiro Kato

永続化されたデータの保護は、現代のiOSアプリ開発において必要不可欠な要素です。
しかし、Appleが提供する永続化フレームワークであるCore Dataは標準でデータの暗号化を提供しません。
また、Core Dataのデータ暗号化には、「データベース全体を暗号化する方法(SQLCipher)」や「保存するデータを個別に暗号化する方法(CryptoKit)」があります。
このトークでは、それぞれのメリット/デメリットを比較した上で、Core Dataにおけるデータの暗号化手法とその選定方法について詳しく紹介します。

参加者は以下の内容を学ぶことができます。

  1. データ保護の重要性
  2. Core Dataの各暗号化手法のメリット/デメリット
  3. Core Dataの暗号化手法の選定方法
  4. CryptoKitによる暗号化と復号化のコード例
  5. CryptoKitによる暗号化と復号化のパフォーマンス検証

このトークを通して、「Core Data」の暗号化に必要なナレッジや各利点について理解を深めて頂ければ幸いです。

7
採択
2024/08/23 15:05〜
Track D
レギュラートーク(20分)

空間ビデオフォーマット、MV-HEVCが写し撮る世界

Ridwy なめき ちはる

Apple Vision Proで空間ビデオを見るのは、まるでその場にいるかのようなリアルで素晴らしい体験です。この空間ビデオの記録にはMV-HEVC(Multiview High Efficiency Video Coding)という規格が用いられています。「Multiview」とは左右の目それぞれのフレームを指し、視差まで再現できるため、平面的なディスプレイにはないリアルさを感じられるようになっています。

では、どのように撮影を行えば良いのでしょうか?配信時に注意すべき点は?さらに、Vision Pro以外のユーザーにはどのように対応するのでしょうか?本トークではこれらの疑問に答えつつ、MV-HEVCに焦点を当て、この規格を理解し、空間ビデオの持つポテンシャルと具体的な活用方法について考察します。

規格自体のリリースは2014年と古く、両目の視差を利用した立体視に関してはさらに前から研究が行われており、ステレオスコピック動画の撮影のコツや、どんな表現に向いているのかについてはそれらを参考にできます。AVFoundationとVideoToolboxのAPIを使って2台のカメラで撮った動画から空間ビデオを作成する方法も紹介します。
このトークが、空間ビデオを活用した新しい魅力的な体験を構築する一助となれば、非常に嬉しく思います。

7
採択
2024/08/23 15:40〜
Track A
レギュラートーク(20分)

詳解UIWindow

n_atmark atsuyan

みなさん、UIWindowというクラスについてご存知でしょうか。

グローバルに画面最前面に要素を表示するHUD(Head up display)の実装を行う際などにUIWindowを用いることがよくあります。しかし、通常の開発で直接触ることは少ないためUIWindowについてあまりよく理解せずに使われていることも多いのではないでしょうか。

例えばUIWindowにおける表示順はUIViewのsubViewsにおける表示順などとは少し異なっているため注意が必要です。 isKeyWindow がtrueなUIWindowが最前面であると思われたり、 UIApplication.shared.windows の順番がUIWindowの表示順であると思われたりしがちですがどちらも間違っています。

また、複数のUIWindowを表示している際のステータスバーの挙動にも一癖あります。特定の画面でステータスバーを非表示にしたいようなケースでUIWindowの特性をちゃんと把握していないと意図した挙動を実現できないことがあります。

このトークではUIWindowがどういうものなのか、UISceneやUIViewとの関係性を踏まえて話しつつ、UIWindowの表示に関する挙動や利用する際の注意点について紹介します。

10
採択
2024/08/23 15:40〜
Track B
レギュラートーク(20分)

iPhoneへのマイナンバーカード搭載におけるデータ規格についての理解を深める

shindyu shindyu

5月に発表されたように、Appleウォレットでマイナンバーカードを利用できるよう準備が進められています。
このトークでは、iPhoneにマイナンバーカードを搭載する際に重要となる以下の点について詳しく解説します。

  1. モバイル運転免許証の国際標準規格「ISO 18013-5シリーズ」
  2. デジタル身分証明書の国際標準規格「ISO 23220シリーズ」

これらの規格についての理解を深めるとともに、関連するAPIや実装方法についても紹介します。
このトークを通じて、iPhoneでのマイナンバーカードの利用に関する技術的な知識を習得し、
実際の開発や実装に役立てたり、デジタル身分証明書の未来を想像するきっかけになれば幸いです。

10
採択
2024/08/23 15:40〜
Track D
レギュラートーク(20分)

SwiftのSIMDとその利用方法

kntkymt kntk

CPUにはSIMDと呼ばれる、一つのCPU命令で複数の値を演算できる高速演算機能が存在し
画像・動画・音声処理などパフォーマンスが求められるシーンで広く活用することができます。
実はSwiftにもSIMDがStandard Libraryに存在しており、VisionOS開発にも用いるRealityKitでも必要になることがあります。

このトークでは、SwiftのSIMDの利用方法を解説し、
パフォーマンスが求められるシーンでSIMDを利用できるようになったり
RealityKitなどでSIMD出てきた際に恐れず正しく使えるようになることを目指します。

具体的には以下のトピックを取り扱います。
・SIMDの基本的な型と役割
・SIMDの演算子と用途
SIMD自体の概要も説明しますのでSIMDを知らない人でも理解できる内容にしています。

また、SwiftのSIMDの設計アプローチも同時に解説することでSIMDへの理解を深めます。
Swiftは演算子オーバーロードやジェネリクスなどを活用し、C++などのSIMDに比べ簡潔にSIMDを利用することができます。

6
採択
2024/08/23 16:15〜
Track A
レギュラートーク(20分)

iOS/iPadOSの多様な「ViewController」の徹底解説と実装例

haseken_dev haseken

iOS/iPadOS向けにアプリ開発を行う際に、「ViewController」を意識しないことはほぼないのではないでしょうか?

iOS 2.0の「UIViewController」を皮切りに、様々なViewControllerが提供されてきました。
私たちはこれらを実装し、カスタマイズして利用してきたかと思います。

では、これまでどれだけのViewControllerが登場し、どのような機能が実装可能になったのでしょうか?
このセッションでは、これまでに登場したViewControllerを機能紹介とサンプルコードとともに振り返ります。

想定する方々:
・iOS/iPadOS、それら以外のプラットフォーム向けアプリ開発・企画者

ゴール:
・知らなかったViewControllerを知り、今後の参考にできる
・提供できる画面・機能の概要を把握できる

アジェンダ:

  1. UIViewControllerの進化過程
  2. 紹介対象のFrameworkの概要
     ・MapKit、SiriKitなど
  3. これまでの総数
     ・年代、Framework、OSバージョン別
  4. 多様なViewController紹介
     ・提供機能とサンプルコードの紹介

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

9
採択
2024/08/23 16:15〜
Track B
レギュラートーク(20分)

Wallet API, Verifier APIで実現するIDカード on iPhoneの世界

samor127 下森 周平

近年、デジタル空間における個人認証の需要が増す中、iOSではiOS 15.4からWalletアプリへ運転免許証や州IDの搭載ができるようになりました。
更には、iOS 16からWallet APIを通じた個人情報の共有、そしてiOS 17からはVerifier APIを用いた対面での個人情報の共有が可能となりました。
これらの機能はまだ米国でしか使えませんが、マイナンバーカード機能がiPhoneに搭載されることが発表されるなど、日本でもIDカードのデジタル化に対する期待が高まっています。

そこで、このセッションでは上記のデジタルIDに関連する機能が日本でも利用可能になった場合に備えて以下の内容を話します。

  • デジタルIDを支える国際標準 ISO18013-5の概要
  • Wallet API, Verifier APIで可能になるユースケースの紹介
  • Wallet API, Verifier APIの具体的な実装例
  • ISO 18013-5に準拠した対面での個人情報共有機能を実装する際に得られた知見の共有

このセッションを通じて、日本におけるデジタルID時代を一緒に妄想し、将来に備えましょう!

採択
2024/08/23 16:15〜
Track C
レギュラートーク(20分)

Meet BrowserEngineKit: 独自のブラウザエンジンを体験しよう

_swiftty 林達也

Apple から WebKit 以外のブラウザエンジンを搭載したアプリを作成するためのフレームワーク「BrowserEngineKit」が登場しました。
この機能は EU 地域で、かつ Apple の定めた要件を満たしたサービス提供者のみに限られているものの、開発者は独自のブラウザエンジンを作成することが可能になります。

しかし BrowserEngineKit はセキュリティ向上のために複数の Extensionを組み合わせてアプリが構成されるため、どのように作成すればよいのかが難解です。

本トークでは Apple が公開したサンプルをベースに独自のブラウザエンジンの作り方が学べます。具体的には以下の内容をカバーします。

  • BrowserEngineKit の概要
  • NetworkExtension、RenderingExtension、WebContentExtension それぞれの役割
  • 各 Extension とのプロセス間通信について(XPC)
採択
2024/08/23 16:15〜
Track D
レギュラートーク(20分)

Swiftで高速フーリエ変換してオーディオビジュアライザーを作る

Kyomesuke Kyome

オーディオビジュアライザーとは、音楽のリズムや振幅、周波数成分などを視覚的に表現したものです。音楽系のアプリを使ったことがある方なら一度は見たことがあるウニョウニョ動くカッコいいあれです。

本トークでは、音楽ファイルを読み込み再生しながら、リアルタイムで高速フーリエ変換を実行し、オーディオビジュアライザーを表示するまでの方法について紹介します。高校数学レベルの数学的知識とSwiftでのアプリ開発経験があることを前提として、Swiftで一歩踏み込んだ表現をしてみたい方を対象とします。

話すこと

  • Accelerate FrameworkのAPIを使って高速フーリエ変換し、振幅スペクトルを取得する方法
  • リアルタイムで動くアニメーションをSwiftUIのGraphicsContextを用いて実装する方法
7
採択
2024/08/23 16:50〜
Track C
レギュラートーク(20分)

ゼロから始めるiOSセキュリティ ~ OWASP Mobile Top10から学ぶ脆弱性対策

soh_satoh Soh Satoh

あなたのアプリは本当に安全に作られていますか?

Webアプリに比べて、おろそかになりがちなネイティブアプリのセキュリティ。
脆弱性診断を行うセキュリティエンジニアは、セキュリティに関するオンラインコミュニティ「OWASP」が発行する検証基準「MASVS」などをもとに、脆弱性診断を行っています。
また、彼らは、開発者が特に気をつけるべきセキュリティリスクを「OWASP Mobile Top10」として公開しており、これらを理解することは、セキュアなアプリケーション開発を行ううえで非常に重要です。

このセッションでは、実際にiOSアプリの脆弱性診断を行っている筆者が、OWASP Mobile Top10の中から特によく見かける脆弱性を紹介します。

そのうえで、それらに対する対策方法を解説し、各種脆弱性への理解を深めることを目的とします。

内容

  • 安全でない内部ストレージへの情報保存 (M9: Insecure Data Storage)
    • 機微情報の適切な保存方法
  • 安全でない暗号化 (M1: Improper Credential Usage)
    • 暗号鍵のハードコードと難読化の有効性
  • 安全でないローカル認証 (M3: Insecure Authentication/Authorization)
    • バイパスが容易な生体認証
7
採択
2024/08/23 16:50〜
Track D
レギュラートーク(20分)

楽しく簡単に!QRコードの読み取り機能を実装しよう

penguinsan_pg ぺんぎんさん

iOSアプリには、カメラを使ってQRコードの検出・読み取りを行う機能がよく組み込まれます。
しかし、この機能をアプリ内で実装するには、AVCaptureSessionを用いた入力デバイスや出力データの管理、AVCaptureVideoPreviewLayerを用いたカメラプレビューの表示、AVCaptureMetadataOutputからQRコードの情報の取得...など、多くの関連するクラスを扱う必要があり、複雑な実装を行わなければなりませんでした。

そこで登場するのが、VisionKitフレームワークです。
iOS 16以降に利用可能なDataScannerViewControllerを使うことで、カメラを使った検出・読み取りの機能をシンプルかつ簡単に実装できます。

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

  • VisionフレームワークとVisionKitフレームワークの概要
  • 従来のQRコード読み取り処理とその問題点 (AVFoundationフレームワークを利用した実装)
  • DataScannerViewControllerを用いた実装方法の紹介 (VisionKitフレームワークを利用した実装)

QRコードの読み取り機能に苦労していた日々は今日でおしまいです。
みんなで楽しくVisionKitフレームワークを学びましょう!

7
採択
2024/08/23 17:25〜
Track A
ルーキーズLT(5分)

夢の声優体験!パーソナルボイスでゲームのキャラクターをあなたの声で喋らせる

kuromelon257 岡本 龍太郎

皆さんは声優さんになりたいと思ったことはありませんか?例えば、自分が声を当てたキャラクターがゲームで活躍する妄想をすると、ワクワクしてこないでしょうか。しかし、アフレコの実力や膨大な文章の収録などの技術面・コスト面の障壁があり、素人がキャラクターに声を当てるのは簡単ではありません。

本トークでは、誰でも自分の声のキャラクターをアプリに登場させる手段として、iOS 17にて追加されたアクセシビリティ機能「パーソナルボイス」を使用し、ユーザの声で自由に語句を発話させる方法について説明します。また、「誰でもゲームアプリ声優になれるアプリ」のデモを通じて、パーソナルボイスの実際の活用例をご紹介します。

具体的には次のトピックについて話します:

  • AVSpeechSynthesizerを使用して学習したパーソナルボイスで発話させる方法
  • AVSpeechSynthesisVoiceで定義された他の音声合成機能との共存方法
  • パーソナルボイスを活用したゲームアプリの実例
  • パーソナルボイス導入における課題

このトークを通じて、iOSの「パーソナルボイス」の導入および利活用方法と、ゲームキャラクターに命を吹き込む新しい方法を理解していただけます。「パーソナルボイス」があなたのアプリに「自分の声での発話」という新しい価値をもたらし、多くのユーザの夢を叶える一助となれば幸いです。

6
採択
2024/08/23 17:25〜
Track B
ルーキーズLT(5分)

リョムキャットのパーフェクトSwiftネーミング教室

ioco95 Ryomm

みんなー リョムキャットのパーフェクトSwiftネーミング教室はじまるよー


Swiftの関数名、どのように命名していますか?
本LTではSwiftの関数名の命名時に考えるべきことについて紹介します。

弊社には全くコメントを使わずに名前だけで全てを表しているプロジェクトがあり、弊チームでも追随してコメントをなくしていこう!という風潮になりました。
コメントを完全に消すのはまだ議論の余地があるところですが、たしかにコメントがないと処理がわからない関数名は是正していくべきでしょう。
そこから命名について思い悩む日々が始まりました。

体を名で表すのは至難の技で、もはや芸術の域です。
そんな中、 Apple は Swift API Design Guidelines という指針を提示しています。このガイドラインを読み解きながら、Swiftらしい良い命名について一緒に考えていきましょう。
このLTを通じて、パーフェクトでSwiftライクなグッドネーミングセンスを身につけられます!

LTで話すこと:

  • Swift API Design Guidelines で言及されている命名規則の紹介
  • 自然に読める関数名にする工夫
  • 英語力がなくてもいい感じの命名をするには
4
採択
2024/08/23 17:25〜
Track C
レギュラートーク(20分)

Core Audio徹底解剖

entaku_0818 entaku

みなさんはCore Audioを利用してiOSで音声を扱ったことはありますか?
iOSではCoreAudioをはじめ、AVAudioPlayer/AVAudioRecorderやAVAudioEngineなどさまざまな音声を扱うAPIが存在しますが、どのAPIを使ってどのような音声処理ができるのか?を語られることは少ないと思います。

このセッションでは、オーディオデータの取得と処理技術、リアルタイム録音技術、再生技術を学び、iOSアプリケーションのオーディオ機能を強化するための実践的な例とベストプラクティスを紹介します。

本セッションを聴き終わった際にはあなたもiOSで音声処理を試してみたくなることでしょう

  1. Core Audioの理解:
    • Core Audioのアーキテクチャの概要
    • iOSオーディオスタックにおけるCore Audioの役割
  2. オーディオデータの取得と処理:
    • オーディオデータの取得方法とその処理
    • サンプルレート、ビット深度、チャンネル数の基本概念
  3. 高度なオーディオ技術:
    • リアルタイムオーディオ録音の実装:
    • 効率的なバッファ管理とデータ転送
    • 音声エフェクトの実装と管理
    • オーディオエフェクトの追加と調整
  4. 実践的な例とデモ:
    • 実際のコードを用いたデモ
    • 実践的なサンプルプロジェクトの紹介
13
採択
2024/08/23 17:25〜
Track D
レギュラートーク(20分)

Raspberry Pi Pico を Swift で操作する

yochidros yochidros

Swiftで組み込みシステムが開発できるようになると、どのような環境でもSwiftの強力な言語機能を活用できます。これにより、開発の効率性やコードの再利用性が向上し、多くの開発者にとって魅力的な選択肢となります。

これまで、Swiftは組み込みシステムなどのベアメタル環境で利用することが難しいとされてきました。しかし、最近では組み込みシステム向けのSwiftが登場し、新たな可能性が広がっています。

従来、組み込みシステムの開発は主にC言語が使われていましたが、現在ではSwiftでの実現も近い将来の話ではありません。
このトークでは、以下の内容をお伝えし、皆さんがSwiftで組み込みシステムを開発するための第一歩を踏み出せるようにサポートします。

  1. Embedded Swiftとは
    • Embedded Swiftが目指す世界と、どのように実現できるのかを説明します。
  2. Embedded Swiftの制約
    • 馴染みのあるFoundationライブラリは利用できません。では何が利用できるのかを解説します。
  3. SwiftでRaspberry Pi Picoを動かしてみる
    • どのようにしてSwiftコードがRasberryPi Picoで動作するのか解説します。
    • Raspberry Pi PicoでLチカ(LEDの点滅)を実演します。
6