ask-cliで作成したAlexa SkillプロジェクトをGit管理する

Alexa Skillをバックエンドから丸ごと簡単に作るには、ask-cliを使うのが便利です。

ask-cliのセットアップ

事前にask initでAmazonとAWSの認証を済ませる必要があります。設定方法などは「Alexa CLI(β版)をインストールして、スキル一覧を表示させてみた」をみてください。

ask-cliでプロジェクトを作成する

ask newコマンドで雛形一式を作成することができます。-n {skill名} オプションをつけない場合、対話形式でスキル名の入力を求められます。

$ ask  new
? Please type in your new skill name: example
New project for Alexa skill created.

$ cd example
$ ls -a
.ask	lambda		models		skill.json

ask-cliで作成されたプロジェクトのファイル構成

ask newでプロジェクトを作成した場合、alexa-sdkを使ったAWS Lambda(Node.js)をバックエンド構成となります。そのためディレクトリ構成は以下のようになります。

$ tree -L 3
.
├── lambda
│   └── custom
│       ├── index.js
│       ├── node_modules
│       ├── package-lock.json
│       └── package.json
├── models
│   └── en-US.json
└── skill.json

4 directories, 6 files

作成したプロジェクトをGit管理下におく

一見以下のような流れでGitで管理できるAlexa スキルプロジェクトが作れそうに見えます。

$ ask new -n YOUR_SKILL_NAME
$ cd YOUR_SKILL_NAME
$ git init
$ git add ./
$ git commit -m "init alexa project"

しかしask newコマンドはnpmのライブラリの追加も実施するため、このままだとnode_modules/配下にある大量のファイルもGit管理になってしまいます。

ということで、以下のような形でgitignoreの設定をしておきましょう。

$ echo "node_modules/" > .gitignore
$ git add ./
$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

	new file:   .ask/config
	new file:   .gitignore
	new file:   lambda/custom/index.js
	new file:   lambda/custom/package-lock.json
	new file:   lambda/custom/package.json
	new file:   models/en-US.json
	new file:   skill.json

これでask-cliから作ったプロジェクトをGitで管理することができるようになりました。

[補足].ask/configってなに?

ask newで作成したものには、.ask/configというファイルが含まれます。スキルのデプロイ設定などをまとめているもので、デフォルト状態では秘密にすべき情報は含まれません。

{
  "deploy_settings": {
    "YOUR_PROFILE": {
      "skill_id": "",
      "was_cloned": false,
      "merge": {
        "manifest": {
          "apis": {
            "custom": {
              "endpoint": {
                "uri": "ask-custom-example-skill"
              }
            }
          }
        }
      }
    }
  }
}

Comment