ボクココ

個人開発に関するテックブログ

サーバーレスな開発でもオススメな Twilio 利用

ども、@kimihom です。

f:id:cevid_cpp:20190828162810j:plain

最近はサンフランシスコ Twilio カンファレンス 帰りで Twilio の記事ばかり書いている気がする。今回も Twilio ネタ。

Twilio といえば コミュニケーション API ではあるんだけど、最近はサーバーレスな開発でも便利に使えるのでその視点で記事を書いてみる。

Twilio でのサーバーレス開発

Twilio では Twilio Functions (NodeJS Lambda) と Twilio Assets (S3) の2つが提供されている。そして何より、最近はそれをまとめて開発できる Twilio CLI が提供され、組み合わせの開発が簡単になった。この Twilio CLI が今年のカンファレンスで発表されて、圧倒的に便利になっている。

AWS で、わざわざ S3 と Lambda を使うためだけに新しくアカウントを開設するってのは Too Much な気がしていて、本当にちょろっと開発環境を手に入れたいって場合に便利だ。現時点で Twilio アカウントを持っている場合にはなおさらだ。

てことで利用方法をさっとまとめてみよう。

Twilio CLI のインストール

npm install twilio-cli -g
twilio plugins:install @twilio-labs/plugin-serverless
twilio login

twilio serverless:init example
cd example

twilio serverless:start
<do awesome code>

twilio serverless:deploy

ディレクトリ構成は以下のようになる。

- assets
- functions
- node_modules
package-lock.json
package.json

functions に入れる Javascript コードは AWS Lambda と全く同じ構成で書ける。好きなように npm からパッケージを入れることもできるので、何でもありである。

// functions/example.js
exports.handler = function(context, event, callback) {
  // do awesome code
}

assets は .private.js のようなファイル名にすれば非公開、通常のファイル名であれば公開という形になる。最終的に assets も functions もそれぞれ公開のものは URL が割り当てられる。https://myapp-1111-dev.twil.io/example といった形になる。

ここで現時点での致命的な問題を伝えておくと、ログの表示ができないという点がある。ローカルで立ち上げているのはターミナル上に出るから問題ないんだけど、最終的にデプロイしたもののログが今は見ることができない。ただ、これは時間の問題でそのうち間違いなく見られるようになるだろう。

Twilio の提供するデータベース

んじゃデータベースはどうすんの?って話になってくるだろう。そこで Twilio は Twilio Sync っていう Firebase チックな同期データベースを提供してくれている。そして、この Twilio Sync API の呼び出しも、Twilio Functions 内で簡単にできる。

let sync = Runtime.getSync();
sync.documents(syncDoc).update({test: "hoge"});

この Runtime ってのは Twilio Functions から呼び出せるクラスだ。もちろん、Node.js の request などを npm から追加して外部 サーバーへ API を投げることも可能である。

終わりに

私自身がんまり AWS にそこまで詳しくないってこともあるんだけど、アカウントを完全に独立させて公開 URL と実行可能なサーバー環境を手軽に持てる点に Twilio の良さを感じている。

Heroku でがっつりアプリケーション開発ってのが私にとってはベースではあるんだけど、本当にちょろっとしたコードを公開したいって場合に Heroku は Too Much な感じがしなくもない。そんな時には Twilio の開発環境は便利である。

もちろん、こうしたサーバーレスな環境の上で Twilio の各コミュニケーション API を利用するってのが Twilio の望む方針なんだろうけど、無理してコミュニケーション API を使わなくても、サーバーレス開発だけで利用できるという点が重要な点だ。

そんな訳で Twilio で Happy Coding!