2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語入力の「黒箱」を開けます。KeyroIME OpenCore、正式オープンソース化

2
Posted at

「IMEの中身って、触ったらWindowsに怒られそう」

分かります。日本語入力は毎日使うのに、その内部は驚くほど見えません。変換候補が出るのは一瞬。でも、その裏ではキーボード入力、Windowsのテキストサービス、辞書検索、候補順位、ユーザー操作が高速でバトンを渡しています。

そのバトンリレーを、丸ごと見える場所へ出しました。

Windows向け日本語入力システム「KeyroIME OpenCore」を正式にオープンソース化しました。

ソースコードはこちらです。

keyro-open/KeyroIME-OpenCore

AI時代に、なぜIMEを作るのか

生成AIは文章を書けます。でも、私たちがPCへ伝えたいのは長文だけではありません。

メールアドレス、URL、型番、金額、人名、地名、英単語、記号。そして日本語。実際の仕事では、これらが一つの文章に遠慮なく混ざってきます。そこで毎回、入力モードや全角・半角の切り替えに意識を奪われる。小さい摩擦ですが、1日に何度も起きれば、かなり立派な邪魔者です。

KeyroIMEが狙っているのは、派手なデモの5秒ではありません。書いている人の思考を止めないことです。

OpenCoreでは、かな漢字変換、カタカナ語、翻訳、人名・地名・駅名、短いかなの予測を一つの候補体験にまとめています。q+語 で翻訳候補を、v+読み で人名・地名・駅名候補を優先できます。日本語の途中へ数字や記号、英単語を入れる場面も、できるだけ自然につなぎます。

中身はC++17とRust。Windowsの中心でIMEを叫ぶ

技術者向けに、ここは少し濃くいきます。

KeyroIME OpenCoreは、Windows x64向けのローカル優先型IMEです。

  • KeyroIME.dll:C++17で実装したWindows TSF / COMテキストサービス
  • keyro_service.exe:Rustで実装した辞書検索、予測、候補順位付け、ユーザー頻度、IPCサービス
  • keyro_tray.exe:C++17で実装した通知領域UIと状態表示
  • IPC:Windowsの名前付きパイプを使う軽量なバイナリプロトコル

入力ホストに読み込まれるTSF DLLは軽く保ち、完全な辞書、ユーザー設定、ネットワーク処理、AIランタイムを抱え込みません。辞書と候補処理はRustサービス側へ分離。サービスが止まった場合も、TSF側のローカル変換で基本入力を続けられる設計です。

要するに、Windowsと深く握手はする。でも、抱きついて一緒に倒れない。そんな距離感を目指しています。

なお、「Windowsのコアを公開」といっても、Microsoft Windowsのカーネルを公開したわけではありません。さすがにそれをやったら、この記事を書く前に大事件です。公開したのは、KeyroIMEのWindows入力基盤とローカルコアサービスです。

“高性能”を、形容詞だけで終わらせない

「超高速」「次世代」と書くのは簡単です。READMEの文字なら秒速です。

だからOpenCoreでは、性能を支える設計と検証も読める形にしています。

  • Windows TSFと辞書サービスを分離した小さな責務境界
  • C++とRustの間をつなぐIPC仕様
  • 1ページ5候補のシンプルな候補UI
  • 曖昧予測、短い読みの前方一致、動的な候補分割・連結
  • JIS / ANSI配列、全角 / 半角、和文 / 欧文句読点の切り替え
  • ネットワークやログインを前提にしないローカル候補生成
  • TSF activation、local fallback、runtime input、IPC failoverなどのスモークテスト
  • Windows CIとインストーラーパッケージ検証

ベンチマークのない速度自慢より、コード、境界、失敗時の動作を見てもらうほうが早い。そう考えて、実装と設計資料を公開しています。

AIエージェントと作る。でも、責任までAIへ投げない

KeyroIMEの開発では、AIエージェントを調査、設計案、実装、レビュー、テスト整理、公開監査の支援に活用しています。

AIに「いい感じにIMEを作って」と頼んで完成したわけではありません。Windows TSFのライフサイクル、C++とRustの境界、文字コード、辞書ライセンス、インストーラー、異常時の復帰。IME開発には、“いい感じ”で済ませると翌朝つらくなる論点が山ほどあります。

AIエージェントには速度と探索力を担当してもらい、人間は仕様、採否、検証、公開責任を持つ。この組み合わせも、KeyroIMEが試している技術テーマの一つです。

そして大事な区別があります。OpenCoreの現在の入力候補は、ローカル辞書、予測、候補順位付けを中心に動作します。生成AIが文章を自動生成する製品ではありません。 AI Proは別の開発計画です。

アーキテクト、C++、Rust好きの皆さんへ

このリポジトリは、完成品を眺めるショーケースだけではありません。

Windows TSF / COMの実装を読みたい。C++の入力フロントとRustサービスをどう分けるか見たい。FFIとIPCの境界を検討したい。辞書、候補UI、フォールバック、インストーラー、CIを含むWindowsデスクトップ製品の構成を追いたい。

そんな技術者にとって、かなり歯ごたえのある題材です。コードを読んで「ここ、もっと良くできる」と思ったら、それは最高の反応です。

本体はGNU GPLv3。ライセンス条件に従って、利用、調査、改変、共有できます。コントリビューション方針、セキュリティ報告方法、第三者辞書の表示もリポジトリ内に公開しています。

最後に、お願いは四つだけ

  1. リポジトリを開く。
  2. READMEとアーキテクチャを読む。
  3. 面白いと思ったらStarを押す。
  4. C++、Rust、Windows、IMEが好きな人へ共有する。

Starは1秒です。IMEの実装は、だいたい1秒では終わりません。だから、その1秒が開発者には効きます。

ソースコード: https://github.com/keyro-open/KeyroIME-OpenCore

技術愛好家、ソフトウェアアーキテクト、C++エンジニア、Rustエンジニアの皆さん。閲覧、Star、共有、Issue、Pull Requestを歓迎します。日本語入力の次を、コードから一緒に考えてください。

キーワード: KeyroIME、OpenCore、オープンソース、Windows、IME、TSF、C++、Rust、AIエージェント、GPLv3、日本語入力

確認日:2026-10-01。KeyroIME OpenCore v1.0.6.16の公開リポジトリと設計資料を基準にしています。現時点でGitHub Releaseは未公開です。ビルドと検証手順はリポジトリの日本語READMEをご確認ください。

原文: Keyroアカデミー

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?