AlexaスマートホームAPIのTypeScript用タイプ定義の生成

はじめに

AlexaスマートホームスキルをTypeScriptで開発するためのタイプ定義の生成方法について紹介します。

TypeScriptの「型付された言語」としての強みを活かすためには、スキルで使うAPIのタイプ定義が必要です。ところがスマートホームスキルにはSDKが用意されておらず、このタイプ定義が存在しません。

ネット上であれこれ探しているうちに、スマートホームスキルのAPIでやり取りするメッセージのJSONスキーマが定義されていることを知りました。このJSONスキーマからTypeScriptのタイプ定義を生成することができたので、その方法について紹介します。

準備

タイプ定義の生成には下記の開発環境を使用します。

  • Visual Studio Code (VS Code)
  • Paste JSON as Code (VS Codeの拡張機能)
    オリジナル版とリフレッシュ版が存在します。筆者はリフレッシュ版をインストールしました。

JSONスキーマの入手

下記のサイトから入手します。

Alexa Smart Home Message JSON Schema

alexa_smart_home_message_schema.jsonの内容をVS Codeに取り込みます。ファイルをダウンロードするか、新しいファイルにCopy & Pasteします。

タイプ定義の生成

取り込んだJSONスキーマを開いた状態で、VS Codeのメニューから下記を実行します。

表示 > コマンドパレット > Open quicktype for JSON Schema

エディタ画面が分割され、右側にJSONスキーマから生成されたタイプ定義が表示されます。これをファイルに保存します。

おわりに

スマートホームスキルのAPI呼び出しでは、Webサービスを直接叩くことになります。その際にそこそこ複雑な構造を持ったデータをやりとりします。筆者の場合は、タイポはもちろん、データ構造の取り違えによるランタイムエラーにも苦しめられていました。

このタイプ定義のおかげで、VS Codeによるコード補完も働き、不用意なミスによるエラーが減ってかなり快適になりました。

変更履歴

日時内容
2021/10/13初版リリース

Alexa-Skill
スポンサーリンク