Terragrunt × GitHub Actions で開発環境をワンクリック追加・自動削除する仕組み

目次 はじめに 開発環境を「動的に」追加・削除する意義 仕組みの全体像 suffix が環境を識別するキーになる suffix がリソース名・URL・state を分離する コスト設計:共有するもの・使い捨てるもの Google OAuth の callback を proxy して手動登録を排除…

UI Toolkit の Filter 内部実装を Frame Debugger と UnityCsReference で読み解く

目次 はじめに 検証環境 ビルトイン Filter の種類 Filter 有無での Frame Debugger 比較 URP パイプライン上のタイミング Blur Filter の PostEffect 処理を Frame Debugger で追う UIR.DrawChain / UIR.DrawRanges による VisualElement 描画 ピンク枠が示…

UI Toolkitで自作するUnityランタイムデバッグツールの設計と実装

目次 はじめに なぜ自作したのか UI Toolkit を採用した理由 ゲーム本体の UI と独立して動かせる USS によるスタイル管理 ListView の仮想化 Editor / Runtime 両対応 PanelSettings の分離 ScriptableObject ベースの設定アーキテクチャ Setup Wizard で初…

Unity 6 の UI Toolkit でリッチな UI エフェクトを実装する

目次 はじめに 検証環境 UI Toolkit における UIEffect の選択肢 ShaderGraph 経路 ShaderGraph実装 Tone: Grayscale (彩度を 0 にして白黒化) Tone: Sepia (Sepia 行列で茶色調) Tone: Negative (1 - color で反転) ColorMode: Multiply (TintColor を乗算…

ScrollRectを使わないUnityリサイクルスクロールの設計と実装

目次 はじめに ScrollRect を使わない理由 標準コンポーネントの課題 ReusableScroller のアプローチ 全体のアーキテクチャ ScrollView ― 制御の中心 ScrollCellData ― セルのデータ ScrollCell ― セルのビュー 初期化処理 セルリサイクルの仕組み 2つのリス…

モバイルゲームのローカルキャッシュが壊れた!アトミック書き込みと3層防御で解決した話

目次 はじめに なぜマスタデータは壊れるのか 書き込み途中のクラッシュ スレッド競合 データとハッシュの不整合 設計方針:3層防御 第1層:破損防止 アトミック書き込み スレッドセーフ化 起動時クリーンアップ 第2層:検知 整合性状態の定義 VerifyAndRead…

Unityでの開発を支えるアプリケーション基盤

はじめに Unityでゲームを開発していると、プロジェクトが変わっても繰り返し必要になる機能があります。デバッグツール、多言語対応、セーブデータの管理、大量データを表示するスクロールリスト――どれも一から作ると相応の工数がかかりますし、プロジェク…

『真 戦国炎舞 データベース』小規模兼任チームにおける開発PMの進行設計

目次 はじめに サービス紹介 プロジェクト概要 開発PMというお仕事について 炎舞DBにおける開発PMの役割 プロジェクトの制約 クリティカルパスの設計 クリティカルパス 完了定義による進行管理 QAスコープの再設計 表示確認:QA対象 検索結果の妥当性確認:…

CrashlyticsのログをAI解析して Slackに週次レポートを送信する

目次 はじめに 仕組みについて 設計について 実装について Cloud Functions実装 ログ抽出 AI解析 Slack通知 デプロイとスケジューリング GitHub Actionsワークフロー まとめ はじめに サムザップ開発推進室ソリューションチーム所属の江畑と申します。 開発…