blog技術ネタ、読書記録、など。2015年から人生をやり直し中です。今回は、DSLでAlexaスキルが作れる"litexa"を触ってみたのでその話をします。litexaとは?litexaは、Alexaゲームチームが開発した、ゲームのようなマルチターンなAlexaスキルを開発することに特化したDSL(ドメイン固有言語)です。通常、Alexaスキルの開発は、node.jsやpython、Java等を使うのが一般的だと思いますが、それよりももっとシンプルな記述でスキル開発ができます。実際にAlexaゲームチームではこれを使って20以上のAlexaスキルをリリースしているそうです。セットアップでは早速やってみましょう。litexaではコードをコンパイルして最終的にはJavaScrip/Node.jsのコードを生成しますので、Node.js(8.11以上)がインストールされていることが前提になります。デプロイも行う場合には、いろいろと追加で必要になるものがありますが、それは別途説明します。litexaのcoreパッケージをインストールします。coreパッケージは、コンパイラやコマンドラインのツールセットなどを含んでいます。@litexa/coreこれでlitexaコマンドが使えるようになりました。プロジェクトの作成ではプロジェクトの新規作成をしてみます。generate質問に答えていきます。(.)プロジェクトをどこにディレクトリに生成するかを聞いてきます。デフォルトはカレントディレクトリです。CoffeeScriptおそらくコンパイル後に生成されるコードの言語だと思います。今回は"JavaScript"にしておきます。dependencies)コードをどのように構成するか?を聞いてきます。litexa"を選択します。(litexa-sample)プロジェクト名を聞いてきます。デフォルトはフォルダ名と同じになるようです。(litexa-sample)スキルストアでの名前を聞いてきます。残念ながら日本語は通らないようです。このまま進めましょう。こんな感じでファイルが生成されます。skill.jsサンプルのコードが入った状態になっていますので、少しだけコードを見てみましょう。litexa/main.litexaを開きます。名前があれば名前を言う、なければ聞く、という流れになっているので、永続セッションみたいなのもできそうです。Alexaスキルのやり取りを知っていると、シンプルで直感的ナノがわかると思います。この状態でテストが実行できます。(40ms)テストは問題ないようです。ハッピーパスのテスト、ヘルプのテスト、あとは自分でユーティリティ的なヘルパーを作った場合などのユニットテストができるようです。デプロイコードをいじりたいところですが、先にデプロイを試してみましょう。CLIが必要になりますので事前に準備しておいてください。IAMの設定とかも必要です。litexaでは、デプロイ用のパッケージはcoreとは別になっていますので、npmインストールします。@litexa/deploy-awsでは、デプロイ用の設定を行います。litexa.config.jsを開いてください。CLIのプロファイル名を設定します。S3のバケットはなければ作成してくれます(ということはIAMでその権限が必要だということになります)。CLIのプロファイルは以下で確認できます。CLIのプロファイル確認。プロファイルを設定している方は--profileでプロファイル名を指定する必要があります。CLIのプロファイル確認。-l私の環境だとこうなりました。'ask-cli-user'では、デプロイしてみます。deployこんな感じで処理が行われます。76226msDynamoDBのテーブル作成、lambdaへのデプロイ、IAMロールの設定、S3バケットへのアップロード、そしてAlexa開発者コンソールへの登録、などが一気に行われているようです。AWSとADCの設定がどうなっているか見てみましょう。お、スキルができていますね。設定がなければデフォルトは英語のようです。対話モデルもできています。エンドポイントの設定もされていますね。関数が作成されているようです。