Pivotal Web ServicesからのSendGrid利用

菊田(@kikutaro_)です。SendGridチームが過去に公開しているブログやスライドを調べていたのですが、様々なクラウドプラットフォームでSendGridが利用できることに驚きました。Microsoft AzureやIBM Bluemix、Herokuをはじめ、IDCFクラウド、さくらのクラウド…等々。

本日のエントリでは、以前に私が参加したCloud Foundry Tokyo Meetupで知った「Pivotal Web Services」におけるSendGridの利用方法を紹介させていただきます。

Pivotal Web Servicesとは

Pivotal Web Services(以降、PWS)は、Pivotal(EMCとVMwareが2013年に設立)が提供しているPaaS型のクラウドサービスです。PWSは、オープンなクラウド構築基盤であるCloud Foundryを利用しています。Cloud Foundryを利用した他のクラウド環境としてはIBM Bluemixなどが有名です。

PWSでは、1年間87ドルの無償枠があり、この無償枠を利用する間はクレジットカード情報の登録は不要です。GoやRuby,PHP,Node.js,Python,Javaなど様々な言語のアプリケーションを動かすことができます。

Pivotal Web Servicesの利用登録

はじめてPWSを利用する際の登録手順を紹介します。既にアカウントを持っている方は「SendGrid on Marketplace」まで進んでください。

以下のページから氏名とメールアドレス、パスワードを入力して、サインアップします。
https://account.run.pivotal.io/sign-up
PivotalWebServiceSignUp
「Sign Up」を押すと、アクティベーションのためのメール送信が行われます。
PwsActivation
最初に入力したメールアドレス宛てに「Pivotal Account Verification」というタイトルのメールが届いているはずなので、メールの中にある「Verify your email address」のリンクをクリックしてアクティベートします。やっぱりメールって大事ですね!
PWSからのメールでVerify
メニューから「Pivotal Web Services」を選択します。
PWSのメニューを選択
free trialの登録をします。ニュースメール等が不要であればチェックを外して次に進みます。
free trialのsign up
次に、SMS(ショートメールサービス)かボイスコールによる承認が求められます。今回はSMSを利用しました。Countryは「Japan」を選択し、Mobile NumberにはSMSを送信する携帯番号を「8190xxxxxxxx」の形式で入力します。
free trial情報入力
携帯電話にSMSが送られてくるので、その中のコードを入力します。
コード入力
続けて、Organization Nameの設定で、組織名やプロジェクト名など入力します。ここでは「kikutaro-sandbox-org」としました。
Organization Nameの設定
以上でPWSのフリートライアル登録は完了です。

Cloud Foundry Command Line Interface (cf CLI)の利用

Cloud Foundry Command Line Interfaceとは

PWSでは、Webの管理画面が充実しているため、ブラウザからクラウド環境の設定などが簡単にできます。一方で、Cloud Foundryには、Cloud Foundryで共通して利用できるコマンドインタフェース「cf CLI」があります。他のクラウドサービスでCloud Foundryを使ったことがある場合は、こちらを利用すると学習コストが低く済みます。

今回は、このcf CLIを利用して操作していきます。cf CLIのインストールに関しては、Pivotalのサイトからご利用のOS(Windows/Mac/Linux)に合わせてダウンロード、インストールしてください。ここではcf CLIのインストールに関する詳細は省略します。不明点があれば以下、PWSのドキュメントを参照してください。

cf CLIからPWSへログイン

cf login
API endpoint: https://api.run.pivotal.io

Email> 登録したメールアドレスを入力

Password> 登録したパスワードを入力
Authenticating...
OK

Spaceの作成

Spaceはアプリケーションを配置する場所で、デフォルトで「development」というSpaceが作成されています。「development」をそのまま利用しても問題ありませんが、ここでは「KkeSendGrid」というSpaceを次のコマンドで作成します。

cf create-space KkeSendGrid

画面で確認するとダッシュボードにKkeSendGridというSpaceが作成されています。
Spaceの作成
次に、作成したSpaceをcf CLIのコマンドがメインで利用するようにtarget設定をしておきます。

cf target -s KkeSendGrid

では、SendGridを利用していきましょう。

SendGrid on Marketplace

SendGridの利用設定

PWSではMarketplaceという形で様々なサービスが公開されています。SendGridもMarketplaceで利用可能なサービスとなっており、メール送信機能を提供しています。

Marketplace内のSendGrid
freeプランでも1カ月で25000通のメールが送ることができ、ダッシュボードやWeb APIなどの機能も使うことができます。

SendGridを利用するには、Spaceに対してサービスを登録します。コマンドでプラン名(free)、サービス名(ここではKkeSendGridServiceとしました)を指定します。

cf create-service sendgrid free KkeSendGridService

OKのメッセージが出るとともに、PWSに登録したメールアドレスへ「Thank you for purchasing SendGrid」「Your product was successfully purchased」といったタイトルのメールが飛んできています。

SpaceのService一覧に「KkeSendGridService」というサービスが作成され、下図のような「Manage」リンクが表示されます。ここからSendGridのダッシュボードをみることができます。
図12
以下がSendGridのダッシュボード画面です。まだメールを送信していないのでN/Aとなっています。
SendGridのダッシュボード
SendGridのダッシュボード画面についてはドキュメントを参照してください。

spring-sendgridサンプル

メールの送信を試してみましょう。SendGridではRuby、Go、Python、PHP、C#、Javaなど様々なプログラミング言語向けライブラリが揃っています。

PivotalはJavaのWebフレームワークであるSpring Frameworkにも注力しており、今回はCloud FoundryのサンプルにあるSpringとSendGridを利用してみます。

https://github.com/cloudfoundry-samples/spring-sendgrid

spring-sendgridを試すには以下のツールが必要です。

まずはじめに、先のGitHubからCloneします。

git clone https://github.com/cloudfoundry-samples/spring-sendgrid.git

Cloneしたフォルダ内にあるmanifest.ymlを開き、applicationのnameに「spring-kke-sendgrid」、services名の「sendgrid」を事前に作成したサービス名「KkeSendGridService」に編集します。

gradlew assemble

正常にビルドができてwarが生成されたら、あとは「cf push」コマンドでデプロイするだけです。

cf push

エラーなくデプロイが完了すれば準備完了です。

SendGridによるメール送信

PWSへデプロイされたアプリを「View App」から確認します。
SpringSendGrid
Spring SendGridではWebの簡易メーラーのようなUIが用意されています。メール送信の宛先などを入力して「Send」ボタンを押します。
SpringSendGridのView
メールの送信が完了したら、SendGridのダッシュボードを使って、送信状況を確認してみましょう。
SendGridで送信状況を確認
メール送信の受付(Processed)、受信側メールサーバが受付(Delivered)、メールの開封(Opens)など細かく確認できます。メール送信状況として上記画面で確認できるステータスについては、次のドキュメントを参照してください。

送信したメールのログ確認(Email Activity) – ドキュメント | SendGrid

SendGridは多くのクラウドプラットフォームで利用することができます。是非PWSでもSendGridを活用してみてください!