従来、iOSアプリに翻訳機能を組み込む際は、Google翻訳やAmazon Translateなどの外部APIに頼るしかありませんでした。これにより、従量課金・通信依存・オフライン非対応といった課題がつきまとっていました。
そんな中、iOS 17.4以降で登場した「Translationフレームワーク」は、Apple純正のオンデバイス翻訳モデルを活用することで、ネットワーク接続なし・高速・回数制限なしという理想的な翻訳体験を実現できます。
本トークでは、私がこのTranslationフレームワークをAVSpeechSynthesizerと組み合わせて開発した「喋った内容をオフラインでもリアルタイム翻訳するアプリ」を題材に、以下の実践的な実装ノウハウをお話しします。
また、実際に開発したアプリのデモを通じて、喋った内容がリアルタイムに翻訳・発話される様子をご覧いただきます。
このトークを通して、「どんな環境であろうとも瞬時に翻訳される体験」の実装方法を学ぶことで、みなさんのアプリにオンデバイス翻訳を導入する選択肢を広げていただければ幸いです。
楽天グループ株式会社が運営する「楽天リーベイツ」のiOSアプリは、2025年で9周年を迎えました。
2020年当時、8年以上にわたり運用されてきたiOSアプリを1人で引き継ぎ、数ヶ月間メンテナンスされていなかったレガシーコードに立ち向かいながら、ビジネス要件への対応、A/Bテストの実施、ユーザー体験の最適化、そしてチーム立ち上げを少しずつ進めてきました。
今回は、Biz やデザインチームの担当者と交渉しながら、iOS開発者としてどう目標を立て、どう改善を進めたか、その考え方をシェアします。最後に、これからの展望もお話しします!
WWDC 2025で発表された 「Liquid Glass」 は、10年ぶりのデザイン大刷新です。本トークでは元UI/UXデザイナー出身のiOSエンジニアが、秋の正式リリース前の今、知っておくべきポイントを、技術とデザインの両面から解き明かします。
このセッションを通じて、参加者は、今押さえておくべきLiquid Glassの思想や実装方法を学ぶことができ、自アプリへの導入にすぐ活かせる実践知を持ち帰れます。
日常生活の中でスマートスピーカーのように、声だけで家電を操作する体験が当たり前になりつつあります。音声操作体験に求められる期待値も徐々に上がってきています。
iOSではSpeech Frameworkを使うことでリアルタイム音声認識を実現することができ、AVSpeechSynthesizerを使うことで読み上げを実現することができますが、実環境下で運用するためには様々な課題に直面することになります。
例えば、iPadにケースを装着したことによる認識精度の低下、Speech Frameworkが対応していないWake Word検出の実現、読み上げ時の利用可能な音声の制約、OSのバージョンによる制約, プライバシーの考慮などの課題に直面します。
このトークでは、Speech Frameworkを使って音声だけで家電を操作する機能をリリース, 運用した経験をもとに、AVAudioEngine, Speech Framework を使った音声認識の基本から、上述したような実環境下で直面する課題の解決方法までを詳しく解説します。
iOSでGIFやAPNGなどのアニメーション画像を扱うとき、「UIImageViewにセットするだけでは滑らかに再生できない」「全フレームがメモリに展開されて落ちる」といった経験はないでしょうか?
このトークでは、それらの課題を解決するために開発した軽量ライブラリnoppefoxwolf/AnimatedImageの内部構造と工夫について紹介します。
AnimatedImageはMastodonアプリDAWN for Mastodonのために設計されたハイパフォーマンスなアニメーション画像再生ライブラリです。
AnimatedImageは、標準のUIImageViewと同じ使い勝手を保ちつつ、以下のような特徴を持ちます:
セッションでは、開発にあたっての設計判断、パフォーマンスとの向き合い方、低レイヤーAPI(ImageIO, CGImageSource, CADisplayLinkなど)の活用法を、実際のコード例を交えながら解説します。
「どうやって描画スケジューリングを行っているのか?」「標準APIでここまでできるのか?」といった疑問を持つiOS中上級者に向けて、画像表示の深層に踏み込む内容です。
アニメーション画像に関する知識だけでなく、パフォーマンスチューニングやAPI設計にも興味のある方にとって、学びの多いセッションになるはずです。
本セッションでは、Live Activityに現在駅と次駅を表示するiPhoneアプリを一緒に作りながら、乗客がアプリを開く必要のない体験を実現します。その道中でCore Location、Core Motion、ActivityKit、SQLiteなどのフレームワークを使います。
データ収集
まず、実際のGPSデータを収集する専用iPhoneアプリを実装します。
アルゴリズムのブラッシュアップ
収集したデータを用いてリアルタイムに予測を行う純粋アルゴリズムを開発します。検証のために、シミュレーションデータを再生できるmacOSアプリを用意します。
バックグラウンド対応アプリの開発
本番のアプリではCore Locationの「signficant change location service」を利用して自動的に起動し、バックグラウンド位置取得でアルゴリズムにデータを供給し続けます。
自動的に開始・終了するLive Activityの実装
プッシュ通知サーバを使い、バックグラウンドからLive Activityを開始・終了させます。これにより、乗車の開始と終了に合わせてLive Activityが自動的に表示・非表示を切り替わり、ユーザはアプリを開く必要がありません。
Live Activity は、ロック画面や Dynamic Island にリアルタイム情報を表示できる機能です。iOS 16 で登場してから毎年改良が進み、対応デバイスも拡大してきました。この機能を使用することで、ロック画面に自由な表示を行うことができるので、うまく活用することができればユーザーの利用率拡大を図ることができます。
Live Activity はリアルタイムに動くシステムのため、考慮する事項はクライアントからバックエンド、通知サーバーに至るまで多岐に渡ります。Live Activity はその考慮事項の多さから、安定的に運用するために様々な対応が必要となります。
Live Activity を最小コストで安全にリリースするために必要な下記のトピックなどを紹介します。
Live Activity の開始方法・更新方法の選択
Live Activity 利用状況の監視
Live Activity を表示している際のアプリライフサイクルの変化
この発表を聞けば皆さんのアプリにも Live Activity を実践的に導入していく方法を学ぶことができます。
SwiftUIのモダンで宣言的なAPIは、UI実装を効率的かつ楽しいものにしてくれます。
一方で、iOSのメジャーバージョンごとの機能差異も多く、今までUIKitで実現されていた複雑なUIを同じように実装するためには工夫が求められる場合もあります。
このセッションでは、約10年にわたって開発されてきたアプリの中の様々なUIをSwiftUIに移行してきた経験から、複雑なUIをどうSwiftUIで実現するか・SwiftUIで実現できないUIの回避方法など、大規模かつ多くの世代のiOSをサポートするアプリで使っている具体的・実践的なノウハウをご紹介します。
私たちのチームでは、iOS・Androidモバイルアプリの実装共通化のため、2020年頃からKotlin Multiplatform(KMP)の検証を開始し、段階的に導入を進めてきました。現在では、サービスの中心となるコンテンツを視聴する画面の多くの実装がKMPによって共通化されている状態になっています。
マルチプラットフォーム開発の選択肢としてKMPが注目される一方で、長期にわたり大規模なサービスで運用してきた事例は多くありません。本セッションでは、私たちのチームにおけるKMP導入と運用の約5年間を振り返り、以下のようなトピックについて具体的な事例を赤裸々にご紹介します。
KMPの導入を検討している方・実際に使われている方はもちろん、アプリ開発へのマルチプラットフォーム技術の導入に関心のある全ての方の参考になるように、具体的で実践的な事例をお話しします。
Swift Evolutionを眺めているうちに、「言語ってどうやって作られてるんだろう?」と気になり、試しにSwiftでシンプルな言語を作ってみました。
今はAIがコードを書く時代になってきていますが、依然として言語の仕組みを理解し、自ら構造を設計できる力は変わらず重要だと感じています。
このセッションでは、Swiftで簡易的なプログラミング言語を自作したプロセスを、字句解析、構文解析、意味解析という基本ステップに沿って紹介します。
字句解析では、Swiftのenumを使ってトークンの種類を定義し、文字列を順に読み取って意味のある単位に分解する処理を組み立てました。構文解析では、indirect enumとstructで抽象構文木(AST)を表現し、演算や代入といった構文を再帰的に解析することで実現しました。意味解析では、Dictionaryを活用して変数名と型情報を管理し、スコープごとに構造を持たせながら、型の整合性や未定義変数の検出といったチェックを行う仕組みを構築しました。
発表の最後には、自作したミニ言語も軽くお見せします。素朴な言語ですが、作る過程で得られる学びは深く、きっとコードの書き方や読み方が変わるはずです。
Swift Evolutionは遠く見えて、実は足元から始められるのかもしれません。
一緒にその第一歩を踏み出してみませんか?
日々の開発でデザイナーさんとの会話の中で「HIG的には〜」と口にすることはあっても、果たしてその意味を深く理解できているでしょうか。HIG(Human Interface Guidelines)は、単なるデザインガイドラインではなく、Appleが長年培ってきたユーザー体験への思想と普遍的な原則が凝縮されたものです。
本セッションでは、HIGの核心となる原則に触れ、なぜHIGを遵守すべきなのか、なぜ守ると良いのかということを今一度考えて行きたいと思います。
いくつかの標準コンポーネントを例に、その裏にある意図や思想について触れ、日頃使っているものがどういった思想から形作られたのかを一通り理解した上で遵守することができれば、HIGに対する解像度を一段階上げることができると考えています。
本セッションを通じて、HIGに対する解像度を一段階引き上げ、デザイナーとの円滑な連携はもちろん、自信を持って「ユーザーにとって本当に良い」UI/UXを考えるきっかけになれば幸いです。
皆さんは Swift ちゃんと仲良く日々を過ごしていますか?
エディタで真っ赤なエラーを何回も吐かれたり、 Swift Concurrency に苦しめられたり… ギスギスしている方もいらっしゃるかもしれません。
そんな時は、 Swift ちゃんのことをもっと知ってあげましょう!
本トークでは、「Swift を使う」から一歩踏み出して、「Swift という言語そのもの」に注目します。
普段から Swift のコードを書いていても、内部構造やコンパイラの仕組みは「ブラックボックス」と感じがちですが、内部構造をざっくり理解しながら、Swift にコントリビュートする方法をステップ • バイ • ステップでご紹介します。
気に入らないエラー文を改善するもよし、既存の Issue から興味のあるものを選ぶもよし、敷居が高く見えてもコントリビュートする上では色々切り口があります。
OSS に初挑戦してみたい方や、Swift をもっと知りたい中級者に向けて、「Swift ちゃん」との距離を縮めるための第一歩をお届けします。
本トークでは、以下の内容についてお話します。
WWDC25で発表されたAppleのFoundation Modelsフレームワークにより、iOSアプリにおけるオンデバイスLLMの利用が現実的な選択肢となりました。
さらに、llama.cppやMLX、ONNX Runtimeなどのオープンソースプロジェクトの進化により、iOS上でのローカルLLMの可能性はますます広がっています。
iOSアプリエンジニアにとって、今がまさにLLMについて理解を深める絶好のタイミングです。
そこでこのトークでは、ローカルLLMに関して以下のトピックを中心に解説します。
•Foundation Modelsフレームワークを用いたローカルLLMの活用
•LLMのコア技術であるTransformerの仕組みと、それがチャット、マルチモーダル、ツール呼び出しといった機能をどのように実現しているか
•llama.cppやMLX等の仕組み、モデルフォーマット、量子化、最適化手法などの解説
•各技術のパフォーマンスや互換性の比較と、技術選定の指針の共有
LLMの仕組みや主要フレームワークの特徴を理解し、適切な技術選定や設計をすることで、
より優れたユーザー体験を実現しましょう!
iOS18で搭載されたApple Intelligenceの作文ツール(Writing Tools)やWWDC25で発表されたFoundation Models Frameworkなど、iPhoneにはAIによって作文や要約、公正をすることができる機能・方法が存在します。
これらの機能・方法は基本的にはオフラインで動作することで、ユーザーはプライバシーを守りながら文章力を劇的に向上させることができる強力なものです。
ですが、強力な機能であるにも関わらず作文ツールへの導線はユーザーへは伝わりづらかったり、Foundation Models Frameworkで自前実装をすべきなのか悩ましいのではないでしょうか?
本セッションでは、iPhoneで利用することができる作文関連のAIについて、
をお話しします。
このセッションを通じて、あなたが作文ツールをよりユーザーに利用していただきやすくなるようにアプリへ組み込んだり、Foundation Models Frameworkを用いて補完的に実装を行うべきかの検討ができるようになることを目指します
あなたのアプリユーザーのAI作文体験を向上させましょう!
近年よく「成長機会」「開発者体験」「イノベーション」などのワードを耳にすることがあると思いますが、あなたの組織ではこれらに対して取り組むことができているでしょうか?
私の所属している株式会社kubellのiOSアプリ開発グループでは、今年から「学びラボ」という新たな取り組みを開始しました。
『学びラボ』とは「通常業務とは離れて興味のある内容を自由に学ぶことができる日」を新設し、iOSメンバーの成長機会創出や、学習したことや得たアイデアなどによる業務への貢献、学びの発信による採用ブランディングなどを期待した取り組みです。
この取り組みにより、iOSエンジニアが作成したプロトタイプの機能が実際のプロダクトへ取り込まれたり、学んだことを外部登壇で発信したりといったような成果が出ています。
本セッションでは『学びラボ』について
組織として成長機会の創出や開発者体験向上、業務改善を推進したい方は必見です!
近年、行政や金融など高いセキュリティ基準が求められるサービスと連携するモバイルアプリでは、サーバーサイドだけでなくクライアント(iOSアプリ)側でも厳格なセキュリティ対策が求められるようになっています。私たちのプロジェクトでも、外部サービスとの連携に際して、国際的に認知されたモバイルアプリセキュリティ標準であるOWASP MASVS(Mobile Application Security Verification Standard)v2.0.0に準拠する必要がありました。
本トークでは、「なぜ今、iOSアプリにおいてクライアント側のセキュリティ対策が必要なのか?」という背景を出発点に、MASVSの概要やMASプロジェクト全体の構成、そしてMASVS対応において実際に行った対策を具体的に紹介します。また、標準やベストプラクティスに対してどこまで実装で落とし込むべきかという現実的な判断や、運用・開発体制に与えた影響、対応を通じて得られた気づきもあわせて共有します。
クライアント側のセキュリティ対策という難題に挑んだ実例として、これから同様の取り組みを検討する方や、セキュリティ設計に関心のあるiOSエンジニアの皆さんにとって、有益な知見を持ち帰っていただくことができます。
Bluetooth の権限管理、スキャン、接続処理…。
Core Bluetooth を利用した Bluetooth デバイスとの接続フローの実装は、多くの開発者にとって悩みの種です。
ユーザーにとってもペアリングを完了させるまでに手順を踏む必要があり、決して快適な体験とは言えません。
誰もが一度は「AirPodsのように、もっと簡単にデバイスを接続できたら…」と考えたことがあるのではないでしょうか。
その理想を現実にするのが、iOS18 で登場した AccessorySetupKit です。
AccessorySetupKit を活用することで、これまで作り込んできた複雑な接続フローを OS標準のUIを使用してシームレスに提供できるようになります。
本セッションでは AccessorySetupKit で何が実現できるのか活用事例を紹介し、具体的な導入手順と実装にあたってつまづいた点まで実践的な知見を共有します。
本セッションを通じて、皆さんのアプリでペアリング体験を改善するきっかけやヒントを得ていただければ幸いです。
運用中のプロダクトでデータ基盤を大幅に変更する必要が生じたとき、どのようにリスクを最小化しながら移行を進めますか?
本トークでは、月間アクティブユーザー数万人規模のiOSアプリで実際に行ったFirestoreからの大規模データ基盤移行プロジェクトの実践事例をお話しします。
特に以下の課題にフォーカスして解決策を紹介します:
技術的なポイント:
このトークを聞くことで、大規模な基盤変更プロジェクトを安全に進めるための具体的な手法と、実際の運用で直面した課題とその解決策を紹介します。特に、チーム開発やプロダクト成長を止めることなく技術的負債を解消したいiOS開発者の方に役立つ内容です。
「とりあえずTaskで囲んでみたけど、これで本当に良いんだろう?」
「@MainActorを付けたらエラーは消えた。でも、なぜ?」
Swift Concurrencyを学び始めた頃、私はそんな"なんとなく"の不安でいっぱいでした。その一行に、確かな「なぜ」を答えられますか? このトークは、過去の私と同じように非同期処理の前に立つあなたのためのセッションです。新卒2年目の私だからこそ、ベテランが通り過ぎてしまう初学者の「なぜ?」に光を当て、"なんとなく"を"確かな意図"に変える旅にご案内します。
このセッションでは、よくある"なんとなく"なコードが、なぜ問題なのか、そしてどうすれば「意図を持った」コードになるのかを、具体的なシナリオと共に解き明かします。
このトークが終わる頃、あなたは「"なんとなく"」書いていたコードに、確かな「意図」を込められるようになっています。明日からのプロジェクトで即実践できる非同期処理の書き方を身につけましょう。
「痩せたい!」と考えている方々へ、シンプルで効果的なカロリートラッキングアプリを自作してみませんか?
多くの市販アプリはアカウント登録やサブスクリプションが必要ですが、自分のニーズに合わせたアプリを作ることも可能です。
このトークでは、SwiftDataとCloudKitを活用して、バックエンドの負担や費用を気にせず、Appleアカウントで簡単にデータを同期させる方法をご紹介します。
このセッションを通じて、あなたのアプリ開発を一歩前進させましょう。