iOSDC2023に参加してきたレポート(1日目編)
iOS関連の技術カンファレンスであるiOSDCに参加してきたので、その様子を簡単にレポートしていきます。
目次
はじめに
こんにちは。クラウドソリューショングループのtakinami.sです。
1年に1度こうして大きな規模で技術者が集まって交流できる場があるというのは本当に感謝してもしきれないようなことですし、とても刺激になります。
この記事では前夜祭編に続いて1日目の発表を聞いた感想などを書いていこうと思います。
前夜祭編はこちら
ノベルティ
iOSDCではたくさんの企業がスポンサーとして携わってくださっています。
スポンサーの皆さまが作成されたノベルティやiOSDC公式のTシャツなどがまとまったノベルティボックスが、会期前に送られてきます。
大きくずっしりしているので、ワクワク感が掻き立てられます。
特にパンフレットは必見です。
技術者の方々が寄稿された記事がいくつか掲載されており、iOSDCの期間の前からキャッチアップを行うことができます。
また、当日会場では朝限定でドーナツが配布されたり、フリードリンクが配布されていたりします。
発表のレポート
それでは本題に入って、私が聞いた発表の中からいくつか抜粋して感想などを共有できたらと思います。
TextKit 2 時代の iOS のキーボードとテキスト入力と表示のすべて
Yoshimasa Niwaさんの発表です。
まず既存のTextKit 1とiOS16以上ではデフォルトになっているTextKit 2の違いを共有していただきました。
TextKit 1はNSLayoutManagerを中心としたクラスで構成されたAPIで最小操作単位がグリフであったのに対し、TextKit 2ではNSTextLayoutManagerを中心としたクラスで構成されたAPIで最小操作単位が行になったようです。
TextKit 1では1文字ずつ見ていたものが、TextKit 2では文字列で見るようになったイメージですね。
また、テキストの行の範囲が画面のどの位置で表示されるのかを取得するNSTextLineFragmentというクラスのtypographicBoundsというプロパティは、iOS16だとx軸方向が(0,0)からの座標を取ってくるというバグがあることも共有していただきました。
本来は行の原点をもとに取ってくるようですが、iOS16だとそれを前提にしてしまうと思いもよらないズレができたままになってしまうということですね。
iOS17ではこのバグは修正されているようです。
さらに癖のある仕様として、TextKit 1と2の下位互換を高めるためにTextLit 2が使われていても何らかの拍子にTextKit 1のAPIに触れるとその後はTextKit 1に自動フォールバックされるという仕様があるようです。
バグや仕様を把握していないまま進めると困難に直面して詰まったということになりそうですので、留意しておこうと思いました。
SwiftUIではTextKitには対応していないようです。
私は個人開発しているアプリでオールSwiftUI化を目指しているので、この辺りの柔軟性が高くなると嬉しいなと思っています。
スライドはこちらです。
UIのブラックボックスを探る
noppeさんの発表です。
iOSにおいて暗黙の仕様となっているUIと、カスタムUIをどう扱っていくかというお話でした。
まず、既存のアプリでどういったUIの構成がされているかを調べる方法として、Viewの要素や階層を視覚化してくれるツールであるRevealとアプリの動的解析ツールであるFridaを組み合わせた方法を共有されていました。(root権限のあるiPhoneが必要なようです)
Apple製のアプリのような自分たちが作ったものではないアプリでも、どういった構造をしているかを見ることができるのは便利ですね。
Apple純正アプリであればAppleがどういう決まりで実装をしているのかを読み取ることができ、アプリ制作時の参考にすることが可能です。
次に、インタラクションの面でユーザーが使いやすいと感じるのはどういったものなのか、ということを考えることの大切さを共有されていました。
例えば画像を長押しすると保存や共有といったメニューが出ることや、トグルボタンで切り替えをするときのハプティクスといったものが挙げられます。
こちらもApple純正のアプリではどういうインタラクションになっているのかを意識することで、Appleの考えに則ったアプリを提供することが可能ですね。
アプリの要件を決めていくときに、標準で搭載されているUIでは実現が難しいUIが求められた経験はないでしょうか。
そこで独自にUIをカスタムして用件の実現を目指すことになるかと思います。
ただ、標準で搭載されているUIはすでにAppleがユーザーにとってどういったものが良いのかを検討した上で搭載されているはずです。
また、カスタムするということは最新のトレンドに則ったUIになるようにメンテナンスをするコストがかかるということです。
エンジニア以外のメンバーにも標準のUIでできる範囲を知ってもらって、カスタムUIと標準のUIを上手いバランスで扱っていくことが大切なのかなと考えました。
スライドはこちらです。
最後に
朝から夜まで丸1日iOS回りの話に触れられる2日間がスタートし、いち技術者としてワクワクしています。
社内でも毎月勉強会が開催されたり、もちろん業務内でも技術の話が飛び交ったりするわけですが、さらにいつもとは違う外部の空気に触れることで得られる刺激も大切だと私は考えています。
そこで受けた刺激を日頃業務に活かしたり、技術者として活動していく上でのモチベーションにしたりと自分の中でプラスの方向に持っていけると、成長していくきっかけになるのではないかと思います。
次は2日目編の記事でお待ちしております。