Japanese/Chinese input method powered by ChatGPT API
Emacs用の日本語入力システム(IME)です。
Sumibiはモードレスです。 日本語入力モードに切り替えることなく日本語を入力できます。
日本語と英語の相互翻訳もサポートしていますので、英語で文章を書くことが多い人にもおすすめです。
よくある質問はこちら。FAQ
Sumibiが利用している各種LLMのベンチマーク結果はこちら。benchmarkのREADME
Emacs version 29.x 以上 (Windows/Linux/macOS) で動作します。Emacs以外の追加ソフトウェアは不要です。
- OpenAI AIのサブスクリプションを契約します。
https://platform.openai.com/account/api-keys

- 環境変数
OPENAI_API_KEYにOpenAI APIキーを登録します。(SUMIBI_AI_API_KEYも使用可能です) - MELPAからパッケージ「sumibi」をインストールします。
- ~/.emacs.d/init.el に以下のコードを追加します。
(require 'sumibi)
(global-sumibi-mode 1)Gemini APIを使う場合は、環境変数 GEMINI_API_KEY を設定し、init.el に以下を追加するだけです。
(require 'sumibi)
(setq sumibi-provider 'gemini)
(global-sumibi-mode 1)sumibi-provider を設定すると、ベースURLやデフォルトモデルが自動的にプロバイダーに合わせて切り替わります。環境変数 SUMIBI_AI_BASEURL や SUMIBI_AI_MODEL による手動指定も引き続き利用可能で、設定されている場合はそちらが優先されます。
Emacsを再起動するとSumibiがステータスバーに表示されます。
[gpt-5] はOpenAI API呼び出しで使用しているGPTのモデルです。

sumibi-demo.mp4
- ローマ字で書いた文章の最後にカーソルを合わせて、Ctrl-J を入力すると日本語の文章に置き換わります。

- 変換結果が気に入らない場合は、そのまま Ctrl-J を入力すると変換候補のポップアップが表示されるので、その中から選択できます。

- 英語の文章の最後にカーソルを合わせて、Ctrl-J を入力すると、日本語の文章に変換されます。

日本語の文章をregion選択した状態で、ESC 、 j を順に入力すると選択範囲が英語に翻訳されます。
「ESC 、j」は、代わりに ALT+j でも入力可能です。
M-x sumibi-switch-modelでポップアップから利用モデルを動的に変更することができます。
sumibi-demo-switch-model.mp4
sumibi-provider の設定に応じて、プロバイダーに対応するモデルが自動的に候補に表示されます。
Sumibiを快適に使うためには、応答速度と変換精度の両方を満たすモデルが必要です。 以下の青枠の中がスイートスポットですが、その中でもランニングコストなども考慮して、gpt-5.1とgemini-2.0-flashが最も適しているといえます。(2025年11月時点)
注記: gemini-3-flash-previewは非常に高精度(エラー率3.1%)ですが、応答時間が11秒程度と長く、IMEの実用基準(2秒以内)を満たしていません。これはpreview版であるためと考えられ、stable版がリリースされた際には応答速度が改善される可能性があります。stable版がリリースされた際には再度ベンチマークを実施する予定です。
Sumibiの通常の変換はCtrl+Jで実行しますが、アンビエント変換は助詞や句読点の入力をトリガーに、意識することなく自然に日本語変換が行われる機能です。
新機能のアンビエント変換についてはこちら。AMBIENT
変換結果が気に入らない時は、ESC-u キーを入力することでUndoできます。
または、変換結果に原文ままの選択肢がありますので「原文まま」を選択します。

AIサービスはOpenAI以外にも切り替えられます。GeminiやDeepSeekの場合は sumibi-provider を設定するだけで、ベースURLやモデル名が自動設定されます。その他のOpenAI互換サービスは環境変数で切り替えることができます。
-
向き先をGeminiに切り替える場合(推奨)
;; 環境変数 GEMINI_API_KEY を設定 (setq sumibi-provider 'gemini)
環境変数による従来の方法も引き続き利用可能です:
(setenv "SUMIBI_AI_API_KEY" "AIxxxxxxxxxxxxxxxxxxxxxxxxxxxx") ;; Gemini APIのAPIキー (setenv "SUMIBI_AI_BASEURL" "https://generativelanguage.googleapis.com/v1beta/openai/") ;; Gemini APIのエンドポイントURL (setenv "SUMIBI_AI_MODEL" "gemini-2.0-flash") ;; Geminiのチャット用モデル -
向き先をDeepSeekに切り替える場合
;; 環境変数 DEEPSEEK_API_KEY を設定 (setq sumibi-provider 'deepseek)
環境変数による従来の方法も引き続き利用可能です:
(setenv "SUMIBI_AI_API_KEY" "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxx") ;; DeepSeekのAPIキー (setenv "SUMIBI_AI_BASEURL" "https://api.deepseek.com/") ;; DeepSeekのエンドポイントURL (setenv "SUMIBI_AI_MODEL" "deepseek-chat") ;; DeepSeekのチャット用モデル -
向き先をローカルLLM(LM Studio)に切り替える場合
;; LM Studio でモデルをロードしてサーバーを起動しておく (setq sumibi-provider 'local)
デフォルトでは
http://127.0.0.1:1234/v1に接続し、モデルgoogle/gemma-4-e4bを使用します。API Keyは不要です。環境変数による従来の方法も引き続き利用可能です:
(setenv "SUMIBI_AI_API_KEY" "xxxxxxxx") ;; ダミーのAPIキー (setenv "SUMIBI_AI_BASEURL" "http://127.0.0.1:1234/") ;; ローカルLLMのエンドポイントURL (setenv "SUMIBI_AI_MODEL" "google/gemma-4-e4b") ;; ローカルLLMのモデル名LM Studioの「Enable Thinking」設定は、モデルによって推奨値が異なります。
モデル Enable Thinking 備考 google/gemma-4-e4bON Thinkingを有効にすることで変換精度が向上 google/gemma-4-26b-a4bOFF Thinkingなしでも十分な精度があり、応答速度が向上 mlx-community/gemma-4-26b-a4b-itOFF Apple Silicon向けMLX最適化版。 google/gemma-4-26b-a4bより約2.5倍高速(中央値 2.12秒)
環境変数と sumibi-provider の両方が設定されている場合、環境変数が優先されます。
| 設定項目 | 優先順位(左が高い) |
|---|---|
| ベースURL | SUMIBI_AI_BASEURL → sumibi-provider のデフォルト |
| モデル名 | SUMIBI_AI_MODEL → sumibi-switch-model での選択 → sumibi-provider のデフォルト |
| APIキー | SUMIBI_AI_API_KEY → プロバイダー固有の環境変数(OPENAI_API_KEY / GEMINI_API_KEY / DEEPSEEK_API_KEY) |
通常は sumibi-provider を設定するだけで十分です。環境変数による上書きは、プロバイダー定義にないサービスを利用する場合に使用してください。
Sumibi は API Key を安全に保存するための3つの方法をサポートしています:
- 環境変数(デフォルト)- 従来の方法
- GPG暗号化ファイル - パスワードで保護された暗号化ファイル
- macOS Keychain - macOS の安全なキーチェーン
詳細な設定方法については、セキュリティガイドを参照してください。
Sumibiでは、変換対象のローマ字や英文をより自然な日本語に変換するために、対象文字列の前後の文章をAIに送信し、文脈情報として活用します。
取り込む周辺行数は、カスタマイズ可能な変数 sumibi-surrounding-lines で設定できます。デフォルトは6で、6はカーソル位置から上向きに3行、下向きに3行の合計6行という意味です。
必要に応じて適切な行数に調整し、最適な文章量を確保してください。
APIの費用が気になる方は小さい数字に、変換精度を上げたい方は大きい数字にすると良いでしょう。
LLMが使えない環境向けには、別プロジェクト「mozc-modeless」をご利用ください。 mozc-modeless

