はじめに
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 | 初版リリース |