はじめに
株式会社ジークス 1年目の髙畑です
今回がQiitaへの初投稿です。
今年度アサインされた案件でDevinを使用することになり、
ここ数ヶ月使ってみて感じた「便利だった点」と「詰まったポイント」をまとめます。
経緯
実務に配属され数ヶ月、リプレース案件にアサインされました。
自身が実装の中身を把握していないことや、弊社では業務でのAI利用を推進中ということもあり、案件内でDevinを活用して開発を進める方針となりました。
Devinとは
Devinとは、Cognition Labsが開発・運営する自律型AIエンジニアです。
Devinの主な特徴
・リポジトリを解析し、情報をまとめたWikiを生成する「DeepWiki」機能
・リポジトリに関する質問に回答する「AskDevin」機能
・指示に基づいて実装を行う「DevinSession」機能
実際にやったこと
1. 仕様把握
既存のリポジトリを読み込ませ、Devin wikiを作成。
その内容と実際のコードを照らし合わせる形で既存仕様把握を行いました。
2. CI3からCI4への書き換え
CodeIgniter3 から CodeIgniter4 への既存システムの移行を行いました。
3. AIが作成したコードの修正
後述の要因により、そのままでは動かないAPIを提出されるなどあったため、Devinを使い始めて1週間程度の間はコードの修正を行っていました。
一旦AIに任せてみた結果
既存のリポジトリを読ませたDevinに対し
「既存のリポジトリの実装を元にCI3からCI4へ書き換えて」
と、一旦Devinに任せる形で移行作業の指示を出していたのですが、期待した結果とはならず、使い始めた当初はかなり苦戦しました。
具体的には、
・呼び出し元は実装されているが、呼び出し先のメソッドが存在せず実行できない
・定数定義の移行にばらつきがあり、統一されていない
・Controller / Service / Model の責務分担がAPIごとにバラバラ
...等、AIとの開発は苦戦するところからのスタートとなりました。
軌道修正
前述の通り、AIに作成させたコードはそのままではうまく動かないケースばかりで、このまま同一のセッションで指示を出し続けても厳しいなと感じました。
(うまくプロンプトが書けなかった時は別のセッションを開いた方が良い)
そこで方針を見直し、まず1つのAPIを手動で修正し、AIにとっての「正しい実装例」を用意しました。
その後、既存リポジトリの実装(移行前)と修正後の実装(移行後)をセットでDevinに提示し、具体的な変換ルールや実装方針を示すように。
このように「正しい例」を与える形にしたことで、以降は徐々に意図に沿ったコードが出てくるようになり、開発も進めやすくなりました。
まとめ / 感想
Devinに限らず、AI全般に言えることですが・・・
プロンプトが仕上がるまでは進捗が出にくく、一度ハマると一気に開発スピードが上がる点
には、開発者として気を付けねばなと感じました。
と同時に、AI(Devin)を用いた開発を許容する際にはそうした独特の開発ペースとなることを頭に置いておくべきなのかな...と
(まだまだAIを使いこなせていないだけかも)
AIを使ったシステム開発では、使う側である人間のプロンプトの完成までの速度が開発速度に直結するが故に、
効率的に開発を進めるためには"作りたいもの" のイメージが具体的であることが、開発時の効率を最大化するように思います。