Twilio CLI（セットアップ編）

:::note alert
2023年5月1日を持ちまして、株式会社KDDIウェブコミュニケーションズのTwilioリセール事業が終了したため、本記事に記載されている内容は正確ではないことを予めご了承ください。
:::

# はじめに

Twilio CLIの3.0の[記事](https://qiita.com/mobilebiz/items/07f5b5a63cb747e476ac)もありますので、参考まで。

みなさん、こんにちは。
KDDIウェブコミュニケーションズのTwilio事業部エバンジェリストの高橋です。

今回から何回かに分けて、Twilio CLI（Command Line Interface）について説明をします。
Twilio CLIは、今年のSIGNALイベントで発表されたTwilioの新機能で、その名の通りコマンドベースでTwilioの操作ができるものです。
従来であれば、管理コンソールにログインして作業をしなくてはならなかった操作の多くが、コマンドライン（いわゆる黒い画面ｗ）から操作ができるようになります。もっとわかりやすくいえば、Twilioっていうコマンドができたのです。

```sh
$ twilio
unleash the power of Twilio from your command prompt

VERSION
  twilio-cli/1.6.1 darwin-x64 node-v12.12.0

USAGE
  $ twilio [COMMAND]

COMMANDS
  api            advanced access to all of the Twilio APIs
  autocomplete   display autocomplete installation instructions
  debugger       explore debug events generated during your Twilio use
  email          sends emails to single or multiple recipients using Twilio SendGrid
  feedback       provide feedback to the CLI team
  help           display help for twilio
  login          add a new profile to store Twilio Project credentials and configuration
  phone-numbers  manage Twilio phone numbers
  plugins        list installed plugins
  profiles       manage credentials for Twilio profiles
```

## 何ができるの？

Twilio CLIを使うと、Twilioが提供しているAPIの機能の多くが、コマンドから実行できます。たとえば、電話番号を購入したり、電話をかけたり、FAXを送信することもできます。
また、いくつかTwilio CLIにはプラグインが用意されていて、それらを利用することで、例えばTwilio上で生成されたログを**リアルタイムに**画面に表示したり、FunctionやAssetsなど、従来は管理コンソールでしか操作ができなかったサーバーレスの開発をローカルで行い、デプロイをすることができます。

それぞれの機能の詳しい内容は次回以降に紹介するとして、今回はセットアップについて解説をします。

# セットアップ

各OSごとにセットアップ方法が異なりますので注意してください。

## Mac OS X

もっとも簡単なインストール方法は、[Homebrew](https://brew.sh/)を使うことです。もしインストールされていない場合は、[Homebrewのサイト](https://brew.sh/)から予めインストールをしておいてください。

Homebrewがインストールされていれば、あとは以下のコマンドでTwilio CLIのインストールが可能です。

```sh
brew tap twilio/brew && brew install twilio
```

また、すでにインストール済みのTwilio CLIをアップデートするには、以下のコマンドを利用します。

```sh
brew upgrade twilio
```

## Windows

CLIのセットアップには、Node.jsのバージョン8以降が必要になります。バージョンの調べ方は以下のとおりです。

```sh
node -v
```

もし、Node.jsがインストールされていない、もしくはバージョンが低い場合は、[Node.jsのダウンロードページ](https://nodejs.org/en/download/)からWindowsのインストーラーをダウンロードして、セットアップを完了させておいてください。

Node.jsがインストールできていれば、以下のコマンドを使ってTwilio CLIのインストールが可能です。

```sh
npm install twilio-cli -g
```

また、すでにインストール済みのTwilio CLIをアップデートするには、以下のコマンドを利用します。

```sh
npm install twilio-cli@latest -g
```

## Linux

主要なLinux系OSにもインストールは可能ですが、こちらはセットアップ方法が少々面倒なので、Linuxで使いたい方は[こちらのドキュメント](https://www.twilio.com/docs/twilio-cli/quickstart)を参考にしてください。

## セットアップ後の作業

上記手順でセットアップは完了しますので、試しに以下のコマンドを入力してみましょう。

```sh
twilio
```

![スクリーンショット 2019-10-15 11.26.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/cd451e99-2d2c-bd2e-1d3f-b696026b9c20.png)


こんな感じでコマンドの一覧が表示されれば、とりあえずセットアップはできています。
しかし、コマンドが多くて覚えるのが大変ですし、毎回フルスペルを入力するのも面倒ですよね。

そこで、入力作業を軽減するためのオートコンプリート機能（入力途中でTABキーを使って入力補完をする機能）をセットアップしましょう。
※ここからの作業はMac OS X（bashシェルを利用）で解説します。

- 以下のコマンドを入力します。

```sh
twilio autocomplete
```

![スクリーンショット 2019-10-15 11.13.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/e22908da-97c6-3a93-d025-937be56055d9.png)

使っているシェルプログラムの種類によって、表示される内容がことなりますが、概ね上記のように次に何をするべきかが表示されます。
bashを使っている場合は、上記の指示通りに以下のコマンドを入力します。

```sh
printf "$(twilio autocomplete:script bash)" >> ~/.bashrc; source ~/.bashrc
```

何も表示されずに実行が終了しますが、このコマンドによって個人のルートディレクトリにある（なければ新規作成される）.bashrcファイルに数行追加されます。
試しに、以下のコマンドの入力途中でTABキーを2回押すと、コマンドの入力補完や、サブコマンドの一覧表示がされることを確認しましょう。

ちなみに、Mac OS Xで.bashrcを記述しても、ターミナル起動時には自動的に読み込まれないため、ルートディレクトリに.bash_profileを作成し（すでにあればそれを開いて）以下のコマンドを記載します。

```sh
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
```

# プロファイルの割り当て

インストール直後のCLIは、どのTwilioアカウントにも紐付いていません。そのため、まずはアカウントとの紐付けを行いましょう。
アカウントを紐付けるためには、紐付けたいTwilioアカウントの[管理コンソールにログイン](https://jp.twilio.com/login/kddi-web/)します。
ダッシュボードページから、紐付けたいアカウントの**ACCOUNT SID**と**AUTH TOKEN**を調べておきます。

![Twilioダッシュボード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/d1a69d42-e566-fd45-3e1a-ff6a2420e5c1.png)

では、アカウントを紐付けていきます。
以下のコマンドを入力します。

```sh
twilio profiles:add
```

続けて以下の質問がくるので、それぞれ答えます。

質問文|解説
:--|:--
? Shorthand identifier for your profiles:|プロファイルを識別するための名前（例:Main）
? The Account SID for your Twilio Project:|紐付けたいアカウントのAccountSid（ACから始まる文字列）
? Your Twilio Auth Token for your Twilio Project:|上記AccountSidに対するAuthToken

実行例
![CLI_ADD_PROFILE (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/814482d9-bd57-3098-3b19-249d47871c5a.png)

もしこの時点で、以下のようなエラーが出た場合、PCのコンピュータ名が64文字以上になっている可能性があります。試しに文字数を少なく設定して再度試してみましょう。

```sh
 » Could not create an API Key.
```

プロファイルの割り当てが成功しているかどうかは、次のコマンドで確認できます。

```sh
twilio profiles:list
```

実行例
![CLI_LIST_PROFILE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86046/ab729ffc-5d59-32e4-38b9-9364b8843a56.png)

こんな感じで割り当てられたプロファイルが表示されればOKです。
Twilio CLIでは、複数のプロファイルを作ることができます。プロファイルを追加するには、先程の`twilio profilies:add`を使います。
このように、プロジェクトを複数持っている場合は、それぞれのプロファイルを切り替えながら利用することができます。
プロファイルの切り替えは、以下のコマンドで行います。

```sh
twilio profiles:use プロファイル名
```

# まとめ

今回はセットアップについて解説をしました。
Twilio CLIを使えば、管理コンソールに入らなくてもいろいろな作業ができるので、デベロッパーの皆さんはぜひ使ってみてください。
次回は、Twilio CLIのいくつか代表的な使い方をご紹介したいと思います。

---
### Twilio（トゥイリオ）とは

https://twilio.kddi-web.com
Twilioは音声通話、メッセージング（SMS/チャット）、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。