その他
PR

コード素人だけどもAI使ってMIN UIに機能追加できた話(技術紹介)

blogger.eidori.takuyasan
記事内に商品プロモーションを含む場合があります

どうも、えいどりです!!
今回はちょっと変わった記事でして、 プログラミング経験もなく、コードも分からないけどAI使ってMinUIにチート機能の追加が出来ましたというお話です♪

「え?コード書けないのにそんなこと出来るの??」って思いますよね!!
『AIに指示を出す⇒成果物をテスト⇒エラー修正させる』といった工程を繰り返した結果、本当に動くチート機能が完成しました!!

今日はその過程を紹介していきます!!
コードが分からなくても「こういう風にAIに頼めば出来るんだ」という参考になれば嬉しいです♪

本文は自分で作成していますが、当然コード処理に関する解説はAI先生のご意見なので間違っていたらごめんなさい(笑)

えいどり
えいどり

ちなみに改造したものを製作者様の許可なく配布は出来ないので、修正後の差し替え用データの掲載はありません。
今回は「AI使ってこういうこともが出来たよ」という技術紹介の記事となります!

勇者にんじん
勇者にんじん

ちなみに今のところ問題なく動いてくれているけど、本体が使い物にならなくなったりするリスクもあるので真似してやってみる場合は自己責任にてお願いね!

※本記事は技術紹介を目的としています。
チートの使用は個人利用の範囲でお楽しみください。

スポンサーリンク

今回やりたかったこと

『MinUI』という中華ゲーム機向けのカスタムファームウェアがあるのですが、細かな設定機能は省いてすごいシンプルにゲームが出来れば良いって人向けの仕様になっていて、かなり私は気に入って使っています!

▼MinUIのページ(github)はコチラ
https://github.com/shauninman/MinUI

Thanks to Shaun Inman.

MinUIについてはコチラ!
【2025年版】MinUIセットアップガイド
【2025年版】MinUIセットアップガイド

しかし、MinUIにはチート機能がないんですよね。。
「それがあればなぁ・・・」なんて思っていたのですが、、ふと「AIにお願いしてチート機能を追加してもらえばいいのでは??」と思い立ち今回の実験がスタートしたわけです!

具体的にやりたかったこと

  • ゲーム中のメニューに「Cheats」という項目を追加
  • チートコードを入力できるキーボード画面を作成
  • 入力したチートコードを保存・読み込み
  • チートのON/OFFを切り替え可能に

出来上がったものがコチラ

えいどり
えいどり

『コードを入れても変化が起きない』、『キーボードに文字が足りていない』などなど細かな修正を結構加えて、ようやっとこの形になりました!
現在では普通に使えて、今のところ不具合も起きておらず・・・満足のいく仕様でかなり使用頻度が増えそうです♪

使用した環境・ツール

今回使用したものはこちら!!

項目内容
使用したAIAntigravity
※Googleの提供するサービスです
対象機種Miyoo Mini
ファームウェアMinUI
ビルド環境Docker(miyoomini-toolchain)
プログラミング言語C言語
(C言語って何ですかって??私も何か聞いたことがあるなぁくらいでよく分かりません(笑))
商品ページはコチラ!
Antigravityについて

今回のキーパーソンかつ最優秀賞を授与したいです♪
Googleが提供するAIが自律して開発を行うための全く新しいプラットフォームで「コードを書いてくれるAI」から「テストやら色々と試してきてくれてプロダクトを作り上げてくれるAIの同僚」が手に入るツールです!

https://antigravity.google

これまでのAIはチャットでコードを提示するだけでしたが、Antigravityは自ら判断して実行します。

  • 自律性: 「このエラーを直して」の一言で、AIが原因を探し、修正コードを書き、テストを回して完了させます。
  • プロセスの自動化: 計画(Plan)→ 実行(Act)→ 検証(Verify)のサイクルをAIが自分で回します。
  • エディタ操作:ブラウザ・ターミナル・エディタをAIが操作

なんてことの出来る便利ツールです!
ただ、設定次第ではありますがPC内のデータを色々いじれるようにするため大事なファイルが消えたとか情報漏洩等が心配な人は利用に注意が必要です!

勇者にんじん
勇者にんじん

最近スペック高めなAndroid系の機種も買っているのにMiyoo mini使ってるの??

えいどり
えいどり

一周回って最近結構愛おしくなってきたんだよね(笑)

AIへの指示の出し方

ここからが本題!! 
どうやってAIに指示を出したかを説明していきます♪

最初の指示(ざっくりお願い)

最初はAntigravityでこんな感じでざっくりお願いしました!

「MinUIにチート機能を追加したい。ゲーム中のメニューからチートコードを入力・管理できるようにしてほしい」

これだけでAIは以下のことを自動でやってくれました。

  1. MinUIのソースコードをGitHubからクローン
  2. コードの構造を分析
  3. どこを変更すればいいか計画を立てる

計画の確認(実装計画書)

AIは「implementation_plan.md」という計画書を作ってくれて、「この内容でいいですか?」と確認してくれます。
私は中身をざっと見て「OK!お願い!」と返すだけで実装が始まりました♪

えいどり
えいどり

あれこれコード表示した上で『これらを実行していいですか?』なんてよく分からない質問が来ることがあります!
そんな時は「プログラミング知識がない人でも理解できるようにやろうとしていることを説明してください」とAIに質問して聞きながらやれば大丈夫です♪

作業中はAIがあれこれ計画立てた上で実行してくれて、コチラには時折確認が来る程度なのでPC前でMiyoo miniでピクロスを楽しんで待機しておりました♪

実際の作業工程

ここからは実際にどんな工程で進んだかを時系列で説明します!!

ステップ1:ソースコードの調査

まずAIがMinUIのソースコードをダウンロードして、構造を調べてくれました。

AIの発見

  • メニュー処理は minarch.c というファイルにある
  • エミュレータは「libretro」というAPIを使っている
  • libretroにはチート機能のAPIがある(retro_cheat_set

この段階で「チート機能は実現可能!」ということが分かりました♪

ステップ2:実装計画の作成

AIが計画書を作成:

  • 新しいファイル minarch_cheat.c を作成
  • 既存ファイル minarch.c にチートメニューの呼び出しを追加
  • 機能:チートの追加・編集・削除・ON/OFF切り替え・保存/読み込み

ステップ3:コードの実装

えいどり
えいどり

ここからが大変でした(汗)
何か指示が来るたびに「???」だったので、不安な部分はAI先生にそれで何をするのかなどを質問しながら進めていきました!

①Antigravity「Dockerのインストールをして、起動したままにしてくれればこちらで作業を実施できます」
⇒ そもそもDockerってなに??勝手に操作してくれるのは嬉しいけど本当に大丈夫??

➁「Windows Powershellを使ってコードをビルドしてください」
⇒ Windows Powershell??!その子と面識ないんだけど、どこにあるの??

③Powershellにコード貼って実行!!
⇒ 実行したけどAIが書いたコードをビルドしようとすると、エラーが・・・!!

コードエラーについては何がエラーなのかもサッパリなので、エラーメッセージをコピペしてAIに「こんなエラー出てるよ!」って伝えれば再度分析して修正してくれます♪

私:「このエラーが出た(エラー内容をコピペ)」
AI:「修正しました。もう一度ビルドしてください」

えいどり
えいどり

今回、私のやった作業の大半はエラー内容をコピペです(笑)

ステップ4:ビルド成功とテストの実施

何度かエラーを修正した後、ついにビルドが成功!!
ビルドにはDockerを使いました。
AIがビルド用のコマンドも教えてくれたので、それをコピペするだけ♪

docker run -it –rm -v “C:\path\to\MinUI:/root/workspace” miyoomini-toolchain /bin/bash -c “. ~/.bashrc && cd /root/workspace && make clean && make PLATFORM=miyoomini”

出来上がったファイル(minarch.elf等)をMinUIのデータが入ったmicroSDカードのシステムフォルダ内のものと差し替えてMiyoo Miniを起動!!
ちゃんとメニューに「Cheats」が表示されました!!

ぶつかった壁とその解決

ここからはうまくいかなかったことどう解決したかを紹介します!!

壁1:チート画面を開くとクラッシュする

チート機能を追加したもののメニューから「Cheats」を選ぶとゲームが落ちるようになっちゃいました(汗)
ここ何度も修正してもらったのにそれでも改善されなかったので「一旦今までの固定観念を捨てて、0ベースで順を追ってチェックを進めて原因を特定し、改善ください」と入れたら、ようやっとクリアできました。

原因

TTF_RenderUTF8_Blended という関数に空の文字列を渡すと、NULLというエラー値が返ってくる。 それをチェックせずに使おうとしてクラッシュしていた。

解決方法

AIがすべての該当箇所にNULLチェックを追加してくれました!!

// 修正前(クラッシュする)SDL_Surface *text = TTF_RenderUTF8_Blended(font.medium, buffer, color);SDL_BlitSurface(text, NULL, screen, …); // textがNULLだとクラッシュ!// 修正後(安全)SDL_Surface *text = TTF_RenderUTF8_Blended(font.medium, buffer, color);if (text) { // NULLでないことを確認 SDL_BlitSurface(text, NULL, screen, …); SDL_FreeSurface(text);}

壁2:ビルドエラー(#endif without #if)

コードを追加したら「#endifが対応する#ifなしに存在する」というエラーが出ました。

原因

ヘッダーファイル(defines.h)を編集した時に、#endif が重複してしまった。

解決方法

AIが重複した #endif を削除してくれました!!

えいどり
えいどり

これは今でも何を言っているのか理解できていません(笑)

壁3:ボタン定義が見つからないエラー

BTN_A や BTN_B といったボタンの定義が見つからないエラーが出ました。

原因

ボタン定義を別ファイルに移動した時に、順番がおかしくなっていた。

解決方法

AIがボタン定義(enum)を正しい位置に移動してくれました!!

機能追加に際どのコードをどう書き換えたのか

コードが分からない人向けに、(AI先生が)大まかにどこを変えたのかを説明してくれました♪

新しく作成したファイル

ファイル名内容
minarch_cheat.cチート機能のすべてのコード(約560行)

変更した既存ファイル

ファイル名変更内容
minarch.cメニューに「Cheats」項目を追加(約10行追加)
api.hボタン定義を正しい位置に移動
defines.h重複した#endifを削除

minarch_cheat.c の主な機能

このファイルが今回のメイン!!以下の機能が入っています:

  1. Cheat_load() – チートファイル(.cht)を読み込む
  2. Cheat_save() – チートをファイルに保存
  3. Cheat_apply() – チートをゲームに適用
  4. Keyboard_loop() – 文字入力用のキーボード画面
  5. Menu_cheat() – チート一覧画面(メイン画面)

チートファイルの形式

保存されるチートファイルはこんな感じ!

cheats = 2cheat0_desc = “Infinite Lives”cheat0_code = “7E0DBD:09″cheat0_enable = truecheat1_desc = “Max Money”cheat1_code = “7E0DC0:FF”cheat1_enable = false

Libretroという標準的な形式なので、ネットで見つけたチートコードもそのまま使えます♪

完成したチート機能の使い方

完成したチート機能の使い方を説明します!!

基本操作

  1. ゲーム中にMENUボタンを押してメニューを開く
  2. 「Cheats」を選択
  3. チート画面が表示される!!

チート画面での操作

ボタン機能
A「+ Add New Cheat」で新規追加 / 既存チートのON/OFF切り替え
B画面を閉じる(自動保存)
X選択中のチートを編集
Y選択中のチートを削除
SELECT手動保存

キーボード画面での操作

ボタン機能
十字キーカーソル移動
A文字入力
Bバックスペース(1文字削除)/ 空なら画面を閉じる
L1/R1入力位置のカーソルを左右に移動
START/SELECT入力確定

おわりに

いかがでしたでしょうか?
今回はAIを使ってMinUIにチート機能を追加するという、ちょっと変わったチャレンジをしてみました!!

正直なところ、最初は「さすがに無理でしょ」と半信半疑で始めたのでブログの記事にする想定もしておらず、作成中の画像が全然なくて申し訳ないです!!

しかしながら、プログラミング知識がない人でもAIに細かく指示を出しながら進めることで本当に動くものが完成したのは感動です♪

AIを使った開発で大事なこと

  1. やりたいことを明確に伝える
    • 「チート機能を追加したい」だけでなく、『具体的に』どんな機能が欲しいか伝える
  2. エラーが出たらそのまま報告
    • エラーメッセージをコピペもしくは画面をスクショして見せるだけでAIが修正してくれます!
  3. 焦らず何度でもやり直す
    • 一発で成功することはほぼないので、指示の仕方を変えたりしながら進める試行錯誤が大事
  4. 計画を確認してから進める
    • AIが作った計画書を確認して、想定と違ったら修正をお願いする。
      計画書の意味が分からなければ一旦そこから聞いてみる。

感想

コードが書けなくても、AIと協力すればかなり高度なことができる時代になったなぁと実感しました!!

今までは『人間側がPCの言語(プログラミング言語)で伝えないといけなかったものを、AIの登場で人間の言語でPC側が理解できるようになった』というのを実感出来た一件となりました。

簡単なゲームくらいであればゲーム制作も出来てしまう世の中なので、興味がある方はぜひAIでの創作活動なんかも試してみてください♪
では、また!!


※本記事は技術紹介を目的としています。チートの使用は個人利用の範囲でお楽しみください。

あわせて読みたい
【2025年版】MinUIセットアップガイド
【2025年版】MinUIセットアップガイド
商品ページはコチラ!
スポンサーリンク
この記事を書いた人
えいどり
えいどり
ノーマル属性の会社員
昭和末期生まれの2児のパパです!
中華ゲーム機やレトロゲーム、ミステリー小説に筋トレ、時折イラストを描いたり・・・etcと広くあれこれと楽しんでおります!!

主に中華ゲーム機やその関連情報をお届けしつつ、その時々で興味のあるものや好きなものの紹介へと脱線していきたいと思っています(笑)

X(SNS)やYoutube「えいどりのあれこれ余暇ch」も時折更新しておりますので宜しくどーぞ!!
記事URLをコピーしました