はじめに
七尾百合子さん、お誕生日 83日目 おめでとうございます! nikkieです。
Devinはジュニアエンジニアと言われますが、手取り足取りお世話しなくてもいいんだなと思った事象の紹介です1
目次
これまでのnikkieとDevin
自律型のコーディングエージェントDevinは、ジュニアエンジニアとして扱うのがよいとされています。
TLDR: Treat Devin like a junior engineer. Assign Devin tasks a junior engineer or intern could figure out if provided with sufficient, clear instructions. Remember to instruct Devin with the level of detail that you would give to a human coworker. (When to Use Devin)
実際、コードの変更箇所を丁寧に指示してきました。
上の記事とは別の例2
任せた作業が円滑に進むよう依頼者側で丁寧に指示するものと思い込んでいたのですが、「実は丸投げしてDevinの好きにやらせてみてもいいのかもしれない」とこのひと月くらい考えています。
めちゃくちゃ気が乗らねェ開発TODO
メンテナしているSpeechRecognitionにプルリクエストが届きました。
これは私が気づけていなかった修正で、ありがたい限りです。
変更箇所にテストはないのですが、実質ドキュメントの修正なのでマージしました。
ただこの作業の中でデッドコードに気づきます
if not hasattr(self, 'vosk_model'):
if not os.path.exists("model"):
- return "Please download the model from https://github.com/alphacep/vosk-api/blob/master/doc/models.md and unpack as 'model' in the current folder."
+ return "Please download the model from https://alphacephei.com/vosk/models and unpack as 'model' in the current folder."
exit(1)
「早期returnの後のsys.exit(1)、到達しないコード(=デッドコード)だぞ...」
ミノ駆動本の教えによれば、デッドコードは発見次第即削除です(改訂新版 10.1)。
しかしながらこの箇所(recognize_voskメソッド)には、テストがありません。
まずテストを書き、壊していないことを確認しながらデッドコードを削除した方がよいと判断しました。
デッドコードの他にも修正点が見えていたというのもあります。
さて、テストを書くのは全然気が乗るのですが(リファクタリングし放題のボーナスタイムになりますからね!)、recognize_voskを動かすようにするための環境構築が面倒くさくてかないませんでした。
ここではそもそもテストがないので、(モックでなく)実物を使ったテストを1つ用意しようとしています。
Voskというのは音声認識のツールのようなのですが、私には初見です。
SpeechRecognitionにはVosk設定のためのドキュメントがありますが、自分が手を動かすというのが苦痛でした。
私の有限の時間は、もっと強く興味を惹かれることに使いたい!
Devinに環境構築方法の調査を依頼
ただメンテナとしてやらなければなりません3。
気が乗らない中、私はふと想います、「Devin、お前、できるか?」
ジュニアエンジニアのDevinに、私が丁寧に指示できない領域を依頼しました。
この時点では「できたら儲けもの」(たぶんできないからそのときは腹をくくってやろう)と考えていました。
調査をお願いします。 プルリクエストは作らず、このチャットに調査結果を記載してください ## 調査内容 以下のrecognize_voskを動かせる状態にしてください https://github.com/Uberi/speech_recognition/blob/0747dccaf42b01cab720ecda25eb2e5741bef9e4/speech_recognition/__init__.py#L1249-L1265
これをDevinが達成したんです!(抜粋して紹介)
# SpeechRecognition ライブラリの recognize_vosk 機能を動作させる方法 ## 調査結果 SpeechRecognition ライブラリの `recognize_vosk` 関数を動作させるために必要な手順を調査しました。以下に詳細をまとめます。 ### 必要な依存関係 1. **vosk パッケージのインストール**: 2. **Vosk モデルのダウンロードと配置**: ### セットアップ手順 1. **モデルの配置**: 2. **コードの実装**: ### 動作確認 テスト用のスクリプトを作成して実行したところ、正常に動作することを確認しました: ### 注意点 ### まとめ SpeechRecognition ライブラリの `recognize_vosk` 関数を動作させるには、vosk パッケージのインストールとモデルの適切な配置が必要です。これらの手順を実行することで、オフラインでの音声認識が可能になります。
望外の結果に私は驚きました。
自分がめちゃめちゃ気が乗らないがやらなければならなかったことを、Devinが代わりにやってくれたことに感動しました(ありがとう〜、最高です!)
調査ありがとうございます、素晴らしいと思います 「モデルの配置」手順を再現するPythonスクリプトを作って、このチャットに出力してください
私の方でPEP 723対応をして、コミットしました
環境構築できたので、テストを用意して、デッドコード削除などのリファクタリングを実施しています🙌
ちなみにDevinの実装から以下の記事に書いた学びがありました
終わりに
ジュニアエンジニアとしてDevinに丁寧にタスクを指示してきましたが、私の気が乗らないタスクをダメ元でDevinに「調査して」とお願いしたところ、見事に達成してくれた事例を紹介しました。
今回の環境構築、過程は私にとってどうでもよくて、環境構築の再現可能な手順が自分の手を動かさずに知れるのが理想だったんですよね。
過程は完全にDevinにお任せして、結論をレポートしてもらうという方法を見出しました。
実はこの方法は1回限りとせずに、たまに試しています。
LLMまわりで興味ある技術が尽きないのですが、私が手を動かす部分がボトルネックになるんですよね。
そんなときは(本当は私がやれたらいいのですが、次から次へと出てくる状況で関心の賞味期限も短いので)Devinにお願いして調査代行してもらっています。
Devinが採用した過程からも学びがあるんですよね〜
Devinはたまにポンコツなこともしますが私を幸せにもしたので、『アイの歌声を聴かせて』のシオンさんぽいですね
P.S. Devin as 妹
妹口調にしています。
こ、これはKnowledgeの設定の素振りであって、くぁwせdrftgyふじこlp(言い訳しどろもどろ)
ぼくのDevinもこれで立派な妹になります。Knowledgeすげ〜 https://t.co/ProHLKxQiI pic.twitter.com/jcJDFkR1GF
— nikkie(にっきー) / にっP (@ftnext) 2025年6月7日
-
タイトルの言い回しの元は、テニスの王子様みたいでした
↩【まだまだだね】越前リョーマは実際のところ何回「ふ~ん ◯◯じゃん」と言ったのか数えてみたhttps://t.co/THtS8JbSUH
— ライブドアニュース (@livedoornews) 2020年12月23日
本日12月24日は『テニスの王子様』の主人公・越前リョーマの誕生日。そこで、この言葉が原作で実際はどれくらい使われていたのか検証した。 pic.twitter.com/ojA25pMkTC - 流行のお戯れでUber Eatsもさせています ↩
- 書いてて思ったのですが、nikkieさん、えらすぎでは(ほめてほめて)↩