採択
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を用いて実装する方法
採択
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)
    • 暗号鍵のハードコードと難読化の有効性
採択
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フレームワークを学びましょう!

採択
2024/08/23 17:20〜
Track A
運営(5分)

ルーキーズLT大会

iosdcjp iOSDC Japan 2024

iOSDC Japanでのトークが初めてのルーキーたちによるLT大会です

3
採択
2024/08/23 17:20〜
Track B
運営(5分)

ルーキーズLT大会

iosdcjp iOSDC Japan 2024

iOSDC Japanでのトークが初めてのルーキーたちによるLT大会です

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

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

kuromelon257 岡本 龍太郎

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

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

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

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

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

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

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

__ryomm Ryomm

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


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

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

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

LTで話すこと:

  • Swift API Design Guidelines で言及されている命名規則の紹介
  • 自然に読める関数名にする工夫
  • 英語力がなくてもいい感じの命名をするには
採択
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. 実践的な例とデモ:
    • 実際のコードを用いたデモ
    • 実践的なサンプルプロジェクトの紹介
採択
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の点滅)を実演します。
採択
2024/08/23 17:30〜
Track A
ルーキーズLT(5分)

プロジェクトで遭遇した奇妙で面白いバグたち

nekodoko315 レイ

プロジェクトを進めていると、時折奇妙なバグに遭遇することがあります。。
今回のプレゼンテーションでは、最近出会った興味深いバグをいくつか紹介し、その解決策についてお話しします。
これらのバグはすべて、私たちのミステリーと挑戦の精神を刺激し、コードの再考を促すものでした。

  1. 絵文字を表示するとレイアウトが崩れた!
  2. 画面録画をするとレイアウトが崩れた!
  3. 特定の条件ではアプリをバックグラウンドからフォアグラウンドに切り替えると画像が表示されない!

他にも興味深いバグがいくつかあり、その詳細についても触れます。

このような興味深いバグを通じて、私たちはコードの特異性を発見し、より良いソリューションを見つけることができました。
このプレゼンテーションでは、これらの挑戦的なバグに対する解決策と学びを共有し、共に成長する機会を提供します。

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

安全で使いやすいCarPlayアプリの魅せ方:HIGと実例から学ぶ

marunomi_ maru

CarPlayとは車載ディスプレイでナビゲーションや音楽の再生が行えるものです。運転中に使用されることが多いため、CarPlayアプリは運転を妨げず、安全で使いやすい設計が求められます。
このトークでは、AppleのHuman Interface Guidelines(HIG)やプログラミングガイドを読み解き、ナビゲーションを行うデモアプリを通じて、使いやすく運転者にとって安全なCarPlayアプリの魅せ方を紹介します。

LTで話すこと:
・HIGから考えるCarPlayの最適な見せ方
・CarPlayアプリのパフォーマンス最適化
・実例で比較する安全な表示

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

なぜデフォルトが青色!? Tint Colorの理由に迫る

akidon0000 akidon0000

iOS開発者なら誰しも一度は目にする、デフォルトの青いTint Color。この色が選ばれた理由について、考えたことはありますか?本トークでは、その裏に隠された秘密を探ります。

まず、Appleのデザイン哲学や他OSとの比較、歴史的な経緯に基づき選択の理由を明らかにしていきます。次に、青色が持つ視覚的な特性について、色彩理論や人間の視覚に関する研究を交えながら、なぜ青色が適しているのかを探ります。

このトークを通じて、Appleのデザイン哲学やその背後にある考え方を深く理解することができるようになります。そしてデフォルトの青色を軽視せず、その価値を再評価することで、より洗練されたデザイン選択ができるようになるでしょう。

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

Core Graphicsの不思議: Simulatorアプリでマウススクロールを実現

cyan_0FBCF9 新妻 広康

「Simulatorアプリでマウススクロールを使えたらいいな」
普段アプリ開発をしている中で、このようなことを思ったことはありますでしょうか?

Simulatorアプリで画面をスクロールするには、マウスのドラッグ&ドロップで操作する必要があります。
慣れてしまえばなんてことないですが、マウスをいちいち動かすのは地味に不便です。

本LTでは、この問題をmacOSのCore Graphicsの機能で解決していきます。
Core Graphicsを使えばユーザイベントを変換することができ、擬似的にSimulatorアプリ上でマウススクロールを使うことができます。

「Core Graphicsなんてグラフィック系のライブラリでしょ?」と思ったら大間違い。実はユーザイベントにも深い関わりがあるんです。
あなたの知らないmacOSのハック術、お教えします。

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

InputMethodKitとTCAを使ったmacOS上で動作するIMEの開発

Tatsumi0000

macOS上で動作するIMEを、Appleが公式で提供するInputMethodKitを利用して開発しました。

InputMethodKitでは主に、IMKInputController、IMKCandidates、IMKServerの3つのクラスを使って開発します。実際に開発をする中で、特にロジックが集中するIMKInputControllerのコードが肥大化していき、コードの見通しが悪くなるという問題に直面しました。

そこで、この問題を解決するためにThe Composable Architecture(TCA)を導入しました。

本セッションでは、これらの開発体験をもとに、InputMethodKitでよく使う項目に対しての解説と、UIKit/SwiftUIを使用していないコードに対してどのようにTCAを適用するかを中心に発表します。

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

iOS17のScrollViewはちょっとできる子

tk108gabalian toya108

スクロール。
それはUI操作の核とも言えるジェスチャーの一つであり、それを実現するためのフレームワークもまたiOSアプリ開発において欠かせない存在です。

しかし、SwiftUIのScrollViewはiOS13で登場した当初、非常に使いづらいものでした。
基本的なスクロールの機能は提供されていたものの、カスタマイズ性に乏しく、UIScrollViewで実現できた多くの動作を再現することは困難でした。

しかし時は2024年。iOS17の登場でScrollViewも進化を遂げました!

このセッションでは、iOS17で追加されたmodifierを中心に、SwiftUIのScrollViewがどのように進化したのかを具体的な例を交えてご紹介します。

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

数値を文字列に整形する際の落とし穴とその解決策

glassfiber2023 glassfiber

このセッションでは、数値を文字列に整形する際に陥りやすい落とし穴について、具体例を交えて紹介します。

例えば、以下のような関数でパーセンテージの文字列を得ようとする場合を考えます。

func percentStr(_ rate: Double) -> String {
let value = floor(rate 1000) / 1000
let percentValue = value
100
return "(percentValue)%"
}

これを print(percentStr(0.523)) として実行すると、どのような出力が得られるでしょうか?

実際の出力は 52.300000000000004% となります。予想できましたか?

このセッションでは、数値を文字列に整形する際に私が陥った落とし穴について解説します。
具体的な内容は以下の通りです。

1.浮動小数点数の精度問題:
なぜ浮動小数点数がこのような誤差を生じるのか、その理由と背景について説明します。
2.NumberFormatterの活用:
NumberFormatterを用いた解決策を紹介し、どのように実装するかを具体的に示します。

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

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

5分で話し切る Roomplan

alt9800 おだやか

iOS16(iPadOS)以降に提供させれているSwiftAPIであるRoomPlanはすごい速度でお部屋をスキャンしてミニチュアハウスを作れます。

普段地図や位置情報で楽しく遊んでいる私が、どのように自身の活動にiOSのアプリ作成を取り入れ、RoomPlanにより作成したデータを利用しているかを5分で話し切ります。
モバイルアプリケーションを専業とされている方のみならず、測量や建築、環境デザインに携わっている方など周辺領域に広く届くように、アプリケーション構築が気軽に行えることをお伝えすることもテーマの一つです。

旅行先でもスキャンがしたくてたまらないようなモバイルスキャン星人を増殖させます。

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

これからの時代の新標準!Apple製テストフレームワーク「SwiftTesting」への移行とトラブルシューティング

psnzbss uetyo

Swiftでテストを書く際、Xcodeに組み込まれたテストフレームワークである XCTest を利用することが多いかと思います。しかし、XCTest は当初、Swift ではなく Objective-C でテストを書くことを目的として作成されました。そのため、Swift5.5 から導入された Swift Concurrency への対応が不十分であるという問題点があります。

そこで登場したのが新しいテストフレームワークである SwiftTesting です。
SwiftTesting は、非同期プログラミングをより効果的にテストできるように設計されており、Swift6 からはこのフレームワークの利用がデフォルトになると考えられています。

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

・SwiftTesting と XCTest の違い
・SwiftTesting への移行作業
・SwiftTesting を使用する際のベストプラクティスとトラブルシューティング