LuppetX開発(アプリ・Webページ)でChatGPTがどれだけ俺を助けてくれたかの記録です。
自分の感覚でいうと、ChatGPTの特性をちゃんと理解して業務に活用していける人の業務効率はかなりあがるだろうなと思いました。
LuppetX開発を通して、実戦の場でどのくらい役に立つのか肌感を掴めたのが良かったですね。
🔴 翻訳
ChatGPTが非常に得意としている部分かなと思います。
もちろんこれまでもDeepLやGoogle翻訳など様々な翻訳ソフトを使ってきましたが、実戦では以下のような問題がありました。
・出力が一定で、「カジュアルな英語で訳してほしい」「できるだけ短い表現で訳してほしい」などの翻訳ニーズに答えられない。
・HTMLタグやマークダウン記法を上手いこと解釈してくれない場合がある。
これらの背景には、翻訳といっても様々な場面があるという事情があります。
・ドキュメントページ用のきっちりとした翻訳
・ランディングページ用のカジュアルな言葉での翻訳
・アプリ内の限られたUIの範囲に文字を収めながらの翻訳
など。
今回LuppetXでは翻訳をほぼChatGPTを使って行いました。
自分のニーズを満たすようにプロンプトを組んで使っていましたが、上手いこと翻訳を処理してくれて、かなり信頼度が高かったです。
プロンプト例:
===
あなたは日本語を英語に翻訳する翻訳家として振る舞ってください。
これから私はマークダウンを入力します。そのうち日本語になっているものを英語に翻訳してください。ネイティブかつわかりやすい英語にしてください。
結果は、
```
{結果}
```
という形で書いてください
===
結果:
またこれで出力した翻訳文を「もう少し短く、かつ、意味が最低限通る表現にしてください」といった追加命令で更にブラッシュアップすることもできます。
余談ですが、DeepLだとCtrl+C2回押しで翻訳が起動してめっちゃ便利だなと思って使っているのですが、これをChatGPT版に置き換えたやつを作って欲しい。
🔴正規表現
AIに正規表現を書かせるのもかなり時短になりました。正規表現は人間が書こうとするとかなり大変だし考慮漏れをしてしまう可能性があります。
(少なくとも自分は…)
例:
---
Inputタグで(8文字以上の英数字・記号)という入力条件となっているパスワードを入力させるInputを作ろうとしています。
Pattern属性はどのようにするべきですか?特殊記号のエスケープに注意しつつそれを書いてください。
---
結果:
ここに追加の対話で、テストケースを出力してもらうと良いかなと思います。
🔴プロジェクトで依存関係のあるライブラリを説明してもらう
知らない言語で作られたプロジェクトを理解するのは難しいです。
ただ、依存関係のあるライブラリがどんなものかが分かれば、「このプロジェクトは何をしているか」が大体わかってくるので、とっつきやすくなります。
自分はPythonのプロジェクトに書かれたrequirements.txtで以下のようにプロジェクトを理解するということをしていました。
一々全部を手で調べることなくこのように説明してくれると、マジで便利だなと思います。
当然ながら2021年9月以降に作られたライブラリには適用できませんが、それは改めて手で調べれば良いのでここまで明らかになっていれば十分です。
🔴コーディング(Unity)
Unity開発とChatGPTは非常に相性が良い(※)と思います。
自分はコーディングでは実際に以下のようなことに使いました。
・コードを渡してパフォーマンスの改善の余地を発見してもらう
・Dev/Prodを切り替えるEditor拡張の実装
・Unityでやると重い処理について、Unityを使わずに実現する方法の確認
など。
結果としてはこれはかなり役に立ちました。
ChatGPTからはある程度満足な結果が返ってきましたことももちろんありますが…
ChatGPTが長文の返答をしてくる間にメールを確認したりタスクを確認したりお茶を汲んだりと気持ちをリフレッシュのような形で役に立ってくれました。
※相性が良い件について
サブタイトルでわざわざ(Unity)と注釈したのは、UnityというかC#が昔と比べても大きく記法が変わらないからChatGPTの答えが正しいことが多いことを利用しています。
これが例えばWebの世界では、記法の変更やライブラリ更新が頻繁に行われるためChatGPTが答えるコードは古いことが多くあまり役に立ちません。
これは例えば、LuppetXのアカウントページの実装にはNuxt3を使っていますが、ChatGPTが2021年9月以降のことを知らないためにNuxt3のことを聞いても正しい答えは返ってきませんでした。
(Nuxt3の正式リリースは2022年11月)
🔴まとめ
1人で開発していると、やればできるけどただただ面倒なことをこなす必要があるし、自分1人では気づかないことになんとかして気づく必要があります。
改めて振り返ってみると、ChatGPTと共に開発をすることで、時短ができたり自分の作業を客観視できて開発作業の品質を今までと比べて大きく改善できたなぁと思います。
ChatGPT Plusにはだいぶ前から課金していますが、確実に元は取れていますね!
ChatGPTに対してある程度の信頼を置いて使い倒すことができれば1人の人間が2,3人分の働きをすることはそれほど難しいことでもないように思います。
LuppetXならではの実験的なアプリを作ってみました。
🔴何を作ったか
まずは動画を見てください。
bandicam 2023-08-19 09-58-10-440
知らない人は何これ?となると思いますが、
これは以前自分がやったAIイラストの試みに関連しています。
🔴これは何?
LuppetXからモーションを受け取り、AIイラスト用のControlnetの素材を出力するアプリです。
一度の撮影で、以下のようにbody(Openpose)とhand(canny)の画像を出力するアプリとなっています。
この2つの画像をStable Diffusionに与えることで、↑のツイートのような「ポージングを指定しつつ、指形状の壊れないAIイラスト」を作ることができるようになります。
🔴生成結果
狙い通り、ある程度ポージングを寄せてイラストを生成することができるようになります。
ポーズがややブレるのでOpenpose部分についてはもうちょっと改善の余地がありますが、やりたいことは最低限出来てるので個人的には満足です。
🔴なぜ作ったのか
Controlnetを複数使うこと自体はだいぶ前(このツイートにあるように2月時点)からあります。(詳細:3月号の記事)
そして、この素材をどのように用意するかが問題でした。
・手形状のリストから選んで使う
・ボーンをポチポチ動かして、好きなポーズを作って使う
というのが当時必要でした。
ただ、当時からそれってめちゃくちゃ面倒だよな…という思いがあって、これをモーションキャプチャで動かせたら良さそう。という思いがありました。
そのため、LuppetXのモーション送信機能を用いることで、それを実現して、LeapMotionとWebカメラを使った高い精度のControlnet画像を出力することができるようになりました。
(ちなみにモーションデータの受信にはVMCプロトコルで送っているため、例えばmocopiで全身トラッキングでも動くと思います。)
まだこのアプリはできたてほやほやなので、本格的にAIイラストを出力する作業をやっていく中で、使い勝手などブラッシュアップしていければいいなと思います。
というわけで今月は以上です!
お読みいただきましてありがとうございました!
LuppetCafeやLuppetXを作ってる間はアウトプットばかりで、最近の技術のインプットがおろそかになっているのを実感するばかりです。
1~4月にAI周りを触ってて最低限のインプットはできてたのは良かったですね。
LuppetXがリリースできたこともあり自由に使える時間が以前よりもとても増えたので、とりあえず今年いっぱいは新しいことに体と頭が追いつけるように色んなことを挑戦できればなと思います。
最近、今年の目標を改めて決めたのですが、その中にAIを頑張るぞい的な内容も盛り込んであるので今後も力を入れていく予定です。
頑張ります!