kintoneでもAmiVoice -筋斗雲と順風耳-

スパイス犬
こんにちは、スパイス犬です。
”夏休みも終盤、空にはモクモクと筋斗雲、こりゃあひと雨来そうだな。”
✖ 筋斗雲(キントーン)
〇 積乱雲(セキランウン)
「筋斗雲(きんとうん)」は、中国の小説『西遊記』や漫画『ドラゴンボール』に登場する、乗った者が空を飛べる空想上の雲のことです。「順風耳(じゅんぷうじ)」は、千里眼と対になる存在で、遠くの音や話し声を聞き取ることができる神通力を持つ人物(神)です。
今日は日本初のノーコード・ローコードツールであるkintone(キントーン)からAmiVoice APIを利用し、「音声データテキスト化」「単語登録管理」「月次料金表示」のアプリをご紹介します。
また、本記事で紹介するアプリ・プラグインはエンジニアリングサンプルとしてリポジトリで公開しています。すぐに試したい方は、ダウンロードしてご利用ください。
公開リポジトリ:https://github.com/advanced-media-inc/amivoice-api-kintone-samples
return;
#アディオス!
続けます。
1 kintone の構成:アプリとプラグイン
kintoneは、業務データを管理する「アプリ」と、その機能を拡張する「プラグイン」を組み合わせて構築する、業務アプリケーションの開発・実行・運用プラットフォームです。
アプリは、入力フォーム、データベース、一覧表示、検索、集計などの機能を備えた業務アプリケーションであり、主にドラッグ&ドロップ操作で作成します。また、より高度な画面表現や機能が必要な場合は、JavaScriptやCSSによる「アプリカスタマイズ」で補完できます。
プラグインは、kintoneアプリに機能を追加するための拡張パーツです。例えば、AmiVoice APIのような外部サービスとの連携や、独自の業務ルールの実装など、標準機能だけでは難しいことを実現できます。
プラグインはJavaScriptで開発しますが、今回は生成AIを活用して実装しました。その方法についても簡単にご紹介します。
今回のサンプルアプリにおけるプラグインとアプリカスタマイズ(カスタマイズJS)の一覧です。

kintoneアプリ・プラグイン一覧
AmiVoice APIとの連携はプラグインで実装します。プラグインで取得したデータはkintoneアプリ側で利用し、表示方法や業務フローへの組み込みは要件に応じて柔軟にカスタマイズできます。なお、AmiVoice APIの仕様は公開マニュアルに準拠します。参照するマニュアルは以下のとおりです。
音声テキスト化アプリでは、同期HTTPインタフェースを利用して音声認識を行います。
同期 HTTP インタフェース | AmiVoice API マニュアル | AmiVoice Cloud Platform
単語登録管理アプリでは、新規単語登録・編集を行うAPIを呼び出します。
ユーザー辞書登録API | AmiVoice API マニュアル | AmiVoice Cloud Platform
月次料金表示アプリは、使用量CSV取得APIを用います。ただし、インタフェース仕様についてはマニュアル掲載しておりませんので、詳細が必要な場合はお問い合わせください。
使用量・利用料金の確認 | AmiVoice API マニュアル | AmiVoice Cloud Platform
2 開発
従来の開発が「クラスやメソッドを設計してコードを書く仕事」だとすると、kintoneでのアプリ作成は「業務とデータの関係を設計して設定する仕事」に近いものです。要件定義の重要性は変わりませんが、クラス設計やコーディングに費やしていた時間の多くを、業務設計や運用設計に振り向けられるようになります。
2.1 プラグイン
プラグインの開発には生成AIを活用しました。まず要求仕様書で要件を整理し、その内容を基にJavaScriptコードを生成しています。要求仕様書には、実現したい機能要件に加え、アプリの機能仕様や連携先APIの仕様・参照資料も記載し、生成AIが実装に必要な情報を参照できるようにしました。
生成AIを活用すると開発のハードルは大きく下がりますが、成果物の品質は要求仕様書の出来に大きく左右されます。要件が曖昧だと修正のやり取りが増え、コードの複雑化や保守性の低下につながることがあります。そのため、簡潔であっても実現したい機能や動作を具体的に記述することが重要です。
参考として、「単語登録管理プラグイン」を作成した際に使用した要求仕様書(vocabulary-management-app_requirements.md)を添付します。とはいえ一発で完成したわけではなく、公開している 1.0.0 になるまでには何度か手直しをしています。
AmiVoiceユーザー辞書登録機能の要件定義
requirements/vocabulary-management-app_requirements.md
概要:表形式で表示した単語一覧を、辞書登録APIを用いて一括登録するGUIアプリ。新規に単語一覧の表を作ること、および、すでに登録されている単語を読み出して編集、追加することができる。単語登録はエンジンごとに可能で、プロファイルID(profileID)で分けることができる
1 単語一覧を表示するためのユーザ入力
1) APIキー:登録単語の読み出し、上書き登録に用いる
2) 登録先エンジン名のリスト(エンジン名(表示用)と接続エンジン名(APIパラメータ))
エンジン名 接続エンジン名
日本語E2E_汎用 -a2-ja-general
中国語E2E_汎用 -a2-zh-general
多言語E2E_汎用 -a2-multi-general
日本語E2E_汎用バッチ -a2b-ja-general
中国語E2E_汎用バッチ -a2b-zh-general
多言語E2E_汎用バッチ -a2b-multi-general
会話_汎用 -a-general
会話_医療 -a-medical
会話_金融 -a-bizfinance
会話_保険 -a-bizinsurance
英語_汎用 -a-general-en
3)プロファイルID入力(登録済のprofileIDを選択するか新規にフリー入力(半角アルファベットと数字、ハイフン、アンダースコアで構成))
4) 登録単語セット 表記、読み、クラス
クラスの選択肢=
"classnames": [
"固有名詞",
"名前",
"名前(名)",
"駅名",
"地名",
"会社名",
"部署名",
"役職名",
"記号",
"括弧開き",
"括弧閉じ",
"元号"
]
5) アクションボタン
profileIDの読み出しボタン、登録単語の読み出しボタン、登録ボタン
2 GUI仕様
表の項目:
タイトル行:表記、読み、クラス
登録単語行:表記入力ボックス、読み入力ボックス、クラス入力ボックス(クラス選択肢のドロップダウンリスト)
3 単語登録APIのインターフェース仕様
下記マニュアルを参照
https://docs.amivoice.com/amivoice-api/manual/user-dictionary-api
https://docs.amivoice.com/amivoice-api/reference/profilewords/get-profile-words
https://docs.amivoice.com/amivoice-api/reference/profilewords/get-profiles
https://docs.amivoice.com/amivoice-api/reference/profilewords/set-profile-words
4 ユースケース
1)新規のprofileIDに登録単語をリストとして登録する
APIキーを入力する
任意のprofileIDを入力する
表に登録したい単語の表記、読みを入力し、クラスを選択する
登録ボタンを押す
2)既存のprofileIDに登録されている単語を編集・追記する
APIキーを入力する
profileIDの読み出しボタンを押す
profileIDを選択する
登録単語を表に読み出す
表の単語の表記、読みを入力し、クラスを編集する。
登録ボタンを押す
「単語登録管理アプリ」の要求仕様書
今回作成した3つのプラグインは、GitHubのリリースページの Assets から取得いただけます。
最新版は以下のリリースページをご参照ください。
リリースページ:GitHub Releases · advanced-media-inc/amivoice-api-kintone-samples/releases/latest
2.2 アプリ
アプリは、kintoneが得意とするフォーム機能を利用して作成します。下記は「音声テキスト化アプリ」のフォーム例で、音声ファイルのアップロードと認識エンジンの選択を行うシンプルな構成です。
フォームの設計にあたっては、生成AIに要求仕様書を読み込ませることで、必要な項目や画面レイアウトの候補を提案させることができます。そのため、フォーム設計の経験が少なくても、要求仕様を基に効率よくアプリを構築できます。

音声テキスト化アプリのフォーム設計
今回のアプリのテンプレートをGitHubのリリースページに置きましたので自由にお使いください。
音声データテキスト化アプリ – テンプレート
単語登録管理アプリ – テンプレート
月次料金表示アプリ – テンプレート
さらに、単語登録管理アプリと月次料金表示アプリを安全に利用するために、APIキーをマスクするためのカスタマイズJavaScriptはこちらです
3 実行
それでは、すべてのコンポーネントを適用した状態でアプリを実行してみます。
まず、kintoneのシステム管理画面から、3種類のプラグインを読み込みます。

プラグインを読み込んだ状態
次に、各アプリの設定画面を開き、利用するプラグインを追加します。この操作は、プラグインを利用するすべてのアプリで共通です。

今回は、音声テキスト化アプリに「AmiVoice STTノード」プラグインを追加します。

プラグインを追加したら、歯車アイコンから設定画面を開き、ご自身のAPIキーを登録します。登録したAPIキーはkintoneのプロキシ設定に保存され、AmiVoice APIへの送信時にkintoneがAuthorizationヘッダーとして付加します。アプリの利用者がブラウザーからAPIキーを読み取ることはできません。


設定完了後、アプリの更新が求められるため、画面の案内に従って更新を実施します。


以上で準備は完了です。アプリ画面に戻り、[+]ボタンをクリックして入力フォームを開きます。

音声ファイル、利用する音声認識エンジン、ログ保存の有無(「ログ保存あり」/「ログ保存なし」)を選択し、[保存]をクリックします。単語登録管理アプリで登録した単語を使う場合は、「profileID」にそのプロファイルIDを入力します。処理が完了すると、音声認識結果が「amivoice_result」フィールドに出力されます。

音声ファイルと音声認識エンジン選択

音声テキスト化 実行結果
各アプリの利用手順については、リポジトリ内のガイドをご参照ください。本資料ではアプリ画面のみ掲載します。
本サンプルは参考実装として提供しています。実運用にあたっては利用者の責任において評価・適用してください。フォーム構成や画面レイアウトはあくまでサンプルですので、業務内容に応じて自由に変更・拡張し、より使いやすいアプリへカスタマイズしていただくことを期待しています。

単語登録管理アプリの入力画面

月次料金表示アプリの入力画面
両アプリに共通のアプリカスタマイズJavaScript ami_maskkey.jsは各アプリのアプリの設定から適用します

アプリカスタマイズJavaScriptの適用方法
4 おわりに
このようにkintoneは、アプリにプラグインを組み合わせることで、プログラミングの知識が少なくても柔軟な業務システムを構築できるプラットフォームです。プラグインは複数のアプリで再利用できるほか、生成AIを活用することで、要求仕様書や公開マニュアルを基に実装を効率よく進めることができます。利用者は業務課題の整理やアプリの企画・設計に注力しながら、AmiVoiceAPIを活用した音声認識機能を比較的容易に業務アプリへ組み込むことが可能です。ぜひ自部門の業務改善や業務効率化にご活用ください。
これからも私たちは、音声認識をベースに皆様のビジネスに寄り添った情報を発信していきます。
最後までお読みいただきありがとうございました。
この記事を書いた人
-

スパイス犬
柴犬とインドカレーをこよなく愛する“ブラウンカラー”エンジニア。日々の暮らしにスパイスを加えたいという思いから、心機一転、音声認識の世界に飛び込みました。
最近、愛犬がスバル車のエンジン音を聞き分けることに気づき、犬の聴覚を音声認識技術に活かせないかと密かに妄想中です。
よく見られている記事
新着記事
- kintoneでもAmiVoice -筋斗雲と順風耳-
- 生成AI向けにAmiVoice APIマニュアルを整理 -Markdownとllms.txtの提供-
- 音声認識APIの選び方。失敗しないための4つの比較ポイント
