世界を動かす技術を、日本語で。

AppleにおけるSwift: TrueTypeヒンティングインタープリタの移行

2026年6月13日原文(swift.org)

概要

  • TrueTypeヒンティングインタプリタを CからSwift に書き換え、 Appleプラットフォーム の安全性と性能を向上
  • Swift実装 は平均 13%高速化、かつメモリ安全性を実現
  • 既存のC実装と ピクセル単位で互換性 を維持
  • テストカバレッジと 実運用データ で高い正確性を保証
  • Swift版ソースコード も公開、他の開発者への知見共有

TrueTypeフォントとヒンティングエンジンの進化

  • TrueType は1980年代後半にAppleが開発した ベクターフォント標準
    • Helvetica、Garamond、Monacoなど多くの有名フォントの基盤
  • ヒンティング 技術により、低解像度ディスプレイでも鮮明な表示を実現
  • PDFやWeb での利用拡大により、信頼できないフォントデータへの露出が増加
  • ヒンティングエンジン はバイトコードインタプリタを内包し、入力依存の複雑な制御フローとデータ構造を持つ
  • 正確性・安全性 が求められるセキュリティクリティカルな領域

Swiftによる書き換えの理由と要件

  • メモリ安全性 の確保と既存コードベースへの統合性
  • Swift はC並みの性能と安全性を両立できる唯一の選択肢
  • バイナリ互換性 を重視し、既存アプリが全く同じ動作・描画結果を維持
  • ピクセル単位での出力一致 を正確性の定義とし、徹底的なテストを実施

テスト戦略と品質保証

  • ユニットテスト で99.7%のコードカバレッジを達成
  • 10万件のPDFファイル からコードカバレッジを損なわず4200件にコーパスを最適化
  • 2,5572フォント・2,700万グリフ を4種の変換で描画し、C実装とビットマップ比較
  • テストコード量は本体の4倍 に達し、品質を徹底追求

性能最適化とSwiftの活用技法

  • 自動参照カウント排他制御 によるオーバーヘッドを非コピー型構造体で削減
    • ~Copyable型 (struct中心)で効率化
  • Span型 (Swift 6.2以降)でC構造体配列を効率的に操作
  • データ構造の変換 は最小限に抑え、 プロジェクション型 でCデータを安全にSwiftから利用
  • メモリアロケーション抑制 のため、.lazy.mapやfor-in-where等イテレーションの工夫
  • ヒープ確保回避 のため、継続渡しスタイル(Continuation-passing)を導入
  • プロトコルやジェネリクス の最適化(インライン化推奨)で動的ディスパッチのコスト低減
  • 型システムの活用 で可読性と性能を両立
    • FixedPoint型やStackElement型で複雑な演算やデータ変換を抽象化

成果と今後の展望

  • Swift実装C実装より13%高速、かつ メモリ安全
  • 言語間インターフェース では安全性保証のために最小限のunsafeコードを使用
  • バグ報告ゼロ、ユーザー体験に影響なし
  • Swiftの型システム・最適化機能 により、抽象度を上げつつゼロコスト抽象化を実現
  • Swift版ヒンティングインタプリタのソースコード を公開、他開発者の参考資料として活用可能

まとめ

  • AppleはTrueTypeヒンティングエンジンをSwiftで再実装
    • メモリ安全性、性能、互換性、可読性を全て向上
  • Swiftの型安全性・最適化能力 が大規模・高難度なシステム移行を可能に
  • オープンソース公開 で、フォントパーサやセキュリティクリティカルな領域でのSwift活用事例を広く共有

Hackerたちの意見

プラットフォームの基調講演で、macOSにおけるSwiftの採用についていくつかの例が挙げられたけど、TrueTypeエンジンだけじゃなくてね。基調講演を信じるなら、RISはすべてのOSレベルで進行中らしいよ。

Webkitの方向性が気になるな。C++からSwiftに書き換えられる部分があるって曖昧に言われてたし。でも、Safari 27の新しいECMAScriptモジュール(ESM)ローダーはC++で実装されてるんだよね。(https://webkit.org/blog/17967/news-from-wwdc26-webkit-in-saf...)

RISって何の略?

彼らは何年も前からやってるよ。最初にどうやって知ったかは覚えてないけど、少なくともSecure Enclaveなどの他のチップのカーネルでSwiftを使ってるのは知ってる。具体的にどれかは分からないけど、一部のコードだと思う。でも、これは抽象的には新しいことじゃない。ただ、MacOSのメインプロセッサのカーネルで使われてるのは聞いたことがないから、それは新しいかもね。いずれにしても、これに関して彼らが発表した中で最も具体的な内容だと思う。

MITライセンスで公開されてるのが面白いね。Appleのお気に入りのApache 2ライセンスじゃなくて。

なんで興味深いの?

著者はこれについてMastodonでも少し話してたよね。(https://xoxo.zone/@numist/116716469017975106)

私もここにいるよ :)

2023年には、Microsoftがフォント関連のものをRustで書き直すって話があったんだ。Appleが今Swiftに移行してるのと似た理由でね。どうなったのか、結局出荷されたのかはわからないけど、知ってる人いたら教えてほしいな。

Russinovitch(AzureのCTO/CISO)がRustConf 2025でスピーチをして、DirectWriteCoreについて言及してたよ。2人のエンジニアが6ヶ月かけて154K LOCを作成して、フォントシェイピングのパフォーマンスが5~15%向上したらしい。

Swiftを楽しんでるけど、もしデフォルトの言語としてRustを選んでたら、世界はどうなってたんだろうって考えちゃうよね。

モダンなSwiftはRustからたくさんの要素を取り入れてるよ!それに、エルゴノミクス的な利点もあって、動的ライブラリでのジェネリックもサポートしてるし。

Hacker Newsで議論の続きを見る