日々の開発ワークフローにおけるAIの活用法
AIはエンジニアリングにおける判断力を代替するものではありません。行き詰まった状態から解決策を見つけるまでの時間を短縮してくれるものです。
AIに「コードを良くして」と頼むのはやめましょう。代わりに、以下の5つの実践的な手法を活用してください。
- パフォーマンスのボトルネックを見つける AIを使って、監査用のチェックリストを作成しましょう。以下のような具体的な測定項目を依頼してください:
- データベースの呼び出し回数
- ネットワークのウォーターフォール
- バンドルサイズ
- RUMおよびサーバーのタイミング
- Lighthouseスコア
- 予期せぬテストケースを生成する AIに関数のシグネチャや仕様を渡しましょう。そして、以下を依頼してください:
- 境界値ケース
- 異常な入力
- レースコンディション
- プロパティベーステストのアイデア これらの提案を実際のテストに落とし込み、信頼性を向上させましょう。
- 制約条件を指定してリファクタリングする 曖昧なプロンプトは質の低いコードを招きます。具体的な指示を使いましょう:
- 「振る舞いを変えずに循環的複雑度を下げて」
- 「純粋関数を抽出し、副作用を明示的にして」
- 「パブリックAPIは維持したまま、命名を改善して」 制約を与えることで、出力結果のレビューが容易になります。
- コンテキストに基づいた解説を求める プロジェクトの詳細を提供することで、AIはより迅速な学習を助けてくれます。以下のように質問してみましょう:
- 「なぜStrictModeではこのReactのレンダリングが2回発生するのですか?」
- 「このSQLクエリプランに基づくと、遅延の原因は何ですか?」
- 「この特定のコードベースにおいて、このバリデーションはどこに配置すべきですか?」
- 検証ループを回す AIはしばしば、自信満々に誤った詳細を出力します。以下のルールに従ってください:
- コンパイルできたら、テストする。
- セキュリティに関わる場合は、2回レビューする。
- 事実を述べている場合は、ソースを確認する。
より良い結果を得るために、このプロンプトテンプレートを使用してください:
- Goal: 何を達成したいか。
- Context: 使用している言語やフレームワーク。
- Input: コード、ログ、またはエラー。
- Output format: 箇条書き、ステップ、またはdiff。
- Constraints: パフォーマンス、可読性、または新しい依存関係を追加しないこと。
例: Goal: APIのレイテンシを削減する。 Context: Node.js と Postgres。 Input: エンドポイントのコードとクエリ。 Output: 5つの改善案のリスト。 Constraints: このスプリントではスキーマ変更を行わない。
あなたは日々の業務でどのようにAIを活用していますか?
Source: https://dev.to/imkrunal/using-ai-in-your-daily-dev-workflow-without-the-hype-57b1
Optional learning community: https://t.me/GyaanSetuAi
