kazutomoのブログ

たまーに気が向いたらなんか書きます

AIと一緒に開発をするということについて

GPT-4 のリリース以降、私たちもこの技術をどのように活用できるのかさまざまな試みをしてきました。
そして、GPT-4が提供してくれる価値は、本当に働き方をガラリと変えるほどの影響力があると感じる日々が続いています。

 

今回は、その取り組みの成果の一つとして AI と一緒に開発を進めてきたことについてお話ししたいと思います。

 

私たちは、ゲームサーバーをBaaSとして提供する Game Server Services を開発し、提供しています。

gs2.io


そのサービスの新機能として、ステートマシンをサーバーでホスティングし、クライアントからのイベントパッシングに応じてステートを変化させ、ステートごとに設定されたスクリプトを実行できる仕組みを提供したいと考えていました。

しかし、ステートマシン定義言語でメジャーなものが現状なく、それらしいものは Amazon が提供している Amazon States Language(ASL) くらいしかない状態です。
ASL を記述したことがある人ならわかると思いますが、決して扱いやすい言語とは言えません。

このような背景があり、ウマ娘登場以来ずっと作りたいと思っていた(ウマ娘のようなゲームで育成過程をサーバーサイドで管理するには、サーバーサイドでステートマシンを動かすのがいいと思ったのです)ステートマシンホスティング機能ですが、実現にはなかなか踏み切れませんでした。

GPT-4を数日触って「もしかしたらいけるかもしれない?」とおもって話しかけたのが以下の文面です。

それに対する回答がこちらでした。

初っ端から、かなりそれらしいステートマシン定義言語が出てきていることがわかります。

そして、出てきた構文に対して私はどんどんフィードバックをしていきます。

GPT-4 は的確に質問をこなし、構文を洗練させていってくれます。

時には私自身ゴールが見えていないので、GPT-4に考えさせることもしてみましたが、かなりスマートな方法を提示してきて驚きます。

 

そして、構文がある程度固まってきたところで、パーサーの実装をしてみることにしました。

最初はパースする方法のガイダンスレベルの回答しか得られていませんでしたが、具体的に「実装して」といえばしてくれました。

残念ながら1回では完璧にパースできるものが出てこなかったので、エラー内容を伝えながらこちらも洗練させていきます。

 

構文木を構築できるようになったので、パーサーでパースした結果を golang の構造体に格納するようにしたいと思いました。

ちゃんと構造体に格納できているか確認するために、テストコードを書いていたのですが途中で、実はこのテストは GPT-4 に書いてもらえるのではないかと思いました。

すると、私の書きかけのテストの続きを書いてくれました。
ただし、一部手直しが必要でした。

レートリミットに引っかかりながらなので、何度か休憩を挟みながら進めましたが、構文定義〜パーサーの実装 まで1日で終えることができました。

GPT-4登場前では信じられない速度です。

まだここから実際にサービスとして提供するまでには時間を必要とするでしょうが、ボトルネックとなっていたステートマシン定義言語とそのパーサーの実装の目処がついた今となっては「やるだけ」というところまできたと思います。

 

最後に AI と一緒に開発をする際に、活用余地があるポイントを挙げます。残念ですが、GPT-4 が出力する内容は完全ではないため、それを見極める目と手直しは必要です。万人がプログラマー無しでサービスを作れるという時代まではもう少し進歩が必要そうです。

  • 仕様検討の壁打ち相手にする
  • 実装方針の案を出してもらう
  • 未体験の実装をしてもらう(今回であれば、私は構文木を構築するANTLRを使ったことがなく、g4 の記法を知りませんでした)
  • テストコードの雛形を生成してもらう
  • バリデーターなど考えるのがめんどくさい処理の雛形を生成してもらう

この辺りは現実的なレベルで使えるところまできていると思います。

各項目を見て察していただけたかもしれませんが、プロダクションレディなコード生成はまだ期待できません。しかし、対話を重ねることで 80%~90% レベルまでは GPT-4 の出力で満たせるものを作れると思いました。

 

最後に、私たちの提供している Game Server Services がバンダイナムコエンターテイメント様にご利用いただきました。

事例紹介インタビューが以下です。あわせて見ていただけるとありがたいです。

gs2.io