こんにちは、iOS エンジニアの西村です。(最近はAndroidエンジニア寄りになりつつあります)
先日、iOSDC Japan 2025 に参加してきました!今回で4回目の参加になります。
そして今年の iOSDC は記念すべき 10周年 でした 🎉
公式サイトでは紙吹雪が舞っていてお祝い感がありましたが、最終日のクロージングでは実際に大きな音と共に紙吹雪が打ち上がり感動しました!

また、会場もこれまでの「西早稲田キャンパス」から移り、今回は「有明セントラルタワーホール&カンファレンス」での開催でした。


会場内には、自販機とロッカーが設置されていました。特にロッカーは、遠方から参加する荷物の多い方にとってはとても助かる設備ですね!

セッション会場(Track A)の雰囲気はこんな感じで、約500名が入れるほどの広さでしたが時間によっては立ち見が出るほどの大盛況でした!


また、ヤプリは今年も iOSDC Japan にダイヤモンドスポンサーとして参加しています!(スポンサーセッションもしています!)
加えて今年はブースも出しており、多くの方に立ち寄っていただき、10周年という特別なカンファレンスを一緒に楽しむことができました。
個人的に印象に残ったセッション
ここからは、印象に残ったセッションを紹介していきたいと思います!
SwiftUI時代のスクショ保護〜セキュアなViewの作り方〜
機密情報が表示されている画面でスクリーンショットが撮られたとき、どのように保護するかを解説したセッションです。
ポイント
今年は Microsoft Teams や XChat、iPhoneのマイナンバーカードでスクショ保護機能が実装されていて注目度が高まっている…ということで弊社ヤプリも今年スクショ保護機能をリリースしました!いい感じにトレンドに乗れています!
実装方法としては、Apple からスクショ保護の API は提供されていないため、UITextField のサブビューにある _UITextLayoutCanvasView を利用する必要があります。
SwiftUI で実装する場合は制約も多いですが、内部的に setDisableUpdateMask というメソッドが使われていることを調べ、それを活用することで SwiftUI でもシンプルに実装できることが紹介されていました。ただし非公開 API を利用するため、Apple のガイドラインに抵触するリスクがあるとのことです。
感想
UITextField のサブビューにある _UITextLayoutCanvasView を使うとスクショ保護できることは知っていましたが、その裏で setDisableUpdateMask が動いているという仕組みまでは理解していなかったので、深掘りされた解説はとても興味深かったです。
「iPhoneのマイナンバーカード」のすべて
日本で世界初となるマイナンバーカード(National ID)を iPhone の Apple Wallet に搭載したことや、それを支える技術(mdocなど)について紹介されたセッションです。
ポイント
マイナンバーカードの普及率は 78.9% に達しており、私も早く申請しなければと思いました…!
「対面確認アプリ」を使うことで、マイナンバーの情報を簡単に確認することができるようです。実際にデモで、リーダー用 iPhone にホルダーの iPhone をかざして接続し、リーダーが mdoc を要求し、ホルダー側で提供可否を確認し、承認されると Bluetooth 経由でデータが送られる——という流れが具体的に解説されました。
さらに開発者向けには Verifier API も提供されており、この仕組みを使うことで年齢確認や本人確認といった機能を自分のアプリに実装できるようでした。また「選択的属性開示」が可能で、例えば年齢だけを開示して住所は非公開にする、といった柔軟な使い方ができるとのことです。
感想
マイナンバーのような個人情報を扱う API が公開されているとは知らなかったので驚きました。
また、Apple が日本向けにマイナンバー関連のAPIを提供していることや、Wallet のホログラム実装まで対応していると聞き、かなり協力的だなと感じました。
今後自分の開発でも触れてみたいと思います。
作って学ぶWebP入門
WebP は PNG や JPEG より軽量で、iOS 14 から標準対応している画像形式。
その仕組みを理解するために、Swift で codec を実装しながらフォーマットの構造や圧縮技術を学ぶセッションでした。
ポイント
WebP には Lossy(非可逆) と Lossless(可逆) の2種類の圧縮方式があり、それぞれの仕組みはまったく異なるようです。
データ構造は大きく Header と Data に分かれており、そのフォーマットには RIFF が用いられています。そして WebP のデータは最終的に ハフマン符号化 によって圧縮され、出現頻度の高いデータには短い符号が割り当てられる仕組みになっているとのことでした。
さらに面白かったのは、ハフマン符号化以外にも色々な圧縮手法が組み合わされている点です。たとえば Subtract Green(緑を基準に無駄を削る)、LZ77(繰り返しを「距離×長さ」で表す)、Predictor(隣の色から次の色を予測する)、Cross Color(色どうしの重なりをほどく)、Color Indexing(よく使う色に番号を振る)、Color Cache(直前の色をキャッシュする)といった手法が活用されていると紹介されていました。
感想
WebP は軽い画像程度の理解でしたが、内部でいろいろな圧縮アルゴリズムが使われていることに驚きました。
特に Subtract Green や Predictor のような工夫は発想として面白く、圧縮の理解が深まる内容でした。
最後にもう一つ
ノーコードアプリプラットフォームを支えるServer-Driven UI 〜Block UIアーキテクチャの設計と実装〜
今回の iOSDC では、弊社ヤプリの機能「Block UI」を紹介するスポンサーセッションも行われました!
Server-Driven UI × SwiftUI によって、ノーコードでもネイティブらしい体験を実現できる仕組みで、データソースに紐づく「Block」を組み合わせて柔軟に UI を構築し、変更はリアルタイムに反映されます。SwiftUI の実装でありながら、高い自由度を持つ機能がどのように実現されているか紹介しているのでぜひご覧ください!
こちらのセッションを聞いてご興味をお持ちいただけた方や、スポンサーブースを見て気になった方はぜひカジュアル面談でお話しましょう!

コメント