Skip to content

Instantly share code, notes, and snippets.

@mahm
Created February 26, 2025 10:15
Show Gist options
  • Save mahm/775e1c235d3a09943d1c0c5b922d750f to your computer and use it in GitHub Desktop.
Save mahm/775e1c235d3a09943d1c0c5b922d750f to your computer and use it in GitHub Desktop.

Devinをい぀䜿うか

芁玄:
Devinをゞュニア゚ンゞニアのように扱っおください。十分で明確な指瀺があれば、ゞュニア゚ンゞニアやむンタヌンでも解決できるタスクをDevinに任せられたす。人間の同僚に䞎えるのず同じレベルの詳现な指瀺を䞎えるこずを忘れないでください。

ベストプラクティス

1日の始たりに耇数のDevinを䞊行しお動かす

  • TODOリストの敎理:
    自分のTODOを考え、むンタヌンDevinが手䌝える小さなタスクに分割する。

  • ドラフトPRのレビュヌ:
    昌食時にレビュヌ埅ちのドラフトPRに戻る。

SlackスレッドでDevinをタグ付けしお迅速な修正を

  • 迅速なタスク:
    30分で終わるタスクでも、数週間にわたる倧きなバックログになりがちなものにDevinは適しおいたす。

VSCode拡匵機胜を利甚しお小さなリファクタリングを

  • 䜜業の匕き枡し:
    Devin VSCode拡匵機胜 を䜿甚するこずで、䞻芁なタスクに集䞭しながら䜜業を匕き枡すのが容易になりたす。

  • コヌド共有:
    Cmd+GでDevinにコヌドスニペットをすばやく共有できたす。

容易に怜蚌できるタスクに泚力する

  • 怜蚌の容易さ:
    CIがパスするか、たたは自動デプロむが正垞に動䜜するこずを確認できるタスクが理想です。タスクが正しく完了したように芋えおも、実際には問題があるような曖昧なタスクは避けたしょう。

小さく始める

  • 詊行:
    最初は、Devinの最適な䜿甚䟋を芋぀けるために、倚くの小さな実行を詊しおみおください。

  • セッション管理:
    䞀回の実行に10 ACU以䞊を䜿わないように泚意したしょう。長いセッションではDevinのパフォヌマンスが䜎䞋したす。

Devinぞのタスクの評䟡

タスクがDevinに適しおいるかどうかを刀断する際、最初に自問すべき質問は

「十分な時間ず文脈があれば、ゞュニア゚ンゞニアでも解決できるか」

です。

タスク前のチェックリスト

タスクの耇雑さ

  • 必芁な刀断や難しい決断事項を考慮する
  • むンタヌンが盎面しうる倱敗のルヌトを特定する
  • 高床な専門知識が必芁なタスクの堎合、タスクをさらに现分化するか、関連する文脈を提䟛する

タスクの定矩ず範囲

  • 良いタスクは、明確な開始点ず終了点があり、成功基準䟋: テストに合栌、既存パタヌンずの䞀臎が蚭定されおいたす。

利甚可胜なリファレンス

  • Devinが埓うべき䟋やパタヌンが存圚するか
  • コヌドベヌスやドキュメントから、プロトタむプ、郚分的なコヌド、たたは既存パタヌンを提䟛できるか
  • Devinが参照できるリンクやファむル名を提䟛するこずは非垞に有甚です

成功の怜蚌

  • テストスむヌト、lintチェック、たたはコンパむル手順があるタスクは、より良い結果を生み出したす
  • 䞻芳的な基準を持぀タスクは、怜蚌が難しい堎合がありたす

レビュヌの劎力

  • 理想的には、CIがパスするかどうかを確認するだけで枈む、たたは自動デプロむのテストを迅速に実斜できるタスクが望たしいです

タスクの芏暡

  • 倧きなタスクは、サブタスクや耇数のセッションに分割するこずを怜蚎しおください
  • 倧きなリク゚ストを小さく管理しやすい郚分に分割するこずで、Devinが正しい方向に進みやすくなりたす

タスク埌のレビュヌ

セッション時間の監芖

  • Devinが繰り返しセッション䜿甚制限に達する堎合、そのタスクは耇雑すぎる可胜性がありたす
  • より詳现な指瀺やガヌドレヌルを提䟛する必芁があるかもしれたせん
  • Devinがどこに時間を費やしおいるかを調査するこずを怜蚎しおください
  • Devinが開発環境で苊戊しおいる堎合は、Workspaceの蚭定を再確認しおください
  • Devinを再び軌道に乗せるより、自分でタスクを完了する方が早い堎合もありたす

Devinのミスから孊ぶ

  • 今埌のセッションでは、Devinが以前の障害を乗り越えられるように、より倚くの文脈や指瀺を提䟛しおください
  • Devinが以前のセッションで孊んだこずを蚘憶できるように、Knowledgeの远加たたは承認を怜蚎しおください

Devinを効果的に指瀺する方法

最適な結果を埗るための方法

Devinに指瀺を䞎える際に最も重芁なのは、できるだけ具䜓的であるこずです。ちょうど同僚にコヌドを曞いおもらうずきに詳现な仕様を䌝えるように、Devinに察しおも同様に詳现な指瀺を䞎えおください。このガむドでは、Devinの有甚性を最倧限に匕き出すために、指瀺やプロンプトをどのように構造化すべきかを説明したす。

ベストプラクティス: やるべきこずず避けるべきこず

意芋を持ち、具䜓的にする

やるべきこず: 明確な指瀺を䞎える

  • 理由:
    明確な道筋がないず、たたは解釈の幅が広すぎるず、Devinは進むべき方向を芋倱っおしたいたす。
  • 方法:
    • Devinのために重芁な決定や刀断を行う。
    • 具䜓的なデザむンの遞択や実装戊略を提瀺する。
    • 明確な範囲、境界、および成功基準を定矩する。
  • 䟋:
    「orderService.js 内の getOrderDetails ク゚リを最適化しおください。具䜓的には、order_items テヌブルの order_id ず product_id カラムに耇合むンデックスを远加し、既存の盞関サブク゚リを、補品詳现を取埗するための products テヌブルずの JOIN に眮き換えおください。」

避けるべきこず: 刀断を委ねすぎる

  • 理由:
    曖昧な指瀺は、Devinが実際のニヌズに沿わない解決策を実装しおしたう原因ずなりたす。
  • 方法:
    • 十分なガむダンスなしに、Devinに倧きなデザむンや実装䞊の決定を任せない。
  • 䟋:
    「デヌタベヌスのパフォヌマンスを改善する。」は避けるべき

Devinの匷みを掻かす

やるべきこず: Devinが埗意なタスクを遞ぶ

  • 理由:
    Devinの胜力に沿ったタスクを割り圓おるこずで、最小の劎力ずACUで最倧の結果を埗るこずができたす。Devinの胜力を倧きく超えるタスクは、望たしくない結果に぀ながる可胜性がありたす。
  • 方法:
    • このガむド「Devinをい぀䜿うか」を参考にする。
    • 特に高床なタスクの堎合、Devinが埓える䟋、モゞュヌル、リ゜ヌス、テンプレヌトを提䟛する。
      • APIリク゚ストボディや機胜の詳现を理解するためのドキュメントサむトぞの盎接リンクを共有する。
      • Devinに孊習させたい特定のファむル名を提瀺する。
  • 䟋:
    • 「Headerコンポヌネントの状態管理を、Reactの useReducer フックを䜿うようにリファクタリングしおください。既存の機胜は保持し、新しい状態ロゞックに察しおナニットテストを远加しおください。」
    • 「䞀貫性のために、authTemplate.rs を参考にしおください。」
    • 「移行手順に぀いおは、公匏Sequelizeドキュメントhttps://sequelize.org/docs/v6/getting-started/を確認しおください。」

避けるべきこず: Devinのコア胜力倖のタスクを割り圓おる

  • 理由:
    高床な専門知識や倧きなデザむンの決定を必芁ずするタスクを十分なガむダンスなしに任せるず、効率が䜎䞋し、ACUの無駄遣いになりたす。
  • 方法:
    • 明確な指瀺や参照がないたた、創造的たたは高レベルな戊略的入力が必芁なタスクを避ける。
    • 匷い芖芚胜力が必芁なタスク䟋: Figmaのデザむンの実装は避ける。Devinはりェブペヌゞを閲芧できたすが、完璧な芖芚胜力はありたせん。
    • 携垯電話にアクセスできず、テストが困難なため、モバむルアプリの䜜成は避ける。
  • 䟋:
    • 「新しい認蚌システムをれロから䜜成しおください。」は避けるべき
    • 「このFigmaモックアップをReactコンポヌネントに倉換しおください。」は避けるべき
    • 「AI搭茉のショッピングアプリを䜜っおください。」は避けるべき

必芁に応じお匕き継ぐ

やるべきこず: 郚分的なタスクを共同で完了する

  • 理由:
    最埌の20%をあなたが仕䞊げる方が、党䜓ずしお早い堎合がありたす。
  • 方法:
    • Devinに倧郚分の実装を任せ、最埌にあなたが仕䞊げる。
    • 繰り返しの䜜業郚分はDevinに任せ、より重芁な郚分に集䞭する。
  • 䟋:
    「新しいAPI゚ンドポむントの初期ボむラヌプレヌトコヌドを生成しおください。その埌、私が既存の認蚌システムず統合したす。」

避けるべきこず: 耇雑なプロゞェクト党䜓をDevinに䞞投げする

  • 理由:
    埮劙な理解や創造的な問題解決が必芁なタスクをDevinに任せすぎるず、遅延や期埅倖れの結果に぀ながりたす。
  • 方法:
    • 倧芏暡で人間の介入が必芁なタスクは、Devinに䟝存しない。
  • 䟋:
    • 「新䞖代AI機胜のためのバック゚ンドむンフラ党䜓を開発しおください。」は避けるべき

フィヌドバックルヌプの掻甚

やるべきこず: 明確か぀頻繁なチェックを蚭ける

  • 理由:
    あなた自身やテスト、チェック、リンタヌからの頻繁なフィヌドバックにより、Devinはミスを効果的に修正できたす。
  • 方法:
    • 単䜓テストや統合テストを実斜しお正確性を確認する。
    • ビルド怜蚌、リンタヌ、静的解析を維持し、コヌド品質を確保する。
    • 進捗をWorklogで远跡する。
  • 䟋:
    • 「各むテレヌション埌に npm test を実行しおください。」
    • 「CircleCIのパむプラむンが倱敗しないこずを確認しおください。」
    • 「コミット前にESLint/Prettierチェックをパスしおください。」

避けるべきこず: フィヌドバックを提䟛しない

  • 理由:
    フィヌドバックがなければ、Devinはその解決策があなたの基準に合臎しおいるか刀断できたせん。
  • 方法:
    • 評䟡方法を明瀺せずにタスクを割り圓おない。

チェックポむントの蚭定

やるべきこず: 明確なチェックポむントずサブタスクを蚭定する

  • 理由:
    耇雑なタスクを小さなチェックポむントに分割するこずで、Devinは集䞭しやすくなり、゚ラヌを枛らすこずができたす。
  • 方法:
    • タスクを怜蚌可胜なサブタスクに分割し、各サブタスクごずにDevinセッションを開始する。
    • 各サブタスクの成功基準を定矩し、必芁に応じお内郚のチェックポむントも蚭定する。
    • 各チェックポむントやサブタスク完了埌に、Devinに報告させる。
  • 䟋:
    • 「デヌタセットを扱う際は、少なくずも500行があり、カラムX、Y、Zが含たれおいるこずを確認しおください。」
    • 「API修正時は、゚ンドポむントがステヌタス200を返し、必芁なフィヌルドがすべお含たれおいるこずを確認しおください。」
    • 「UI曎新時は、コンポヌネントがコン゜ヌル゚ラヌなくレンダリングされ、デザむン仕様に沿っおいるこずを確認しおください。」

避けるべきこず: 明確な怜蚌芁件を省略する

  • 理由:
    怜蚌ステップが定矩されおいなければ、Devinは自信を持っおタスクを完了できたせん。
  • 方法:
    • 曖昧な成功基準は避ける。
    • 怜蚌ステップを暗黙のたたにしない。
  • 䟋:
    「動䜜するこずを確認しおください。」は避けるべき

プレむブックの利甚

繰り返し行われるたたは耇雑なタスクに぀いおは、プレむブックを䜿甚し、反埩改善を行うこずをお勧めしたす。プレむブックは再利甚可胜で共有可胜なプロンプトであり、タスクの委任を効率化したす。たずえば、継続的なCIビルドの倱敗に察凊する堎合、Devinが毎回埓うべき䞀般的な手順を含むプレむブックを䜜成しおください。

䟋: 効果的なプロンプトの䜜成

具䜓的な䟋を瀺すこずで、ベストプラクティスの適甚方法を明確に説明したす。以䞋は、Devin向けの適切なプロンプト䟋ず、その効果に぀いおの説明です。さらに䟋やヒントに぀いおは、Prompting Adviceガむドも参照しおください。

In the Devin repo, I want you to build a tool that monitors the RAM and CPU usage of the remote machines that Devin runs on. To do that, please perform the following tasks:

  * Create a background task that launches automatically when devin.rs starts.
  * The task should open a connection to all forked remote machines used in this Devin session and monitor their RAM and CPU usage.
  * If usage exceeds 80% of the available resource, emit a new type of Devin event to signal this (check how we use Kafka).
  * Architect this in a smart way that doesn’t block other operations. You should understand how all the containers for the Devin sub-agents interact with each other.

日本語蚳

Devinリポゞトリで、Devinが実行されるリモヌトマシンのRAMずCPU䜿甚率を監芖するツヌルを構築しおほしいず思いたす。そのために、以䞋のタスクを実行しおください

  * devin.rsが起動したずきに自動的に起動するバックグラりンドタスクを䜜成しおください。
  * このタスクは、このDevinセッションで䜿甚されるすべおのフォヌクされたリモヌトマシンぞの接続を開き、それらのRAMずCPU䜿甚率を監芖する必芁がありたす。
  * 䜿甚率が利甚可胜なリ゜ヌスの80%を超える堎合、これを通知するための新しいタむプのDevinむベントを発行しおくださいKafkaの䜿甚方法を確認しおください。
  * 他の操䜜をブロックしない賢い方法でこれを蚭蚈しおください。Devinのサブ゚ヌゞェント甚のすべおのコンテナがどのように盞互䜜甚するかを理解する必芁がありたす。

なぜこのプロンプトが効果的なのか

有益な文脈を提䟛しおいる

  • 詳现:
    Devinリポゞトリず、リ゜ヌス䜿甚量の監芖ずいう党䜓的な目的が明瀺されおいたす。
  • 効果:
    Devinはタスクの範囲ずドメむンを明確に理解できたす。

段階的な指瀺を䞎えおいる

  • 詳现:
    「背景タスクの䜜成」や「80%䜿甚時のむベント発火」など、具䜓的なタスクに分割されおいたす。
  • 効果:
    䜜業が論理的に分割され、進めやすくなりたす。

明確な成功基準を定矩しおいる

  • 詳现:
    80%䜿甚時に特定のむベントを発火するこずを「成功」ず定矩しおいたす。
  • 効果:
    Devinは達成すべき目暙を正確に把握できたす。

既存のパタヌンやコヌドを参照しおいる

  • 詳现:
    Kafkaやコンテナの盞互䜜甚に぀いお蚀及しおいたす。
  • 効果:
    既存のコヌドや蚭蚈手法の再利甚が促進されたす。

プロンプト改善ボタンの利甚

セッション䜜成時に、黄色い譊告サヌクルプロンプト改善ボタンをクリックしおフィヌドバックを確認しおください。

結論

十分な構造ず明確な指瀺により、信頌性が高く満足のいく成果を埗るこずができたす。

良い指瀺 vs 悪い指瀺

Devin にタスクを䟝頌する際、指瀺の質が最終的な成果物に倧きく圱響したす。以䞋は、効果的な指瀺良い指瀺ず、避けるべき指瀺悪い指瀺の䟋を瀺しおいたす。

悪い指瀺の䟋

  • 抜象的すぎる指瀺

    • 䟋: 「コヌドを改善しおください。」
    • 問題点: 䜕をどのように改善すべきかが䞍明確で、Devin が適切な刀断を䞋しにくくなりたす。
  • 曖昧な芁求

    • 䟋: 「もっず良い蚭蚈にしお。」
    • 問題点: 「良い蚭蚈」が䜕を意味するのか、評䟡基準が瀺されおおらず、解釈の幅が広すぎたす。
  • 䞍十分な情報提䟛

    • 䟋: 「゚ラヌハンドリングを远加しおください。」
    • 問題点: 察象ずなる゚ラヌや具䜓的な凊理方法、たたは文脈が䞍足しおいるため、Devin が正しい実装方針を刀断できたせん。

良い指瀺の䟋

  • 具䜓的で詳现な指瀺

    • 䟋: 「orderService.js 内の getOrderDetails ク゚リを最適化しおください。具䜓的には、order_items テヌブルの order_id ず product_id カラムに耇合むンデックスを远加し、既存の盞関サブク゚リを、補品詳现を取埗するための JOIN に眮き換えおください。」
    • メリット: タスク内容ず成功基準が明確に定矩されおいるため、Devin が実装すべき内容を正確に理解できたす。
  • 段階的なアプロヌチ

    • 䟋: 「たず、珟状のコヌドの問題点を掗い出しおください。その埌、改善策を 3 ぀提瀺し、最適ず思われるものを実装しおください。」
    • メリット: 問題の分析ず解決策の提瀺ずいうステップが明確に分かれおおり、タスク党䜓の流れが敎理されたす。
  • 具䜓的な参照ず文脈の提䟛

    • 䟋: 「公匏ドキュメント䟋: Sequelize のドキュメントを参考にしお、゚ラヌハンドリングの実装を修正しおください。既存のコヌドは authTemplate.rs を参照しおください。」
    • メリット: 必芁なリ゜ヌスや文脈が提䟛されるこずで、Devin が期埅される実装の方向性を正確に把握できたす。

なぜ良い指瀺が重芁なのか

  • 正確な成果物の獲埗:
    明確な指瀺があるこずで、Devin はタスクの目的や成功基準を正確に理解し、望む結果を返しやすくなりたす。

  • 䜜業効率の向䞊:
    具䜓的な指瀺により、フィヌドバックや修正の回数が枛少し、党䜓の䜜業効率が向䞊したす。

  • 期埅倀の䞀臎:
    成果物に察する評䟡基準が明確なため、タスク完了埌の認識のずれを防ぐこずができたす。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment