メインコンテンツへスキップ

アプリケーションへの SendGrid の統合

サンプルアプリケーションは、Python 製 Web フレームワークである Django で作成されたオンライン教育プラットフォームです。最近、このアプリケーションに SendGrid のメール API を統合するための PR(プルリクエスト)が作成されました。このチュートリアルでは、Devin による SendGrid 実装を一から行い、その過程を通じてサードパーティ API とどのように連携できるかを紹介します。

初期プロンプト

プロンプトの中で、SendGrid のフックを Devin にどのように、どこに統合してほしいかを具体的に指示し、上記の PR がマージされる前のコミットハッシュまで Devin に戻させて、統合作業用のクリーンな開始地点を用意します。ライブの Devin セッションはこちらから確認できます。
Devin
Devin はコードベースを調査し、アプリケーション内に既存のメール送信機能との競合がないことを確認します。
Devin

SendGrid の実装

次に SendGrid API の実装に進み、API クレデンシャルの入力を求めてきます。これらは Devin の環境内で Secrets として設定しておくことで、以後は ENV 変数としてアクセスできるようになります。
Devin
適切な API クレデンシャルが設定できたので、Devin は SendGrid の実装を完了します。
Devin
ドキュメントの冒頭で参照した、実際にマージされた PR と Devin の SendGrid 実装を比較すると、いくつか顕著な改善点が見られます。
  • Devin は SendGrid をビューと同じファイルではなく、新しい email.py モジュール内で設定しています。また、SendGrid のレスポンスコードに基づいてメール送信が成功したかどうかを示すために True または False を返します。
  • Devin は print ではなく Python の組み込み logging モジュールを使っています(これは PR レビュアーが特にコメントしていたパターンです)。
  • Devin は From メールアドレスをハードコードするのではなく設定可能にしつつ、ENV 変数が存在しない場合のデフォルト値も追加しています。
  • Devin は mailInstructor メソッドに例外処理を追加しています。
コアとなる実装が完了したので、自分のメールアドレスで instructor アカウントを追加することでアプリケーションのテストを Devin に依頼できます。アプリケーションをテストするために、PostgreSQL サーバーや関連する Python ライブラリなど、すべての依存関係のインストールと設定も行う必要があります。
Devin

デバッグ

Devin はすぐにエラーになります。これは、私が SendGrid アカウント用の FROM アドレスを一度も指定していなかったためです。Devin は実際に Browser で API ドキュメントを開き、ここで何が起きているのかを確認し、エラーメッセージや実装のベストプラクティスを把握します。
Devin
私は Secrets ダイアログに戻り、Devin が参照できるように SENDGRID_FROM_EMAIL 変数を追加します。
Devin
また、API 用のサブアカウントを設定していないため、デフォルトの SendGrid ユーザー名「apikey」を使用するよう Devin に指示します。
Devin

Knowledge の追加

Devin は、私のリクエストや実装要件が汎用化できると判断し、今後利用できるようにするために Knowledge を追加するよう提案します。
Devin
必要に応じて、今後チームが実施するセッションでこれらの手法が有用になる場合に備え、さらに具体的な内容を追加するよう Knowledge を編集することもできます。

テスト

Devin
数分ほど環境の設定とセットアップを行うと、Devin はセッションを正常に完了し、受信トレイにメールが届きます。今回は SendGrid のテンプレートに実際のコンテンツを設定していませんが、API リクエストは正常に動作しており、これで Devin の作業は完了です。
Devin
PR を送信することにした場合、Devin はすでに、アプリケーションに対して行ったすべての変更内容とその動作方法の詳細を含むメッセージ案を作成してくれています。
Devin
今すぐサインアップしてDevin をお試しいただき、チームのバックログで長らく懸案となっている API 連携に取り組んでみてください。