DroidKaigi 2025で発表したものです。https://2025.droidkaigi.jp/timetable/946512/
Android 16でPaintに追加されるVERTICAL_TEXT_FLAGにより、ついに標準で縦書きテキストの描画が可能になります。
本セッションではその新機能とJetpack Composeを組み合わせた簡単な縦書きテキストエディタの実装方法を具体的なコードを交えて紹介します。
Androidで縦書きを簡単に使うにはWebViewが必要でした。一方iOSでは以前より縦書きのテキスト描画がサポートされていたため、縦書きのできるテキストエディタアプリの数はAndroidとiOSで天と地ほどの差がある現状です。
日本語文化の重要なピースである縦書きをAndroidにも普及させるべく、本セッションにより誰もが「Androidで縦書きエディタを作れる」ようになることを目指します。
本セッションではAndroid 16の縦書きのテキスト描画APIのことだけではなく、Jetpack Composeで独自のテキストエディタを作る方法も説明します。
またJetpack Composeにはテキストの表示からIMEによるテキスト入力を分離して抽象的に扱うことのできる先進的な設計が存在しており、その先進性についてAndroid従来のView含めた他のプラットフォームの事情と比較して解説します。
#発表のアウトライン
## 縦書きテキスト
・PaintへのVERTICAL_TEXT_FLAGの追加
・縦書きテキストの描画
## Jetpack Composeのテキスト入力とテキスト描画
・PlatformTextInputModifierNode とは
・AndroidのInputConnectionとの関係について
・androidx.compose.text.input からの変遷
## Jetpack Composeと他プラットフォームのテキスト入力周りのAPI設計
・iOS, macOS, Windowsとの比較
## 具体的な縦書きエディタの実装コード