- Railsエンジニア
- カスタマーサクセス
- 法人営業
- 他1件の職種
- 開発
- ビジネス
- その他
こんにちは、SENRIのCTOの杉山です。
ちょっと前に CLINEに全部賭けろ という記事を見て、もうこんなところまで来てるのか〜と思い、さすがに弊社でも取り入れるまたは取り入れられるところを見てみるか〜と思って、今週はAIプログラミングウィークと称してCLINE と Devinを試してみよう、という思い動いていました。
結論は、CLINEしか試せてないんですが、今のところかなり有用。今後これは利用は続けていきたい気持ちでいっぱい。
先に読んでもらいたい不安感を置いておきますが、その後に、どんな感じでissueやったか、価格は?とかが書かれております〜〜!!
今回のCLINEとの1週間で感じた不安
CLINEとともにした1週間でわかったのは、「自分の仕事がなくなることはないな」、ということ。ただ、これはドメイン知識があること、仕様の理解と言語化能力が一定以上あること、設計ができること、に支えられていると思います。また、仕事のやり方なんかはめちゃくちゃ変わっていくと思います。
その一方で、初学者とか未経験の人にやってもらうか〜〜〜みたいな仕事はCLINEでできちゃうんで、そういう仕事やってもらわなくても良くなります。ので、一部人間に振られる仕事の数は減ると思います。
で、 .clinerules とかをチームで共有すれば、そういう方々もAIと協働して、それなりのアウトプットできるようになるけど、そうなってきた時に、自分や先輩後輩エンジニアが通ってきた、無駄は含まれていたが、ある程度の再現性を持つ経験を積むパスを通れなくなるのでは?という実感があります。正確にいうと、そのパスを通ることのコストがAIにかかるコスト(時間と費用)の数倍〜20倍(もしくはそれ以上)とか必要だと分かった時に、それって会社は許容してくれるん??ということになる。
相対する仕様に対して答えが割と簡単に出ることは良いけど、そこに至るメタな知識や思考や判断、みたいなところを獲得するには、例えば、良き先輩のような「ここの実装の意図は何だと思う?」みたいな質問をAIに自主的に促すとか、今まで以上に主体的に動かないといけないのは「結構大変なことになってしまったな〜」という思いと、その一方で「知の高速道路やんけ!」みたいなワクワクとが入り混じって少々不安を感じました。
AIにいじってもらう環境
- SENRIのプロダクト本体
- Ruby on Railsで作られていて、モノリス
- 10年ぐらいの歴史があって、それなりにコンテキストに依存したものもある
- VS CodeでROO CODE入れて、claude 3.7 sonnetで動かす
という感じでした。今までタイムラインに流れてきたりしてた記事を見てる限りだと、ゼロから作る部分に関してはかなり高速にできることは分かってたんですが、自分たちの環境、10年ぐらい開発を続けていて、それなりにファイル数もあったりするとどうだろうか、というのが今回の検証ポイント
AIが動く設定について
- 取り組む前に、結構AIに寄せた仕様の共有はした
- github issue に書かれてる内容がベース(やりたいこと、受け入れ条件が結構書いてるが、設計は書かれてない)
- 例えばURL の共有とか、ファイルの場所の明示化
- Product のページを変更 -> /admin_consoles/products/1234/edit
- Product モデルの callback を修正 -> apps/models/product.rb の中の xx行目の callback を修正
- ファイルの読み書きはAuto approve
- git add / commit はAuto approve。git push は確認してもらう。
- こちらに確認後、PRの作成 & その本文に変更内容を書いてもらう
という感じで動いてます。
今回はCLINEを使っているので、.clinerules に「取り組む前に、必要なファイルを事前に確認して、どういう変更をするかの仕様をしっかり明確化して、ユーザー(この場合は杉山)と合意を取ってから実装に入る」というのを書いていて、色々ファイルを見たりしてから動いてくれて、実装に進んでファイルに変更をガンガンかけてgit commitしてpushする直前まで勝手に動いてくれるようにしました。
実際にやってもらったこと
今回はできる範囲がどこまでできるのか、どういうサポートしないといけないのか、こっちが .clinerules に書くべきことがどういうものがあるのか、などを確認していきたいので、割と小さめのissueから取り組んでもらうようにしていました。
実際にやってもらったのは以下のissueです
- 既存のERP連携用のAPIのresponseに追加されてないattributeとの追加とテストの変更
- 自分で修正したAPIの影響で落ちてるテストの修正
- ページ内でタブ切り替えしたときの、データ読み込みのAPIリクエストの修正
- 集計ダッシュボードでフィルター等が同条件の場合に、同一リクエストの送信を防ぐ仕組みの導入
- これは別のところで実装済みのアイデアだったのでこっちに持ってきてもらう
- CustomerのImport時に新規作成されたCustomerに既存の全モバイルユーザーを担当として紐つけるかどうか、の設定項目の追加と、その動作の実装 + テスト
- migrationあり
- 設定画面に項目を追加
- モデル内にあるimport_row メソッド内の書き換え
- そのテストの書き換え
- 在庫管理機能の中の在庫変動履歴内の在庫変動種別ラベルの修正とラベルによるフィルターの追加
みたいな感じですね。細かく書くともっとある気がするんですが、こんなもんです。
在庫変動種別ラベルの修正とフィルターの追加で$1.9
集計ダッシュボードでフィルター等が同条件の場合に、同一リクエストの送信を防ぐ仕組みの導入(とその他細かい習性をいっぱい入れた)で$3.3
自分で修正したAPIの影響で落ちてるテストの修正で$0.39
って感じなので、コストとしてはめちゃ安〜〜〜〜!!って感じでした。
今後CLINEとどうするのか
今週、Devin動かすとこまで見てみようと思ったんですが、ちょっと見切れませんでしたし、CLINEにももうちょい難しいタスクを渡したいな、と思ってる、という感じなので、来週以降もCLINE自体は利用して、一緒に難しめなタスクもこなしていきつつ、一緒にやれるラインを見極めてみたいと思います。また、Devinも時間をとって動かしてみたいな、と思います。
今回のCLINEとの1週間で感じた不安(再掲)
CLINEとともにした1週間でわかったのは、「自分の仕事がなくなることはないな」、ということ。ただ、これはドメイン知識があること、仕様の理解と言語化能力が一定以上あること、設計ができること、に支えられていると思います。また、仕事のやり方なんかはめちゃくちゃ変わっていくと思います。
その一方で、初学者とか未経験の人にやってもらうか〜〜〜みたいな仕事はCLINEでできちゃうんで、そういう仕事やってもらわなくても良くなります。ので、一部人間に振られる仕事の数は減ると思います。
で、 .clinerules とかをチームで共有すれば、そういう方々もAIと協働して、それなりのアウトプットできるようになるけど、そうなってきた時に、自分や先輩後輩エンジニアが通ってきた、無駄は含まれていたが、ある程度の再現性を持つ経験を積むパスを通れなくなるのでは?という実感があります。正確にいうと、そのパスを通ることのコストがAIにかかるコスト(時間と費用)の数倍〜20倍(もしくはそれ以上)とか必要だと分かった時に、それって会社は許容してくれるん??ということになる。
相対する仕様に対して答えが割と簡単に出ることは良いけど、そこに至るメタな知識や思考や判断、みたいなところを獲得するには、例えば、良き先輩のような「ここの実装の意図は何だと思う?」みたいな質問をAIに自主的に促すとか、今まで以上に主体的に動かないといけないのは「結構大変なことになってしまったな〜」という思いと、その一方で「知の高速道路やんけ!」みたいなワクワクとが入り混じって少々不安を感じました。
ということで、まだ調査途中ではありますがこれからもCLINE(および他のDevinとか?)と仲良くするのは、ほぼ確定。これを他のエンジニアにも展開した時に何が起こるかはまた後日共有します〜〜!!