先日 iOSDC Japan 2025 にオフラインで参加したので、参加レポートを書こうと思います!開催 10 回目ということで、非常にめでたいですね👏
今年は色々とチャレンジした
今までも iOSDC には参加してきたのですが、今年はより一層 iOSDC でチャレンジできました!
パンフ記事の執筆
今年こそは何かしらの形で iOSDC にアウトプットしたい!と思っていたので、パンフ記事にチャレンジしました。ありがたいことに「パンフ記事(4ページ)」を採択いただいて、パンフレットに載ることができました👏 最初は中々執筆の仕方が分からず苦戦していたのですが、Markdown を活用して、レイアウトをあまり気にせずパンフ記事を作成できるツールを教えていただき、執筆に集中できました。ツールは https://github.com/mitsuharu/iosdc-pamphlet-template ですので、初めてパンフ記事を書く方にオススメです!また、パンフ記事を執筆したことで、とあるイベントの LT にも誘っていただきました。他の開発者さんと交流ができて、非常に楽しかったです。
スピーカーとコミュニケーション
iOSDC 当日のセッションにおいて、Q&A で質問したり、Ask the Speaker でスピーカーの方とお話したりできました。Q&A では、おかしなことを言ってしまわないかな、という不安もあったのですが、素晴らしい発表ばかりだったので、大勢の前でもすんなりと質問することができました。Ask the Speaker においても、他の方がスピーカーさんに質問しているところに混ざってみたり、スピーカーさんとセッションの質問だけでなく、追加で色々と話してみたりと、オフラインならではの良さを堪能できて、非常に有意義でした。
アンカンファレンスに参加
今までは存在を知りながらも、中々参加できていなかったアンカンファレンスですが、今年初めてチャレンジできました!これも iOS エンジニアとして日々経験を積んでいったからこそ、自信を持って臨めたのだと思います。私は Liquid Glass のアンカンファレンスに参加したのですが、X でフォローしている方々と一緒に Liquid Glass についてお話できたことが、非常に嬉しかったです。最初は不安がありましたが、チャレンジして良かったです!
セッションの紹介
学びが多いセッションばかりで紹介し切れないのですが、印象に残ったセッションについて、簡単にまとめてみました。
day0
半自動E2Eで手っ取り早くリグレッションテストを効率化しよう
スプリントごとに手動でリグレッションテストをしていたが、積み重なると大きな負担になっていたので、E2E での自動化に挑戦したものの、最初は中々うまく進まなかったようです。特に
- タップ、スワイプといった操作の対象 UI を検出できないことがある
- クラウド環境のシミュレータの動作が遅いからか、リモートのみでテストが失敗することがある
- カメラ機能などの自動化が難しいシナリオへの対処が難しい
のような障壁があったみたいです。中々一筋縄ではいかないですよね ...。そこで「完璧を目指さず、まずは動くものから」と考え直し、ローカル環境中心の戦略に変えると、1 ヶ月で運用開始まで持っていけたようで、この流れは非常に印象的でした。最初から全自動を目指さず、部分的に手動を混ぜても良いから早く運用を始めることに注力しており、参考にできる部分が多かったです。完璧主義に陥らず運用しながら改善する姿勢を、自信の開発にも取り入れたいと思いました。
Swiftで作って学ぶGitの仕組み
Git の内部仕様を Swift で実装してみることで理解を深める、というユニークな発表でした。Git は一見複雑にも思えるが、内部はシンプルで美しい設計になっているということや、Git の基本的なオブジェクト( Blob / Tree / Commit / Tag )の解説、Swift で実際に git add や git fetch を書いてみる例も紹介されており、コードで理解できる楽しさがありました。普段「なんとなく使えてしまう」Git を深掘りし、本質を理解する姿勢は見習わないとな、と思いました。Git でトラブルがあった際も、内部仕様を知っていると解決がしやすくなるし、学び直しとしても素晴らしいアプローチだと感じました。
day1
そろそろ FormatStyle
従来は日付のフォーマットをする際に DateFormatter を利用していました。しかし
-
DateFormatterはインスタンス生成コストが高いので、自身でパフォーマンスのチューニングをしないといけない -
DateFormatterはクラス(参照型)なので、Concurrency との相性が悪い
など、DateFormatter にはいくつかの課題があります。iOS 15 からは FormatStyle が利用できるようになり、これらの課題に対処されています。そのため、FormatStyle を使っていこう💪というセッションでした。FormatStyle はプロトコルとして定義されており、標準で構造体として多くのフォーマット形式がサポートされています。セッション内では、標準でサポートされているフォーマッターをひたすら列挙してくれていて、実際にどのような機会で利用できるかをイメージしやすかったです。独自のフォーマッターも作成することができ、その手順も解説してくれていました。FormatStyle は Input と Output、フォーマットの実装さえあれば準拠できるので、比較的簡単に独自のフォーマッターを定義できそうだなと思いました。自身のプロダクトにおいて、DateFormatter を利用している箇所は多くありそうなので、計画的に移行できると良さそうでした!
カスタムUIを作る覚悟
日々の開発の中で、求められている仕様を純正の UI では満たせないことがあります。その場合に、カスタム UI を作ると思いますが、そもそもカスタム UI を作るべきなのか、作る場合はどのような点に注意すれば良いのかが非常に大事で、その点について解説してくれたセッションでした。カスタム UI を作る場合には、以下のような点などに注意が必要です。
- アニメーション
- 純正に近い体験
- アクセシビリティ
- VoiceOver
- Dynamic Type
- 透明度を下げたり、視差効果を減らしたりなど
- iPadOS
- ウィンドウのリサイズ
- キーボード
- トラックパッド
- ペンシル
セッション内では、日付 UI のフォントを変更する必要が生まれた際に、日付 UI を自作することによって実装しないといけない標準的な振る舞いや、これらに対応し切れないことで生まれるユーザーへの不利益を鑑みて、フォントを変更しないという判断をした、という例が挙げられていました。確かに ... と思わされる例でした。これからも分かるように、そもそも標準でどれだけの動きが自動でサポートされるのかを知っておかないと、意図しないところでユーザーを困らせてしまうよな、と思いました。このセッションでは、エンジニアとデザイナーのコミュニケーションについても触れられていました。アニメーションやアクセシビリティ、パフォーマンス面などは、どちらが責任を持つかが曖昧になりがちです。ここに明確な境界線を引くのではなく、相互理解をしながら、適切にコミュニケーションをとっていけると良いというのは、その通りだなと思いました(Figma などの絵だけで会話するのではなく)。特定の実装が紹介されたわけではなかったですが、非常に知見が多い素晴らしいセッションでした!
day2
ネイティブ製ガントチャートUIを作って学ぶUICollectionViewLayoutの威力
UICollectionViewLayout をフル活用して、ガントチャートのような複雑なレイアウトを実現する話でした。普段の開発では、UICollectionViewCompositionalLayout を使うことはあっても、中々 UICollectionViewLayout を自身で実装することはなかったので、非常に興味深かったです。まずは何も実装されていない状態から、段々と実装をしていき、レイアウトが完成していくような流れで説明がされていたので、実装の仕方が分かりやすかったです。また、キャッシュでレイアウト情報を保持し、パフォーマンスに影響がないように実装するプラクティスが充実していました。まずは UICollectionViewCompositionalLayout で実装できないかを検討すると思いますが、もし UICollectionViewLayout で実装する必要が生まれた際には参照したいセッションだと思いました。UICollectionViewLayout なら何でもできるのか? → なんでもできる!という言葉が力強いな、と思いました😂
スマートフォン 来し方行く末 〜どこから来てどこへ往くのか〜
今までの iPhone の歴史について、スピーカーのお二人が一緒に話していくセッションでした。他のセッションとは少し毛並みの異なるセッションで非常に面白かったです。自身が iPhone を手にしたタイミングでは、その iPhone がどのような立ち位置だったのか、性能だったのかなどを、非常に詳しく解説してもらえて、感慨深かったです。そもそもなのですが、スピーカーのお二人のトーク力と知識量が圧倒的で、非常に長いセッションなのに一瞬で過ぎ去ってしまいました。裏話的な内容も聞けて、笑いあり学びありの内容でした!
まとめ
今年の iOSDC も学びがぎっしりと詰まっていました!今年は多くのことにチャレンジできたので、来年以降も今年以上のチャレンジができるように、頑張りたいと思います。また、iOSDC までの期間でどれくらい経験を積めたかが大事だなと思ったので、モチベーションも上がりました!また iOSDC が楽しめたのは、素晴らしい運営の方々がいたおかげでした。ありがとうございました!
