<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>アーキテクチャ on Wuyukwi's Notebook</title><link>https://wuyukwi.duckdns.org/tags/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3/</link><description>Recent content in アーキテクチャ on Wuyukwi's Notebook</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Wed, 18 Feb 2026 13:18:23 +0900</lastBuildDate><atom:link href="https://wuyukwi.duckdns.org/tags/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3/index.xml" rel="self" type="application/rss+xml"/><item><title>☝️ デバッグ UI を書かずに Unity のデバッグ環境を成立させる設計と実装</title><link>https://wuyukwi.duckdns.org/posts/zenn-2d31ee3e52b29e/</link><pubDate>Wed, 18 Feb 2026 13:18:23 +0900</pubDate><guid>https://wuyukwi.duckdns.org/posts/zenn-2d31ee3e52b29e/</guid><description>&lt;blockquote&gt;
&lt;p&gt;📌 &lt;em&gt;この記事は &lt;a href="https://zenn.dev/wuyukwi/articles/2d31ee3e52b29e"&gt;Zenn&lt;/a&gt; に投稿した内容のアーカイブです。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="はじめに"&gt;はじめに&lt;/h1&gt;
&lt;p&gt;Unity で開発していると、&lt;br&gt;
&lt;strong&gt;実行中にパラメータを触りながら挙動を確認したい&lt;/strong&gt;&lt;br&gt;
という場面は、ほぼ毎日のように出てきます。&lt;/p&gt;
&lt;p&gt;最初のうちは、Unity 標準の仕組みを使って&lt;br&gt;
簡単な Runtime Debug UI を用意すれば十分でした。&lt;/p&gt;
&lt;p&gt;ただ、プロジェクトが進み、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;デバッグ項目が増える&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;調整対象が増える&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;複数人で同時に触る&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という状況になるにつれ、&lt;br&gt;
&lt;strong&gt;「その場しのぎ」で作ったデバッグ UI が、確実に足を引っ張る&lt;/strong&gt;&lt;br&gt;
ようになってきます。&lt;/p&gt;
&lt;p&gt;この段階で欲しくなったのが、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;壊れにくく、拡張しやすく、&lt;br&gt;
プロジェクトと一緒に「育てていける」デバッグ基盤&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;でした。&lt;/p&gt;
&lt;p&gt;この記事では、&lt;br&gt;
そのために設計した &lt;strong&gt;自作 Runtime Debug システム&lt;/strong&gt; について、&lt;br&gt;
&lt;strong&gt;設計意図と実装の要点&lt;/strong&gt; を中心にまとめます。&lt;/p&gt;
&lt;h1 id="何が問題だったのか"&gt;何が問題だったのか&lt;/h1&gt;
&lt;p&gt;問題の本質は、&lt;strong&gt;「UI をどう実装するか」&lt;/strong&gt; ではありませんでした。&lt;/p&gt;
&lt;p&gt;本当に困っていたのは、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Debug 項目の追加・削除が面倒&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;どこに何のデバッグ設定があるのか分からない&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;不要になった項目が整理されず、蓄積していく&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という &lt;strong&gt;運用面の破綻&lt;/strong&gt; です。&lt;/p&gt;
&lt;p&gt;特に後半になると、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;「デバッグ環境のせいで、デバッグそのものがやりにくい」&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;という、本末転倒な状態になりがちでした。&lt;/p&gt;
&lt;h1 id="目指したゴール"&gt;目指したゴール&lt;/h1&gt;
&lt;p&gt;今回の設計で目指したゴールは、かなり明確です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;UI を書かずに Debug 項目を追加できる&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;構造が自然に整理され続ける&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;無効化・除去が簡単&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;プロジェクト規模が大きくなっても破綻しない&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;「運用しても壊れない設計」&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;を最優先にしました。&lt;/p&gt;
&lt;h1 id="全体構成"&gt;全体構成&lt;/h1&gt;
&lt;p&gt;全体の流れは、次のようになります。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;起動
↓
RuntimeInitializeOnLoadMethod
↓
DebugManager 自動生成
↓
DebugOption 自動登録
↓
Reflection による項目収集
↓
UI 自動生成 &amp;amp; バインディング
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ここで重視したのは、&lt;/p&gt;</description></item></channel></rss>