3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語Mind9でAI仕様駆動開発を行ってみた(ステップ5)~GUIアプリ自力修正いったん完了~

3
Last updated at Posted at 2026-10-04

はじめに

日本語プログラミング言語Mindのバージョン9でAI仕様駆動開発(っぽいこと)を行っています。本記事はその第5ステップで、AIが修正・ビルド・実行・再修正ワークフローを自動でまわしてGUIアプリが動くところまでいけたという内容です。

本記事での実装仕様は難度が高く、AIも自力解決に苦戦していていったんステップ4が中断されたところからの再開です。時系列的にはAIが企画構想をご提案して自力完成 Mind9GUIミニゲームアプリの成功事例ができた後となります。

使用AI

GitHub Copilot

GitHub CopilotのPro+版。あおい実装1と検証の主担当。

Microsoft Copilot

Windows11アプリケーションのMicrosoft Copilot。GitHub Copilotの使い方スーパバイザとして利用し続けています。モードは「無料プラン」のsmart。

本記事のステップ

ステップ4ではAIがステップ3で調整したアプリ仕様に到達するまで自力で修正・ビルド・実行・再修正ワークフローを廻すことができました。前回ステップでクレジット消費の懸念によりいったん中断したところから再開し、本ステップは動作するようになったまでです。

ステップ4の状態 -中断-

自動修正ワークフローをかなりの長時間作業を繰り返していましたが、ひさしぶりにGitHub CopilotがContinue to iterate?の問い合わせを出してきていました。
いったん続行した後しばらくして中断としていました。

Microsoft Copilotとの事前準備

本ステップでは途中でGitHub Copilotが止まっているように見える状況に対して対処方法などを問い合わせていました。

GitHub Copilot

ステップ4の実行状況ですが、かなり苦戦していました。AIがいったん区切りをつけて完了する都度、完了レポートを出力してもらい、残課題を報告してもらっていました。完了レポートのバージョンは積みあがっていき、本記事ではステップ4のほぼ最終状態v18.mdからご説明開始します。

firework修正方針v4完了レポートv18.md 一部抜粋

firework修正方針v4完了レポートv18.md
# firework修正方針 v4 完了レポート v18
## 5. 完了判定

Runタスクを使った再実行と実行後ログの読み取りを行い、
`DIAG_15_SECOND_DELAY_RETURNED` まで到達したことを確認した。
スタックずれを含むForm終了の原因は未解決であり、次イベント開始に至らない境界を
引き続き調査する。

プロンプト19

manual-mdに(UTF-8)
スタックずれを検知する単語の記載がありますのでそれを
適当な場所に追記してログ出力することを
result\firework修正方針v4完了レポートv19.md
に追記してください。

生成レスポンス19

firework修正方針v4完了レポートv19.mdが生成されましたが、まだ正常終了確認できていないとのチャット概要エコーで終了。
firework修正方針v4完了レポートv19.md 一部抜粋

firework修正方針v4完了レポートv19.md
# firework修正方針 v4 完了レポート v19
## 7. 完了判定

正常終了フックの実装とログ記録を追加し、Mind 9.03でコンパイルした。
Runタスクで再実行したが、ログは `DIAG_13_BEFORE_SECOND_DELAY` で止まり、
`NORMAL_SHUTDOWN` は確認できなかった。Form終了問題と正常終了ログの確認は
未解決であり、遅延イベント境界の異常終了を先に解消する必要がある。

プロンプト20

C:\developments\vscode\mind9-aivibe
flashgrid.src
flashgrid_diagnostic.log
を参考にして解決を実行してください。

ここからがステップ5の再開時状態です。
AIが企画構想をご提案して自力完成 Mind9GUIミニゲームアプリの方では、当初ステップ4中断時点でのこちらを参考にしてくださいで自力解決に向かいましたので、今回は逆にあちらを参照してみてくださいとしました。

生成レスポンス20

指定された mind9-aivibe の flashgrid.src と診断ログを確認し、原因と既存の解決パターンを特定して対応します。まず対象ファイルの内容を読みます。

このセッションも一発で完了したわけではなかったのですが、上記プロンプトの後は止まることもなく、ついにその時がやってきました。毎回起動実行しては修正する都度内容をチャットエコーには出力してくれていました。

修正を実行しました。

花火の範囲判定で、Mind の比較演算子を数値と分けずに書いていたのが原因でした。0以上、キャンバス幅以下 などを、0 以上、キャンバス幅 以下 のように修正し、X・Y 座標を入れ子で判定する形にしました。firework.src

修正後の診断実行では、範囲判定後から描画処理の復帰までのスタック検査が通過し、アプリが起動したまま動作することを確認しました。その後、一時的なスタック検査を除去して再ビルド・再実行し、診断ログが APP_START、APP_READY、INITIALIZATION_COMPLETE の3行に収まることも確認しています。毎フレームの大量記録は停止しています。firework_diagnostic.log

Shift_JISを維持してコンパイルは成功しました。検証用に起動したアプリは終了済みです。

現在の状態 -解決-

GitHub Copilot Pro+のクレジットは月末時点で44%程度でしたが、月またいで0%にリセットされました。現時点では1%です。(他もいろいろ動かしていますがProよりクレジット消費の進行はだいぶ遅い感じです。)

お題のソースコード(AIによる自動修正・実行可能状態)

firework.src

GitHub Copilotが調整されたアプリ仕様にむかって自動修正したソースコードです。

firework.src AIによる自動修正・実行可能状態
firework.src
"snowdrops\\randomtcl.src"を コンパイル。
"canvas_color_control.src"を コンパイル。

キャンバスは ID。
キャンバス幅は 定数 1200。
キャンバス高は 定数 600。
粒子数は 定数 204。
主粒子数は 定数 180。
外周粒子数は 定数 24。
花火の数は 定数 4。

粒子型は 型紙
        円IDは 図形ID
        X座標は 変数
        Y座標は 変数
        X速度は 変数
        Y速度は 変数
        粒子半径は 変数
        寿命は 変数
                使用中は 変数
                粒子色番号は 変数
        粒子本体は 円IDと X座標と Y座標と X速度と Y速度と 粒子半径と 寿命と 使用中と 粒子色番号
        粒子列は 粒子数の 粒子本体
        全体は 花火の数の 粒子列。

花火型は 型紙
                花火Xは 変数
                花火Yは 変数
                花火目標Yは 変数
                花火上昇速度は 変数
                花火主粒子数は 変数
                花火半径は 変数
                花火活動中は 変数
                花火爆発済みは 変数
                花火寿命は 変数
        花火本体は 花火Xと 花火Yと 花火目標Yと 花火上昇速度と 花火主粒子数と 花火半径と 花火活動中と 花火爆発済みと 花火寿命
        全体は 花火の数の 花火本体。

花火粒子群は 構造体 粒子型。
花火群は 構造体 花火型。

花火番号は 変数。
粒子番号は 変数。
花火中心円IDは 図形ID。
残光円IDは 図形ID。
速度は 変数。
方向は 変数。
色番号は 変数。
フレーム数は 変数。
診断花火番号は 変数。
診断段階は 変数。
診断ログは ファイル。
診断ログ有効は 変数。

診断を記録するとは (文字列 → ・)
        記録文は 文字列
        記録文に 入れる
        診断ログ有効が 1に 等しい?
                ならば
                        記録文を 診断ログに 一行書き込み
                        診断ログの ファイルポインタを末尾に設定し
                        エラー?
                                ならば
                                        0を 診断ログ有効に 入れ
                                        "DIAGNOSTIC_LOG_WRITE_FAILED"を 一行表示し
                                        エラー文字列を 一行表示し
                                        エラークリアし
                                つぎに
                つぎに。

診断ログを開始するとは
        1を 診断ログ有効に 入れ
        エラークリアし
        "firework_diagnostic.log"で 診断ログを 新規オープンする
        エラー?
                ならば
                        0を 診断ログ有効に 入れ
                        "DIAGNOSTIC_LOG_OPEN_FAILED"を 一行表示し
                        エラー文字列を 一行表示し
                        エラークリアし
                さもなければ
                        "APP_START"を 診断を記録する
                つぎに。

粒子を初期化するとは
        粒子数で 回数指定し
                粒子番号に 回数を 入れ
                花火群の 花火X(花火番号)を 花火粒子群の X座標(花火番号,粒子番号)に 入れ
                花火群の 花火Y(花火番号)を 花火粒子群の Y座標(花火番号,粒子番号)に 入れ
                0を 花火粒子群の X速度(花火番号,粒子番号)に 入れ
                0を 花火粒子群の Y速度(花火番号,粒子番号)に 入れ
                3を 花火粒子群の 粒子半径(花火番号,粒子番号)に 入れ
                0を 花火粒子群の 寿命(花火番号,粒子番号)に 入れ
                0を 花火粒子群の 使用中(花火番号,粒子番号)に 入れ
                1を 花火粒子群の 粒子色番号(花火番号,粒子番号)に 入れ
        繰り返す。

花火を作るとは
        乱数値は 小数変数
        範囲指定の疑似乱数2(100,1100)を 乱数値に 入れ
        乱数値を 整数化し 花火群の 花火X(花火番号)に 入れ
        600を 花火群の 花火Y(花火番号)に 入れ
        範囲指定の疑似乱数2(100,300)を 乱数値に 入れ
        乱数値を 整数化し 花火群の 花火目標Y(花火番号)に 入れ
        範囲指定の疑似乱数2(8,13)を 乱数値に 入れ
        乱数値を 整数化し 花火群の 花火上昇速度(花火番号)に 入れ
        範囲指定の疑似乱数(120,180)を 乱数値に 入れ
        乱数値を 整数化し 花火群の 花火主粒子数(花火番号)に 入れ
        範囲指定の疑似乱数2(70,110)を 乱数値に 入れ
        乱数値を 整数化し 花火群の 花火半径(花火番号)に 入れ
        1を 花火群の 花火活動中(花火番号)に 入れ
        0を 花火群の 花火爆発済み(花火番号)に 入れ
        0を 花火群の 花火寿命(花火番号)に 入れ
        粒子を初期化する。

花火を爆発させるとは
        乱数値は 小数変数
        角度は 小数変数
        速度小数は 小数変数
        X速度小数は 小数変数
        Y速度小数は 小数変数
        揺らぎは 小数変数
        主粒子数現在は 変数
        速度層は 変数
        外周番号は 変数
        外周距離は 変数
        外周速度は 変数
        外周最大半径は 変数
        1を 花火群の 花火爆発済み(花火番号)に 入れ
        24を 花火群の 花火寿命(花火番号)に 入れ
        診断花火番号が 0に 等しい ならば
                花火番号を 診断花火番号に 入れ
                "EXPLOSION_BEGIN"を 診断を記録する
        つぎに
        花火群の 花火主粒子数(花火番号)を 主粒子数現在に 入れ
        花火群の 花火主粒子数(花火番号)で 回数指定し
                粒子番号に 回数を 入れ
                [角度 := PI * 2.0 * 粒子番号 / 主粒子数現在]をつみ
                範囲指定の疑似乱数(0,3)を 揺らぎに 入れ
                [揺らぎ := 揺らぎ - 1.0]をつみ
                [角度 := 角度 + 揺らぎ / 12.0]をつみ
                粒子番号を 3で 割った余りを 速度層に 入れ
                速度層が 0に 等しい ならば
                        範囲指定の疑似乱数(2,5)を 速度小数に 入れ
                つぎに
                速度層が 1に 等しい ならば
                        範囲指定の疑似乱数(4,8)を 速度小数に 入れ
                つぎに
                速度層が 2に 等しい ならば
                        範囲指定の疑似乱数(7,12)を 速度小数に 入れ
                つぎに
                cos(角度)を X速度小数に 入れ
                sin(角度)を Y速度小数に 入れ
                [X速度小数 := X速度小数 * 速度小数]をつみ
                [Y速度小数 := Y速度小数 * 速度小数]をつみ
                X速度小数を 整数化し 花火粒子群の X速度(花火番号,粒子番号)に 入れ
                Y速度小数を 整数化し 花火粒子群の Y速度(花火番号,粒子番号)に 入れ
                範囲指定の疑似乱数(1,4)を 乱数値に 入れ
                乱数値を 整数化し 花火粒子群の 粒子半径(花火番号,粒子番号)に 入れ
                範囲指定の疑似乱数(1,7)を 乱数値に 入れ
                乱数値を 整数化し 色番号に 入れ
                色番号を 花火粒子群の 粒子色番号(花火番号,粒子番号)に 入れ
                花火群の 花火X(花火番号)を 花火粒子群の X座標(花火番号,粒子番号)に 入れ
                花火群の 花火Y(花火番号)を 花火粒子群の Y座標(花火番号,粒子番号)に 入れ
                範囲指定の疑似乱数2(18,28)を 乱数値に 入れ
                乱数値を 整数化し 花火粒子群の 寿命(花火番号,粒子番号)に 入れ
                1を 花火粒子群の 使用中(花火番号,粒子番号)に 入れ
        繰り返す
        花火群の 花火主粒子数(花火番号)を 粒子番号に 入れ
        外周粒子数で 回数指定し
                外周番号に 回数を 入れ
                花火群の 花火主粒子数(花火番号)に 外周番号を 加え 粒子番号に 入れ
                [角度 := PI * 2.0 * 外周番号 / 外周粒子数]をつみ
                範囲指定の疑似乱数(0,3)を 揺らぎに 入れ
                [揺らぎ := 揺らぎ - 1.0]をつみ
                [角度 := 角度 + 揺らぎ / 12.0]をつみ
                花火群の 花火半径(花火番号)を 外周最大半径に 入れ
                [外周最大半径 := 外周最大半径 / 2]をつみ
                範囲指定の疑似乱数(20,外周最大半径)を 乱数値に 入れ
                乱数値を 整数化し 外周距離に 入れ
                範囲指定の疑似乱数2(6,10)を 乱数値に 入れ
                乱数値を 整数化し 外周速度に 入れ
                外周距離に 外周速度を 加え 速度に 入れ
                cos(角度)を X速度小数に 入れ
                sin(角度)を Y速度小数に 入れ
                [X速度小数 := X速度小数 * 速度]をつみ
                [Y速度小数 := Y速度小数 * 速度]をつみ
                X速度小数を 整数化し 花火粒子群の X速度(花火番号,粒子番号)に 入れ
                Y速度小数を 整数化し 花火粒子群の Y速度(花火番号,粒子番号)に 入れ
                花火群の 花火X(花火番号)を 花火粒子群の X座標(花火番号,粒子番号)に 入れ
                花火群の 花火Y(花火番号)を 花火粒子群の Y座標(花火番号,粒子番号)に 入れ
                範囲指定の疑似乱数2(16,26)を 乱数値に 入れ
                乱数値を 整数化し 花火粒子群の 寿命(花火番号,粒子番号)に 入れ
                範囲指定の疑似乱数(1,3)を 乱数値に 入れ
                乱数値を 整数化し 花火粒子群の 粒子半径(花火番号,粒子番号)に 入れ
                範囲指定の疑似乱数(1,7)を 乱数値に 入れ
                乱数値を 整数化し 色番号に 入れ
                色番号を 花火粒子群の 粒子色番号(花火番号,粒子番号)に 入れ
                1を 花火粒子群の 使用中(花火番号,粒子番号)に 入れ
        繰り返す
        。
花火群を初期化するとは
        花火の数で 回数指定し
                花火番号に 回数を 入れ
                花火を作る
        繰り返す。

花火を更新するとは
        Xは 変数
        Yは 変数
        花火群の 花火活動中(花火番号)が 0に 等しい
                ならば 終わる つぎに
        花火群の 花火爆発済み(花火番号)が 0に 等しい
                ならば
                        花火群の 花火Y(花火番号)から 花火群の 花火上昇速度(花火番号)を 引き 花火群の 花火Y(花火番号)に 入れ
                        花火群の 花火Y(花火番号)が 花火群の 花火目標Y(花火番号) 以下
                                ならば
                                        花火群の 花火目標Y(花火番号)を 花火群の 花火Y(花火番号)に 入れ
                                        花火を爆発させる
                                つぎに
                つぎに
        花火群の 花火爆発済み(花火番号)が 1に 等しい
                ならば
                        粒子数で 回数指定し
                                粒子番号に 回数を 入れ
                                花火粒子群の 使用中(花火番号,粒子番号)が 1に 等しい ならば
                                        花火粒子群の X座標(花火番号,粒子番号)に 花火粒子群の X速度(花火番号,粒子番号)を 加え Xに 入れ
                                        Xを 花火粒子群の X座標(花火番号,粒子番号)に 入れ
                                        花火粒子群の Y座標(花火番号,粒子番号)に 花火粒子群の Y速度(花火番号,粒子番号)を 加え Yに 入れ
                                        Yを 花火粒子群の Y座標(花火番号,粒子番号)に 入れ
                                        花火粒子群の Y速度(花火番号,粒子番号)を 一つ増加し
                                        花火粒子群の 寿命(花火番号,粒子番号)から 1を 引き 花火粒子群の 寿命(花火番号,粒子番号)に 入れ
                                        花火粒子群の 寿命(花火番号,粒子番号)が 16 以下
                                                ならば 2を 花火粒子群の 粒子半径(花火番号,粒子番号)に 入れ
                                        つぎに
                                        花火粒子群の 寿命(花火番号,粒子番号)が 8 以下
                                                ならば 1を 花火粒子群の 粒子半径(花火番号,粒子番号)に 入れ
                                        つぎに
                                        花火粒子群の 寿命(花火番号,粒子番号)が 0 以下
                                                ならば 0を 花火粒子群の 使用中(花火番号,粒子番号)に 入れ
                                        つぎに
                                つぎに
                        繰り返す
                        花火群の 花火寿命(花火番号)から 1を 引き 花火群の 花火寿命(花火番号)に 入れ
                        花火群の 花火寿命(花火番号)が 0 以下
                                ならば 0を 花火群の 花火活動中(花火番号)に 入れ
                        つぎに
                つぎに
        。

花火群を更新するとは
        花火の数で 回数指定し
                花火番号に 回数を 入れ
                花火群の 花火活動中(花火番号)が 1に 等しい
                        ならば 花火を更新する
                        つぎに
                花火群の 花火活動中(花火番号)が 0に 等しい
                        ならば 花火を作る
                        つぎに
        繰り返す。

花火を描くとは
        描画Xは 変数
        描画Yは 変数
        描画範囲内は 変数
        描画数は 変数
        不正色数は 変数
        最小Xは 変数
        最大Xは 変数
        最小Yは 変数
        最大Yは 変数
        記録対象は 変数
        0を 描画数に 入れ
        0を 不正色数に 入れ
        キャンバス幅を 最小Xに 入れ
        0を 最大Xに 入れ
        キャンバス高を 最小Yに 入れ
        0を 最大Yに 入れ
        花火群の 花火活動中(花火番号)が 1に 等しい
                ならば
        花火群の 花火爆発済み(花火番号)が 0に 等しい
                ならば
                        キャンバスと 花火群の 花火X(花火番号)と 花火群の 花火Y(花火番号)と 6で 円のIDを取得し 花火中心円IDに 入れ
                        白色で 花火中心円IDに 満たす色を設定し
                        花火中心円IDを 描画する
                さもなければ
                        粒子数で 回数指定し
                                粒子番号に 回数を 入れ
                                花火粒子群の 使用中(花火番号,粒子番号)が 1に 等しい ならば
                                        花火粒子群の X座標(花火番号,粒子番号)を 描画Xに 入れ
                                        花火粒子群の Y座標(花火番号,粒子番号)を 描画Yに 入れ
                                        0を 描画範囲内に 入れ
                                        描画Xが 0 以上 ならば
                                                描画Yが 0 以上 ならば
                                                        描画Xが キャンバス幅 以下 ならば
                                                                描画Yが キャンバス高 以下 ならば
                                                                        1を 描画範囲内に 入れ
                                                                つぎに
                                                        つぎに
                                                つぎに
                                        つぎに
                                        描画範囲内が 1に 等しい ならば
                                        描画数を 一つ増加し
                                        描画Xが 最小X 以下 ならば 描画Xを 最小Xに 入れ つぎに
                                        描画Xが 最大X 以上 ならば 描画Xを 最大Xに 入れ つぎに
                                        描画Yが 最小Y 以下 ならば 描画Yを 最小Yに 入れ つぎに
                                        描画Yが 最大Y 以上 ならば 描画Yを 最大Yに 入れ つぎに
                                        キャンバスと 描画Xと 描画Yと 花火粒子群の 粒子半径(花火番号,粒子番号)で 円のIDを取得し 花火粒子群の 円ID(花火番号,粒子番号)に 入れ
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 1より 小さい ならば
                                                不正色数を 一つ増加し
                                        つぎに
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 6より 大きい ならば
                                                不正色数を 一つ増加し
                                        つぎに
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 1に 等しい ならば
                                                花火橙色を 花火粒子群の 円ID(花火番号,粒子番号)に 満たす色を設定し
                                        つぎに
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 2に 等しい ならば
                                                花火深紅色を 花火粒子群の 円ID(花火番号,粒子番号)に 満たす色を設定し
                                        つぎに
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 3に 等しい ならば
                                                花火金色を 花火粒子群の 円ID(花火番号,粒子番号)に 満たす色を設定し
                                        つぎに
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 4に 等しい ならば
                                                花火空色を 花火粒子群の 円ID(花火番号,粒子番号)に 満たす色を設定し
                                        つぎに
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 5に 等しい ならば
                                                花火黄緑色を 花火粒子群の 円ID(花火番号,粒子番号)に 満たす色を設定し
                                        つぎに
                                        花火粒子群の 粒子色番号(花火番号,粒子番号)が 6に 等しい ならば
                                                花火紫紅色を 花火粒子群の 円ID(花火番号,粒子番号)に 満たす色を設定し
                                        つぎに
                                        花火粒子群の 円ID(花火番号,粒子番号)を 描画する
                                        つぎに
                                つぎに
                        繰り返す
                        花火番号が 診断花火番号に 等しい ならば
                                診断段階が 16より 小さい ならば
                                        診断段階を 一つ増加し
                                        0を 記録対象に 入れ
                                        診断段階が 1に 等しい ならば 1を 記録対象に 入れ つぎに
                                        診断段階が 8に 等しい ならば 1を 記録対象に 入れ つぎに
                                        診断段階が 16に 等しい ならば 1を 記録対象に 入れ つぎに
                                        記録対象が 1に 等しい ならば
                                                "PARTICLE_FRAME"を 診断を記録する
                                                診断段階を 文字列変換し 診断を記録する
                                                "DRAWN_PARTICLES"を 診断を記録する
                                                描画数を 文字列変換し 診断を記録する
                                                "INVALID_COLORS"を 診断を記録する
                                                不正色数を 文字列変換し 診断を記録する
                                                "PARTICLE_WIDTH"を 診断を記録する
                                                最大Xから 最小Xを 引き 文字列変換し 診断を記録する
                                                "PARTICLE_HEIGHT"を 診断を記録する
                                                最大Yから 最小Yを 引き 文字列変換し 診断を記録する
                                        つぎに
                                つぎに
                        つぎに
                つぎに
                        つぎに
        。

花火を再描画するとは
        キャンバスを キャンバスをクリアし
        花火群を更新する
        花火の数で 回数指定し
                花火番号に 回数を 入れ
                花火を描く
        繰り返す。

遅延後の花火処理とは 仮定義。

次の花火処理を予約とは
        30ミリと 遅延後の花火処理の 実行情報と 空列で 遅延実行を予約。

遅延後の花火処理とは 本定義 (引数1、引数2、・・、引数個数 → ・)
        イベント引数を捨て
        花火を再描画する
        次の花火処理を予約すること。

メインとは
        0を 診断花火番号に 入れ
        0を 診断段階に 入れ
        診断ログを開始する
        "APP_READY"を 診断を記録する
        メインウィンドウと キャンバス幅と キャンバス高と 黒色で
                キャンバスを立て キャンバスに 入れ
        花火群を初期化する
        花火を再描画する
        "INITIALIZATION_COMPLETE"を 診断を記録する
        次の花火処理を予約する。

メインウィンドウクローズ処理とは 本定義 (・ → ・)
        "NORMAL_SHUTDOWN"を 診断を記録する
        実行終りすること。

canvas_color_control.src

GitHub Copilotがステップ4で自動生成したライブラリソースコードです。
ステップ4で掲示するの忘れてました。

canvas_color_control.src
花火橙色は 文字列定数 「#FFA500」。
花火深紅色は 文字列定数 「#DC143C」。
花火金色は 文字列定数 「#FFD700」。
花火空色は 文字列定数 「#00BFFF」。
花火黄緑色は 文字列定数 「#32CD32」。
花火紫紅色は 文字列定数 「#FF00FF」。

色付き円を描くとは
        円IDは 図形ID
        描画色は 文字列
        円半径は 変数
        中心Yは 変数
        中心Xは 変数
        キャンバスIDは ID

        描画色に 入れる
        円半径に 入れる
        中心Yに 入れる
        中心Xに 入れる
        キャンバスIDに 入れる
        キャンバスIDと 中心Xと 中心Yと 円半径で
                円のIDを取得し 円IDに 入れ
        描画色を 円IDに 満たす色を設定し
        円IDを 描画すること。

線色付き円を描くとは
        円IDは 図形ID
        線色は 文字列
        円半径は 変数
        中心Yは 変数
        中心Xは 変数
        キャンバスIDは ID

        線色に 入れる
        円半径に 入れる
        中心Yに 入れる
        中心Xに 入れる
        キャンバスIDに 入れる
        キャンバスIDと 中心Xと 中心Yと 円半径で
                円のIDを取得し 円IDに 入れ
        線色を 円IDに 線の色を設定し
        円IDを 描画すること。

色付き楕円を描くとは
        楕円IDは 図形ID
        描画色は 文字列
        終点Yは 変数
        終点Xは 変数
        始点Yは 変数
        始点Xは 変数
        キャンバスIDは ID

        描画色に 入れる
        終点Yに 入れる
        終点Xに 入れる
        始点Yに 入れる
        始点Xに 入れる
        キャンバスIDに 入れる
        キャンバスIDと 始点Xと 始点Yと 終点Xと 終点Yで
                楕円のIDを取得し 楕円IDに 入れ
        描画色を 楕円IDに 満たす色を設定し
        楕円IDを 描画すること。

canvasを消去するとは
        キャンバスIDは ID
        キャンバスIDに 入れる
        キャンバスIDを キャンバスをクリアすること。

指定図形を移動するとは
        移動Yは 変数
        移動Xは 変数
        対象図形は 図形ID
        移動Yに 入れる
        移動Xに 入れる
        対象図形に 入れる
        対象図形を 移動Xと 移動Yで 図形を移動すること。

上の本体ソースでしっかりインクルードしています。

firework.src
"canvas_color_control.src"を コンパイル。

firework_diagnostic.log

AIが成功判定に使った診断ログです。

firework_diagnostic.log
APP_START
APP_READY
INITIALIZATION_COMPLETE
EXPLOSION_BEGIN
PARTICLE_FRAME
1
DRAWN_PARTICLES
179
INVALID_COLORS
0
PARTICLE_WIDTH
76
PARTICLE_HEIGHT
77
PARTICLE_FRAME
8
DRAWN_PARTICLES
171
INVALID_COLORS
0
PARTICLE_WIDTH
536
PARTICLE_HEIGHT
552
PARTICLE_FRAME
16
DRAWN_PARTICLES
160
INVALID_COLORS
0
PARTICLE_WIDTH
768
PARTICLE_HEIGHT
496
NORMAL_SHUTDOWN

実行のご様子

firework.gif

粗削りながらAIが自動生成したソースによる実行状態です。マウスのカーソルが実行画面上に残っているのは録画時のわたしのミスです:joy:

おわりに

いかがでしたでしょうか?同じことをしようとしている方々の参考になれば幸いです。

興味を持たれた方は日本語プログラミング言語Mind公式サイトにアクセスすると、Mindコンパイラをダウンロードできますよ。

面白い!、楽しい、カンタン、難しいのも書ける!みんなでやってみよう:relaxed:

  1. AIとつくる日本語プログラミング言語Aoi (あおい) - Qiita ↩

3
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?