ローカル環境で動作する Ollama を利用して、テキストファイルを翻訳するデスクトップアプリ「Ollama de Honyaku」を作成した。
背景
手元のテキストファイルを翻訳する際、外部のクラウドAPIにデータを送信せず、ローカルのOllamaで安全かつ手軽に処理できるツールが欲しかったから作成した。
主要機能と特徴
- ローカル処理: クラウドのLLMを指定しない限りは完全ローカルで完結する
- フォーマット保持:
- 改行コード(
CRLF/LF)、BOM(UTF-8 BOM)を判別・維持する - Markdown の段落構造、空行数を保持する
- 改行コード(
- コードブロックの翻訳バイパス:
-
```または~~~で囲まれたプログラムコード領域を LLM に送信せず、そのまま完了出力に書き出す - 4つ以上のフェンス(
````)の中にある見出しやテキストは通常通り翻訳対象とする
-
- カスタマイズ性:
- 翻訳粒度(最大行数)やチャンクサイズ(最大文字数)、最大自動リトライ回数の指定
- システムプロンプトの閲覧・編集ダイアログ(デバウンスによる自動保存対応)
技術構成
- フロントエンド: React (TypeScript), Tailwind CSS v4, Lucide Icons
- バックエンド: Tauri 2, Rust (tokio, reqwest, regex)
ファイルの分割と保護処理
テキスト処理のパイプラインは以下の流れで実行される
- メタデータ抽出: ファイルの改行コードおよび BOM の有無を検出
- チャンク構築(
chunker.rs):- 行単位で解析し、空行、通常テキスト、ヘッダー、コードブロックに分離
- 制限文字数を超える長大行は文末記号、句読点、強制分割の優先度で分割
- トークン保護:
- 通常テキスト内のインラインコードや URL を抽出・置換
- 翻訳および復元(
translator.rs):-
Chunkのみ Ollama REST API (/api/chat)へ送信 - 応答受領後、置換トークンを元の文字列へ復元し、全体を結合して保存
-
インストール・使用方法
pnpm install
pnpm tauri dev
pnpm tauri build
おわりに
ローカル LLM でドキュメント翻訳を行う際のフォーマット崩れやコードの誤訳を防ぎつつ、動作が軽量なツールとして実装した。
正直LLMの性能次第なところはあるが、使えなくはないはず。