oUF MyLayout Addon
AIを使ってoUFフレームワークを利用したWorld of Warcraftのユニットフレームアドオンを作ってみました。
Visual Studio Code にGemini Code Assist拡張を組み込みました。実装を確かめながら機能を追加できます。Geminiは混雑時にレスポンスが悪くなる場合がありますが、無料であるにも関わらずコンパクトで間違いの無いコードを生成するような気がします。追加機能を提案してくれるので了承するだけで機能が追加されていきます。
Gemini Code Assistant
Gemini Code Assist - Visual Studio MarketplaceExtension for Visual Studio Code - AI-assisted development powered by GeminioUF
oUF_MyLayout
2026-01-18
- oUF 13.0.0 リリース
エラーが発生するのでoUF 12.1.0を埋め込み型にしました。
スクリーンショット
左からPlayer、Pet、Targetフレーム

左からFocus, Player, Pet, Target, Target-targetフレーム、右下はRaidフレーム

Partyフレーム

設定画面
スラッシュコマンド(/mylayout config)で開きます。

設定画面 (Profile)
いろいろなアドオンで見かけるインタフェースです。

使い方
インストール
前提アドオンをインストール
前提のアドオンを有効にしておきます。
oUF_MyLayoutアドオンのZipをダウンロード
https://github.com/ktkr3d/oUF_MyLayout/archive/refs/heads/main.zipZipを解凍して以下のフォルダに格納
C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\oUF_MyLayout\
設定変更
- ゲーム内で設定画面を表示
- スラッシュコマンドの場合
/mylayout config
- メニューの場合
Esc > Options > Addons > oUF_MyLayout
- スラッシュコマンドの場合
設定のリセット
- ゲーム内でリセットを実行
- スラッシュコマンドの場合
/mylayout reset
- 設定画面の場合
Profiles > Reset Profile
- スラッシュコマンドの場合
アンインストール
- 本体
C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\oUF_MyLayout\
- セーブデータ
C:\Program Files (x86)\World of Warcraft\_retail_\WTF\Account\アカウント名\SavedVariables\oUF_MyLayout.lua
C:\Program Files (x86)\World of Warcraft\_retail_\WTF\Account\アカウント名\SavedVariables\oUF_MyLayout.lua.bak - 前提アドオン(不要な場合のみ)
C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\Ace3\
C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\LibSharedMedia-3.0\
C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\oUF\
開発環境
開発環境
- Visual Studio Code
- Gemini Code Assist
- Activitus Bar
開発環境の構築
VS CodeにGemini Code Assistを導入
- VS CodeにGemini Code Assistを導入
- Activitus Barを利用している場合は以下の設定で「Gemini Code Assist」アイコンを登録
settings.json {
"activitusbar.views": [
{
"name": "command.workbench.view.extension.geminiChat",
"codicon": "chat-sparkle",
"tooltip": "Gemini Code Assist"
}
]
}vscodeで利用できるcodiconは以下で検索できます。
https://microsoft.github.io/vscode-codicons/dist/codicon.html
WoWに前提アドオンをインストール
WoWにデバッグ用アドオンをインストール
oUF_MyLayoutリポジトリの取得
- Gitクローンで取得する場合
git clone https://github.com/ktkr3d/oUF_MyLayout.git
oUF_MyLayout/
├── media/
│ ├── fonts/
│ │ └── Prototype.ttf
│ └── textures/
│ ├── Gradient.tga
│ └── Minimalist.tga
├── Config.lua
├── Options.lua
├── oUF_MyLayout.lua
├── oUF_MyLayout.toc
└── README.md
WoWにoUF_MyLayoutアドオンを登録
- Power Shellで配置/更新する場合
Power Shell Copy-Item -Path "oUF_MyLayout" -Destination "C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns\" -Recurse -Force
マクロ登録
- アドオン全体をリロードするマクロ
/reload gui
- 設定画面を表示するマクロ(スラッシュコマンド)
/mylayout config
- 設定をリセットするマクロ(スラッシュコマンド)
/mylayout reset
設定画面のProfileからReset Profileでもリセット可能です。
テスト
動画撮影
- Windowの機能(Super+Alt+R)で録画 録画バーは邪魔にならない位置に配置しておきます。
保存先 キャプチャフォルダ
- nVidiaアプリの機能(Alt+F9)で録画 録画中を示すアイコンは右下にあります。
保存先 C:\Users\ユーザ名\Videos\NVIDIA\World Of Warcraft\
Health Barのテスト
- WarlockのBurning Rush
Partyユニットフレーム
- Follower Dungeon
PartyフレームのキャストバーはWarlockのBurning Rush後のヒールスペルで確認できる。
Raid/Boss/MainTankユニットフレーム
- LFR
座標確認
- Edit Modeの補助線
漢字(UTF8 3バイト)名表示
- TWサーバ
TODO
ユニットフレーム
- ユニットフレームの追加
- 済
player, pet, target, target-target, focus,
party, party-target,
raid, boss, maintank, maintank-target, - 未
arena, - 未(不要かも)
pet-target, focus-target,
party-pets,
maintank-target-target, boss-target,
- 済
- Raidフレームスタイル
- 25(8グループまで表示させることは可): 済
- 40(8グループ専用スタイル): 未
- クラス関連
- Class Power (コンボポイント等):済
- Runes (デスナイトのルーン):済
- Additional Power (Druid Mana):済
- アイコン: 済
- Marker
- Leader
- Assist
- Resting
- Combat
- Role
調整
- 名前テキスト
- クラスカラー: 済
- レベル: 済
- 短縮表示(動的に自動切り詰め):済
Config.luaで各ユニットフレームの基準値を変更可能
- ヘルステキスト
- HPパーセント表示: 済
- HP数値表示(human readable): 済
- 非表示: 済
- HP 0%/100% で非表示オプション: 済
- 状態表示(AFK/Dead/Ghost/Offline): 済
- 3Dポートレイト: 済
- Cast bar: 済
- Buff, DeBuff: 済
- 設定変更時の再描画の最適化(非表示のユニットを描画しない): 未
- Blizzard標準のEdit Modeとの連動: 途中
- 位置指定はペアレントアンカーを使う: 途中
- ヘルスバーカラー
- Gradient: 済
- Class Color: 未
- Indipendent Color: 未
- InRange情報をスタイルに反映: 済
- raidフレーム
- soloでも表示: 済
- partyの他メンバを表示: 済
- partyの自分を表示: 未
- パフォーマンスチューニング
- raid時にportraitを無効にするオプション: 済
- タグの更新頻度制限: 未
コードの見直し
- コメントの英語化(AIで): 済
- 処理の共通化によるコード量の最適化: 未
- パッケージング: 未
https://www.curseforge.com/docs/packaging
所感
- コードの精度が高い。世界中のアドオン開発者のナレッジやコードを吸収しているのだろう。
- 不具合があってもBugSackで収集したエラーメッセージやスタックトレースを伝えると的確に修正する。
- 機能を追加後に2つの新機能を提案してくれる。承諾するだけで機能がどんどん追加される。正しく機能している旨を伝えると、機能追加の修正の承諾を能動的に求めてくるようになる。
- 大規模なリファクタリングは失敗する場合がある。コードを少し戻してから適用すればよいのだが、構造の修正は早めに済ませた方が良さそう。
- Geminiからの想定外の提案の数々
- 設定をリセットするスラッシュコマンドの追加
- Ace3ライブラリを利用した設定画面の実装。スラッシュコマンド「/mylayout config」の実装。README.mdにそのまま転載できそうな使い方の提示。
- 設定を変更した際、Reloadなしで即時に更新するライブアップデート機能
- リソースパスのハードコードをコンフィグファイルでの指定に変更
- プロファイル管理画面
- 不要なコードは削除しておいた方がよい。古いコメントも削除した方がよい。
- 該当するファイルをContext itemsとして選択した状態でプロンプトを作成するとよい。
- 何度も修正案を考えさせるよりも自分で修正した方がコード量も少なくて早い場合がある。
Comments


