
はてなキーワード:ボールドとは
ここで言う「プログラミング初級者」とはプログラミングの記述が上から下へ向かって順番に処理されること、条件分岐やループという概念があることを理解しており、RPGゲームが作れる「RPGツクール(現RPG Maker)」や学童向けプログラミング環境「Scratch」、「ナビつき! つくってわかる はじめてゲームプログラミング(ナビつく)」、ADVゲームが作れる「吉里吉里(もしくは吉里吉里2)」、過去にBASICやC、HSP、Javascriptあたりでプログラミングへ挑戦し挫折したなどなど、ある程度の「プログラマブルなロジック」構築の経験がある者を指します。
ある時、筆者はふと思いました。「生成AIはなんだかんだで膨大なテキスト情報を処理している事がキモだよなぁ」とありきたりなことを。
そして、同時にプログラミング初級者の弱点として「現在記述されているコードの管理においてテキストと実際の処理フローが脳内で一致しない」「プログラミング言語ごとに定められているルールや関数予約語の把握が困難」なのが問題とも考えました。
前述したプログラミング初級者の弱点の考え自体は車輪の再発明であり、「Scratch」や、より高度な「UML」が既に存在しており、特筆すべきことは何もありません。
しかし、「Scratch」や「UML」、なんなら「RPGツクール」や「吉里吉里」などに無い点として、現代では自然言語処理が大幅に向上した生成AIが実用の域にまで到達しつつあるのが従来とは異なる点でした。
つまり、自然言語を混ぜ込みやすいテキストベースの言語、かつ、処理を記述するとフローが視覚的に理解しやすい言語、可能であれば情報量が多くて一部の界隈で広く使われている言語があればプログラミング初級者も気軽にプログラミングできるのではないか?と発想しました。
コンピュータ(コンパイラやインタプリタなどソフトウェアを含む)が解することができる言語にはプログラミング言語以外にも様々あり、今回取り上げるのは「データ記述言語」と呼ばれるものです。
データ記述言語の中でもグラフ作成へ特化しており、特にフローチャート作成で真価を発揮する「DOT言語」というものがあります。
早速ですが、実際に手を動かしてみましょう。ちなみにDOT言語はGraphviz OnlineというWebツールがあるため別途に何かしらをインストールして環境構築する必要はありません。便利な世の中ですね。
上記のGraphviz Onlineを開くと、既に左側のDOT言語で記述された内容が、右側で作図されています。DOT言語はこのような図を作図するためのデータ記述言語です。
一旦、左側の記述をCtrl+Aで全選択をしDeleteなどで全削除し、下記の内容をコピペしてみましょう。
digraph graphname {
A -> B;
}
DOT言語の詳細な使い方は様々なWebサイトやブログ記事、Qiitaなどへ譲るとして、A - > Bの見た目から発想の転換をしてみると処理Aから処理Bという流れに見えませんか?
DOT言語は生成AIを利用する上で有利なテキストベースでありながらグラフを作成できるのがキモであり、例えばこのA -> BがA「Webページを開いたら」 → B「Hello, Worldと表示する」という風にできるのであれば処理のフローが可視化されており本当に素晴らしいことです。
ここでプログラミングの有識者は「DOT言語をUMLなどに見立てて処理を記述するのは良いが、プログラミング初心者は求めた結果を出力するロジックやアルゴリズムを発想する知見や経験値が圧倒的に足りていないのが問題ではないか?」と至極真っ当かつ反論の余地がない問題点の指摘をすると思いますが、そこで活きるのが生成AIです。
生成AIは初級者プログラマ個人のロジックやアルゴリズムの作成能力へ無関係にロジックやアルゴリズムを生成できる(可能性が少なくともある)ので、処理のフローをDOT言語で記述することにより処理フローから初級者プログラマが求めるプログラムを生成AIへ推論させ生成させるというのが狙いです。実際に試してみましょう。
digraph graphname {
A[
label = "Webページを表示する"
];
B[
label = "Webページを表示したらHello, worldとテキストを表示する"
];
A -> B;
}
プログラミングの有識者はこの時点で「なるほど、自然言語の記述をそのままDOT言語に入れ込んでしまうのか」と気付いたのではないかと思います。
このDOT言語をGoogle Gemini 2.5Flashへ「下記のデータ記述言語のDOT言語で記述された処理フローをJavascript言語へ変換をしWebページ上へ「Hello,world」を表示したいので変換をお願いします。」と命令すると以下のコードが生成されました。
<!DOCTYPEhtml>
<html lang="ja">
<head>
<meta charset="UTF-8">
<metaname="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello World Page</title>
</head>
<body>
<divid="output"></div>
<script>
//Webページが表示されたら(DOMが完全に読み込まれたら)実行される
document.addEventListener('DOMContentLoaded', function() {
// "Webページを表示する"ステップは、このHTMLファイル自体が表示されることで達成されます。
// "Webページを表示したらHello, worldとテキストを表示する"ステップ
const outputDiv = document.getElementById('output');
outputDiv.textContent = 'Hello, world';
});
</script>
</body>
</html>
フローを記述する利点は、ロジックやアルゴリズムを発想する知見や経験値が足りなくとも、フローのステップが明確に分かれているので生成AIが処理を切り分けて推論してくれることであり、そしてプログラミング初心者自身がフローチャートを視覚で確認できるので「Aを処理したらBを処理する」と切り分けて考えやすいことです。
また、求めている結果ではなく誤った結果が生成されても、A - > B - > Cとフローを細分化していくことで生成AIの推論精度を高めていくことができるのも利点です。
より生成AIへ精度の高い推論をしてもらうために補足情報を付加するのも有用です。
digraph graphname {
A[
label = "Webページを表示する"
];
B[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機"
];
A -> B;
}
labelの記述内容もcommentの記述内容も生成AIが推論のための情報として利用するので誤った結果が生成されてもA - > B - > Cとフローを細分化しなくとも良い場合があります。
DOT言語を知るプログラミング有識者が「DOT言語の仕様を考えれば確かにそうだが、その発想はなかった」と言っていただけるであろうDOT言語コード例だとこういう記述方法もアリです。
digraph増田コード {
最初の処理[
label = "Webページを表示する"
];
次の処理[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機"
];
最初の処理 -> 次の処理;
}
ノードの名称へ自然言語を採用することにより、例えばゲームプログラミング時に「キャラクターがジャンプする」という読んだそのままな処理のためのノード、というか一般的に言うオブジェクトを作成することが可能で、後は->で繋げて処理をさせられます。
ちなみに別のノードを作成する際に「"キャラクターがジャンプする"から継承する」の様なことをcommentなどへ記述しておくと生成AIが推論して継承します。なんならcommentなどへ「キャラクター画像にimage.gifを使用」などと記述しておくとファイルの読み込みもします。
更にDOT言語にはカスタム要素という仕様が存在しており、DOT言語の仕様で定められた予約語以外も使用が可能です。
digraph増田コード {
最初の処理[
label = "Webページを表示する"
];
次の処理[
label = "Webページを表示したらHello, worldとテキストを表示する",
comment = "Webページが完全に読み込まれるまで待機",
font_style = "フォントを太字のボールド体、色を赤(#FF0000)とする"
];
最初の処理 -> 次の処理;
}
生成AIはカスタム要素の名称からも推論を発揮し、上記の場合であればフォントスタイルを指定していると推論をするので生成AIの推論精度を高める補足情報として機能します。
つまりこれはカスタム要素の名称として"Action"などの名称を採用すると"動作"として推論をし、"decision"ならば"条件分岐"ですし、"input"ならば"入力"ですし、"loop"ならば"繰り返し"ですし、"Type"ならば"種別"です。
より詳細に process[type="Action"] などのノードを作成してどんどん生成AIの推論精度を高めていくことが可能であり、そろそろ察してきているかと思いますが 処理[種別="動作"] と自然言語で記述しても機能します。
プログラミング有識者は更に「プログラム言語自体の予約語、例えばJavascriptを生成する事を前提にlengthを名称にすると配列を使おうとするのか?」と疑問に感じるでしょうがお察しの通りで生成AIは配列を使おうとするので、敢えて使いたいプログラム言語の機能や外部ライブラリなどがある場合は補足情報として機能する形で記述しておくと生成AIは推論へ利用します(まぁそこまで知識ある方なら該当のプログラム言語使ったほうが手っ取り早いと思いますが)。
以上をもって「生成AIを利用したプログラミング初級者向けの温故知新な提案」を終えたいと思います。
色々とツッコミどころには筆者自身が気付いていて。例えば「結局はDOT言語の仕様を覚えないといけないのでは?」とか「プログラミング初級者に任せると生成前のソースであるDOT言語コードがスパゲッティになりそうだよな」とか「面倒くせぇから普通にプログラミング覚えろや」とか理解してますし至極真っ当かつ反論の余地がないと思ってます。
今回の提案のプログラミング有識者向けの本質は「生成AIへ向いた中間言語の発掘」であり、「DOT言語ならそこそこ普及してるしプログラミング初級者でも扱えるんじゃね?」と業務中に発想したものを書き留め公開いたしました。
何かプログラミング有識者の皆さんからより良い発想があれば参考にしたいと考えていますのでよろしくお願いいたします。以上。
Permalink |記事への反応(36) | 19:36
https://anond.hatelabo.jp/20240218153231
https://anond.hatelabo.jp/20231228164428
https://anond.hatelabo.jp/20231112111528
https://anond.hatelabo.jp/20230818125323
https://anond.hatelabo.jp/20230617063736
https://anond.hatelabo.jp/20230102192858
https://anond.hatelabo.jp/20220919175614
https://anond.hatelabo.jp/20220625194240
https://anond.hatelabo.jp/20240310160032
Permalink |記事への反応(21) | 17:39
https://splatoon3.toriikengo.com/?p=2333 を読ませて頂いた。
上記記事の原文にも目を通して頂きたいが、内容としては、 「"長射程”に対するメタが“さらなる長射程しか存在しないことが現状の課題(そのため、相手に長射程を押し付ける能力に優れるカ二環境に行き着いた)であり、解決手段と起動性や体力のある要素を追加するべきである。」と整理でき、個人的には概ね同意している。
この記事が正しいことは、リッター⇒マルチミサイル⇒カニ(スクスロを添えて)の環境の変遷を見れば明らかだろう。
しかし、「Splatoonにおいて長射程が有利であることは開発者も流石に自覚しているはずではないか?」とも考えられる。
シリーズ3部作目なのだから、流石にこの程度は気づいているはずと仮定するのが適切と思われる(頼む、そうであってくれ)。
例えば、本作のエクスプロッシャーやオーバーフロッシャー、ハイドラント、ジェットスイーパー、トライストリンガー等の長射程ブキは、メインウェポンそれ自体の性能で短射程に近づかれればほぼ撃ち負けることが想定されるようにデザインされていると言える。また、サブウェポン、スペシャルウェポンも短射程に対して有利となるものがセットされているわけではない。これらのメイン・サブ・スペシャルウェポンの調整は、ほぼ完璧と言って良いと個人的には考えている。これは、開発者が長射程有利のゲーム性を理解していることの一例として挙げられる印象だ。
しかし、ゲーム性を理解しつつも、「一部のブキについては、長射程であるにも関わらず短射程に対しても有利な性能を付加」してしまった。これが、開発者の失敗なのではないかと個人的には考えている。
「大きな方針については理解しており、一部の運用に失敗してしまった」というだけであれば、失敗した部分についてパラメータ調整を付加することで解決できるのではないかと考える。
現状問題とされるべきブキはリッター4K、シャープマーカー、スクリュースロッシャーであって、これらのパラメータ調整で解決できる部分も大きいのではないかと考えている。シャープマーカーとスクリュースロッシャーを長射程ブキとして挙げることに違和感のある方もおられるだろうが、メインウエポンだけでなくサブ・スペシャルウェポンとセットで考えた時に、"実質的に長射程"ブキであると扱っている(若干無理やり感はあるが、ここでは言い切ることとする。)。
ちなみに、弱体化によって評価が落ち着いたラクトやヴァリアブルローラーも、マルチミサイルによって長射程(無限)であるにも関わらず短射程に対しても強い性能であり、しかも発動機会が多すぎることが問題であったと言える。現在は発動機会が抑えられたことでかなり弱体化されている(適切な強さに落ち着いた程度とも言える)。射程無限で全ブキに対して効果的で、キル性能も高いスぺシャルであったため、何かしらのデメリットが付加されるのは当然の帰結と言える。
改めて、「Splatoonにおいて長射程が有利であることは開発者も流石に自覚している」ものの、「一部のブキについては調整を単に誤ってしまった」のではないか、と考えている。
長射程は中射程に有利で、
中射程は短射程に有利で、
短射程は長射程には有利…
との3すくみの関係性が構築されていることと思われるところ、一部のブキについては、メイン・サブ・スペシャルウェポンのセットとして見た時に上記関係性を無視することが可能となっていることが問題と思われる。
上記関係性が正しく構築されることで、すべてのブキが活躍の機会を得ることで、多様な対戦環境を生み出すことができ、多くのプレイヤが幸せにプレイできるゲームに成長していくのではないかと考えている。
Splatoonは個人的にはかなり好きな作品なので、より良い方向に進化していって欲しい。本記事がSplatoon3の発展に寄与することを願っている。
(余談)
2だとA-が限界だったけどヴァリアブルローラーで全員ボコってS+なれたわわwwwwwwwwwwww
Twitterだと「エイムが下手!」「打開むずい!」って言い合ってるけど
■雑魚の例
スクスロ最強!!!!!って噂を聞いた雑魚が真っ先にハマる死に方
塗りの先端に向けて縦振りするだけに死ぬ
頑張ってオブジェクトに直進して全員殺せば勝てると思ったか~~?????
・自陣を塗らずに上がってくる雑魚
上の類型。
ガロンもスクスロもラインの内側から圧掛けながら浮いた敵を狩るだけで無双できる武器なのに、ひたすらイノシシしてて「う~ん今回は10キル8デスか~」って仲間内で慰めあうの最高にバカ
なんならわかばやモデラーですら自陣をガン無視して見えてるにまっすぐ向かってくる
敵インク=敵の行動範囲って義務教育で習わなかったんでちゅか~????
うはwwwwwwwwwwテラサンドバッグwwwwwwwwwwww
どういう勝算があって降りてるか知らないんだけど、もしかしてこのゲームって自爆で敵を巻き込めたりする?
普通に味方と合流しながら
高台でボムや塗りでスペシャル溜めて吐けば打開できるのに、とりあえず身体を出すやつ全員バカですwww
そのwwwwwwwwwバリアとサメライドはwwwwww飾りなんかwwwwww
特にメインでキルが取れない武器を握ってるのに、わざわざ敵に囲まれる場所に躍り出てきて死ぬやつはマジでアホ
命がもったいないwwwwwwwwwwwwって自己紹介しにきたのか?
・一発弾が当たると前に出る雑魚
ヴァリアブルの縦振りなんて5キャラぐらい離れれば即死圏外なのに、なぜか横振りに突っ込んできてくれる雑魚
ボールドやスパッタリーはそういう武器だからしょうがないとして、
プライムやガロンで撃たれると突っ込んでるのは「え~?!?!?!?wwwwwwwwwwwww」ってウケてしまう
どう考えても一旦距離取って潜伏して回復しながらまた刺しに来たほうが強いだろボケ
はいこれが一番の雑魚wwwwwwwwww縦振り的あてチャレンジwwwwwwwwww
判断力よわよわ~wwwwチャージャーやスピナーの的~~wwwww
塗りと潜伏というスプラトーンで最強の動きを全部放棄して横着した結果死ぬバカテラワロスwwwwwwwww
こんなところかな
はっきり言うが、お前が何もゲームに影響を及ぼせずに死ぬのはエイムやキャラコンの問題ではなく
幼少期からのアトピーも結構落ち着いてきた俺も30のオッサンになり
ちょっと臭いとか気になり始めたので洗濯洗剤をいい匂いがしそうなやつに変えてみた
好印象を与えそうな匂いかつ自分もそこそこ好きな匂いで安いやつを選んだ
ボールドの青いやつ
すぐ肘の内側と首の後ろと胸のあたりが痛痒くなって仕事中も辛いレベルになった
どんどん範囲も広くなって
今年の冬は乾燥でアトピー酷くなっちゃったなーキツイなーとか思ってたけど
ググったらいい匂いするやつって基本的に服に成分残したままにするから肌弱い奴はそれに反応するらしい
でもよく考えたらアクロン使ってた時分にアトピーが収まってたかというとそうでもないのでAmazonでレビューみてシャボンなんたらみたいなやつをポチった
匂いしないやつ
無添加?とかそういうやつ
匂いしないしなんなら汚れの落ちもそんなに良くないっぽい
俺はもうこのまま多分臭くなるだけの人生を歩んでいくんだと思う
肌弱いの辛い