はい、始まりました。 inajob の試しに録音してみた、略してため録トーク114。
このポッドキャストは、40代ものづくりが好きで、子育て中のエンジニアである inajob の何でもない雑談をお届けするポッドキャストとなっています。
それでは、今日も始めていきたいと思います。
さて、健康のコーナー早起きができています。良いことです。
ただ、朝私が早起きをして家事をしたり、ちょっと隙間時間に少しパソコンを触ったりしていると、
5歳の娘がいるんですが、娘が寝ぼけて起きてですね、
隣に私がいないというところで泣き出してしまうという問題が2日ぐらいあったかな。
これはもう慣れてもらうしかないかなという感じがしていて、
5歳なんて分かってくれるとは思ってはいるんですが、
ただ、機嫌が悪いときは分かってはいてもというところがあると思うので、
ちょっとしばらくはそういうトラブルが続く日々かなと思っています。
別に娘が泣き出したところで、我が家の誰かが困るということはあまりなく、
隣で寝ている妻が起きてしまうことと、
私の朝の自由時間が減ってしまうというところにさえ目をつぶればなんとかなるかなというところで、
早く慣れてほしいなとは思っています。
それからそれに合わせて私の睡眠時間は結構長めになっているなと思っていて、
夏はね、睡眠時間が短くするつもりはないんですけど、
寝苦しいとか、夜何かに熱中してしまってとかというところで、
短くなった結果風邪をひくということが多かったので、
今年は長めにできているというところで、
それに関係しているのかなと思ったりしています。
5歳の娘の手足にポツポツが出ていて、
なんとなく手足唇の症状と似てはいるんだけど、
発熱はしていないから、長期にわたってずっと出ているので、
この期間休ませるというのも現実的ではないし、
発熱していなければ。
本人も別に痒いとかはないので、
幼稚園に通話してはいるんですが、
ちょっと気になっているなというのも健康というところで思いついたので、
喋っておきます。
あと、ポツポツができる手足唇の時って、
不機嫌病とかって言われているらしく、
機嫌が悪くなったりすることもあるんですけど、
最近娘が機嫌悪いのもポツポツ関係しているのかなと思ったりとか、
ちょっと気になったりしていますが、
機嫌が悪いという一つの事象からも、
原因ってなかなかわからないなという感じがして、
毎日クイズゲームをするような日々を過ごしておりますが、
健康が結構続いていて、
今年はなかなかいい成績だなと思っております。
最近、ジョギングとかもしていないんだけどね、
腹筋とか腕立ては気が向いた朝とかにしているんだけど、
そこまで習慣化もできていないので、
ちょっと気合を入れ直さないとまた体調不良になっちゃうと思うので、
気を緩めずにやっていきたいと思っております。
そんな健康の話でした。
試しに遊んでみたい人は遊んでみてください。
これあと改良するとしたら、
盤面の難易度みたいなのが設定できるといいなと思っていて、
どうやるかよく分かってないんですが、
すごい簡単な面とものすごいじゃないな、
ちょっと考えないとできない面の2種類ぐらいかな、
パズルの性格上あんまり難しいゲームはできないような感じを受けていて、
簡単かちょっと難しいぐらいの2段階ぐらいは評価できるような気がしていて、
なんでランダムで作って、簡単って評価されたものは
簡単モードでラストシーンで何度か作ってもらって、
難易度判定して欲しい難易度が出てきたら、
利用者に見せるみたいなアルゴリズムにすれば、
そんなに複雑なロジックを組まなくても、
難易度の出し分けができるなと思っていて、
それはやってもいいかなと思っています。
それからリバーシパズル、
爪リバーシっていうアイデアから派生して、
もっとこういうオセロにはないこういう概念を入れると、
パズルっぽくなるんじゃないみたいなアイデアもいくつかあるんですが、
それやっちゃうと元々の爪リバーシ、爪オセロっていうところから離れていっちゃうんで、
それやるんだったらまた別のゲームかなと思って、
このゲームはこのゲームでこんなもんじゃろっていうところで止めているっていう感じなのが一つと、
もう一つ今頑張って私が作っているのが、
トラップダンジョンっていうこちらもパズルゲームです。
これは割と真面目に最近も作っていて、
マインスイッパーをベースにしたローグライトなゲームっていうのを作ってみようと思って、
本当に確かにLLMに、
ジェミニシーライにマインスイッパーをベースにしたログライトを作りたいんだけどって言って、
作り始めたやつなんですけど、
マインスイッパーって普通にどこのマスでも開けれるんですが、
このトラップダンジョンはマインスイッパーのような盤面なんだけれど、
開示したマスの範囲内を主人公が歩き回ることができて、
その歩き回ってたどり着いた壁を主人公は開けることができるっていうような感じの、
もうそれで終わりかなっていうマインスイッパーです。
あとアイテムがあるみたいな感じでどんどんクリア。
ゴールもあるとか、ゴールを目指すんですね。
マスを開示していきつつ、
マインスイッパーと違ってこれは地雷じゃなくて罠っていう設定にしてますが、
罠を回避しながらゴールを目指しつつ、
ゴールに着くと下の次の面に行くと。
面を進めば進むほど難易度が上がっていったり、
今までいなかった珍しいアイテムが手に入ったりみたいなことができるような、
ログライトっていうゲームのジャンルのものを作っていて、
これは今すごい頑張って作っています。
これね、ドラゴンスイッパーだけ以前ね、
いくつだったかな、なんか紹介したことがあるんですけど、
それが結構面白かったっていうのもあって、
そういうゲーム、自分もなんか考えたことあったなと思って、
そのマインスイッパーをベースにするゲームって、
まあ誰でも思いつくと思うんだけど、
私も例に漏れずこのドラゴンスイッパーをやりながら、
こういうマインスイッパーをベースにしたらこういうゲームもっとできるんじゃないかなと、
思うところがあって、
それで自分の思いを一回作ってみるかと思ってね、
カードゲームとかだったら、
試しにカードを物理的に作ってみて、
手元で動かす、試してみるみたいなことができるんだけど、
こういうコンピューターゲームの場合って、
想定しながら、こういうゲームあったらどうだろうっていうのは、
実際のゲームを触るのが一番、
感覚が分かりやすいんだけど、
作るのは結構めんどくさいっていうハードルがあったりするんですが、
それこそこのLLMで言えば作ってくれる時代なんで、
パッと作って試してみて、
面白そうってところがちょっと分かってきたんで、
作り込みを始めてるっていう感じですね。
ドラゴンスイッパーの話をしたのは、
トーク88、一巻は大切ですね。
そんなところで話したのを、
思い出してきて作ってるっていう感じです。
これを作って、今インターネットのSNSとかで作ってるんだよ、
みたいな話をちょいちょい発信しながら作っていると、
それが大学時代に所属していたX68000同好会っていう、
コンピューターゲームを作るサークルのOBの友人たちが、
フィードバックをくれたりとかして、
別にこのゲームに関わらず、
ちょいちょいSNSの投稿に反応をもらってたりするんですけど、
まさにあなたの作ったゲーム、
こういうとこ面白いんだよ、こういうとこ面白くないんだよ、
みたいなフィードバックを物質で、
お互いにやり合っていた時代を思い出しながら、
懐かしいなって思いながらゲーム開発をしています。
いなじょぶ側の中にも遊んでくれている人がいて、
新しい機能を出した次の日とかに、
こんな面白い機能ついてんだねってフィードバックをもらったりとかして、
楽しくゲーム開発ができています。
こういうゲーム開発って、仕事しながらとか、
子育てしながらって、なかなか時間が取れなくて難しかったり、
途中で中断してしまっても手付けずになっちゃったりすることが多いんですけど、
ちょいちょいデミニシエライに、
問いかける時間さえあれば作り込みができるので、
非常にいいなと思いながら作っています。
本当に朝ごはんの準備をしている時に、
パンを焼いたり、スープを温めたりする流れで、
デミニシエライにちょっとこのバグ直しといてとか、
難易度がこういうふうな設計に今はなっているけど、
これだとこういうところが面白くないと思うからアイデア考えてとか、
CSSの効果が崩れてるから直しといてみたいなところを言うと、
パンを焼いたり、スープを茹でたり、
温めたりしている間に、
デミニシエライも何か進めてくれていて、
お皿に盛り付ける頃にはこれでいいですかって聞いてくれるんで、
はいってやってっていう感じで、
家事の合間にプログラミングしたり、
もしくはアイデアの壁打ちができたりとかしていて、
生活の隙間に入り込むプログラミングみたいなことが、
割とできていて、最初のロジックを作ったり、
ゲームとしての体裁を整えるところは少し面と向かってというか、
しっかり考えながら進める必要があるんですけど、
ちょっとした修正だったり、
もしくはアイテムを1個足すとかだったら、
意外と隙間作業の間にやってくれているのが便利で、
プログラミングとの関わり方も結構変わるなと思いながら、
仕事だとそれは無理ですけど、
趣味のプログラミングっていう意味でも、
様子が変わっている、新しい世界が来ているななんて思っていました。
AIが結構吉田に救ってくれているおかげもあって、
私の把握していないけどいいような、
できているところとかがあるなってことに最近気づいてきて、
このいいようにっていうのを一体君はどこから持ってきたんだね、
AI君という気持ちになっています。
例えばマインスイーパーの難易度、
最初にAIにだんだん難しくしてね、
みたいなことを言って作ってもらったら、
確かにだんだん難しくなっているような気がするんですよ。
盤面がだんだん広がっていったりとか、
罠の数が盤面の広さに応じて変わっていったりするんだけど、
これどういう数式でやってるんだろうなって、
後でソースコードを見ると、
結果としてWindowsとかにもともと付いているマインスイーパーの
罠の密度と合うような形で難易度を調整していて、
君はその知識をどこから得たんだねと思いながら見ていました。
完璧ではなくて、
今現在、ちょっと直しちゃったからあれだけど、
最初の段階だと、だんだん難しくはなっていない。
画面はどんどん広くなるんだけど、
罠の密度は一定みたいな感じのルールになっていて、
マインスイーパーの難しさを何と捉えるかにもよるんだけど、
単純に盤面が広くなって、
単純な作業をたくさんやることが難しさなんだとしたら、
それは実現されているんだけど、
罠の密度が上がってきて、
運を試される局面が増えるかというとそういうことはなくて、
一定の罠の密度を保ちながら画面が大きくなるみたいな
ロジックになっていて、
初手をAIが考えてくれて、
人間が罠の密度を上げていくほうが面白いんじゃないかとか言って、
直してもらったりして、
それも別に人間が正しいわけじゃなくて、罠の密度を上げると、
マインスイーパーとしては、運の要素が強くなりすぎると、
ロジカルに解けるっていう面白さが減っちゃうんですよ。
開けることが増えちゃって、
そうすると、本来面白い運試しの要素が強くなりすぎちゃって、
私は面白くないなと思ったりして、
大半の人はそうだと思うんですけど、
ゲームの面白さみたいなところは難しいなと思いつつ、
ロジックみたいな単純なところはAIが作ってくれて、
面白さなんだみたいなところは、
人間とかがAIと壁打ちしながらゲームが作れていて、
プログラミングだけじゃなくて、
ゲームのルールの相談とか、
アイテムもこういうふうな難易度曲線にしたいからどんなアイテムがいいとか、
そういうレベルでの相談とかができて、
一人で作っている感じがしなくて、
非常に新しい体験だなと思いながら作っています。
新しい、最近付けた機能で面白そうなのは、
見通しの悪いマスが途中から出るようにしてみました。
これは分かんない。
これは私分かっていなくて、
詳しい人とかゲームに理論を求める人に聞きたいんだけど、
マインスイーパーで周りの8マスの中に罠が何個あるかを
数字で出すのが基本的なルールなんだけど、
開示したマスの中には数字が出せる、
未開示のマスには数字は書いてあるんだけど、
出てこないという感じですよね。
見通しの悪いマスは、
斜めの含めて8方向じゃなくて、
上下左右の4方向の罠、
地雷の数を表示するというマスのことです。
全部そういうマスにしちゃうと解けなくなっちゃうんで、
今いくらだったかな、15%ぐらい、
見通しの悪いマスが入るというのが、
途中から起きるようにしたんですね。
頭はすごい使うようになって、
ノージルが出る面白さが増したように私は感じているんですが、
一方で、
見通しの悪いマスと普通のマスの数字の差から、
ロジックで罠がここにあるぞって特定できるシーンが
増えたような気もしていて、
簡単になったような気もするし、
難しくなったような情報量が減っているので、
斜め向きに何個あるかってことが見えなくなっちゃうんで、
ある種難しくなっている時もあるし、
通常マスと見通しの悪いマスの差によって、
罠の位置が確定することがあるので、
それで簡単になっているような気もするし、
ただプレイしている私としては、面白くなったぞという気がしたので、
それでリリースしたんですけど、
単に私がマインスイーパーのルールには慣れているけど、
それを学習する過程が面白いと感じているような気もしていて、
その辺りがまだスッキリしていないんですが、
本当にゲームの面白さというのを定量化するというか、
定量化しなくてもいいんだけど、
このゲームの面白さというのはこういうところにあるんだよという風に
言い切るとか推測をするみたいなのはすごく難しいし、
そこがゲーム作りの面白いところだなと思ったりしていて、
込み入った話をしましたけど、
そういうルールを決める側の楽しさみたいなのが伝わればいいなと思って
私はこういうミニゲームを作るのは結構好きでやっていて、
LLMが出てくることで、
そういう面白さの部分を凝縮して体験できているような気がしています。
もしプログラミングはあまりやったことなかったけど、
そういうルールを考えたりすることが結構好きだよという人は、
もしかしたら今のタイミングから、
生成AIを使ってゲームを作るみたいなのをやってみると、
案外面白さに触れられるかなという気がしています。
ゲームを作る作業自体がすごくゲーム的なんですよね。
そういうゲームももちろんあるじゃないですか、RPGを作るとか、
RPGを作るのはどっちかというとストーリーを作る側の話ですけど、
ロジックベースのゲームみたいなもので、
それを自分の考えたルールをどんどん作っていって、
それをどんどん変えていって、ゲーム自体がどう面白くなっていくかとか、
プレイヤーがどう振る舞うかみたいなのを想像したり、
実際にそれを人に触ってもらって、思った通り動くじゃんとか、
思った通り楽しんでくれてるじゃんっていうのが、
フィードバックを得られるのはすごく面白い体験だと思っていて、
フィードバックが堪能な人の1000倍特許みたいな感じだったところが、
随分とその裾野が広がってきてる気がするんで、
ぜひ今まで温めていて、
俺の考えていた最強のゲームがある方は、
机上だけじゃなくて、生成愛と一緒に話すと、
本当のゲームとして作ったり、何なら人に遊んでもらえるレベルまで、
ものづくりを進めることができるようになっているので、
アルゴリズムの名前が分かっていたりする場合は指定するとすぐやってくれます。
例えばトラップダウンだとゴールまでのまっすぐ線を引いた、
その線のところにあるマスを開示するっていうアイテムがある、
アリアドネの糸だっけっていうアイテムを作ったんですが、
このときにゴールまでの道筋にあるブロックを開示してっていうよりは、
ブレゼンハムの専門のアルゴリズムでゴールまでのマスを開示するようにしてって言った方が、
確実にアルゴリズムを実装してくれます。
まるで魔法の呪文の栄章のようですね。
アルゴリズム分かっているってことは、いちいちロジックを説明しなくても、
アルゴリズム名を言ってあげるとAIはあれのことねってなって作ってくれるんだけど、
なのでそういうコンピューターサイエンスの知識は意外と役に立つなと思いながら、
ブレゼンハムの専門発生のアルゴリズム以外は使ったことないかも。
でも幅優先探索でどうのとか、
要所要所でコンピューターサイエンスの用語を使うことで指示が通りやすくしているところはあると思うので、
そういうところはお勧めかなと思います。
プログラム言語って時々よくある構造に、
閉じと開き、カッコだったりとか、HTMLのタグだったりとかで、
閉じと開きのペアを合わせないといけない場面がたくさんあると思うんですけど、
Dev2CLIは特にかもしれないですけど、
この閉じと開きの対応を間違えることが多くて、
多分ソースコードの一部しか見ずに修正をしようとするから、
閉じと開きの対応を間違えることがあって結構多いんですよ。
それを直してって言ってAIに直させると、
なんかうまく直せないことも多かったりとかして、
こういうところは人間がフォローした方が早いかなと思っています。
あとクオートな使いも苦手ですね。
ダブルクオートとかシングルコードが変に混ざり込んでしまうソースコードを作ることがあって、
それでシンタックスエラーになってるとか、すぐ人間が見たら直せるんで、
そういうところは変に全部AIでやろうとせずに、
人間が直して、直しておいたんで読み直しておいてって言った方が早いかなっていう風に気がします。
あとコードベースが500行を超えたあたりからどうも様子がおかしくなるなってところがあって、
モジュールに切っておけばそこまでおかしくならないんで、
500行とかを超え始めると、
1回そのリファクタリングをしたりとか、
モジュールを分割するような処理をAIに早めにしておくと、
本当に大きくなってからだと分割すらうまくいかなくなると思うんで、
多分ね、やったことないけど、
500行を超えたあたりから500行を1000行の間ぐらいで、
モジュールを分割することを指示するのが良いかなと思っています。
以前、頭の悪いAIに書いてもらって、
デバッグを頭の良いAIにしてもらった方がいいみたいな話をちょっとしたんですが、
この今のトラップダンジョンぐらいの規模になってくると、
やっぱりGemini 2.5 Pro、
私が前回賢いと言った方のAIですけど、
これにメインでプログラムを書いてもらわないと、
ちょっとGemini 2.5 Flashの方では、
考慮の少ないものとかを、
バグをすぐ生むようなコードを書きがちだなという気がしてきて、
まんまと課金するといいぞっていうメッセージをGoogleから受け取る羽目になっておりますけれども、
なんかそんな感じがします。
ただ、CSSちょっと直すとか、
ちょっとした機能を足すとかだったら、
Gemini 2.5 Flashでも多分できると思っていますが、
最近そんなにじっくり取り組んでなくて、
Gemini 2.5 Proの1日の上限、
無料の部分でできる範囲の中で、
Gemini 2.5 Proを使っていて、
使いすぎるとGemini 2.5 Flashに落っこちるんですよ、
課金してないと。
でもその状況にならないことが多くて、
最近ずっとGemini 2.5 Proでコードを書いたり修正したりしてもらってるんで、
Flashだとどのくらい頭が悪かったか忘れかけてはいるんですが、
ちょっと任せられないなって思うところが何回かあったなというのが出てきているので、
ちょっと前回違うことを言っていた気がするので、
新たに気づいたこととして紹介しておきます。
それから、あとゲーム内の用語を決めておくと、
指示が通りやすいし、書くときに悩まない、
指示を書くときに悩まないなと思っています。
例えばトラップダンジョンだと、
このマスが見えない状態と相手数字が見えている状態のことを、
マスを開示しているとか、
非開示になっているとか、
開示率みたいなものとか、
マインスイバーだと地雷と言っているものを、
このゲームでは罠と言ったりとか、
落ちている何か効果のあるアイテム、
いわゆるアイテムというのがあって、
これはアイテムというとか、
画面のこの部分はコントローラーという、
ここは盤面というとか、
このゲーム特有の用語みたいなのを定義しておくと、
指示が出しやすいし、
ソースコードの変数名とかにもそれが反映されていくので、
AIに言ったことが正しく伝わるような気がするので、
ゲーム内用語みたいなのを早めに決めておくと、
いいなみたいなところもノウハウとしてありますね。