面倒解決エンジニアの森田ユウゴです。
台湾からお届けする「#kintone100日チャレンジ」の87日目。
台湾は大雨警報が出ているレベルで天気が悪いです。こんな日ばかりは、在宅フリーランスで良かった…と思えます。
ただ、出社でしか得られない経験も多いのでここはトレードオフ。
本日は、外国人スタッフを抱える製造・サービス・観光業など多言語対応が必要な現場向けの「多言語AI翻訳」を開発しました!
「多言語AI翻訳」について
🎯 なぜ開発したか?(現場の課題とベネフィット)
現場の「不」: 外国人スタッフが増えてもkintoneには1フィールド1つの値入力が基本です。言語ごとに別フィールドを作ると翻訳文章の管理が煩雑になり、人手翻訳では入力コストと時間がかかりすぎる。
導入後の世界(ベネフィット): レコードを保存するだけでGemini AIが自動翻訳。日本語・英語・中国語など複数言語の翻訳結果を1フィールドにJSON管理するので、フィールドが言語の数だけ増えることもない。表示言語はヘッダーのセレクターで即切替できる。
元々、翻訳プラグインには挑戦してきたのですが、今やサクっと作った完全バイブコーディングの方が品質高く、想定通り動いてしまう…。
(当時はClaude 3.5 SonnetあたりでAIコーディングを試してみて、かつハーネスも組む知識が無かったものでボロボロだった記憶)
✨ これで出来ること(機能概要)
まずはこちらをご覧ください。
Gemini AI自動翻訳: レコード保存時にGemini API(Flash / Pro / Flash Liteを選択可)へ自動でリクエスト。日本語・英語・中国語など設定した全言語の訳文をJSONで一括保存する。
言語セレクターで表示・編集言語を切替: 一覧・詳細・編集・作成画面のヘッダーに言語切替ドロップダウンを表示。選択した言語でフィールドの表示値と編集値がリアルタイムに切り替わる。
差分翻訳でAPIコストを最小化: フィールド値のSHA-256ハッシュを保存し、前回翻訳時から内容が変わっていない場合はGeminiへのリクエストをスキップ。変更があった箇所だけを翻訳する。…ただ、主言語以外から翻訳をすると、翻訳に翻訳を重ねて意図が変わってしまう可能性も。
課題
現時点では下記のような課題が残っています。
詳細画面のテーブルセル表示置換でDOM直接操作が必要
kintone JavaScript APIにはサブテーブルのセル単位で要素を取得するAPIが存在しない。DOM構造に依存するためkintoneのアップデートで動作しなくなる可能性があり、セキュアコーディングガイドラインで推奨される「DOM構造に依存しない実装」から逸脱しています…。
一覧画面のテーブルセル翻訳は非対応
一覧表示では、サブテーブルが折りたたみ可能な別行(recordlist-subtablerow)に描画される。getFieldElements(テーブルコード)ではトグルボタンのセルしか取得できず、展開・折りたたみ状態にも安全に追従できないため断念しました。
さいごに
#kintone100日チャレンジ として、2026年4月から毎日プラグインをバイブコーディングしています。明日もお楽しみに!
私森田ユウゴはココナラでkintoneに関する各種サービスを出品しております。
SIerの中でもインフラSEとして約10年、特に「運用保守」にはベンダーとして深く携わってきました。
作りっぱなしにしない導入やカスタマイズのご提案が可能です。
お気軽にご相談をくださいませ
→森田ユウゴのプロフィールはこちら👇