Skip to content

Repository files navigation

Sumire (スミレ) — The Privacy-First Japanese Keyboard

Sumire typing demo

Your Keys, Your Data, Your Style.

あなたの手に、プライバシーと自由を。

Google Play で手に入れようF-Droid releaseGitHub release

Android CILicenseminSdk 24targetSdk 36



日本語

📜 コンセプト

Sumireは、プライバシーを絶対に妥協しない という哲学から生まれた日本語入力キーボードです。あなたの思考や会話が、意図せず第三者に渡るべきではありません。すべての変換処理をデバイス内で完結させることで、100%のオフライン動作を実現しました。

オープンソースのmozcエンジンを基盤としながら、強力なユーザー辞書便利な定型文、そして自由なキーボード定義といった高度なパーソナライズ機能を追加し、書くことそのものを、あなただけの体験にすることを目指しています。

✨ 主な特徴

  • 🔒 完全オフライン保証INTERNET権限を要求せず、入力と変換を端末内で処理します。

  • 🧠 高性能な変換エンジン Google日本語入力のコアであるmozcの大規模辞書を搭載。文脈を読んだ高精度な変換を実現します。

  • 📖 強力なユーザー辞書 登録した単語を前方一致でスムーズに予測変換。インポート/エクスポート対応で、辞書のバックアップや移行も自由自在です。

  • 📋 便利な定型文(スニペット) メールアドレスや挨拶など、よく使う文章を「読み」で全文一致呼び出し。インポート/エクスポートにも対応しています。

  • 🎨 究極のカスタマイズ ユーザー自身がキー配列を定義できるカスタムキーボード機能を搭載。あなただけのキーボードを作成できます。

  • 📱 モダンな設計 Kotlinでフルスクラッチ開発。Jetpackライブラリによる最適化で、軽快な動作と滑らかなUIを実現。タブレット端末にも対応しています。

📷 スクリーンショット

通常表示 (ライト/ダーク)
ライトテーマダークテーマ

QWERTYレイアウトと絵文字
QWERTY LightQWERTY Dark

タブレット表示
Tablet LightTablet Dark

🚀 クイックスタート

  1. 上記 Google Play バッジ、F-Droid、 またはリリースページ からインストールします。F-Droid 版は zenzgemma を含まない Lite 版です。
  2. Androidの 設定 → システム → 言語と入力 → 画面キーボード を開き、「Sumire」を有効にします。
  3. 文字入力欄を長押し、またはキーボード切替アイコンをタップして「Sumire」を選択します。

⌨️ 入力モードと表示モード

IMEService では、入力モードと表示モードを分けて扱っています。入力モードは設定から表示順を変更できます。

モード説明
TenKey日本語かな入力向けの標準テンキーです。フリック/トグル入力、変換、候補表示に対応します。
Sumire キーボードスミレ独自のカスタムレイアウトです。ひらがな、英字、記号のレイアウトを切り替えられ、キー配置や入力スタイルも設定できます。
QWERTY 英語英字入力向けの QWERTY レイアウトです。英語入力、記号/数字レイアウト、Shift、ポップアップ表示に対応します。
QWERTY ローマ字QWERTY 配列で日本語を入力するローマ字入力モードです。日本語変換候補と組み合わせて使えます。
カスタムキーボードユーザーが作成したキーボード配列を読み込むモードです。複数レイアウトの切り替え、フリック、ローマ字変換、定型文字列の入力に対応します。
Tabletタブレット端末では、設定に応じて TenKey の代わりに五十音ベースのタブレット向けレイアウトを表示できます。
フローティングキーボードを画面下部に固定せず、独立したフローティングウィンドウとして表示できます。位置は保存され、通常の候補表示や入力処理と組み合わせて使えます。

⚙️ ユーザー設定

以下は pref_*.xml に定義されている設定項目です。保存値の初期値は AppPreference.kt を優先し、値を保存しない画面遷移や実行系の項目は「画面/操作」としています。ZenzGemma の設定は、これらを含む Full 版で表示されます。

設定一覧を開く

共通

カテゴリ設定初期値
言語設定で表示する言語OFF
設定のバックアップ設定をエクスポート画面/操作
設定のバックアップ設定をインポート画面/操作
キーボードキーボードの選択画面/操作
キーボード位置とサイズの設定(縦画面)画面/操作
キーボード位置とサイズの設定(横画面)画面/操作
キーボード横画面で全画面入力を許可通常端末: OFF / small端末: ON
キーボードキー・変換候補の文字サイズ画面/操作
キーボードキーボード背景画像画面/操作
キーボード背景画像の表示方法フィット
キーボードキーボード背景画像を解除画面/操作
キーボードキーボード背景動画画面/操作
キーボード背景動画の画質高画質
キーボードキーボード背景動画を解除画面/操作
変換候補N-Best4
変換候補変換キーで文節を分割OFF
変換候補左右キーで文節を移動OFF
変換候補ショートカットツールバーOFF
変換候補変換候補タブOFF
変換候補候補タブの並び順画面/操作
変換候補変換欄の高さ画面/操作
変換候補変換欄の高さ(横画面)画面/操作
変換候補変換候補の列数1
変換候補変換候補の列数(横画面)1
変換候補パスワード入力時の変換候補ON
変換候補候補ハイライト時の削除キー動作ON
変換候補ローマ字変換候補を表示OFF
変換候補 > タイピングミス補正フリック(日本語)OFF
変換候補 > タイピングミス補正タイピングミス補正のしきい値3000
変換候補 > タイピングミス補正QWERTY(英語)OFF
機能フリック・トグル入力OFF
機能削除キーの左フリックON
機能元に戻す機能OFF
機能クリップボードの内容を変換欄に表示ON
機能クリップボード タップで候補から削除OFF
機能半角スペースの利用OFF
機能ライブ変換 βOFF
機能修飾キー省略入力OFF
機能修飾キー省略入力のしきい値1900
機能変換キー長押しで AI 変換候補を追加するOFF
機能スペース長押しでカーソル移動OFF
機能最後に使ったキーボードを表示OFF
機能フリック入力の感度100
ショートカットツールバーショートカットツールバーのカスタマイズ画面/操作
記号キーボード記号キーボードの初期画面絵文字
クリップボードの履歴クリップボードの履歴画面/操作
操作入力待機時間1000
バイブレーションバイブレーションの有無ON
バイブレーションキー押下音の有無OFF
バイブレーションキー押下音の音量0
バイブレーションバイブレーションのタイミング両方
バイブレーション長押し時間300
ローマ字変換ローマ字変換のカスタマイズ画面/操作
アプリについて使用した Open Source のライブラリ画面/操作
アプリについてアプリのバージョン画面/操作

かな入力

カテゴリ設定初期値
かな入力 レイアウトの設定文字のサイズ画面/操作
かな入力 レイアウトの設定IME 切り替えボタンON
かな入力 レイアウトの設定英字入力は QWERTYOFF
かな入力 レイアウトの設定キーガイドの表示OFF

スミレ入力

カテゴリ設定初期値
スミレ入力キーボード文字サイズ画面/操作
スミレ入力キーボードキーの配置トグル入力
スミレ入力キーボード入力スタイル通常入力
スミレ入力キーボード英字入力は QWERTYOFF
スミレ入力キーボードフリックガイドの表示OFF
スミレ入力キーボードドーナツ入力の設定画面/操作

QWERTY

カテゴリ設定初期値
QWERTY キーボードキーのサイズ画面/操作
QWERTY キーボードパスワード入力時OFF
QWERTY キーボード上フリックを有効にするOFF
QWERTY キーボード下フリックを有効にするOFF
QWERTY キーボードローマ字キーボードの全角スペースOFF
QWERTY キーボードポップアップウィンドウの表示ON
QWERTY キーボードカーソルボタンOFF
QWERTY キーボード句読点ボタンOFF
QWERTY キーボード数字キーOFF
QWERTY キーボードIME 切り替えボタンON
QWERTY キーボード記号キーマップの表示OFF
QWERTY キーボードローマ字/英語切り替えキーON
QWERTY キーボードShift直後の1文字だけ大文字OFF
QWERTY キーボード数字キーボード切り替え時の入力モードOFF

カスタム

カテゴリ設定初期値
カスタムキーボード文字サイズ画面/操作
カスタムキーボード2文字以上の出力を自動で確定ON
カスタムキーボード未入力時の表示ON
カスタムキーボードカスタムローマ字での全角nの動作ON
カスタムキーボードフリックガイドの表示OFF

タブレット

カテゴリ設定初期値
タブレットタブレットのレイアウトON

辞書

カテゴリ設定初期値
システムユーザー辞書システムユーザー辞書の作成画面/操作
N-gramN-gram補正画面/操作
NG ワードNG ワードを有効にするON
NG ワード非表示にする単語の一覧画面/操作
学習辞書学習辞書ON
学習辞書先頭の変換候補を学習OFF
学習辞書学習辞書で予測変換OFF
学習辞書予測変換2
ユーザー辞書ユーザー辞書ON
ユーザー辞書予測変換2
定型文定型文ON
Mozc UT人名OFF
Mozc UT住所OFF
Mozc UTWebOFF
Mozc UTWikiOFF
Mozc UTNeologdOFF

Zenz

カテゴリ設定初期値
zenz の設定AI による予測変換を有効にするOFF
zenz の設定タイピング修正を有効にするOFF
zenz の設定zenz で変換候補を並び替えるOFF
zenz の設定モデルの読み込み元画面/操作
zenz の設定zenz で使用するプロフィールの設定
zenz の設定右側の文脈を利用するOFF
zenz の設定zenz の連続推論の待ち時間(デバウンス)300
zenz の設定zenz の変換コンテキストの上限32
zenz の設定zenz の最大のコンテキスト数512
zenz の設定zenz が使用するスレッド数4

Gemma

カテゴリ設定初期値
Gemma 翻訳Gemma 4 を有効にするOFF
Gemma 翻訳Gemma 実行バックエンドCPU のみ
Gemma 翻訳翻訳先の言語英語
Gemma 翻訳Gemma 4 モデルの読み込み画面/操作
Gemma 翻訳Gemma プロンプト管理画面/操作

🛠️ 開発者向け

ビルド環境

ToolVersion
Android StudioCompatible with Android Gradle Plugin 8.10.1
Gradle Plugin8.10.1
JDK17

ビルド手順

# 1. リポジトリをクローン
git clone https://github.com/KazumaProject/JapaneseKeyboard.git
cd JapaneseKeyboard
# 2. USBデバッグを有効にしたデバイス/エミュレータでビルド & インストール
./gradlew installDebug

Zenz モデルをビルド時に生成する

zenz モジュールは、開発機のビルド時に Hugging Face から量子化済みのGGUFモデルを取得し、APK/AAB に同梱します。アプリ実行時には通信しないため、INTERNET 権限は不要です。

./gradlew installDebug

必要に応じて以下も上書きできます。

# local.propertieszenzModelRepo=Miwa-Keita/zenz-v3.2-xsmall-gguf
zenzModelRevision=4f5423f0fad41a73b1242eb96fe5c12ae4fdca83
zenzModelQuantization=Q5_K_M
zenzModelAssetName=ggml-model-Q5_K_M.gguf
# 公開モデルなので通常は不要# zenzModelHfToken=hf_xxx

このモードではモデルを zenz/build/generated/assets/zenzModel/main/ggml-model-Q5_K_M.gguf に出力して APK/AAB に同梱します。Python 3 が必要で、初回は huggingface_hub を自動で入れます。

配布バリアント

このプロジェクトでは editionchannel の 2 軸で APK を出し分けます。

  • fullStandard: 既定の全部入り版。zenzgemma を含みます
  • liteStandard: 軽量版。zenzgemma を含みません
  • liteFdroid: F-Droid 向け軽量版。zenzgemma を含みません

fullFdroid は意図的に無効化しています。

各バリアントの applicationId は次の通りです。

  • fullStandard: com.kazumaproject.markdownhelperkeyboard
  • liteStandard: com.kazumaproject.markdownhelperkeyboard.lite
  • liteFdroid: com.kazumaproject.markdownhelperkeyboard.lite.fdroid

ローカルで unsigned release APK を作る場合は次を使います。

./gradlew assembleFullStandardReleaseUnsigned
./gradlew assembleLiteStandardReleaseUnsigned
./gradlew assembleLiteFdroidReleaseUnsigned

署名付き release APK を作る場合は local.properties に署名情報を設定したうえで次を使います。

./gradlew assembleFullStandardRelease
./gradlew assembleLiteStandardRelease
./gradlew assembleLiteFdroidRelease

生成物は app/build/outputs/apk/<variant>/... に出力されます。GitHub Actions の release workflow でも同じ 3 バリアントを tag push 時にビルドします。

🤝 貢献するには

このプロジェクトはオープンソースです。バグ報告、機能提案、そしてプルリクエストを心から歓迎します。 貢献していただける方は、まず Issues を検索し、同様の課題が議論されていないかご確認ください。

🏗️ アーキテクチャ

キー入力から候補表示までの処理フローは以下の通りです。コアな変換ロジックは、LOUDSトライ木辞書とN-gram言語モデルに基づいています。

+----------------------+ +----------------------+
| Input (Key Event) | ---> | Candidate Generation|
+----------------------+ | (LOUDS Dictionary) |
+-----------+----------+
|
+----------------------+ +----------+-----------+
| Suggestion Rendering | <--- | Ranking (N-gram) |
+----------------------+ +----------------------+

詳細はDeepWikiの技術ドキュメントをご参照ください。

🔐 プライバシーとセキュリティ

  • ネットワーク権限なし: AndroidManifest.xmlINTERNET権限は含まれていません。音声入力では、端末側の音声認識を使うときにマイク権限を利用します。
  • 暗号化された学習データ: 予測変換のための学習履歴は、AES-256で暗号化され、安全にローカル保存されます。

📝 謝辞

本プロジェクトは、以下の素晴らしい技術や資料に支えられています。

📄 ライセンス

MIT License © 2025 Kazuma Naka — 詳細は LICENSE ファイルをご覧ください。


English

📜 Philosophy

Sumire is a Japanese keyboard built on a single, uncompromising philosophy: absolute privacy. Your thoughts and conversations should never be an asset for third parties. We achieve 100% offline functionality by ensuring every process, from keystroke to candidate conversion, happens entirely on your device.

Built on the open-source mozc engine, Sumire enhances the writing experience with advanced personalization features like a powerful user dictionary, convenient snippets, and fully customizable keyboard layouts, aiming to make typing a truly personal experience.

✨ Key Features

  • 🔒 100% Offline & Secure Works without the INTERNET permission, so keyboard input is processed on device.

  • 🧠 Powerful Conversion Engine Powered by the large-scale dictionary from mozc (the core of Google's Japanese IME) for highly accurate, context-aware predictions.

  • 📖 Powerful User Dictionary Get predictive suggestions for your registered words via forward-matching search. Full import/export support gives you complete control over your dictionary.

  • 📋 Convenient Snippets Instantly insert frequently used phrases, email addresses, or greetings using an exact-match trigger word. Also supports import/export.

  • 🎨 Ultimate Customization Go beyond themes. Adjust key height and sensitivity, and even create your own fully custom keyboard layouts to perfectly match your typing style.

  • 📱 Modern by Design Developed in Kotlin from the ground up and optimized with Jetpack libraries for a smooth, fast, and responsive UI. It's also optimized for tablets and foldables.

🚀 Quick Start

  1. Install from the Google Play badge above, F-Droid, or from the Releases page.
  2. Open Android Settings → System → Languages & input → On-screen keyboard and enable "Sumire".
  3. Long-press any text field or tap the keyboard-switch icon and select "Sumire".

🛠️ For Developers

See the Japanese section for the build environment and instructions.

git clone https://github.com/KazumaProject/JapaneseKeyboard.git
cd JapaneseKeyboard
./gradlew installDebug

🤝 Contributing

This is an open-source project, and we welcome bug reports, feature requests, and pull requests. Please check the Issues page to see if your idea is already being discussed.

🔐 Privacy & Security

  • No Network Permission: The AndroidManifest.xml does not contain the INTERNET permission. Voice input uses the microphone permission only when the device-side speech recognizer is used.
  • Encrypted Learning Data: Your personal dictionary and learning data are stored locally, encrypted with AES-256.

📝 Acknowledgements

This project stands on the shoulders of giants. Our thanks go to:

📄 License

MIT License © 2025 Kazuma Naka — See the LICENSE file for details.

About

スミレ - 完全オフラインの日本語キーボードアプリ

Topics

Resources

Security policy

Stars

327 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages