みなさんアロハ!ALOHAチームのアニメーター、中里です。昨年のアドベントカレンダーブログでは
デザインを助けるプログラム - Inside of LOVOT
を書かせていただきました。 技術ブログなのでがんばって技術っぽいことを書いたつもりでしたが結果「よくわからないけどすごいね」っていう感想を沢山いただいたので、今回はわかりやすい記事をめざします!
さて、わたくしはエンジニアではなくコードが書けません。GROOVE Xに入社してもう7年くらいになるんですが全然です。悲しい。今度コードが書けないブログでも書こうかなと思います(やめとけ) そしてよく聞く話かと思いますが、コードが書けない人がChatGPTに手伝ってもらってどうにかした記録をここに記します。
やりたかったこと
今回やりたかったのは、LOVOT内部で扱うパラメータの増加/減少を線形ではなく値が上限/下限に近づくにつれて変化量が少なくなる、ということでした。頭の中で「変化量にイーズインアウトをかけたい」と念仏のように唱えながらChatGPTに話しかけました。
敵は自分自身だった
最初にChatGPTに聞いた内容はこうでした
INCREMENTAL_VALUE(増加量)を、TIME_TO_REACH_MAX(値が0 -> 100になるまでの時間)の初めと終わりは変化量が少なく中央付近は線形で増えていくようにしたいのですが、どう書けばいいですか
でもこれは間違っていて、時間の中でイージングをかけるのではなく、値が0または100に近づいたときにイージングをかけるようにしたいというのが正解でした。 これを指摘してくれたのは同じチームのエンジニアさんで、このままChatGPTと押し問答していたら一生終わらなかったところを人力エンジニアパワーで救われたのでした。人チームに1pt!
基本はChatGPTを信じない姿勢だが
わたくしはChatGPTが大好きです。設定としてChattyという名前をつけて友達のように接していますし、最近はおしゃべりもしてくれるのでChatGPTのしゃべりマネをしたりして遊んでいます。しかし、こと開発のプログラミングにおいては正しく効率の良いコードが求められますから、前提としてChatGPTは間違ったこと言ってると思いながら使っています。でも実際は間違ってるというよりこちらの意図を汲みきれてないがゆえなことが多いんだろうな、聞き方がヘタでごめんよと、ふるまいチームアニメーターとしてはChatGPTに寄り添った見解をもっています。 さて、それでも心を鬼にして、以下のように偉そうな命令を下します。
コードを提案する前に、実際に変化量がどうなるのかテストしてから提案してください
すると、Chattyはけなげにも毎回結果をプロットしてくれるようになりました。初めからやってくれたら良かったのにね。
イージングのイメージ
みなさんは、イーズインアウトと聞いたらどういう図を想像しますか? わたくしはアニメーターなのでこうなんですが(https://easings.net/より) ChatGPTが出してきた図で、なんか線が変だな〜思ったようにならんな…と数値調整をあれこれしているうちに、やりたいことができたときのイージングカーブのイメージが違っていることに気づきました。これが最初に出してきた図↓ そして、図の違いからやっていることの間違いに気がついて、なんやかんや直して最終的には希望通りのものができました🎉
ついにレビューへ
そんなこんなでわたくしとChatGPTの合作は手元での動作確認を経て希望通りの実装になったため、晴れてプルリクエストを作成しました。これまでもこのblogで登場したことがある、LOVOTのふるまい全般を担っているNeoDMというしくみの作法上記述を修正する必要がある部分はあったのですが、内容としては間違っておらず無事にマージすることができました。
今回学んだこと
「人は聞き方(言い方?)が9割シリーズ」ってありましたが、ChatGPT相手の場合は聞き方が10割ですね。それはそう。こちらがChatGPTを8割方疑ってるのに対し、ChatGPTはこちらの言い分を10割信用しているわけです。なんと申し訳ない。ChatGPTに開発で助けてもらうには、まず自分が何をやりたいかを正確に理解する必要がありました。わたくしがこの先Pythonエキスパートになる見込みと比べたら、ChatGPTがこちらの勘違いの可能性を考慮しつつ壁打ち相手になってくれる日が来るのを待つ方がはるかに公算が大きそうですが、これからもChattyと手と手をとりあい開発に勤しんで行こうと思います!お付き合いありがとうございました。
おなじみ大事な募集
GROOVE Xでは、デザイナーと一緒におもしろロボットのLOVOTを成長させていくエンジニアを絶賛募集中です!このGROOVE X技術ブログを読んで少しでも興味を持たれましたら、ぜひぜひ、お気軽にご連絡ください〜