AIの活用と進化
はい、こんにちは、ヨシオリです。
そうですね、テスト勉強もだいぶ終盤になってきているんですけども
最近、大学の話しかしてなかったんですけど、この前ちょっとAIの話をしたんで、ついでにAIの話に続きをしようかなと思っていて
仕事でも結構AI使っていて、ちょっと一昨日ぐらいからかな、クラウドコードをちゃんと仕事でも試してみようと思って
ちょっと最初にプロプランとかで、自分のプロジェクトで試すはある程度やってみて、まあまあ感覚がつかめてきたんですけども
仕事のコードでも使ってみようかなと思って使い始めたんですが
まあ、そうですね、賢くはなっている。賢くはなっていますね。
パイロットが出てどのくらい経つんですかね、それから最初にコードの保管をちょっと優秀にしてくれるぐらいのパイロットが出てから
なんだかんだでもう3年ぐらいは経っていると思うんですけど、3年の間の進化は本当にすごいなっていう気がしますね
特にクラウドコードはコンテキストの読み込みとかすごいなと思うんですが
読み込んでやってくれるのはすごいなって思うんですけど、まあでもまだちゃんと指示してあげないと動かないなっていうのがまた一方でありますね
どうなんですかね、一から書かせたら結構動くんで、なんかちゃんとこうなんて言うんでしょう
既存のコードに入れたときのコンテキストを使うまでに時間がかかるのかなみたいな思うんですけど
とはいえ、ちょっとこれはやっぱりまだまだAIだなみたいな思うことがあったんで、今日はその話をしようかなと思います
今僕は仕事でバカでかいサービスの分割みたいなのをやっていて
その仕事のコードがモノレポでやってるんですよね
BazelっていうGoogleの作ったビルドシステムのオープンソース版みたいなのを使ってモノレポを扱いやすいっていうビルドツールがあるんですけど
そのBazelを使ってプロジェクト管理をしてモノレポでやっているんで
多分ね、クロードコードに読ませるとコンテキストがデカすぎるのでトークンの使用が激しいんですよね
なんでガンガンガンガントークン使ってしまって
普通にちょっと今会社に経費生産してMAXの高くない方のMAXを使わせてもらってるんですけど
MAXでも結構リミットにかかっちゃうぐらいにはコンテキストガンガン使ってるんだろうな、トークン使ってるんだなっていう感じなんですけど
でも何をやっていたかっていうとGRPCで使って通信して分割するっていうのをやっていて
ある程度インターフェースの部分と通信して実際にメソッドを切り分けるみたいなことは動き始めたんで
ここからちょっとライブラリをゴリゴリ削っていったりとか変えていって
AとBのアプリを分断しなきゃいけないっていうところが始まるんで
割れないように分断するためにここのGRPC部分のテストを書いてくれっていうのを言ったんですよ
僕自身はGRPCのテストをJavaで書いたことはなかったんで
どうやって書くのかすら分かっていなかったんで
そういうのも含めてここの部分まず今からクラウドコードなんでね
まずプラン立ててって言って今からこういう分割を俺はやっています
で、次このライブラリをひっぺがすっていうのをやっていくために
既存のコードが壊れていないことを確認しながらやっていきたいので
このGRPCの通信受け取る部分まだテスト書いてないんでそこのテスト書いてくださいみたいなことを言って
で、書かせたんですけども
まあまあ何度かこううまくいかないうまくいかないみたいになって
遠まれてやっとできましたみたいなのが返ってきたら
そのテストすべきものが全部Mockされていて
Mockされてしかもテスト用のインプリメンテーションに入れ替えられてて
これテストコードをテストしてるよねっていう話になり
これテストコードでテストしてると思うから
GRPCテストの挑戦
逆にプロダクションのコードの方
プロダクションというかそのテストじゃない方の実装コードの方を書き換えて
本当にこのテストが落ちるかどうか確認してって言ったらやっぱり落ちないで
そう全部テストが通っちゃうって
これテストコードでテストをテストしてるだけだ
本当に意味ないからちゃんとやってっていうのを
やらなきゃいけないみたいなのが発生して
今すごいシンプルに言ったんですけど
その間のやり取りも結構何回かあって
でも感動した部分としてはGRPCのテストを書くっていう
なんて言うんでしょう
Googleで出てくるようなものなんだけども
人間が書こうとすると結構試行錯誤で
これやろうと思ったらこのライブラリないとか
このバージョンが違うとか
いろいろ書かれる部分は結構すんなりスッと終わらせるんですよね
はいこれでGRPC使ったテストは書けましたよ
っていうところまでスッと行くんですけども
なんだけどもそのなんて言うんですかね
根本のなんでこのテストコード書いてるんだっけ
が多分すっぽ抜けていて
気が付いたらテストが通るように
ここMockしなきゃここMockしなきゃ
っていうのをやっていったら
ただ単にMockをテストしてるだけみたいになって
Mockとテスト用の実装をテストしてるだけです
みたいになって
何にも意味がないテストやってんじゃんこれ
みたいになったっていうのがあります
なんでその後何回か僕の方でちょっと手直しして
こういう風にやんなきゃじゃないとか
このクラスとこのクラスは絶対に実装の方を使って
それ以外はMockしていいよみたいなのを
細かく指示していくとなんとなく
綺麗なところに落ち着いたと思います
と思いますって言ってるのは
さっきまたAPIのリミットが来て
それ以上進まなくなっちゃったんで
もうすぐ終わると思いますっていうぐらいですかね
はいってな感じでAPI
APIじゃねえやAIですね
AIと付き合いながら仕事やっていくっていうのも
やりながら仕事やってますよっていうお話でした
はいじゃあ