Unity アプリを使用したアプリケーション ライフサイクル管理 (ALM)Application Lifecycle Management (ALM) with Unity Apps

最新のプラットフォーム向けのアプリ開発には、コードを記述するだけでなく、それ以外の多くのアクティビティが関係します。Developing apps for modern platforms involves many more activities than just writing code. これらのアクティビティは、アプリの完全なライフサイクルの中で DevOps (開発 + 運用) 期間になされるものあり、たとえば、作業のアジャイルな計画と追跡、コードの設計と実装、ソース コード リポジトリの管理、ビルドの実行、継続的に実行されるインテグレーションと展開の管理、テスト (単体テストと UI テストを含む)、開発環境と運用環境の両方におけるさまざまな形式の診断の実行、製品利用統計情報と分析によるアプリのパフォーマンスとユーザー動作のリアルタイムな監視などがあります。These activities, referred to as DevOps (development + operations) span the app's complete lifecycle and include planning and tracking work, designing and implementing code, managing a source code repository, running builds, managing continuous integrations and deployments, testing (including unit tests and UI tests), running various forms of diagnostics in both development and production environments, and monitoring app performance and user behaviors in real time through telemetry and analytics.

Visual Studio、Visual Studio Team Services、および Team Foundation Server は、さまざまな DevOps 機能 (アプリケーション ライフサイクル管理 (ALM) とも呼ばれる) を提供しています。Visual Studio together with Visual Studio Team Services and Team Foundation Server provide a variety of DevOps capabilities, also referred to as Application Lifecycle Management or ALM. これらの多くは、特にスクリプト言語として C# を使用している場合の Unity で作成したゲームや没入感のあるグラフィカル アプリなど、プラットフォーム間のプロジェクトに適用されます。Many of these are applicable to cross-platform projects, including games and immersive graphical apps created with Unity—especially when using C# as a scripting language. ただし、Unity は、独自の開発環境とランタイム エンジンがあるため、多くの ALM 機能が Visual Studio でビルドされた他の種類のプロジェクトのようには適用されません。However, because Unity has its own development environment and runtime engine, a number of ALM features don't apply as they would to other kinds of projects built in Visual Studio.

次の表は、Unity を使用するときの Visual Studio ALM の機能を適用する方法と適用しない方法について示しています。The tables below identifies how Visual Studio ALM features apply or don't apply when working with Unity. 各機能そのものの詳細については、リンク先のドキュメントを参照してください。Refer to the linked documentation for details on the features themselves.

アジャイル ツールAgile tools

参照リンク: 作業 (Visual Studio Team Services または TFS (Team Explorer Everywhere など) を使用)Reference link: Work (using Visual Studio Team Services or TFS, including Team Explorer Everywhere)

一般的なコメント: すべての計画機能と追跡機能は、プロジェクトの種類とコーディング言語には依存しません。General Comment: all planning and tracking features are independent of project type and coding languages.

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
バックログとスプリントの管理Manage backlogs and sprints はいYes
作業の追跡Work tracking はいYes
チーム ルーム コラボレーションTeam room collaboration はいYes
かんばんボードKanban boards はいYes
進行状況のレポートと視覚化Report and visualize progress はいYes

モデリングModeling

参照リンク: アーキテクチャの分析およびモデリングReference link: Analyzing and Modeling Architecture

一般的なコメント: これらのデザイン機能は、コーディング言語に関係がないか、C# などの .NET 言語と共に使用されますが、オブジェクト階層およびクラスのリレーションシップを含む従来のアプリケーションのパラダイムで動作します。General Comment: Although these design features are either independent of coding language, or work with .NET languages like C#, they operate on a traditional application paradigm with object hierarchies and class relationships. Unity 内でのゲームの設計には、さまざまなパラダイムが含まれ、たとえばグラフィカル オブジェクト、サウンド、シェーダー、スクリプトなどのリレーションシップがあります。Designing a game within Unity involves a different paradigm altogether, namely the relationships of graphical objects, sounds, shaders, scripts, and so forth. このため、Visual Studio モデリング ダイアグラム ツールが、Unity プロジェクト全体に特に関連するわけではありません。For this reason, the Visual Studio modeling diagram tools are not particularly relevant to the whole of a Unity project. C# スクリプト内でのリレーションシップを管理するために使用することもできますが、それは全体の中の一部にすぎません。They could possibly be used to manage relationships within C# scripts, but that is only one part of the whole.

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
シーケンス図Sequence diagrams いいえNo
依存関係グラフDependency graphs いいえNo
呼び出し階層Call hierarchy いいえNo
クラス デザイナーClass designer いいえNo
アーキテクチャ エクスプローラーArchitecture explorer いいえNo
UML 図 (ユース ケース、アクティビティ、クラス、コンポーネント、シーケンス、および DSL)UML diagrams (use case, activity, class, component, sequence, and DSL) いいえNo
レイヤー図Layer diagrams いいえNo
レイヤー検証Layer validation いいえNo

コードCode

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
Team Foundation バージョン管理 または Visual Studio Team Services を使用Use Team Foundation Version Control or Visual Studio Team Services はいYes Unity プロジェクトは、単に他のプロジェクトのように、バージョン管理システムに配置することができる複数のファイルですが、この表の下に記載したいくつかの特別な考慮事項があります。Unity projects are simply a collection of files that can be placed into version control systems like any other project, but there are a few special considerations described after this table.
Team Services で Git を使用した作業の開始Getting started with Git in Team Services はいYes 表の下の注を参照してください。See notes after the table.
コードの品質向上Improve Code Quality はいYes
コード変更およびその他の履歴の検索Find code changes and other history はいYes
コード マップを使用してアプリケーションをデバッグするUse code maps to debug your applications はいYes

Unity を使ったバージョン管理に関する注意事項:Special considerations for version control with Unity:

  1. Unity は、既定では非表示の 1 つの非透過のライブラリでのゲーム資産に関するメタデータを追跡します。Unity tracks metadata about game assets in a single, opaque library that is hidden by default. ファイルとメタデータの同期を保つするには、メタデータを表示してより管理しやすいチャンク単位で格納する必要があります。To keep files and metadata in sync, it is necessary to make the metadata visible and to store it in more-manageable chunks. 詳細については、「Using External Version Control Systems with Unity」 (Unity で外部のバージョン管理システムを使用する) (Unity ドキュメント) を参照してください。For details, refer to Using External Version Control Systems with Unity (Unity documentation).

  2. 上記のリンクで説明するように、Unity プロジェクトのすべてのファイルとフォルダーがソース管理に適しているわけではありません。Not all files and folders in a Unity project are appropriate for source control, as is also described in the link above. Assets フォルダーと ProjectSettings フォルダーを追加する必要がありますが、Library フォルダーと Temp フォルダーは追加しないでください。The Assets and ProjectSettings folders should be added, but the Library and Temp folders should not. ソース管理にならない生成されたファイルの追加のリストについては、StackOverflow の「Unity3D ソース管理に Git を使用する方法」を参照してください。For an additional list of generated files that would not go into source control, see the discussion How to use Git for Unity3D source control? on StackOverflow. 多くの開発者が、このテーマについて個別にブログに書いています。Many developers have also blogged on this subject independently.

  3. テクスチャやオーディオ ファイルなど、Unity プロジェクトでのバイナリの資産が、大量のストレージを消費することがあります。Binary assets in a Unity project—such as textures or audio files—can take up a large amount of storage. Git などのさまざまなソース管理システムは、変更がファイルのごく一部のみに影響する場合でも、すべての変更個所のファイルの一意のコピーを格納します。Various source control systems like Git store a unique copy of a file for every change that is made, even if the change affects only a small portion of the file. これにより、Git リポジトリがいっぱいになる可能性があります。This can cause the Git repository to become bloated. これに対処するために、Unity 開発者は多くの場合、リポジトリに最終資産のみを追加し、OneDrive、DropBox、git の添付など、資産の作業履歴を保持するために様々な手段を使用しています。To address this, Unity developers often elect to add only final assets to their repository, and use a different means of keeping a working history of their assets, such as OneDrive, DropBox, or git-annex. 通常このような資産は、ソース コードの変更に伴うバージョン管理を必要としないため、このアプローチが有効です。This approach works because such assets typically don't need to be versioned along with source code changes. また、開発者は、プロジェクト エディターの資産のシリアル化モードを、シーンファイルをバイナリ形式ではなくテキストで保存するためにテキストを強制するよう設定し、これによりソース管理でのマージが可能になります。Developers also typically set the project editor's Asset Serialization Mode to Force Text to store scene files in text rather than binary format, which allows for merges in source control. 詳細については、「Editor Settings」 (エディターの設定) (Unity ドキュメント) を参照してください。For details, see Editor Settings (Unity documentation).

ビルドBuild

参照リンク: ビルドReference link: Build

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
オンプレミス TFS サーバーOn-premises TFS server 可能Possible Unity プロジェクトは、Visual Studio が構築したシステムではなく、Unity の環境内で構築されています (Visual Studio Tools for Unity 内で構築すると、スクリプトはコンパイルしますが、実行可能ファイルを生成しません)。Unity projects are built through the Unity environment and not through the Visual Studio build system (building within the Visual Studio Tools for Unity will compile the scripts but not produce an executable). コマンド ラインから Unity プロジェクトをビルド (Unity ドキュメント) できるため、Unity 自体がそのコンピューターにインストールされている場合は、TFS サーバーで MSBuild プロセスを構成して、適切な Unity コンポーネントを実行できます。It is possible to build Unity projects from the command line (Unity documentation), so it possible to configure an MSBuild process on a TFS server to execute the appropriate Unity commands, provided that Unity itself is installed on that computer.

また、Unity は、Unity クラウド構築も提供し、Git または SVN リポジトリを監視して、定期的なビルドを実行します。Unity also offers Unity Cloud Build, which monitors a Git or SVN repository and runs periodic builds. 現時点では、Team Foundation バージョン管理または Visual Studio Team Services では動作しません。At present it does not work with Team Foundation Version Control or Visual Studio Team Services.
Visual Studio Team Services にリンクされたオンプレミスのビルド サーバーOn-premises build server linked to Visual Studio Team Services 可能Possible 上記と同じ状態の場合、Visual Studio Team Services でトリガーされたビルドを指して、オンプレミスの TFS のコンピューターを使用することがさらに可能になります。Given the same conditions as above, it is further possible to direct builds triggered through Visual Studio Team Services to use an on-premises TFS computer. 手順については、ビルド サーバーを参照してください。See Build server for instructions.
Visual Studio Team Services のホスト コントローラー サービスHosted controller service of Visual Studio Team Services いいえNo Unity ビルドは現在サポートされていません。Unity builds are not presently supported.
事前スクリプトと事後スクリプトによるビルド定義Build definitions with pre- and post-scripts はいYes Unity のコマンドラインを使用してビルドを実行するカスタムのビルド定義は、ビルド前およびビルド後のスクリプトに対して構成することもできます。A custom build definition that uses the Unity command line to run a build can also be configured for pre- and post-build scripts.
継続的な統合 (ゲート チェックインを含む)Continuous integration including gated check-ins はいYes Git としての TFVC へのゲート チェックインのみ、チェックイン モデルではなく、プル要求モデルで機能します。Gated check-ins for TFVC only as Git works on a pull-request model rather than check-ins.

テスト中Testing

参照リンク: アプリケーションのテストReference link: Testing the application

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
テストの計画、テスト ケースの作成、およびテスト スイートの編成Planning tests, creating test cases and organizing test suites はいYes
手動テストManual testing はいYes
テスト マネージャー (テストの記録と再生)Test Manager (record and playback tests) Windows デバイスと Android エミュレーターのみWindows devices and Android emulators only
コード カバレッジCode coverage N/An/a 単体テストとしての該当なしは、Unity と Visual Studio で発生します。以下を参照してください。Not applicable as unit testing happens within Unity and not Visual Studio, see below.
コードの単体テストUnit Test Your Code Unity 内。Visual Studio 内ではありません。Within Unity, but not Visual Studio Unity は、独自の単体テスト フレームワークを Unity テスト ツール (Unity Asset Store) の一部として提供しています。Unity provides its own unit test framework as part of Unity Test Tools (Unity Asset Store). 単体テストの結果は、Unity 内でレポートされ、Visual Studio 内では表示されません。Unit test results are reported within Unity and will not be surfaced within Visual Studio.
UI オートメーションを使用してコードをテストするUse UI Automation To Test Your Code いいえNo コード化された UI テストは、アプリの UI で読み取り可能なコントロールに依存します。Unity アプリケーションは本質的にはグラフィカルであるため、コンテンツはコード化された UI テストのツールで読み取ることはありません。Coded UI tests rely on readable controls in the app's UI; Unity apps are graphical in nature and so content isn't readable by the Coded UI test tools.

コード品質の向上Improve code quality

参照リンク: コードの品質の向上Reference link: Improve Code Quality

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
マネージ コードの品質の分析Analyzing Managed Code Quality はいYes Visual Studio 内の C# スクリプト コードを分析できます。Can analyze the C# script code within Visual Studio.
コード クローン検出を使用した重複コードの検出Finding Duplicate Code by using Code Clone Detection はいYes Visual Studio 内の C# スクリプト コードを分析できます。Can analyze the C# script code within Visual Studio.
マネージ コードの複雑さと保守性の測定Measuring Complexity and Maintainability of Managed Code はいYes Visual Studio 内の C# スクリプト コードを分析できます。Can analyze the C# script code within Visual Studio.
パフォーマンス エクスプローラーPerformance Explorer いいえNo Unity Profiler の使用 (Unity Web サイト)。Use the Unity Profiler (Unity website).
.Net Framework のメモリ分析の問題Analyze .NET Framework memory issues いいえNo Visual Studio ツールには、(Unity で使用するような) プロファイリング用の Mono フレームワークへのフックはありません。Visual Studio tools do not have hooks into the Mono framework (as used by Unity) for profiling. Unity Profiler の使用 (Unity ドキュメント)。Use the Unity Profiler (Unity documentation).

リリース管理Release management

参照リンク: リリース管理による配置の自動化Reference link: Automate deployments with Release Management

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
リリース プロセスの管理Manage release processes はいYes
スクリプトによるサイドローディング用のサーバーへの配置Deployment to servers for side-loading via scripts はいYes
アプリ ストアへのアップロードUpload to app store PartialPartial 一部のアプリ ストアに対して、このプロセスを自動化することができる拡張機能が使用できます。Extensions are available that can automate this process for some app stores. たとえば、Google Play の拡張機能については、Visual Studio Team Services の拡張機能を参照してください。See Extensions for Visual Studio Team Services; for example, the extension for Google Play.

HockeyApp による監視Monitor with HockeyApp

参照リンク: HockeyApp による監視Reference link: Monitor with HockeyApp

特性Feature Unity でサポートされているかどうかSupported with Unity その他のコメントAdditional Comments
クラッシュ分析、製品利用統計情報、およびベータ版の配布Crash analytics, telemetry, and beta distribution はいYes HockeyApp は、主にベータ分布を処理し、クラッシュ レポートを取得するために役立ちます。HockeyApp is primarily useful for handling beta distribution and obtaining crash reports.

C# スクリプトからの製品利用統計情報の場合、Unity によって使用される .NET のバージョンで実行されるときは、分析用のフレームワークを使用することができます。For telemetry from C# scripts, it is possible to use any analytics framework provided that it runs on the version of .NET that is used by Unity. ただし、ゲームのスクリプト内でのみ分析でき、Unity エンジン内で詳細に分析することはできません。However, this allows for analytics only within game scripts and not more deeply inside the Unity engine. 現時点では、Application Insights のプラグインはありませんが、Unity AnalyticsGoogle Analytics などの他の分析ソリューションのプラグインが使用できます。At present there is no plugin for Application Insights, but plugins are available for other analytics solutions such as Unity Analytics and Google Analytics. Unity プロジェクトの特性を理解する Unity Analytics のようなサービスは、汎用的なフレームワークもより効果的な分析を提供します。Services like Unity Analytics that understand the nature of a Unity project will, of course, provide much more meaningful analysis than generic frameworks.