LLMでRailsのコードを自動生成する話

こんにちは、YOUTRUST のやまでぃ(YOUTRUST/X)です。

最近のわたくしごとですが

前回記事でもお伝えした通り、2024年8月下旬よりダイエットに取り組んでおり、2024年内に目標としていたBMI22(適正体重)を無事達成することができました。

今回のダイエットを通して習慣化のコツを改めて体感することができました。

「小さく始めて小さな成功体験を積み重ねる」

です。

決して「最初に張り切って頑張る」ようなことをしてはいけません。三日坊主になる可能性が非常に高いです。

なぜなら、次回の着手ハードルが高くなってしまうからです。

まだ習慣化されていないことについては着手するために消費するMPがとっても大きく、最初に頑張り過ぎると「前回の内容を越えないといけないのか…」となりグッと腰が重くなってしまい、継続が難しくなってしまいます。

そのため、最初は小さく始めて小さな成功体験を得て、次回の着手MPを可能な限り小さくするのが良いと思います。

YOUTRUSTの投稿でも簡単なダイエット方法を述べていますので、興味のある方は是非こちらも参照してみてください。

今回は何の話?

今回はLLMによる自然言語からRails APIのソースコードを自動生成する取り組みについてお話します。

YOUTRUSTの技術開発室では2024年より生産性の向上を狙ったコードジェネレーターの開発に注力しており、その社内検証版が完成したのでご紹介します。

2024.06.12のOPEN CODEにてデモのご紹介もしていました。

どんな感じ?

まずはスクショで雰囲気を感じていただきたいです。

突如現れるでっかいテキストエリア。

そこにNotionに日本語で記述された(架空の)仕様を

そのままコピペして送信ボタンを押します。

すると自動でテキストをクラス別に抽出してコード生成が始まります。

待っているだけで各クラス生成からファイル書き込みとテスト実行までしてくれます。

テストが落ちたらエディタで修正して再実行します。

生成完了後、あとはPRを作るだけになりました。(ここも自動化しておきたい)

パラダイムシフトってやつですかこれは

今まではエンジニア(人間)が自然言語で記述された仕様を理解し、手を動かしてコードを出力していました。

それがLLMの発展・普及のお陰で、コードジェネレーターが自然言語で記述された仕様を理解し、コードを自動生成できるようになりました。(勿論まだまだ精度や使い勝手の点で改善の余地がたくさんあります)

つまり「自分でコードを書く(能動)」→「コードジェネレーターにコードを書いてもらう(受動)」みたいに開発者体験が変わったんじゃないかなと思います。すごい。

今後は言語化力、審美眼が大事

(もちろん昔から大事なのはそうなのですが)社内検証版ではありますがコードジェネレーターを開発してみて、今後はLLMへ適切な指示を出すための丁寧な「言語化力」と生成された成果物を評価して修正する「審美眼」が大事になっていくのだろうなぁと思いました。(月並みっぽ過ぎて恥ずかしい)

今までのようなテキスト等の仕様を受け取り理解して手を動かしてソースコードを作成する作業は今後LLMに取って代わられていく※と思うので、これらのポイントを意識して仕事を進めていきたいと思っています。

※ APIのような仕様を言語化しやすい領域については特にそうだと感じていますが、フロントエンドのような仕様を言語化しにくい領域については、僕自身はLLMの適用・運用イメージがまだ付いていないのが正直な所で、もうしばらくはソースコード作成の作業は人間が行っていくのだろうなと思っています。(2025.01.07時点)

おわりに

今回の記事は以上となります。

技術開発室では引き続きLLMを活用した生産性向上のための取り組みに注力していきます。

YOUTRUSTのエンジニアリングにもし興味を持っていただけましたら、是非下記の募集一覧もチェックしてみてください!

herp.careers