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

App Clipの魔法: iOSデザイン開発の新時代

log5 log5

「App Clipをご存知ですか?」
iOSの勉強会等で問いかけると、おおよそ参加者の半数は「知らない」と回答します。
世に出て5年は経過しているにも関わらず、App Clipはあまりパッとしない存在でした。

ところが、2024年に入りApp ClipをUI/UXのプロトタイプ共有に活用するアイデアが知られるようになりました。
ざっくり説明すると、App Clipが実質iOSアプリの「一部分」であることを利用し、UIやUXの部分のみを抽出した「ミニアプリ」を配布するというものです。
これまである種面倒な方法で共有を強いられてきたデザイン開発の世界から見ればブレークスルーと言えるものでした。
iPhoneを持っていれば、QR/NFCなどで直ちにデザインの確認ができるのですから、iOS開発に詳しくない方は勿論、「iOSアプリを任意のiPhoneで動かすのがいかに難しいか」を知っているみなさんにとっても、まさに魔法と言えましょう。

本トークでは、AppClipの概要を再確認しつつ、App Clipによるデザイン共有のアイデアを実際にどのようにプロジェクトで活用できるかを見ていきます。
ウェブサービス、画像、あるいはExcelなどでiOSデザインを共有することに課題を感じる方も多いのではないでしょうか?
iOSデザイン共有の最新アイデアが気になる皆様、よろしければぜひお越しください!

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

健康第一!MetricKitで始めるアプリの健康診断

n3k0w3n nekowen

みなさんはアプリのパフォーマンス計測、やっていますか?

スクロールがカクついたり、タップしたときの応答性が悪い、意図せずCPU・メモリ・ネットワークリソースを大量に消費してバッテリー消耗を早めてしまっているなど、これらの直接目に見えにくいアプリの不具合は利用者に不満をもたらし、アンインストールにつながる恐れがあります。
アプリがアンインストールされないためにも、日々快適に動作しているかどうかを知っておくことは非常に重要です。

MetricKitはユーザー環境でアプリの電力やパフォーマンス・診断データを収集し、パフォーマンス改善に役立てるためにAppleが提供するフレームワークです。
MetricKitを活用することで継続的にメトリクスが得られ、アプリの健康状態に問題がないかどうかを開発者が知ることができます。
本セッションでは、MetricKitの基本的な使い方から実際の活用事例、活用して得られた知見をお話しします。
具体的には以下の内容を扱います。

  • MetricKitの概要
  • MetricKitから読み取れる情報・読み取れない情報
  • メトリクスを得られるタイミングと注意点
  • 事例: Crashlyticsではハンドリングできない、予期せぬアプリの終了を計測する
採択
2024/08/22 18:10〜
Track C
レギュラートーク(20分)

Swift, Playdate and Music

oinariman 三原亮介

PlaydateはmacOS向けエディターなどでも知られるPanic社が、イケてる電子楽器メーカーteenage engineeringと組んで開発した小さな黄色い携帯ゲーム機です。パッと見ゲームボーイのようにも見えますが、その最大の特徴は手回しクランクがついていること!

Playdateゲームの開発はLuaやCで行えますが、2024年からSwiftもサポートされました。Playdateの開発環境がおもしろいのは、音響関係のAPIが充実していることです。サイン波を鳴らしてディレイをかけ、フィルターをLFOで揺らして…といったシンセいじりの遊びを簡単にコードで書けるようになっています。件のクランクも、シンセサイザーのパラメーターや音程を調整する「つまみ」として使ったら楽しそうです。

このトークでは、SwiftによるPlaydateゲーム開発の基本と音響APIを使ったシンセサイザーおもちゃの開発事例を紹介します。さらに、そのシンセおもちゃの実演デモも行います。トークタイトルは略語がSwift Package Managerと同じSPMとなるように決めました。うまく音楽を奏でることができれば、題に偽りなしですね。乞うご期待。

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

GPSでどのようにして現在地が分かるのか

inonb ta.inoue

位置情報のCore Locationは、衛星電波の届く戸外ではかなり精確な現在地を得ることができ、多くのアプリで利用されています。フレームワーク内部では、いわゆるGPSと呼ばれる衛星測位をベースに、WiFiやセルラーのアクセスポイントも援用した、スマートフォンならではの測位手法が使われています。

GPS(GNSS)測位の基本的な原理は、いくつかの衛星と受信機を結ぶ三角測量といえ、非常にシンプルなものです。とはいえ、2万キロの距離を微弱な電波で結ぶための様々な工学的工夫があり、また、ネットワークの位置情報を効果的に参照することで、すばやく精確な測位を実現しています。

このトークでは、衛星からの電波にどのような情報が入っているのかを覗いてみて、私たちが普段便利に使っている位置情報がどのように求められているかを確認してみます。

採択
2024/08/22 18:45〜
Track B
レギュラートーク(20分)

watchOS 最前線 〜現代のApple Watch向けアプリの作り方〜

kouki_dan kouki_dan

2023年秋に公開されたwatchOS 10では、Apple Watchのインターフェースが大きく変わり、TabViewやNavigationStackなどのUI/UXが大幅に変化しました。
このセッションでは、SwiftUI、WidgetKit、Live ActivityなどのiOSにおける一般的な技術要素をApple Watchでどのように適用していくべきかを体系的に学びます。特に、より使いやすくなったwatchOS 10のアプリ開発における重要なトピックを深掘りします。

また、ComplicationやスマートスタックがApple Watch上でどのように動作するかについても詳しく解説します。

このセッションをご覧いただくことで、iOSエンジニアがApple Watchアプリの開発を始めるための基礎知識を得ることができます。これまでの知識を他のAppleプラットフォームに応用し、スキルの幅を広げる最初の一歩を踏み出しましょう。

採択
2024/08/22 18:45〜
Track C
レギュラートーク(20分)

続・SharePlayの歴史と進化:iOS18とApple Vision Proにおける新展開

tokorom 所 友太

iOSDC Japan 2023でご好評いただいた「SharePlayの歴史と進化」の続編です。

このセッションでは、iOS18でのSharePlayの進化や、今年ついに発売されたApple Vision ProでのSharePlayの利用方法について詳しく解説します。

20分のセッションでは、SharePlayの歴史を振り返りながら、iOS18での新機能やアップデート内容、そしてApple Vision Proでの実際の利用シーンを紹介します。SharePlayの最新情報にどっぷりと浸かることができる内容です。

具体的な内容は以下の通りです。

  1. SharePlayの歴史:初期のリリースから現在までの進化を概観します。
  2. iOS18でのSharePlayのアップデート:新機能や改善点を詳細に解説します。
  3. Apple Vision ProでのSharePlay:新しいデバイスでの具体的な利用シーンとその可能性について紹介します。

このセッションを通じて、SharePlayの新しい可能性や利用方法について深く理解していただけることを目指しています。ご期待ください。

採択
2024/08/22 18:45〜
Track D
レギュラートーク(20分)

GIS入門 - 地理情報をiOSで活用する

shu223 堤 修一

iOS黎明期、スマホアプリにおいて位置情報・地図は花形の機能でした。多くのiOSエンジニアがMapKitやCore Locationを扱った経験があるでしょう。しかし一方で、我々はそんな古くから知っているはずの位置情報や地図について、実はあまり知らないのではないでしょうか。たとえばポケモンGOのように、人が歩ける・立ち入ることのできる場所に絞ってモンスターを配置するにはどう実装するのでしょうか。

位置情報を持つデータを扱うアプリケーションを総称して、GIS(地理情報システム)と呼びます。本セッションでは、GISの基礎として、地図のようなアプリケーションを構成するデータや技術について紐解き、それらをiOSで扱う方法について解説します。地理情報のデータ形式とその扱い方を学ぶことで、前述の地図へのモンスター配置のような実装方法も分かりますし、国土地理院が配信している地形図や航空写真、JAXAやNASAの衛星データなどの外部データもiOSで活用できるようになります。またPLATEAUで配布されている3D都市モデルの活用についても解説します。

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

新OSの機能を古いOSにバックポートする

auramagi Mike Apurin

毎年新しい機能が発表されますが、実際のプロジェクトでは古いOSをサポートしなければならない都合でこれらの機能をすぐに採用することが難しいことが多いです。そこで、導入したい新しい機能を古いOSにバックポートしてすぐに使えるようにする方法について説明します。

  • Apple純正のバックポート
    • @_backDeployでバックポートされる機能
    • ライブラリのインターフェイスでバックポートされる機能
  • OSSとして提供されているバックポート
    • SwiftUIの機能、Observability、その他の実例
  • 自分でバックポートを実装する
    • どういう機能がバックポートに向いているか
    • 実装範囲の決め方
採択
2024/08/22 19:20〜
Track C
レギュラートーク(20分)

動かして学ぶDockKit入門

Naoya_Maeda_app Maeda Naoya

iPhoneのカメラは年々進化しており、さまざまな用途で使用されるようになってきています。例えば、近年ではiPhoneのカメラを使用して、映画やYouTube動画を撮影するクリエイターも登場しています。

このようにiPhoneのカメラがさまざまな用途で使われる中、DockKitフレームワークが発表されました。DockKitフレームワークのAPIを組み込んだビデオカメラアプリを、DockKit対応スタンドにセットすることで、人物を自動で追尾するようにDockKit対応スタンドを動かすことができます。

しかし、DockKitフレームワークはWWDC2023で発表されていたものの、DockKit対応スタンドが発売されたのはつい先日で、DockKit対応スタンドを使用して、開発者がどのような機能を利用できるのかについてはあまり知られていません。

このセッションでは、DockKitフレームワークの基本的な概要やAPIの説明から始め、DockKitフレームワークで開発者ができることを体系的に紹介します。セッション中はベルキンのAuto-Tracking Stand Pro with DockKitを使用したデモを交えて説明します。

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

Server-Driven UI入門: 画面のStateを直接受け取るアプローチ

SwiftUIの登場によって、画面のStateを使ってUIを構築するState-Drivenなアプローチが可能になりました。
クライアントでは、バックエンドからいくつかのAPIをコールし、それらを組み合わせて画面のStateを構成し、SwiftUIのViewに渡すことでUIを表示することができます。

では、画面に一つのAPIで画面のStateをそのまま受け取れる場合、クライアント側にはどのようなロジックが残るでしょうか?
if文やSwitch文のような分岐を持たないアプリは実現できるのでしょうか?

本トークでは、BFF(Backend for Frontend)と呼ばれるクライアント用の中間サーバーを活用し、
可能な限りロジックをバックエンドに寄せたServer-DrivenなUI構築を実務で取り組んだ経験を通して

  • 要件に合わせたResponse構成の工夫
  • Server-DrivenなUI構築が上手くハマる具体的な事例

といった、クライアントが可能な限りプレゼンテーションロジック以外を持たない構成とその活用について紹介します。

さらに、本トークでは実際にBFFの導入が難しい方に対しても、極端な事例を通じて

  • どこまでのロジックをバックエンドで持つべきか
  • バックエンドとのシステム境界をどう考えるべきか

といった疑問への一つの指針を提供します。

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

複雑さに立ち向かうためのソフトウェア開発入門

stzn3 shiz

昨年の『複雑さに立ち向かうためのコードリーディング入門』ではコードの読み解き方に焦点を当てましたが、今回はソフトウェア開発全体における複雑さについて詳しく解説します。

私たちエンジニアは、日々さまざまなタスクに取り組んでいます。仕様の理解、ドキュメントの作成、タスクの見積もり、チャットやミーティングでの議論、新しい技術の学習など、多岐にわたる作業があります。このような状況で、「やることが多すぎて頭がフリーズしてしまった」という経験をしたことはありませんでしょうか?

人間の脳には限界があり、その限界を超えると物事を複雑に感じてしまいます。では、この複雑さに立ち向かうために、私たちができることは何でしょうか?

実は、私たちが日常的に行っている活動の中には、必要以上に脳へ負荷をかけているものが多く存在します。この負担を認識し、軽減することができれば、複雑さから解放され、より重要なことに注力できるようになります。

本トークでは、以下のテーマについてお話しします。

  • 人の脳の限界とは何か?
  • 実は必要以上に脳に負荷をかけているもの
  • 研究結果から見る脳の負荷を軽減するための対策
    対策には些細なものも含まれますが、そういった細かい部分にこそ落とし穴があります。そして仕組みがわかれば、多くのことに応用できます。

本トークが、皆さまの日々をより充実させる一助となりましたら幸いです。

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

iOSの隠されたAPIを解明し、開発効率を向上させる方法

noppefoxwolf noppe

iOSは、SwiftUIやUIKitなど複数のフレームワークで構成される強力なプラットフォームです。私たちのアプリは、これらのフレームワークが公開しているAPIを利用して構築しますが、実際にはまだ見ぬ多くの機能がフレームワークに隠されています。

このトークでは、iOSの隠されたAPIを解き明かし、その活用方法について詳しく説明します。具体的には、以下のポイントに焦点を当てます。

  1. 隠されたAPIの発見方法: なぜこれらのAPIが隠されているのか、その背景とともに、どのようにしてこれらのAPIを見つけるかを解説します。
  2. API設計の謎: 隠されたAPIを知ることで、フレームワークの設計を考察します。
  3. 複雑なテストの実現: 隠されたAPIを活用することで、どのようにしてテストの効率を上げ、カバレッジを拡大できるかを紹介します。
  4. 迅速なモックアップの開発: 隠されたAPIを利用して、プロトタイプやモックアップを迅速に作成する方法について実例を交えて解説します。
  5. リスクと対策: 隠されたAPIを利用する際のリスクと、それに対する対策についても触れます。
    このトークを通じて、参加者はiOSの隠されたAPIの魅力とその活用方法を理解し、開発力を一段と高めることができるでしょう。
採択
2024/08/23 10:50〜
Track C
レギュラートーク(20分)

メインスレッドをブロックさせないためのSwift Concurrencyクイズ

tokizuoh tokizo

Swift 5.5のリリースから早3年、Swift Concurrencyは日々の開発に普及しつつあります。非同期処理を手軽に扱えるようになりましたが、あなたの実装には大きな落とし穴があるかもしれません!

アプリケーション開発において、メインスレッドの健全性はユーザー体験を左右する重要な要素です。メインスレッドがブロックされると、UIの遅延やフリーズが発生し、ユーザーにとってストレスフルな体験となります。
このトークでは、Swift Concurrencyを使った非同期処理におけるメインスレッドのブロックリスクを見極めるため、クイズ形式で知識を深めます。

以下のトピックを扱ったクイズを出題します。

  • TaskとDetached taskの違い
  • Global actorの継承
  • Actor contextの継承
  • Suspension pointの概念
  • Witness tableの概念
採択
2024/08/23 10:50〜
Track D
レギュラートーク(20分)

アプリバイナリ解析入門 〜実機向けバイナリをARM64シミュレータ向けに変換する方法を例に〜

Ooka

皆さん、バイナリ形式で配布されるSDKがx86_64のシミュレータしか同梱されていない状況に困ったことはありませんか?
本トークでは、実機向けバイナリをARM64シミュレータ向けに変換する作業を通じて、アプリのバイナリを解析する手法を紹介します。
具体例としてLive2D Cubism SDKを取り上げ、必要なツール(lipoとotool)、バイナリ解析の基礎、バイナリ変換手法、動作確認までを丁寧に解説します。

  • バイナリ変換の基本概念と必要なツール(lipoとotool)の紹介
  • ARM64バイナリをシミュレータ対応のバイナリに変換する手順
    • Mach-Oバイナリの基本構造の理解
    • 必要なコマンドの置き換え
    • オフセットの再計算方法
  • 変換したシミュレータ対応バイナリをLive2D Cubism SDKに組み込み
  • iOSシミュレータでの動作確認

基本的なiOS開発の経験があれば十分です。ARM64アーキテクチャに関する知識やバイナリ解析の経験がなくても問題ありません。

このトークを通じて、バイナリ解析の楽しさを少しでも伝えられればと思います。お楽しみに!

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

Mergeable Libraryで高速なアプリ起動を実現しよう!

giginet giginet

WWDC23で発表されたMergeable Libraryは、Static/Dynamicに続く新たなライブラリの形式です。
これまで、依存関係にStatic Libraryを利用することで、アプリの起動高速化や、バイナリサイズの圧縮などのユーザー体験を改善する手法が知られていました。
その一方で、この手法はDynamic Libraryのもたらす開発体験とのトレードオフになってしまう部分もありました。
Mergeable Libraryを使うことで、それらの良いとこどりができるのです!

このトークではMergeable Libraryを使った、新しいプロジェクト構成がもたらすメリットと導入のヒントをお伝えします。以下のようなトピックが含まれます。

  • Mergeable Libraryの概要、利点と仕組み
  • ビルド済みフレームワーク、Swift PackageのMergeable Library化
  • アプリにMergeable Libraryを導入してみよう!

新たな仕組みを学び、開発者・ユーザー体験の両立を目指しましょう!

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

Appleウォレット / Googleウォレットにチケットを保存する方法

muno_92 muno92

iPhoneやApple Watchからクレジットカードやイベントチケットなどを簡単に利用できるようになるAppleウォレット。
Appleウォレットにイベントのチケットを登録すると受付時のQRコード提示が楽になりますが、Appleウォレットに対応しているならGoogleウォレットにも対応していて欲しいですよね・・・?

筆者は昨年末にiOSDC Japanが運営に使用しているWebシステム「fortee(フォルテ)」のAppleウォレット・Googleウォレット連携を実装しました。
つまり、今年からiOSDCではAppleウォレット・Googleウォレットにチケットを保存できます・・・!

この発表では、その実装経験を元にAppleウォレット・Googleウォレットにチケットを保存する方法を解説します。

実装方法から本番運用を始めるために必要な準備、比較して分かる両者の類似点や相違点などなど、チケットが皆さんの端末に保存されるまでには色々な要素が詰まっています。

この発表を聞いてウォレットの世界に飛び込んでみませんか?

採択
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についての知識を得ることができます。

採択
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. 測定誤差を抑えるためのキャリブレーション方法とその効果

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

採択
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」の暗号化に必要なナレッジや各利点について理解を深めて頂ければ幸いです。

採択
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台のカメラで撮った動画から空間ビデオを作成する方法も紹介します。
このトークが、空間ビデオを活用した新しい魅力的な体験を構築する一助となれば、非常に嬉しく思います。