プレビュー版 — 内容は変更される場合があります

チャットを参加者それぞれの言語で読める「Frappe Chat Translate」を OSS として公開しました

管理者 6分で読めます

Frappe / ERPNext 向けのチャットアプリ ClefinCode Chat に機能を追加するアプリ Frappe Chat Translate を、GPL-3.0 のオープンソースとして公開しました。

  • リポジトリ: https://github.com/lifegence/frappe_chat_translate
  • 対応: Frappe v15・v16、ClefinCode Chat 1.3.913
  • ライセンス: GPL-3.0-or-later(ClefinCode Chat と同じ)

要旨

  1. 同じチャットを、参加者それぞれが自分の言語で読めます。 日本語で書いたメッセージは英語の利用者には英語で、英語で書いたメッセージは日本語の利用者には日本語で表示されます。
  2. アクセス制御を強化します。 ClefinCode Chat の API がデータを返す前に、ログイン中の利用者がそのチャンネルの参加者かを確かめます。
  3. ClefinCode Chat 本体は変更しません。 別のアプリとして追加する形で動作します。

1. 背景

海外拠点や外国籍のメンバーを抱える企業では、社内チャットの言語がそのまま壁になります。共通語を決めれば、その言語が得意でない人が発言を控えるようになります。翻訳ツールへの貼り付けは手間がかかり、会話の流れも途切れます。

ERPNext の中でチャットを使えば、業務データのすぐ横で会話ができます。そこに「言語を選ばずに書き、自分の言語で読む」仕組みを足すことにしました。

2. 翻訳のしくみ

内容
翻訳するときメッセージが画面に表示されたとき
翻訳先の言語読む人のユーザー設定の「言語」
キャッシュメッセージと言語の組ごとに保存。同じ言語の 2 人目からは翻訳しない
まとめて翻訳未翻訳のメッセージは 1 回の依頼で最大 50 件まで
翻訳しないもの読む人と同じ言語のメッセージ
編集されたとき次に表示されたときに翻訳し直す

書き手は何も意識する必要がありません。送信の手順も、書く言語も、これまでどおりです。

翻訳エンジンを選べます

翻訳エンジンは、サイトの管理者が次から選びます。

  • Anthropic Claude
  • Google Gemini
  • OpenAI、または OpenAI 互換のサービス(Azure OpenAI や自社で運用するサーバーなど)

社内用語や固有名詞は用語集で扱いを固定できます。「この語は訳さない」「この語はこう訳す」を 1 行ずつ書くだけです。誰と誰の会話かを翻訳の前提として与えれば、言葉遣いや用語の選び方も合わせやすくなります。

データの扱い

翻訳のために、メッセージの本文は管理者が選んだ翻訳エンジンへ送られます。当社には何も送られません。 利用状況の収集もしていません。自社で運用する OpenAI 互換サーバーを選べば、メッセージは自社のサーバーの外に出ません。添付ファイル・音声・画像は送りません。

API キーはサイトのデータベースに暗号化して保存します。

3. アクセス制御の強化

開発の過程で、ClefinCode Chat 1.3.913 の API の多くが、操作する利用者やチャンネルをリクエストの値のまま受け取り、ログイン中の利用者と照合していないことが分かりました。このため、ログインできる利用者であれば、自分が参加していないチャンネルのメッセージを読めてしまう状態でした。

翻訳を加えるアプリがこの問題を放置すれば、翻訳されたメッセージまで同じ経路で漏れます。そこで本アプリは、ClefinCode Chat が外部に公開しているすべての API の手前で、次を確かめるようにしました。

  • 指定されたチャンネル・トピック・メッセージが、ログイン中の利用者の参加しているチャンネルのものか
  • 「操作する利用者」として指定された値が、ログイン中の利用者本人か
  • ログインしていない利用者には、害のない操作しか許さないか

誤検知の調査用に、拒否せず記録だけする動作モードも用意しています。この問題は ClefinCode の開発者に連絡済みです。

4. 管理者向けの機能

  • チャットのワークスペース:アプリ画面に「チャット」のアイコンを追加し、チャットの履歴・翻訳のキャッシュ・各種設定を 1 か所にまとめました
  • チャットボタンの見た目:画面の隅に出るチャットボタンの画像・色・大きさ・位置を、自社の画面に合わせて変えられます

5. 導入方法

bench get-app https://github.com/lifegence/frappe_chat_translate
bench --site your-site install-app frappe_chat_translate
bench build --app frappe_chat_translate
bench restart

導入後、チャット > 設定 > 翻訳設定 で翻訳エンジンと API キーを設定すれば使えます。詳しくはリポジトリの 日本語の README をご覧ください。

現時点での制限

  • プッシュ通知とメール通知は原文のまま届きます
  • 相手が画面を開いている間にメッセージが編集されると、再読み込みまで古い訳が表示されます
  • Frappe v15 では、チャットボタンの色・位置・大きさの設定は反映されません(画像の設定は反映されます)

今後

ほかのチャットアプリへの対応

Frappe のエコシステムでは、ClefinCode Chat のほかにも複数のチャットアプリがオープンソースで公開されています。どのチャットアプリを選ぶかは、企業ごとの使い方や好みによって異なります。

当社は、どのチャットアプリを使っていても、参加者それぞれが自分の言語で読める状態を目指し、これらのアプリへの対応を順次追加していく構想です。

翻訳エンジンの呼び出し、用語集、翻訳の前提といった翻訳の中心となる部分は、特定のチャットアプリに依存しません。これらを共通の部品として使い回し、アプリごとに異なる部分(メッセージの保存のしかた、画面への表示、参加者の確かめ方)を合わせ込むことで対応を広げていきます。対応するアプリの順番は、利用者の多さとご要望をもとに決めていきます。

そのほかの予定

  • Frappe Cloud Marketplace へ掲載を申請済みです。掲載されれば、Frappe Cloud の利用者は画面の操作だけで導入できるようになります
  • 通知の翻訳など、上記の制限を順次解消していきます

当社はこのほかにも、Frappe / ERPNext の日本語訳 frappe_japanese_translations、多言語管理アプリ I18n Manager などを公開しています。


多言語のチームで ERPNext をお使いの方へ。 導入のご相談や、自社の環境に合わせた設定・拡張のご依頼を承っています。お気軽にお問い合わせください。

この記事を書いた人

管理者

Agentic Company OSを、14日間無料で体験

クレジットカード不要で、すべての機能をお試しいただけます。まずは無料トライアルから始めましょう。