萌えハッカーニュースリーダー

2025/08/15 21:26 TextKit 2 – The Promised Land

出典: https://blog.krzyzanowskim.com/2025/08/14/textkit-2-the-promised-land/
hakase
博士

ロボ子、TextKit 2について何か知ってるかのじゃ?WWDC21で発表された、macOSとiOSのテキストレイアウトエンジンらしいぞ。

roboko
ロボ子

はい、博士。TextKit 1を置き換える、より簡単で高速なエンジンとして期待されていたと聞いています。

hakase
博士

そうそう。この記事を書いた人は、TextKit 2でTextViewを再実装したらしいんじゃが、どうやらアーキテクチャと実装にギャップがあるみたいじゃな。

roboko
ロボ子

具体的には、どのような問題があるのでしょうか?

hakase
博士

`NSTextContentManager`というレイアウトエンジンの抽象インターフェースがあるんじゃが、`NSTextContentStorage`以外では使えないらしい。しかも、`NSTextContentStorage`は`NSTextStorage`に依存していて、`NSTextStorage`の問題がそのままTextKit 2にも引き継がれるらしいぞ。

roboko
ロボ子

`NSTextStorage`の問題、ですか。例えばどのようなものでしょう?

hakase
博士

記事には詳しく書かれてないんじゃが、`NSTextStorage`自体が抱えるパフォーマンスの問題とか、柔軟性の問題とかがあるのかもしれないのじゃ。さらに、TextKit 2は`UITextView`での使用を前提としていて、汎用性に欠けるらしい。

roboko
ロボ子

なるほど。特定のUIに特化しているのですね。他にも問題点はありますか?

hakase
博士

バグも多いみたいじゃ。「extra line fragment」に関するバグが多いらしくて、互換性の維持が大変らしいぞ。修正されたものもあれば、未解決のものもあるみたいじゃ。

roboko
ロボ子

それは困りますね。安定性に欠けるということでしょうか。

hakase
博士

Viewportという、表示領域に焦点を当ててテキストレイアウトを最適化する仕組みがあるんじゃが、これも問題があるみたいじゃ。

roboko
ロボ子

Viewport、ですか。どのように最適化するのでしょう?

hakase
博士

表示に必要なフラグメントだけを遅延レイアウトするらしい。でも、ドキュメント全体の高さを推定する必要があって、その推定がうまくいかないと、スクローラのサイズや位置が不安定になるらしいぞ。

roboko
ロボ子

スクロール中に高さが頻繁に変動すると、確かにスクローラの挙動がおかしくなりそうですね。

hakase
博士

そうなんじゃ。TextEditアプリでも同じ問題が起きてるらしい。この記事の筆者は、TextKit 2 APIとその実装は不十分で、正しく使うのが難しいと言ってるぞ。

roboko
ロボ子

TextKit 2はテキストレイアウト、特にテキスト編集UIには最適ではない可能性がある、と。

hakase
博士

そういうことじゃ。せっかく新しい技術なのに、残念じゃな。ロボ子、何かTextKit 2をうまく使うアイデアはないかの?

roboko
ロボ子

うーん、現状の問題点を考えると、TextKit 2を直接使うよりも、別のテキストレイアウトエンジンを検討した方が良いかもしれませんね。もしくは、TextKit 2のバグ修正や改善に貢献するとか…。

hakase
博士

なるほど。それもそうじゃな。まあ、TextKit 2はまだ若い技術じゃから、今後に期待するとしようかの。しかし、バグが多いのは困るのじゃ。まるで私の部屋みたいじゃ。

roboko
ロボ子

博士の部屋は、バグではなく、創造性の源泉ですよ、きっと。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search