
Devinのドキュメント和訳してみた【API Integration】編
Devinのドキュメントを和訳していきます!
他のページも随時和訳していくのでお待ち下さい!
和訳したページ👇️
Devinは、アプリケーションにサードパーティのAPIを統合し、設定し、テストすることができます。
アプリケーションへのSendGridの統合
私たちのサンプルアプリケーションは、DjangoというPythonのWebフレームワークで作られたオンライン教育プラットフォームです。最近、SendGridのメールAPIをアプリケーションに統合するプルリクエストが作成されました。このチュートリアルでは、Devinに独自のSendGrid実装を試みてもらい、サードパーティAPIとどのように連携できるかを紹介します。
最初の指示
プロンプトでは、SendGridのフックをどこにどのように統合したいかについて具体的な指示を提供し、統合の開始点をクリーンな状態にするため、先ほどのプルリクエストがマージされる前の特定のコミットハッシュに戻すようDevinに指示します。実際のDevinセッションはこちらで確認できます。

Devinはコードベースを調査し、アプリケーションに既存の競合するメール実装がないことを確認します。

SendGridの実装
次にDevinはSendGrid APIの実装に移り、APIの認証情報の提供を求めてきます。これらの認証情報は、Devinの環境でシークレットとして設定でき、以降は環境変数としてアクセスできるようになります。

APIの認証情報を取得したDevinは、SendGridの実装を完了します。

最初に紹介したマージされたプルリクエストと、Devinによる実装を比較すると、以下のような注目すべき改善点が見られます:
DevinはSendGridを、ビュー自体と同じファイルではなく、新しいemail.pyモジュールで設定しました。また、SendGridのレスポンスコードに基づいてメール送信の成功・失敗をTrue/Falseで返すようにしています。
Devin は(プルリクエストのレビュアーが特に指摘していた)printではなく、Pythonの標準的なloggingモジュールを使用しています。
Devinは送信元メールアドレスをハードコードせず設定可能にしつつ、環境変数が存在しない場合のデフォルト値も追加しています。
DevinはmailInstructorメソッドに例外処理を追加しています。
コアとなる実装が完了したので、私のメールアドレスでインストラクターアカウントを追加してアプリケーションをテストするようDevinに依頼できます。テストを行うために、PostgreSQLサーバーや関連するPythonライブラリなど、必要な依存関係をすべてインストールして設定する必要があります。

デバッグ
Devinはすぐにエラーに遭遇します。これは、SendGridアカウントの送信元アドレスを提供していなかったためです。Devinは自身のブラウザでAPIドキュメントにアクセスし、何が起きているのか、エラーメッセージの意味、実装のベストプラクティスを理解しようとします。

SendGridの送信元メールアドレスを設定するため、シークレットダイアログに戻って、DevinがアクセスできるようSENDGRID_FROM_EMAIL変数を追加することができます。

また、APIのサブアカウントを設定していないため、SendGridのデフォルトユーザー名である'apikey'を使用するようDevinに指示します:

ナレッジの追加
Devinは、私のリクエストと実装要件が一般化できる可能性があることに気づき、将来活用できるナレッジを追加するよう提案してきます。

もし必要であれば、チームが将来実行するセッションで役立つと思われる戦略について、さらに詳細な情報をナレッジに追加することもできます。
テスト

数分間の環境設定とセットアップの後、Devinは正常にセッションを完了し、私の受信トレイにメールが届きました。SendGridのテンプレートに実際の内容は設定していませんでしたが、APIリクエストは正常に動作し、Devinの作業は完了しました!

プルリクエストを提出する場合、Devinはアプリケーションでの変更内容とその動作方法の詳細を含むメッセージを既に下書きしてくれています。

今すぐサインアップして、チームのバックログに溜まっているAPI統合タスクをDevinで解決してみましょう。