jev-ime-ja は、変換する読み全体を一つの変換単位にまとめるべきか Jev が判断する、macOS 向けの日本語入力アプリです。通常の変換と候補生成は Mozc が担当し、Jev は変換単位だけを判断します。
Apple Silicon / macOS 26.2 以降に対応しています。macOS 26.5、Xcode 26.2 でビルドとデスクトップアプリの動作を確認しています。
最初の Space で Mozc の通常変換をすぐに表示し、Jev の判断を非同期で待ちます。Noul 値が設定した閾値以上なら、未確定の読み全体を一単位にして Mozc で再変換します。
- 初期設定では Noul 値 0.85 以上で結合し、判定開始から1秒以内の結果だけを反映します。
- 応答前に入力、候補操作、確定、フォーカス移動が進んだ場合は、古い結果を反映しません。
- 通信失敗、期限超過、不正な応答では Mozc の通常変換を保ちます。
- 結合直後は Esc で元の区切りと候補へ戻せます。
- すでに一単位の入力と、同じ条件で直近に判定した入力では通信を省きます。
- 128 Unicode スカラーを超える読みでは、問い合わせと結合を行いません。
- Apple Silicon 搭載 Mac
- macOS 26.2 以降
- Xcode
- Python 3
- Git
- Bazelisk
- Jev を使う場合は TypeSafe API キー
Homebrew を使う場合、Bazelisk は brew install bazelisk で導入できます。
git clone https://github.com/m1ng112/jev-ime-ja.git
cd jev-ime-ja
./build.sh初回は Mozc の固定コミットを work/mozc に取得します。ビルド後、リポジトリ直下に次のアプリが作られます。
jev-ime-ja.app:単体で入力と変換を確認できるデスクトップアプリjev-ime-ja IME.app:InputMethodKit を使う入力ソース
Bazelisk の場所を明示する場合は、JEV_BAZELISK=/path/to/bazelisk ./build.sh のように指定します。
jev-ime-ja.appを開きます。- 入力欄へローマ字で入力し、Space で変換します。
- TypeSafe API を使う場合は「API 設定…」に API キーを保存します。
- 「結合を比較(Jev 未使用)」では、API を呼ばずに一単位へまとめた結果を確認できます。
API キーは macOS Keychain に保存します。環境変数 TYPESAFE_API_KEY からの読み込みにも対応しています。
Install IME.commandを実行します。- 作業を保存してログアウトし、もう一度ログインします。
- システム設定 → キーボード → テキスト入力 → 編集 → + → 日本語から
jev-ime-ja IMEを追加します。 - 入力メニューから
jev-ime-ja IMEを選びます。
既存の同名 IME がある場合は、~/Library/Input Methods/jev-ime-ja IME backups/ に退避してから置き換えます。既定の入力ソースやログイン状態は自動で変更しません。
送信先は https://api.typesafe.ai/v1/systemone、モデルは jev-latest です。次の情報を送信します。
- 対象の読み
- Mozc の変換表記と区切り
- 同じ入力セッションで jev-ime-ja が確定した直近120文字
文書全体は取得しません。入力内容や API キーをアプリのログへ保存する処理はありません。判定結果のキャッシュは最大128件、5分間だけメモリに保持します。詳しい API 仕様は TypeSafe API と Noul を参照してください。
- 判断は「読み全体を一つにする」か「通常の区切りを保つ」かの二択です。
- 部分範囲の推定、漢字候補の順位変更、再変換、辞書登録、かな入力には対応していません。
- Mozc の OSS 辞書を使用し、学習は無効です。
- 一単位へまとめても、望む漢字候補が出るとは限りません。
- IME のアプリ別互換性、実 API の精度と遅延、Apple の公証、他の Mac での配布は未検証です。
| 場所 | 役割 |
|---|---|
Sources/Core.swift |
Jev API、Keychain、状態と世代番号の管理 |
Sources/Lab.swift |
デスクトップアプリ |
Sources/IME.swift |
InputMethodKit による入力ソース |
Sources/UIShared.swift |
キー変換、設定、候補パネル |
engine/jev_bridge.cc |
Mozc のセッションを利用する C++ ブリッジ |
engine/prepare.py |
固定版 Mozc への最小限の拡張 |
Tests/ |
実 API を呼ばない自動テスト |
Mozc はコミット 13c98988247aa711d99db9e348ec2a597d14b5cd に固定しています。内部の SegmentWidthExpand で区切りを拡張し、読み全体が一単位になったことを確認してから結果を反映します。失敗した場合は元のセッション状態へ戻します。
ビルド後、Swift の状態管理テストと実 Mozc を使う統合テストを実行できます。テストは TypeSafe API を呼びません。
./Tests/run.sh検証結果は docs/TEST_RESULTS.md、性能測定は docs/PERFORMANCE.md を参照してください。
jev-ime-ja の独自コードは MIT License で公開しています。Mozc と同梱コンポーネントには、それぞれのライセンスが適用されます。詳細は THIRD_PARTY.md を参照してください。