🟠

2022 年10月以降の Mozc に対する主な変更

2023/10/10に公開

初稿: 2023-10-10

2022 年 10 月以降の Mozc に対する主な変更をまとめました。ドキュメントやコミットログ、 Issues に書かれているものをまとめただけで新しい情報はありません。抜けているものがあれば後で追記します。

Mozc の問題の報告や機能の要望等は、GitHub の IssuesDiscussions へお願いします。

前回: 2021 年以降の Mozc に対する主な変更

現在のバージョン

  • 2.29.5250
  • 3 つめの数字 (5250) はバージョン番号をつけ始めてからの経過日数
  • 参考: Google 日本語入力は 2.29.5050

統計情報

2022-10-11 - 2023-10-10

累計

  • コミット数: 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 セッションでの候補ウインドウの実装を選択に対応

IBus クライアントで使用する環境変数の追加変更

IBus でデフォルトの入力方法をメニューから選択可能に

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 ライブラリの活用

IMM32 用コードの削除

  • Windows 10 以降のみの対応となるため

macOS 関連

ビルドターゲットを 11.0 以降へ

ユニバーサルバイナリ、Apple Silicon バイナリのビルドに対応

ビルド関連

GitHub Actions からビルド生成物をダウンロード可能に

Qt 6 への移行

jsoncpp への依存の削除

  • 使用しているコードを削除したため

リファクタリング関連

Bazel 用ビルドマクロの命名規則の変更

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) へ変更

プラットフォームの識別マクロを一般に使われるものに変更

base/ ディレクトリの再構成

C++17 にあわせたリファクタリング

  • new から std::make_unique への変更
  • uint32 → uint32_t などの標準で定義される型への変更
  • std::move の活用
  • constexpr の活用

今後の予定

さいごに

内容をまとめるにあたってふりかえりながら、数多くの方々のご協力や応援をいただいていることをあらためて実感しました。どうもありがとうございます。

GitHubで編集を提案

Discussion