統合テストと環境変数管理による認証情報管理(開発日記 No.049)

に公開

関連リンク

はじめに

昨日は統合テストの基本的な枠組みを構築し、環境変数管理の仕組みを改善しました。今日は、いよいよ実際のAPIキーを使って統合テストを実行し、システム全体の動作を検証します。認証情報も環境変数で管理するように設定を進めていきます。

背景と目的

APIキーなどの認証情報をコードに直接埋め込むのはセキュリティ上問題があります。そこで、環境変数を使って認証情報を管理し、より安全なシステムを構築することが目的です。また、統合テストを通じて、システム全体の動作を検証し、品質を向上させます。

検討内容

まず、note.comのログイン情報をどうやって取得するかを検討しました。公式APIがないため、非公式の方法でアクセスする必要があることがわかりました。メールアドレス、パスワード、ユーザー名を環境変数に設定し、.cursorignoreに登録してセキュリティを確保することにしました。

実装内容

  1. .envファイルの設定: .env.exampleをコピーして.envファイルを作成し、OpenRouter APIキーとnote.com認証情報を設定しました。
  2. 統合テストの実行: 実際のAPIを使用した統合テストを実行したところ、初回実行時にトークン数超過エラーが発生しました。OPENROUTER_MAX_TOKENSの値を調整したところ、テストケースが成功しました。モックAPIを使用した統合テストも問題なく実行できました。
KeyError: 'Unable to extract content from response: {\'error\': {\'message\': \'This endpoint\\\'s maximum context length is 1000000 tokens. However, you requested about 1000017 tokens...

技術的なポイント

OpenRouterのモデルによってトークン制限が異なるため、環境に応じて適切な値を設定する必要があることがわかりました。また、.envファイルによる環境変数管理は効果的ですが、本番環境ではGitHub Secretsなどの仕組みを活用すべきです。

所感

今日は、実際のAPIキーを使って統合テストを実行することができ、大きな進展がありました。トークン数制限のエラーが発生したときは少し焦りましたが、原因を特定して解決できたときは達成感がありました。環境変数管理の重要性を改めて認識しました。

しかし、今日のテストではOpenRouter APIとの接続テストは成功したものの、実際にnote.comに記事がアップロードされたかどうかは確認していません。テストコードを見る限り、OpenRouter APIとの通信テストが主な目的で、note.comへの実際の投稿処理までは含まれていないようです。明日はnote.comへの投稿テストを追加して、より完全なエンドツーエンドテストを目指します。

今後の課題

  • CI/CD統合: GitHub Actionsワークフローにテスト実行を組み込む。
  • パフォーマンス測定: APIリクエスト時間の測定機能を追加し、処理速度とトークン使用量の最適化を行う。
  • エラーハンドリングの強化: より詳細なエラーメッセージとリカバリー機能を追加する。
  • Dockerコンテナでのテスト実行: 環境の差異による問題を防ぐためDockerコンテナでのテスト実行を検証する。

まとめ

今日は、統合テストの実行と環境変数設定による認証情報管理に取り組みました。トークン数制限の問題を解決し、環境変数管理の重要性を認識しました。明日はnote.comへの投稿テストを追加し、より完全なエンドツーエンドテストを目指します。

GitHubで編集を提案

Discussion