6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Alexaスキル開発Tips:メモリ効率と発話UXを高める2つの設計工夫

Last updated at Posted at 2025-08-21

データを AI で作成する環境が整い、お試しで個人アカウントにて Alexa スキルを開発しました。
本記事では、その時に気を付けた点など、Alexa スキル開発経験者向けに Tips を執筆させて頂きました。


1. index.js はスリムに! メモリ効率重視のモジュール設計

Alexa スキルでは、Intent が増えるたびに index.js が肥大化しがちです。
しかし、Lambda では読み込むモジュールが多いほど Cold Start が遅くなる傾向があるため、index.js は極力スリムに保つ設計にしました。

このプロジェクトでは、実際の処理は IntentHandler 側に完全に分離し、index.js では"関数の呼び出し"のみ行う設計にして、メモリ効率の良い作りを心掛けました。

処理の分離パターンコード

IntentHandler の処理をすべて外部ファイルに分離し、index.js 側では必要になったタイミングでモジュールを読み込むようにしています。

/src/index.js
const PracticeIntentHandler = {
	async canHandle ( handlerInput )
	{
		const { canHandle } = require( "./handler/PracticeIntentHandler.js" );
		return await canHandle( handlerInput );
	},
	async handle ( handlerInput )
	{
		const { handle } = require( "./handler/PracticeIntentHandler.js" );
		return await handle( handlerInput );
	}
};

この構成のメリット:

  • 必要になるまで require() されなくなり、Cold Start 時のメモリ負荷を軽減
  • index.js の見通しが良くなり、保守性も向上

このように、処理を IntentHandler ファイルに丸投げする構成は、スケーラブルなスキル設計に非常に有効です。
Intent が沢山あるようなスキルで効果が実感できると思います。


2. 「聞き返し地獄」回避! 発話失敗時の試行回数制限

Alexa がユーザーの発話を正しく認識できないと、FallbackIntent が発火します。
しかし、これが無限ループ状態になるとユーザー体験が悪化してしまいます。

解決策:試行回数制限パターンコード

次のように、試行回数をセッションに保持し、制限回数を超えたら強制的に正解として次の処理に流すようにしています。

/src/handler/PracticeIntentHandler.js
// フレーズの発話認識リトライ残り回数の初期化
sAttr.resolutionRetryRemain = config.RESOLUTION_RETRY_LIMIT;
/src/handler/FallbackIntentHandler.js
// フレーズの発話認識リトライ残り回数のデクリメント
sAttr.resolutionRetryRemain--;

// フレーズの発話認識リトライ残り回数が 0 に到達した場合
if ( sAttr.resolutionRetryRemain <= 0 )
{
	// 強制的に正解にして次のインデックスへ移動
}

UX上のポイント:

  • 「聞き取れなかったら何度でも聞き返す」のではなく、脱出できる導線を用意し、ユーザー体験のストレスを軽減させます。

おわりに

https://www.amazon.co.jp/dp/B0F9YDLWJK/
良かったら Alexa スキルで実際の挙動をお試しください。
もしスキルを気に入って頂けましたら、シェアしてもらえると嬉しいです!

(2025/07 頃執筆)


株式会社ボトルキューブではお仕事を募集中です。
お問い合わせは下記リンク先のフォームからご連絡ください。
https://www.bottlecube.co.jp/contact

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?