DockerとVisual Studio CodeでSendGridライブラリを手軽に試す方法

DockerとVisual Studio CodeでSendGridライブラリを手軽に試す方法

はじめに

これまで複数回にわたって、SendGrid公式ライブラリを使ってメールを送信するシリーズ記事をお届けしてきました。今回はDockerを利用して、記事の中で取り上げたコードサンプルを試す例を紹介します。新しい言語のコードを試すとなると、環境構築を面倒に感じる方も多いかもしれません。Dockerはその煩わしさを軽減してくれます。またVisual Studio Codeの拡張機能「Remote – Containers」を使うことで、開発環境の構築や破棄が簡単になるだけでなく、コンテナを意識することなく手軽に試すことが可能です。

前提条件

事前にDockerが動作する環境を構築する必要があります。Docker環境の構築方法については、Docker公式サイトをご覧ください。本記事の内容はmacOS上で環境構築したものですが、その他のOSでも基本的に手順は同じです。

手順

今回は、例としてGoのコードサンプルをとりあげます。コードの内容については以前の記事をご参照ください。

1. Dockerコンテナとコードの準備

はじめに、Dockerコンテナを作って作業する準備を整えましょう。まずDockerイメージを作成する雛形となるDockerfileを作ります。以下はミニマムな例です。

FROM golang:1.16.2-alpine
RUN apk update && apk add git

このDockerfileでは、Goの公式Dockerイメージ(1.16.2-alpine版)をベースにして、コンテナ内にGitをインストールします。

Visual Studio Codeの拡張機能としてRemote-Containersをインストールしていれば、左下の小さな枠に「><」のようなマークがあるはずです。これをクリックし、上部に表れるメニューの「Remote-Containers: Open Folder in Container…」を選択します。表示される選択肢のうち、「From ‘Dockerfile’」を選んでください。

Visual Studio Code

しばらく待つと、左下の「><」マークの横に「Dev Container: Existing Dockerfile」が表示されます。見た目はほとんど変わりませんが、これでコンテナのビルドと起動が完了し、コンテナの中で作業していることになります。初回はコンテナのビルドに少し時間がかかりますが、2回目以降は「Remote-Containers: Reopen Folder」を選択することでコンテナを起動することができます。

Visual Studio Code内でターミナルを開き、コードサンプルをリポジトリからcloneします。

$ git clone git@github.com:SendGridJP/sendgridjp-go-example.git

cloneしたリポジトリを開いて.env.exampleをコピーし、.envファイルを編集します。具体的な編集内容は記事を参照してください。

2. メール送信

Goがインストールされているはずなので、確認してみましょう。

# go version
go version go1.16.2 linux/amd64

確認できたら、メール送信のコードサンプルを実行します。Goの場合、リポジトリ内のgo.sumとgo.modをもとに必要なライブラリが自動でインストールされたあと、コードが実行されます。

# go run src/main/main.go
go: downloading github.com/sendgrid/sendgrid-go v3.8.0+incompatible
go: downloading github.com/joho/godotenv v1.3.0
go: downloading github.com/sendgrid/rest v2.6.3+incompatible
go: downloading golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4
202

map[Access-Control-Allow-Headers:[Authorization, Content-Type, On-behalf-of, x-sg-elas-acl] Access-Control-Allow-Methods:[POST] Access-Control-Allow-Origin:[https://sendgrid.api-docs.io] Access-Control-Max-Age:[600] Connection:[keep-alive] Content-Length:[0] Date:[Fri, 09 Apr 2021 08:30:58 GMT] Server:[nginx] Strict-Transport-Security:[max-age=600; includeSubDomains] X-Message-Id:[9RFpNQxBQNiyHKfr7NCF3Q] X-No-Cors-Reason:[https://sendgrid.com/docs/Classroom/Basics/API/cors.html]]

中ほどに「202」とあるように、Mail Send APIへのメール送信リクエストが成功していることがわかります。受信箱にメールが届いているか確認しましょう。

3. 後片付け

Dockerを使えば作成した環境を壊し、元通りにするのも簡単です。まず左下の緑の「><」マークをクリックして「Remote-Containers: Reopen Locally」を選びます。これでコンテナが停止します。
ターミナルでコンテナの状況を確認しましょう。

$ docker ps -a
CONTAINER ID   IMAGE                                                        COMMAND                  CREATED          STATUS          PORTS     NAMES
6a14494e08df   vsc-sendgridjp-go-example-daa75ae55d1dd3bfbb66f944d663b858   "/bin/sh -c 'echo Co…"   15 minutes ago   Exited (0) 2 minutes ago             gifted_pike

コンテナを削除し、

$ docker container rm 6a14494e08df

イメージを削除すれば後片付け完了です。

$ docker image rm vsc-sendgridjp-go-example-daa75ae55d1dd3bfbb66f944d663b858

Visual Studio CodeのDocker拡張機能を用いれば、削除の手順はVisual Studio CodeのGUIベースで操作することも可能です。

さいごに

異なる言語の環境や、同じ言語の異なるバージョンの環境が必要な場合には、今回のようにDockerを利用するのが簡便でしょう。ぜひ、いろいろな言語のSendGrid公式ライブラリをお試しください。なお、本記事のGo言語では必要ありませんでしたが、他の言語では別途パッケージ管理ツールなどが必要な場合もあります。詳細は、各言語の記事をご覧ください。

アーカイブ

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。