ChatGPTを使って工作したら、カオスな作品が爆誕してしまった
2023年、ちまたの話題をかっさらっているのが「ChatGPT」です。テキスト生成系AIサービスの一種ですが、対話型で、こちらから質問をすると自動的に文章を生成して答えてくれるというもの。
一般に公開されてから、インターネット上にはこのChatGPTを使って、実用的なものからエンターテインメント性の強いものまで、さまざまな試みが行われてきました。
我々fabcrossとしても、ChatGPTを使って何かできないかと考えていました。そして、最終的にたどり着いた答えが「いつものものづくりメンバーにChatGPTでなんか作ってもらおう」という、非常に他人任せな企画。
でもそこはfabcross、名乗り出てくれるメンバーがおりました。ということで、勇者と呼んでも差し支えない3人に、ChatGPTを使った工作を披露してもらいましょう!
石川県の銘菓じゃないよ。原始時代の武器だよ
まずはfabcross編集部から淺野義弘さん。彼は、ChatGPTを3Dモデリングに活用したとのこと。ベースとなるのは、オープンソースの3D CGソフト「Blender」。「BlenderGPT」というアドオンを使って、3Dモデリングをして、それを3Dプリンターで出力しようというわけです。
(参考URL:https://qiita.com/uebo_tongull/items/ba1d4b0c8499026268f0)
淺野:プラグインのダイアログから、プロンプトを書くと3DモデルをChatGPTが描いてくれるんですけど……。
——プロンプトは日本語でもOKなんですね。ただ、結果はあまり芳しくないようですけど。
淺野:あんまり賢くないんですよね。“長い丸を描いて”とお願いしても棒みたいなのが出てきたり、“犬っぽい形を作って”というと、彼(誰だよ)の思う犬っぽい形が出てきたり。
淺野:ならばこれなら分かりやすいかと思って、“make snowman”って英語で雪だるまを作るようにお願いしたら、結構それっぽいのができたんですよね。だから、かなり具体的に指示をしたほうがいいのかなと思いましたね。
——ChatGPTはプロンプト次第のところありますからね。指示が具体的だとChatGPTも答えやすいのかも。
淺野:推測するに、この空間内に丸をランダムにいっぱい配置するとか、そういうことは分かってくれるみたいなんですけど、何か完成形を作ってもらおうとすると、なかなか理解してくれないみたいなんですよ。
——ChatGPTってそういうところありますね。僕らが思っているものとちょっと違うものを出してくるというか。
淺野:そこでいろいろ調べていたら、Blenderにプログラミング言語のPythonで書いたコードを読み込ませてモデリングするという機能があるんですよ。これなら、ChatGPTにPythonのコードを書かせて、それを読み込めばいいんだと思って、やってみました。
まじだ!!!ChatGPT、3Dモデル生成できるやん!! pic.twitter.com/VpGpi9omUf
— akiRAM (@akiram_vr) April 26, 2023
——プログラムコードを書くのは、ChatGPTが得意とするところですからね。こっちのほうがやりやすいかもしれません。
淺野:これはChatGPT(GPT-4)に“Blender の Pythonスクリプトで、雪だるまの形を作ってください”ってお願いしてできた3Dモデルです。球体が3つあるところが、外国人だなって感じしますね。
——日本の雪だるまは球体2つですからね。
淺野:これを試してみて、こっち(Pythonコードを書かせる)のほうがやりやすいなと思ったので、これで何か作ろうと。いろいろ考えたんですけど、原始時代の武器にしました。
——……なぜ?
淺野:ChatGPTが人間の仕事を奪うとか、人工知能の反逆みたいな話ってあるじゃないですか。彼らはまだサイバー空間の中にいますけど、3Dプリンターを介してものづくりにも革命を起こすんじゃないかと。そんな妄想をして。それって、人間でいったら旧石器時代の石斧のことなのかなと感じて、“ITをぶっ壊す石斧を作ってください”というような命令から始めてみました。
淺野:最終的には“Blender の Pythonスクリプトで、石斧のような形を作ってください”とお願いしたんですが、その結果がこれです。
——石斧っぽくはないですね。これじゃあマンモス狩れないでしょう。
淺野:彼らのなかに石斧という概念がないみたいで、すごくシンプルなものができました。そこで、まずは石の部分から作ろうと思って、ChatGPTに“「Blender の Pythonスクリプトで、握りやすい部分と、尖った部分のある一つの石を作ってください”とお願いしたんですよ。それでもちょっと武器っぽくないから“ちょっとギザギザさせて”とお願いして出てきたのが、これ。
——ただの、石?
淺野:これだと武器じゃないから、もっと縦に伸ばしたいと思って“もっと、5倍くらい縦長にしよう!”ってお願いしました。
淺野:これでもなんか足りないなと思って、もっとギザギザを作ってくれとか、切り欠きを作ってくれとか、いろいろお願いしたんですね。で、最終的にできたのがこれです。
淺野:これができたとき、このギザギザ感というか、僕が手動ではできないなと。AIが作りました感満載のランダム性というか、恐怖感があって。これは殺傷能力がありそうだなと。で、これを出力したのがこちらです」
——確かになんか怖い。
——アップにするとさらに怖い……。
淺野:実はこの後、もっと丸みを持たせたりしようと思って指示したんですが、結構気持ち悪いのができたんですよね。これ、多分3Dプリンターで出力したら処理重すぎてダメだなと思って。
——確かにちょっとグロい感じがしますね…。
淺野:そこで、“すげー気持ち悪いのができたよ。ファイルサイズが重すぎるから、もう少し処理が軽くなるよう調整してみてもらえるかな?”って指示を出したら、“すみません、気持ち悪い石ができてしまって申し訳ありません”って返ってきて(笑)。
——ちょっと人間味ありますね、ChatGPT。謝罪できるのはいいこと。
淺野:この後いろいろ試したんですけど、さっきの四角いプリミティブな武器(?)を持ってきたという次第です。
——これ、他のメンバーからは「金沢の銘菓みたい」「軽くてふわふわな和菓子っぽい」と好評ですよ。
淺野:これはBlenderGPTだけで作ったものなんですけど、“Distorted Shaped Stone-Axe”って入れて作ったやつを自分で位置だけ修正して、石斧風にしたものです。
——若干こちらのほうが武器っぽいですかね。殺傷能力はわかりませんが。実際ChatGPTで3Dモデリングをしてみてどうでしたか?
淺野:こちらで数値指定してモデリングするとかは、ChatGPTでやるメリットはあまり感じられなくて。今回のようなアバウトな指示で生まれるランダム性とかは、予想できないものができて面白いといえば面白いですね。
——ああ、最初から事故を起こすつもりでChatGPTを使うと。芸術性高めのものができそうですね。
淺野:今は文章を投げて答えを返してもらっているけれど、写真や図版、スケッチなどを投げてそこからデータを作ってくれるようになったら、いろいろ幅が広がりそうだなと思いました。3Dモデリングのハードルが下がりますよね。
淺野:それと、ChatGPTに書いてもらったプログラムの中身を見ると、ここでこういうエラーが出るんだとか、こういうノリでやってるんだねとか、どの部分でランダム性を出しているのかとか、ChatGPTに聞くと答えてくれるので、Pythonでモデリングするときはこうすればいいんだという勉強にも使えるかなと思います。
——まだBlenderGPTも公開されたばかりですから、これからいろいろな使い方が模索されていくんでしょうね。ありがとうございました。
ハートを描くお絵描きロボット、のはずですが……
お次は工作ライターの小林竜太さんです。小林さんは自作のお絵描きロボット(ペンプロッター)に、ハートを描かせるArduinoのプログラムを書いてもらったようです。
ペンプロッターがすでにかっこいいんですが。このペンプロッターにお絵描きをさせるわけですね。
小林:はい。こういうロボットを作ったときは、数式を書かなければいけないんです。まずは座標で、このサーボモーターの角度に合わせた逆運動座標プログラムでコーディングさせなければいけない。このサーボモーターを使ってプロッター自体は誰でも作れるんですけど、プログラミングでつまずいてしまうことが多いんです。計算がメチャクチャ面倒くさいんですよ。
——私立大学の文学部日本文学科出身の僕には、もう何を言っているのやら分からないのですが……。複雑なプログラミングの知識が必要ということは分かりました。
小林:ということで、まずは座標に応じてサーボモーターの角度を指定するというプログラムをChatGPTに書いてもらいました。
——これでペンプロッターが動作するようになるわけですね。
小林:次は、このペンプロッターでハートを描くために、ChatGPTに座標を書いてもらいます。
——まずペンプロッターのプログラムを書いてもらって、次のハートを描くためのプログラムを書いてもらったと。
小林:はい。ハートの座標もよく分からないので、それもChatGPTにまるっとお任せしちゃいました。
——丸投げなんですね。
小林:このプログラムで1回ハートを描かせてみたら、ちょっとハートが大きすぎたので、“ハートをもっと小さくして”とお願いしました。
——その答えがこちらですね。一つ前の結果と比べると、数式がちょっと難しくなってるような……。分かんないんですけどね、僕には。
小林:あとは、座標計算が間違っているようなので、それも修正をお願いしました。
——とりあえず、プログラムの修正もすべてChatGPTにお任せしてるんですね。
小林:これでプログラムは一応完成ということで。
——じゃあ、これでハートがちゃんと描けるようになったと。
小林:いや、それが描けないんですよ……。プログラムは合っていると思うんですが、今回使っているサーボモーターはホビー用なので、メカ的な精度が低いんですよね。実際に動作させるとなると、オフセットとかキャリブレーションをしないといけないんですが、ChatGPTだとそこまではなかなかできないんです。
——ああ、プログラムは合ってるけどハードウェアのほうの問題でうまく描けないというわけなんですね。とりあえずハート描かせてみましょうか。
——全然ハートじゃねええ! なんかクロワッサンというか、なんというか……。
小林:こうなっちゃうんですよね……。
——これ、終わらないんですか?
小林:終わりません。ずっと描き続けます。
——いろいろ頑張ってみたけれど、これが限界だと。小林さん的にはどうですか? このハートを見て。
小林:でもまあ、ここまでChatGPTがやってくれれば、あとは自力でちょっと修正すれば、ちゃんとしたハートが描けると思いますよ。難しいなと思ったのは、ChatGPTが出したプログラムがL1という座標を指定してるんですが、そもそもL1がどこなのかがわからない。L1って何ですか、L3って何ですかって聞いても、ちゃんと答えてくれないんですよ。その辺のコミュニケーションがちょっと難しいですね。
——なるほど。ChatGPTってこちらが上手に質問しないと、期待した答えが返ってこないことも多々ありますし、同じ質問をしても毎回違う答えが返ってきたりしますから、その辺りをうまくやれるようになれば、もうちょっと精度が高くなるかもしれませんね。
——このペンプロッターはかっこいいですね。
小林:ペンプロッターの3Dモデルはこんな感じで。まあ、これは1日もあれば作れちゃうものなんですけど。
——いやいや、これをササッと作れるって流石だなと思いました。ありがとうございました。
ChatGPTがホストに! シャンパンコールでアゲアゲだ!!
最後は、ギャル電きょうこさんです。この企画をスタートしたとき「私はChatGPTをホストにする!」と息巻いていましたが。いったいどんなものができたのでしょう?
——これって……、なんですか?
きょうこ:まあ、まずは見てよ。
——なんですかこれ! なんかすごいですけど、なんなんだ!!
きょうこ:私がずっとやってるプロジェクト、AIをホストにしてシャンパンコールをさせて、歌舞伎町に売り込みに行くっていうのがあるんだけど、その第一歩の作品だね。コールができるホストがいないホストクラブ向けの、シャンパンコールカラオケ。
——いやー、テクノロジーをこういうところに使う才能、さすがきょうこさん。でも、どうやって作ったんですか?
きょうこ:アレクサとChatGPTを連携する方法は、コードが書けない初心者の人でもできるやり方をめっちゃ詳しく紹介してくれているYouTube動画を見て作ったよ。
プログラマーじゃなくてもノーコードで作れる方法で、1個ずつ動画と同じこと設定すれば誰でもできちゃう! いにしえのインターネットでいうところの、ホームページビルダーでカウンター付きホームページを公開するくらいの難易度でできたって感じ。
(参考動画 【革命】アレクサを使ってChatGPTと音声で会話する方法をIT初心者に向けて徹底解説!)
——それにしても、アレクサにシャンパンコール作らせたり、ドラム叩いたり光らせたり、結構いろいろなことやってますよね。
きょうこ:メインで使っているのはネットサービスを連携する「make」っていうサービスと、音声アプリをノーコードで開発する「Voiceflow」っていうツール。
きょうこ:Voiceflowで作ったアレクサスキルで、シャンパンコールのテーマを音声で受け取って、makeを介してChatGPTに投げているって感じ。makeでは、ChatGPTを呼び出すときにロールと質問を設定してる。
——ロールってなんですか?
きょうこ:ロールっていうのは、アレクサの人格みたいなものかな。今回は「あなたは歌舞伎町のイケてるホストでラップがうまいです」って設定している。
きょうこ:質問は「ノリのいいシャンパンコールを考えてください。くりかえしの部分があり、テンポがよく韻を踏んだコールをお願いします。 コールには『アレクサで入力された音声データのキーワード』のワードをいれてください。」って設定した。
——ほほう、これを設定すればホストっぽいシャンパンコールをしてくれるようになるんですか?
きょうこ:いやいやいや。ChatGPTをホストにするために、かなり壁打ちしたね。
きょうこ:ChatGPTにシャンパンコールはこういうものだっていうのを教え込んで。何度もやっていくうちにそこそこ分かってきたみたいで、最後は「お前はとにかく歌舞伎町で高収入なホストだ!」って言って。
きょうこ:最初の頃は私が例として出したコールを真似してただけなんだけど、「お前はラッパーだ」みたいなことを言って、繰り返しテンポよくいけと指示を出してたら、それなりの形になった。
——結構手間がかかってますね。しかし、このシャンパンコール、ところどころワードは聞き取れますけど、全体的には何を言ってるのかさっぱり分からないですね(笑)。
きょうこ:シャンパンコールなんて、その場のノリと勢いだから、意味なんてなくてもいいんだよ。それっぽければ盛り上がるでしょ。
——電子工作の部分ってどうなってるんですか?
きょうこ:2つあって。叩く音に合わせてランダムにドラムのLEDが光る部分と、サーボモーターでドラムスティックを動かす部分。
きょうこ:こっちがドラムのLEDのプログラム。
きょうこ:こっちがドラムスティックのプログラム。このプログラム、最初は動かなかったんだけど、デバッグの方法もChatGPTに聞いたよ。
——工作のほうで苦労した部分はありますか?
きょうこ:シンバルを付けたくて、100円ショップでタンバリン探したんだけど見つからなくてさぁ。代わりになるもの探してたら、くるみボタンの蓋がちょうどよかったんだよね。小さいシンバルがなかったら、くるみボタン。今回一番の収穫かもしれない。これはAIにはできないことだから、人間の勝ちだね。
——まあ、まだAIにはシンバルの代わりにくるみボタンを使うという発想は浮かばないでしょうね。今後は分かりませんが。
きょうこ:それと、Voiceflowとか情報が少なくて、ちょっと難しいことをやろうとすると、急にハードルが上がるのね。ノーコードって簡単だけど難しいなと思ったなぁ。
——ある程度までは簡単にできるけど、それ以上のことをしようとすると情報が少なくて苦労すると。でも、初心者にとってはハードルが下がっていいですよね。
これがfabcross流ChatGPT工作だ!
ということで、fabcrossメンバーによるChatGPTものづくりは以上です。いやー、カオス! なんとなく思ったものと違うものができちゃったり、予想通り動かなかったり、ぶっ飛んでたりと、バラエティに富んでましたね。
みなさんも、参考にできるところは参考にして、ChatGPTを使ってものづくりを楽しんでみてください!