アプリの品質保証において、既存の機能が意図せず壊れていないかを確認するリグレッションテストは不可欠ですが、その多くが手作業で行われ、リリース前のiOSエンジニアにとって大きな負担となりがちです。
多くのチームがE2Eテストの「完全自動化」という理想を追い求めますが、サービス仕様上スムーズに認証を通す事が難しかったり、特定のUI要素の操作が困難だったりして、現実的な課題に直面し、導入を断念してしまうケースも少なくありません。
本トークでは、「完璧な自動化を目指さない」という発想の転換から生まれた「半自動E2Eテスト」のアプローチを紹介します。
既存の全手動運用をベースに、課題となる箇所を段階的に自動化していくことで、最小限のコストで最大限の効果を得る方法を実践例と共に解説します。
具体的には、SMS認証やカメラ操作、OS標準アラートといった自動化が困難なシナリオに対し、RubyのOCRライブラリ活用や座標指定、手動介入のタイミングを知らせる音声ガイドなどの工夫を通じて、どのように「手っ取り早く」運用可能な状態を構築したかをお話しします。
実際に導入から5ヶ月間、継続的に利用され、リグレッションテストの効率化に貢献している本システムの具体的な運用実績と、そこから得られた「壊れやすさを気にしすぎない」「最低限のメリットから始める」という、挑戦を後押しする考え方と安心感について共有します。
このセッションを通じて、リグレッションテストの負担軽減を模索している方、E2Eテスト導入の壁にぶつかっている方々が、新しいアプローチを見つけるきっかけとなれば幸いです。
手話とは、表情や手の形・動きによって多様な単語や感情を伝える言語です。
私はもともと大学時代に障がい教育の研究をしており、その中で手話にも関心を持ち、「手話を知らない人が、手話に親しみを持つにはどうすればいいか?」と考えていました。
近年テクノロジーの進歩により、Apple プラットフォームでも多様な機能を備えたOSやデバイスが登場しています。今回はその中でもRealityKit によるハンドトラッキングとVisionProを活用して、自分自身の手で表現した手話の単語を検出・翻訳するツールの実装にチャレンジしました。
この発表では、以下のポイントについてデモを交えてお話しします。
現時点のハンドトラッキングでは、手話特有の表現を正確に認識することが難しいケースもありますが、発表ではそのような制約についてもお話しします。
ハンドトラッキング技術に関心のある方はもちろん、手話という言語の多様性や表現力に少しでも興味を持っていただけるような発表を行います。
本文:
このセッションでは、Swiftを用いてGitを一から実装することで、バージョン管理システムの内部動作を深く理解することを目指します。Gitは多くの人にとって便利なツールですが、その内部構造や設計思想をしっかり理解している人は少ないかもしれません。他のバージョン管理システムと比較して、Gitがどのようにユニークであるか、どのような設計思想に基づいているかを学ぶことは、想定外の挙動に直面した際にも落ち着いて対処できる力を養います。
内容:
Gitの基本設計思想: オブジェクトストレージ、SHA-1ハッシュ、参照システムの基本的な仕組みを解説します。
コア機能の実装: init、add、commit、logといったコマンドをSwiftで構築し、実際の動作を確認します。
データ構造の理解: blob、tree、commitオブジェクトの構造と相互関係について学びます。
ファイルシステム操作: .gitディレクトリの管理やインデックスファイルの読み書き方法を探ります。
暗号化ハッシュ: SHA-1を用いたコンテンツアドレッシングの実装過程を解説します。
このセッションに参加することで、「なぜGitはSHA-1を使うのか」「コミットオブジェクトの中身とは何か」「ステージングエリアの実体とは」「2wayではなく3wayマージを使う理由は」といった疑問に答えられるようになります。また、ハッシュ関数やファイルシステム操作、データの永続化といった基礎的なコンピュータサイエンスの概念も深く理解していただけます。
LLMの台頭は、これまで実現困難と見なされていた領域を一気に射程内へ引き寄せ、新たな価値創出の幅を大きく広げました。
その流れを受け、家計簿アプリを提供している弊社は昨年、LLMを活用したAIレシート読み取り機能をリリースしました。ユーザーがレシートを撮影すると、Vision frameworkが領域を検出してOCRを行い、抽出テキストをLLMで構造化することで金額・日付・店名を瞬時に取り出し、家計簿へ自動反映する体験を提供しています。
高精度を担保するために、カメラ映像からレシートを検出・追跡し、座標のブレが閾値以下になった瞬間に自動シャッターを切る仕組みを導入したり、得られたテキストは前処理してからLLMに入力することで推論の誤判定を低減しました。さらにInstrumentsでボトルネックを解析して処理レイテンシを最適化し、結果として他社アプリと比べても際立った読み取り精度を実現しています。
本トークでは、このようなレシート読み取り処理を構築する中で直面した課題と、それらを解決していく中で得られた実践的なノウハウを余すところなく共有します。
さらに発展的な内容として、WWDC25で発表されたRecognizeDocumentsRequestを活用したさらなる精度向上の展望と、Foundation Models frameworkによるオンデバイスで完結するレシート読み取りの可能性についてお話しします。
本トークが、ドキュメントOCRの更なる最適化やLLMをうまく活用した機能開発のための具体的なヒントとなりましたら幸いです。
「暑い日にスマートフォンを使っていて、アプリの動作が遅くなった…」そんな経験、ありませんか?
特に屋外で利用されるアプリにとって、端末の温度はユーザー体験を大きく左右する重要な要素です。スマートフォンが熱を持つと、アプリのパフォーマンスが著しく低下したり、一部の機能が制限されたりすることがあります。このような影響を把握しておくことは、快適なサービス提供のために非常に重要です。
本トークでは、Foundationフレームワークに含まれる ProcessInfo.ThermalState API に注目します。このAPIを使うことで、デバイスの熱状態を4段階で把握することが可能です。
今回は実際に屋外で使われるモビリティアプリにおいて、ThermalState が季節や時間帯、アプリの状態などによってどのように変化するのかなど、実測データとともに詳しくご紹介します。
さらに、熱状態に応じてアプリが取ることができる対策についても解説します。
スマートフォンを「熱中症」から守り、夏でもクールで快適なユーザー体験をお届けしましょう!
私たちは普段Swiftのコードを通じて、画面に美しいUIを表示したり、スピーカーから音を鳴らしたり、ユーザーのタップを受け取ったり、ネットワーク越しにデータを送受信したりしています。
しかし、Swiftで書かれたプログラムが、どうやってiPhoneやMacで実行されるのか、考えたことはありますか?
コンピューターはどのような仕組みで動いているのでしょうか。コンピューターの頭脳とも言えるCPUからは、世界がどのように見えているのでしょうか。
Swiftのプログラムではなかなか見えてこないコンピューターの世界が、OSを介さずに動くEmbedded Swiftだと少し見えてきます。
このトークでは、Embedded Swiftを活用してプログラムが動く仕組みを解き明かしていきます。
プログラムがどうやってコンピューターで実行されるのか、メモリや入出力装置とどのようにコミュニケーションするのか、知識だけでなくコードとデモを交えて解説します。
普段のアプリ開発では見えない、低レイヤーの世界を一緒に覗いてみましょう!
比較的高額な決済機能を有する金融サービスでは、犯罪収益移転防止法に基づく本人確認の実施が義務付けられています。
私たちが提供する『AI家計簿アプリ ワンバンク』では、 "eKYC" と呼ばれるオンライン形式での本人確認フローを自前で構築し、サービスの成長を支えてきました。その運用の過程ではユーザー体験や堅牢性の向上、ガイドラインへのさらなる準拠などさまざまな改善を積み重ねてきました。
また、近年は不正利用も深刻化する中で従来の書類と顔写真の撮影を伴う本人確認方式は廃止の流れにあります。ICチップの読み取りによる信頼度の高い方式への移行が求められ、私たちのサービスでも対応を進めてきました。
このトークでは、私たちがこれまで本人確認フローに積み重ねた改善にフォーカスし、さまざまな観点での工夫やTipsを紹介していきます。そして、JPKI方式(公的個人認証サービスを利用したマイナンバーカードによる本人確認)への対応など、環境の変化へ追従するための直近の取り組みにも触れていきます。
【内容(予定)】
・自前で構築した本人確認フローの運用の中で積み重ねた改善
・本人確認フローの突破率を最大化するための試行錯誤
・撮影機能が依存するライブラリ(ML Kit -> Vision.framework)の安全な移行に向けた工夫
・従来の本人確認方式の廃止を伴う法令改正に備えたJPKI方式対応などの直近の取り組み
Bluetooth の権限管理、スキャン、接続処理…。
Core Bluetooth を利用した Bluetooth デバイスとの接続フローの実装は、多くの開発者にとって悩みの種です。
ユーザーにとってもペアリングを完了させるまでに手順を踏む必要があり、決して快適な体験とは言えません。
誰もが一度は「AirPodsのように、もっと簡単にデバイスを接続できたら…」と考えたことがあるのではないでしょうか。
その理想を現実にするのが、iOS18 で登場した AccessorySetupKit です。
AccessorySetupKit を活用することで、これまで作り込んできた複雑な接続フローを OS標準のUIを使用してシームレスに提供できるようになります。
本セッションでは AccessorySetupKit で何が実現できるのか活用事例を紹介し、具体的な導入手順と実装にあたってつまづいた点まで実践的な知見を共有します。
本セッションを通じて、皆さんのアプリでペアリング体験を改善するきっかけやヒントを得ていただければ幸いです。
2025年秋にリリース予定の「macOS Tahoe 26」が、Intel製CPUを搭載したMacへ提供される最後のOSであることをAppleが発表しました。CPUアーキテクチャの異なるApple Siliconへの移行という偉業を成し遂げたApple。その技術的背景を、いま一度振り返ってみる価値があるのではないでしょうか。
本トークでは、Appleが歩んできたCPUアーキテクチャの変遷を振り返りつつ、x86からArm(Apple Silicon)へと至る道のりを解説します。そして、実際にApple Silicon搭載Mac上で動作するアセンブリコード(計算と文字出力)を題材に、命令セット・システムコール・レジスタといった低レイヤの要素をやさしく紹介します。
アセンブリは一見アプリ開発に無縁に思えるかもしれませんが、実はクラッシュログ解析やパフォーマンス調整、Rosetta 2の仕組み理解など、日常の開発と意外なところでつながっています。iOSエンジニアが“いまこそ”学び直す意義のある低レイヤ世界を、一緒に覗いてみませんか?
空間ビデオや空間写真、Apple Immersive Video などの空間メディアの特徴の一つに「実物大」の再現があります。これによって視聴者はあたかも撮影場所にいるかのような臨場感を味わうことができます。「実物大」を再現するには撮影した映像そのものに加えて投影方法や撮影時のレンズの特性などのメタデータが必要になるのですが、WWDC25でこのメタデータの仕様や運用方針がアップデートされ、いよいよ情報のパーツが揃ってきました。
本トークでは Apple Projected Media Profile を詳しく読み解きつつ、AVPlayer がどのような描画を行っているのかを探っていきます。第一のゴールは撮影した映像にどんな値を設定すれば良い感じになるのか?が分かることですが、visionOS の AVPlayer の振る舞いを知ることは空間メディアを視聴できるデバイスを考える上でもヒントになるはずです。
皆さんは空間メディアについてこう思ったことはありませんか?
Vision Pro は持っていないけれど iPhone で撮った空間写真を楽しみたい
180°や360°の動画をライブ配信し、そのままの体験を大勢に届けたい
イマーシブな体験ができるハイクオリティな映像コンテンツを多くの人に見て欲しい
Vision Pro のクオリティは素晴らしいですが、もし手軽に空間メディアを視聴できるデバイスがあって、それが普及していたら、と思わずにはいられません。この探究はこうしたデバイスの作成を考える上での足がかりになれるのではと考えています。
サードパーティアプリ開発者は長年、Appleの純正アラーム機能に制約を感じてきました。
Silent modeやFocus modeに阻まれ、重要な通知が届かないリスクは、開発者とユーザー双方にとって深刻な問題でした。
iOS 26のAlarmKitは、この技術的障壁をついに解放し、開発者にも革命的なアラーム機能の実装を可能にします。
従来のローカル通知の根本的問題は、デバイス設定への依存性でした。
AlarmKitを使用することで、重要な通知がどんな状況でもユーザーに確実に届くようになります。
AlarmKitの主な革新として以下の特徴が挙げられます。
1)あらゆるシステム設定を突破するアラーム実行により、Silent modeやFocus modeの影響を受けない確実な通知を実現
2)Live Activitiesと連携したDynamic Island統合により、ユーザーの目に留まりやすい視覚的なアラーム表示を提供
3)Apple Watchでの自動同期により、デバイスを問わない一貫したアラーム機能
4)App Intentsによるカスタムアクション実行により、アラーム後の独自ワークフローを組み込み可能
実装デモを行い、料理タイマーアプリを題材に段階的な構築過程をお見せします。
AlarmKitの登場により、開発者はユーザーにとってより信頼性の高いアラーム機能を提供できるようになります。
AIS(自動船舶識別装置)の非搭載などを理由に、小型船舶の海難事故は毎年2000件以上も発生しています
この長年の課題を解決するため、我々は2015年からiPhoneを用いた事故防止アプリの開発に取り組んできました
本発表は本業iOSエンジニア、副業で弓削商船高専の教員である発表者が、過去数年間の開発で直面した技術的課題や法的な課題と、それらを現代のiOS技術やSwiftでいかに解決できるか説明するためのテーマです
本発表では最初に各開発フェーズでの実施内容と課題に関してお話します
次に本セッションでは、国土交通省から現在出ている安全航行支援アプリのガイドラインとUIのイメージ・注意点に関して説明します
最後にはパフォーマンス、UI/UXといった課題に対し、現在のiOSが提供する技術(SwiftUI、Swift Concurrency、Watch Complicationなど)を駆使してどのようにアプローチできるかを解説します
位置情報を利用した接近検知機能を持つアプリの実装方法と今まで発生してきた課題、当時の様々な実験結果を共有することで、船に限らずリアルタイムな位置情報処理に取り組む方々に知見を提供することを目指します
このセッションでは、皆さんが日々使っているYouTubeやTVerなどで流れる動画広告について、それらがどのような規格に基づいて配信/挿入されているかを簡単なiOSアプリ実装のデモを交えながら説明します。
HTTP Live Streaming (HLS)での動画配信をベースとして、
・ 広告の基本的な配信方式であるCSAI(クライアントサイド広告挿入)とSSAI(サーバーサイド広告挿入)についての説明
・ VMAP/VASTといったような「いつ/どんな広告を配信し、計測するか」の規格の説明
・ SCTE-104/35など放送技術との連携について説明
などを行いつつ、普段はGoogle IMA SDKなどの広告SDKにブラックボックス化されている処理を実際にiOSアプリ/Swiftのコードとして実際書いて動かしてみます。
このトークを通じて、普段ブラックボックスになりがちな動画広告SDKの内部動作を理解し、より高度な動画プレイヤーの実装や、広告関連の問題のデバッグに役立つ知識を身につけることができます。
動画配信サービスの開発に携わる方はもちろん、AVFoundationを使った動画再生の実装に興味がある方にもおすすめです。
対象者:
動画サービスに関わっている方
AVFoundationの基礎知識がある方
動画広告の仕組みに興味がある方
キーワード:AVFoundation, HLS, 動画広告, VMAP, VAST, SCTE-35, Google IMA SDK
【このトークが解決する課題】
Apple Walletに関する議論は、キャッシュレス決済やマイナンバーカード搭載といった、大規模で注目度の高いテーマに集中しがちです。
その結果、多くの開発者や企画者にとって、もっと身近で実装のハードルが低いにも関わらず、ユーザー体験を劇的に向上させる可能性を秘めた活用法が見過ごされています。物理的な会員証、ポイントカード、各種の鍵、チケット…。
私たちの身の回りには、未だユーザーに「不便」を強いているアナログな接点が数多く存在し、それらをどうデジタル体験に昇華させるかという具体的なアイデアの発想方法が共有されていません。
というか使ってるサービスが少なくない?!
【トークの概要と目的】
本トークでは、あえて「決済・航空券・公的ID」という巨大テーマを外し、Apple Walletが持つ真の力を「できること」ベースで一緒に考え直してみましょう。
目的は、世の中によりWalletを取り入れた「面白いプロダクト」の創造です!
具体的には以下の内容を話します
*セッションの内容ではNDAを遵守します
【このセッションから持ち帰ってもらいたい項目】
Wallet
という可能性を視野に入れられる思考面白いプロダクトを作る一助になれば幸いです!!
iOSでGIFやAPNGなどのアニメーション画像を扱うとき、「UIImageViewにセットするだけでは滑らかに再生できない」「全フレームがメモリに展開されて落ちる」といった経験はないでしょうか?
このトークでは、それらの課題を解決するために開発した軽量ライブラリnoppefoxwolf/AnimatedImageの内部構造と工夫について紹介します。
AnimatedImageはMastodonアプリDAWN for Mastodonのために設計されたハイパフォーマンスなアニメーション画像再生ライブラリです。
AnimatedImageは、標準のUIImageViewと同じ使い勝手を保ちつつ、以下のような特徴を持ちます:
セッションでは、開発にあたっての設計判断、パフォーマンスとの向き合い方、低レイヤーAPI(ImageIO, CGImageSource, CADisplayLinkなど)の活用法を、実際のコード例を交えながら解説します。
「どうやって描画スケジューリングを行っているのか?」「標準APIでここまでできるのか?」といった疑問を持つiOS中上級者に向けて、画像表示の深層に踏み込む内容です。
アニメーション画像に関する知識だけでなく、パフォーマンスチューニングやAPI設計にも興味のある方にとって、学びの多いセッションになるはずです。
サブスクリプションの機能をアプリに導入する際に、ペイウォール(サブスクリプションの登録を促す画面)のデザイン、文言、表示タイミングで悩んだことはありませんか?Human Interface Guidelinesにはアプリ内課金についてのドキュメントがあり、自動更新サブスクリプションに関してはデベロッパー向けのドキュメントがあります。ペイウォールをガイドラインに沿って設計することは、サブスクリプションの機能をリリースするための前提です。しかし、そのことと、ペイウォールが効果的であることは別の事象です。ガイドラインに沿っていたとしても、ペイウォールを前にしたユーザが好意的に受け取るとは限りません。
では、効果的なペイウォールとはどのようなものでしょうか?世界中のアプリの中から、サブスクリプションの機能があり、かつ売上も十分に立っている人気アプリを、リージョンとカテゴリを分散させて100個ピックアップし、実際のペイウォールを気合いと根性で分析しました。
本セッションでは、まず前提であるアプリ内課金が従うべきHuman Interface Guidelinesに軽く触れます。次に100個のアプリのペイウォールを以下の7つの観点から分析した結果とその考察を共有します。そして、それらを踏まえて実際のアプリに適用して得られた結果をお伝えします。最後に、ペイウォールを設計する際に重要となる心得および今日から使えるTips集を紹介します。
分析の7つの観点
(1) UIの構成要素
(2) 情報量・情報強度およびレイアウト
(3) コピーライティング
(4) 訴求ポイント
(5) 価格とプランの構成
(6) ペイウォールを表示するタイミング
(7) 無料の機能群と有料の機能群の比率
私はいわゆる“飛行機オタク”で、BoeingやAirbusといった大型旅客機を操縦できるフライトシミュレーターをよくプレイします。
おそらく多くの人が一度は夢見るのではないでしょうか?「本物に近いコックピットを自宅に再現してみたい!」という願望を。
それを実現するための一つの手段として「TrackIR」のような視線トラッキングデバイスがありますが、こちらも価格が高く、なかなか気軽に手を出せるものではありません。そんな中、ある日YouTubeで「iPhoneを使って代替している」事例を見つけ、「これなら自分でもできそうだ」と思い立ち、iPhoneを使った自作の視線トラッキングデバイスアプリを開発してみました。
このトークでは、iPhoneのARKitを使ってリアルタイムでYaw(ヨー)/Pitch(ピッチ)/Roll(ロール)を取得し、それをUDP通信でローカルPCに送信。PC上のOpenTrackというプログラムにデータを受け渡し、最終的にMicrosoft Flight Simulatorに視点データとして連携させるまでの流れをご紹介します。
扱うトピックは以下の通りです:
• ARKitのFace Tracking(ARFaceAnchor)から取得できる顔の姿勢データの活用
• UDP通信の実装
• OpenTrackの仕組み、設定方法
• フライトシミュレーターゲーム(MSFS)と連携した話
このプロジェクトを通じて、ARKitのFaceTracking機能が想像以上に高精度であり、iPhone単体でも本格的な入力デバイスとして十分活用できることを実感しました。
市販のデバイスを購入せずとも、身近なデバイスと少しの工夫で、理想に近い環境を作ることができるという発見は、なかなか面白いトピックだと思います。
Apple Watchのようなリソース制約が厳しいデバイスで、音・振動・UIアニメーションをリアルタイムに動かし続けるにはどうすればいいのか?
watchOSを使った開発では、シミュレーターでは軽快に動いても実機では長時間安定して動作しないことが多々あります。
私がwatchOS向けのメトロノームアプリを開発した時はwatchOSでリアルタイムな処理を安定させるための設計が欠かせませんでした。
本発表では、watchOSで高負荷な処理を安定して動かすための設計とパフォーマンスチューニングの実践知見を、背景から具体的な施策事例まで解説します。
具体的には
について詳細に話します。
また、実用に耐えるようにチューニングが成功した証としてメトロノームアプリで練習した作品をチューバで実演奏します。
Apple Watchで高負荷なリアルタイム処理に挑む方へ向けて役立つノウハウをお伝えできれば幸いです。
「アプリにリアルタイム通信を導入したいけれど、サーバ構築の学習コストや使用するライブラリ選定に不安がある」──そんな理由で導入をためらった経験はありませんか?
iOSアプリエンジニアの私もゲーム開発で同じ壁にぶつかりましたが、「標準技術であるApple純正フレームワークだけでリアルタイム対戦アクションゲームを作り上げる」という道を選びました。
そして今、 Wi-Fiなどを利用したオフライン環境での端末間通信技術への関心が高まっており、インターネット接続に頼らないリアルタイム連携の可能性が広がっています。
このトークでは、私が個人開発したSpriteKit製の対戦アクションゲームを題材に、Apple純正技術を活用したリアルタイム同期の構成や設計の工夫を紹介します。
また、トークでは実際のゲームを用いたデモを通して、通信方式の違いがユーザー体験に与える違いをご覧いただけます。
「サーバ構築せず、Apple純正フレームワークだけでここまでできるのか!」という驚きとともに、「自分のアプリにもリアルタイム通信を組み込みたい」と感じてもらえるような、実践的なトークをお届けします。
2025年2月、AppleはビルドシステムのSwift Buildをオープンソース化しました。
Swiftコンパイラに始まり、xcodebuildやSwift Package Manager、swift-driver、llbuild、果てはClangやldまで、Swiftのビルドを支えるツール群は多様で、それぞれの役割もわかりづらいです。
この複雑怪奇なシステムたちはどのように協調・動作しているのでしょうか。
このトークでは、オープンソースSwiftを中心に、Swiftビルドシステムの全体像を解説します。また、今回新しく公開されたSwift Buildの内部を紐解き、ビルドパイプラインを駆け抜けましょう!