お疲れ様です。Alessです。
2026年5月14日に開催された招待制のLTイベント「春のLT大会&交流会 2026」にて、LT登壇を行わせていただきました。
今回の記事は、LTの前半で触れた共通基盤の開発と学習コストに対する考え方について、加筆修正を行い、まとめ直したものとなります。
主観に基づく考え方のため、考え方の一例として参考にしていただけると嬉しいです。
今回のLTは、現在私が所属しているプロジェクト内で並行して実装を進めているUnity用のuGUI共通基盤「ApUI」について、現状の実装や設計方針を振り返ったものです。
LT資料はこちらにアップロードしてあります。
無限スクロールの実装を通して見る、Unity上の共通基盤を作り始める際の考え方
ApUIとは、現在内製を進めているUnity用のuGUI共通基盤パッケージです。プロダクト開発中の1プロジェクトが主体となって機能追加を進めており、発表日の時点では主体のプロジェクトを含む2つのプロジェクトに導入されています。
タッチ入力内容の取得機能について拡張やImageのAddressablesサポート、全画面ポップアップの表示制御の他、今回のLTの主題として挙げた無限スクロールUIの機能が含まれています。
ApUIは独立したGitリポジトリとして管理しており、利用側の各プロジェクトへの取り込みはSubmoduleで行う運用にしています。
ApUIは開発初期のパッケージであり、また特定のプロジェクトのメンバーが並行して更新を行っている都合上、そのプロジェクトが多忙になると更新頻度が低下してしまい、ApUIを利用している他のプロジェクトからの要望に応えることが難しくなってしまいます。
そのため、Submoduleを用いて直接Gitリポジトリと接続し、ブランチを切ることで各プロジェクト内で自由にApUIの拡張を行えるようにしています。また、各プロジェクトで作成した機能について他のプロジェクトでも使用したい場合は、cherry-pickによって本流や別プロジェクトのブランチに取り込むことが可能です。
現状では本流であるdevelopブランチと各プロジェクトごとのブランチを用意しており、プロジェクトブランチ間の取り込みには制限を設けていません。developへの反映のみ、ApUIをメインで開発しているプロジェクト内のメンバーのレビューを必須としています。
将来的に、より規模が大きくなり、ApUIへ変更を加える人がチームとして固まった後はUPM経由での取り込みフローも考えていますが、現在は機能追加をしたい人が自由に行えるよう、この運用としています。
今回の主題にもある無限スクロール機能について、共通基盤内ではReusedScrollという名称で実装しています。ReusedScrollはスクロール内に表示するUI要素「セル」を、オブジェクトプールで管理して無限スクロールを表現するスクロールビューコンポーネントです。