AI任せのWeb開発奮闘記【第75話】

環境変数との格闘

深夜のコーディング作業。パスワードリセット機能のテストのため、メール送信機能の実装に取り組んでいるが、なかなか思うように進まない。

TAKA: 「えっと…メール送信ってどうやるんでしたっけ…」

AI老師: 「まずは.envファイルの設定を確認するのじゃ。SMTPの設定は正しいかね?」

TAKA: 「えっと…これでいいですかね?」

MONGODB_URI=*****
RESET_PASSWORD_KEY=*****
EMAIL=*****@yahoo.co.jp
PASSWORD=*****
CLIENT_URL=http://localhost:3000
SMTP_HOST=smtp.yahoo.co.jp
SMTP_PORT=587
SMTP_SECURE=false

AI老師: 「ふむ…Yahooのメールサーバーを使用するのであれば、SMTPの設定を修正する必要があるぞ」

設定の迷宮へ

TAKA: 「え?何を修正するんですか?」

AI老師: 「まずはYahooメールのセキュリティ設定を確認し、アプリパスワードを生成する必要があるのじゃ」

TAKA:(心の声)「めんどくさ…なんでこんな面倒な設定が必要なんだ…」

AI老師: 「では、テストスクリプトを作成して、メール送信機能をテストしてみるぞ」

TAKA: 「はい…」

const nodemailer = require('nodemailer');
require('dotenv').config();

const transporter = nodemailer.createTransport({
  host: process.env.SMTP_HOST,
  port: process.env.SMTP_PORT,
  secure: process.env.SMTP_SECURE === 'true',
  auth: {
    user: process.env.EMAIL,
    pass: process.env.PASSWORD
  }
});

const mailOptions = {
  from: process.env.EMAIL,
  to: 'test@example.com',
  subject: 'テストメール',
  text: 'これはテストメールです。'
};

エラーの嵐

TAKA: 「よし、実行してみます…あれ?」

Error: Invalid login: 535 5.7.0 (#AUTH005) Too many bad auth attempts.

TAKA: 「また変なエラーが…AI老師さん、これどうすればいいですか?」

AI老師: 「認証に失敗しているようじゃな。Yahooのアカウント設定で、アプリパスワードを生成したのかね?」

TAKA: 「え?アプリパスワードって何ですか?ドキュメント読まないといけないんですか?」

AI老師: 「そうじゃ。セキュリティのために必要な設定なのじゃ。自分で調べて…」

TAKA: 「ちょっと待ってください!他のメールサービス使えませんか?もっと簡単なやつで…」

方針転換の提案

AI老師: 「ふむ…確かに他の選択肢もあるな。一時的な対応として、別のメールサービスを試してみるか」

TAKA: 「お願いします!なんでもいいので、簡単に動くやつで…」

AI老師: 「はぁ…君はいつも簡単な方法を求めるね。しかし、本来であればセキュリティについてしっかりと理解する必要があるのじゃが…」

TAKA:(心の声)「めんどくさいことは全部飛ばして、動けばいいんだよな…」

一時的な回避策

AI老師: 「では、一旦この機能は保留にして、次のステップに進むことにするか」

TAKA: 「えっ!?それでいいんですか!?」

AI老師: 「いいわけではないが、開発の流れを止めないためにも、一時的な措置として他の機能の実装を進めることにしよう」

TAKA: 「やった!これで面倒な設定から解放される!」

AI老師: 「ただし、いずれはちゃんと実装する必要があるからな」

TAKA:(心の声)「そのときは…そのときで何とかなるでしょ」

【AI任せプログラマーTAKAの今日のひとこと】

TAKA: 「今日はメール送信機能の実装で大苦戦…。環境変数の設定とかSMTPサーバーの設定とか、なんでこんなに面倒くさい作業ばっかりなんだろう。結局、AI老師さんが『一旦保留』って言ってくれて助かったけど…。でも正直、こういう面倒な設定作業って本当に必要なの?動けばいいじゃん!って思っちゃいます。プログラミングって、もっと楽しいことだけやれればいいのに…」

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です