採択
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の表示に関する挙動や利用する際の注意点について紹介します。

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

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

shindyu shindyu

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

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

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

採択
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を利用することができます。

採択
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」を継承したクラス

採択
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: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/24 13:55〜
Track A
レギュラートーク(20分)

すべてのヘルスケアデータを紐解く

coffeegyunyu 日向強

ヘルスケアアプリから「すべてのヘルスケアデータを書き出す」機能を使用すると、これまでのヘルスケアデータを取り出せることをご存じでしょうか。このデータはzip形式で保存され、シェアすることが可能です。zipデータを解凍すると、いくつかのCSVデータや2GBを超える巨大なXMLデータなどが含まれています。これらのデータは一体どうやって活用すれば良いのでしょうか。

このセッションでは、iOSの巨大なXMLデータの解析方法やCSVデータの処理方法について詳しく解説します。エクスポートされたヘルスケアデータの内容を理解し、他のプラットフォームでインポートする際にも役立つ知識を提供します。具体的には、以下のポイントに焦点を当てます:

  • iOSのXMLデータ解析手法
  • CSVデータの効率的な処理方法
  • 他プラットフォームでのデータインポート方法

このセッションに参加することで、ヘルスケアデータを効果的に活用するためのスキルを身につけることができます。

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

PencilKitで実装するPDFへの手書き注釈

ras0q Ras

メモやファイルなど、いくつかのApple純正アプリに搭載されている「マークアップ」機能を利用したことはありますか?

マークアップ機能を用いることで、色・太さなどを自由に操作しながら書類に書き込みを行うことができます。

PencilKitは、マークアップ機能をアプリに組み込むためのフレームワークです。

マークアップ機能に搭載されている以下のような機能は、すべてPencilKitを使うことで実装することができます。

  • 指やApple Pencilで描いた線を低遅延かつ滑らかに描画する
  • ペンの種類や色・太さを切り替えるツールピッカーを表示する
  • 定規を使って直線を引く
  • 投げなわツールを使って図形をコピーし、他のマークアップ機能搭載アプリにペーストする

本トークでは、実際に開発したPDFファイルへの手書き注釈を題材に、以下のポイントについて学んだことを発表します。

  • PencilKitの基本設定
  • PDFKitとの連携
  • マークアップツールを使うための設定
  • 注釈をPDFファイルに保存する方法
  • 実際に開発した上での現状の工夫点や課題点

これらの内容を通じて、PencilKitを用いた実践的なPDF注釈機能の実装方法を詳しく解説します。

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

Accessibility for Swift Charts

Mika

チャートはデータの傾向をビジュアルで理解できるため、とても便利です。しかしながら、視覚的に表現されたチャートは目で見る必要があり、視覚障がい者や弱視の人にとっては利用が困難です。チャートが持つたくさんの情報を適切に受け取れないユーザーがいることはコンテンツ提供者側として避けたい事象です。

Apple の API にはオーディオグラフ(Audio Graph)やチャートを説明 (Describe Chart) させるための機能が提供されています。オーディオグラフは視覚的なチャートの情報を音の高低で表現し、Voice Over で読み上げさせることができます。また、チャートの詳細 (Chart Details) を使用すれば、チャートの重要な特徴や傾向を言葉で説明することができます。これらの機能により、視覚に不自由のあるユーザーもチャートの内容を理解することができるようになります。

本トークでは以下の内容をお話しします。

  • オーディオグラフの使い方をまずは理解する
  • VoiceOver 対応しやすいチャートの設計方法
  • AXChartDescriptor の使い方
  • オーディオグラフを通して”見えて”いなかったものが”見えて”くる

参加者は誰もが利用できるリッチでアクセシビリティの高いチャートを作成するための知見を深め、自分たちのコンテンツに適用していくことができます。

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

Concurrency Safe SwiftData - SwiftDataの並行安全な使い方

himeshi_tech ひめし

SwiftDataはCore Dataの後継としてリリースされたAppleの新しいデータ永続化フレームワークです。SwiftDataはCore Dataよりもはるかに簡単で安全に使うことができますが、Swift Concurrencyとともに利用する際はデータ競合に注意が必要です。これは、SwiftDataがCore Dataの上に構築されたAPIであるためです。

そこで本トークでは、SwiftDataをSwift Concurrencyと共に安全に扱う方法を解説します。SwiftDataをこれから利用する方やCore DataでConcurrencyの扱いに苦労した経験を持つ方を主な対象とします。SwiftDataの技術スタックをSwift Concurrencyの観点およびSwiftDataの元であるCore Dataの観点から解説し、SwiftDataを並行安全に扱うための原則、ならびにコーディングにおけるベストプラクティスを紹介します。

本トークによって、参加者の皆さまはSwiftDataをより自信を持って扱えるようになるでしょう。