2022 年10月以降の Mozc に対する主な変更
初稿: 2023-10-10
2022 年 10 月以降の Mozc に対する主な変更をまとめました。ドキュメントやコミットログ、 Issues に書かれているものをまとめただけで新しい情報はありません。抜けているものがあれば後で追記します。
Mozc の問題の報告や機能の要望等は、GitHub の Issues や Discussions へお願いします。
現在のバージョン
- 2.29.5250
- 3 つめの数字 (5250) はバージョン番号をつけ始めてからの経過日数
- 参考: Google 日本語入力は 2.29.5050
統計情報
2022-10-11 - 2023-10-10
- コミット数: 1,554
- クローズした issue の数: 161 (Issues · google/mozc)
- マージしたプルリクエスト数: 9 (Pull requests · google/mozc)
累計
- コミット数: 3,348
- クローズした issue の数: 633
- マージしたプルリクエスト数: 51
主要な変更点
- PR (pull request) 受け入れ範囲の拡大
- GitHub Actions からビルド生成物をダウンロード可能に
- Windows の対応バージョンを 8.1 から 10 以降へ変更
- macOS の対応バージョンを 10.12 から 11.0 以降へ変更
- Bazel によるビルドの拡充
- Qt の対応バージョンを 5 から 6 へ変更
PR の受け入れ範囲の拡大
以下のコードに対する PR を受け入れられるように変更
- Linux, macOS, Windows の各クライアント
- 候補ウインドウおよび GUI ツール
- 各種データファイル
詳細
入力関連
辞書データの更新
Issues に報告された入力関連のフィードバックに対応
「かっこ」で入力できるペアの追加
英数文字幅を半角に設定していると、ローマ字変換が一部動作しない問題への対応
ローマ字変換のロジックの拡張
Linux 関連
Bazel の Linux ビルドで mozc.zip の作成
IBus クライアントで、Wayland セッションでの候補ウインドウの実装を選択に対応
- 環境変数 MOZC_IBUS_CANDIDATE_WINDOW が ibus の場合
- IBus のデフォルトを使用
- X セッションの場合
- Mozc の候補ウインドウを使用
- Wayland セッションの場合
- ibus_config.textproto の compatible_wayland_desktop_names の設定による
- デフォルトでは環境変数 XDG_CURRENT_DESKTOP の値が "GNOME" の場合のみ、Mozc の候補ウインドウを使用する
- Consider using
ibus_config.textproto
instead of environment variables such asMOZC_IBUS_CANDIDATE_WINDOW
· Issue #795 · google/mozc
- ユーザーによる QT_QPA_PLATFORM の設定は不要に
- ibus_config.textproto の compatible_wayland_desktop_names の設定による
IBus クライアントで使用する環境変数の追加変更
- WAYLAND_DISPLAY: wayland かどうかの判定 (以前は XDG_SESSION_TYPE を使用)
IBus でデフォルトの入力方法をメニューから選択可能に
- mozc/docs/configurations.md at master · google/mozc
- Add a field for the composition mode to ibus_config. · google/mozc@96e8c87
Linux のデフォルトコンパイラを clang からシステムデフォルトに変更
Linux での GYP ビルドの対応範囲の変更
- 代替は Bazel によるビルド
- IBus クライアントの GYP によるビルドを削除
GTK による候補ウインドウのコードを削除
- 代替は Qt による候補ウインドウ
- これまでのビルド設定からの削除にくわえて、コード自体も削除
IBus 実装のリファクタリング
- C++ 用のラッパークラスを作成
-
ibus_engine_show_lookup_table(engine_ptr)
→engine_wrapper.ShowLookupTable()
-
Bazel の Linux ビルドで ANDROID_NDK_HOME の設定をデフォルトで不要に
Emacs クライアント
- Lint エラーの改善、最新バージョンへの対応
Windows 関連
アイコンの更新
インストーラの追加
32 bit ビルドのサポートを終了
Windows 7, 8 用のコードの削除
デフォルトコンパイラを MSVC 2022 へ
- これまでのデフォルトは MSVC 2017
Windows インストーラーのバージョンを 5.0 へ
WIL ライブラリの活用
- Import Windows Implementation Library · Issue #726 · google/mozc
- RAII によるオブジェクトの管理
IMM32 用コードの削除
- Windows 10 以降のみの対応となるため
macOS 関連
ビルドターゲットを 11.0 以降へ
ユニバーサルバイナリ、Apple Silicon バイナリのビルドに対応
- GitHub Actions でもダウンロード可能
- Support universal binary for macOS · Issue #801 · google/mozc
ビルド関連
GitHub Actions からビルド生成物をダウンロード可能に
Qt 6 への移行
jsoncpp への依存の削除
- 使用しているコードを削除したため
リファクタリング関連
Bazel 用ビルドマクロの命名規則の変更
- cc_libraray_mozc → mozc_cc_library
- Notice: Build macros for Bazel will be changed · Issue #679 · google/mozc
Abseil ライブラリの活用
- const std::string& から absl::string_view への変更
- absl::Str*, absl::flat_hash_*, absl::Span, absl::Time, ABSL_MUST_USE_RESULT などの活用
- Mozc 独自の実装の削除
スレッドの実装を刷新
- 各プラットフォームごとの実装から、std::thread へ移行
ユニットテストの値の順序の変更
- EXPECT_EQ(expected, actual) から EXPECTED_EQ(actual, expected) へ変更
プラットフォームの識別マクロを一般に使われるものに変更
- Change OS_ANDROID, OS_LINUX, OS_WIN, OS_WASM macros to standard macros. · google/mozc@794a853
- 例:
OS_LINUX
→__linux__
base/ ディレクトリの再構成
- base/strings, base/win32 などを作成
- mozc/src/base at master · google/mozc
C++17 にあわせたリファクタリング
- new から std::make_unique への変更
- uint32 → uint32_t などの標準で定義される型への変更
- std::move の活用
- constexpr の活用
今後の予定
- C++20 の採用
- Windows 用ビルドの Bazel への移行
- その後の GYP によるビルドルールの削除
- 古い issues (最終更新が 2020-01-01 以前) のクローズ
さいごに
内容をまとめるにあたってふりかえりながら、数多くの方々のご協力や応援をいただいていることをあらためて実感しました。どうもありがとうございます。
Discussion