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

Alexa Skillをバックエンドから丸ごと簡単に作るには、ask-cliを使うのが便利です。 ask-cliのセットアップ 事前にask initでAmazonとAWSの認証を済ませる必要があります。設定方法などは「 […]

広告ここから
広告ここまで

目次

    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"
                  }
                }
              }
            }
          }
        }
      }
    }
    

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark