方法: プロファイルを定義して UML を拡張する
Visual Studio Ultimate では、UML プロファイルを定義して、標準のモデル要素を特定の目的に使用するためにカスタマイズできます。プロファイルは、一つ以上の UML ステレオタイプを定義します。ステレオタイプがオブジェクトの特定の型の表現として型をマークするために使用できます。ステレオタイプは、要素のプロパティの一覧を拡張できます。
Visual Studio Ultimate をインストールするときに、いくつかのプロファイルもインストールされます。これらのプロファイルの詳細およびステレオタイプを適用する方法の詳細については、「プロファイルとステレオタイプを使用したモデルのカスタマイズ」を参照してください。
独自のプロファイルを定義して、UML を特定のビジネス領域またはアーキテクチャに適応させ、拡張することができます。次に例を示します。
Web サイトを頻繁に定義する場合は、クラス図のクラスに適用できる «WebPage» ステレオタイプを提供する独自のプロファイルを定義できます。これにより、クラス図を使用して Web サイトを計画できます。各 «WebPage» クラスは、ページのコンテンツやスタイルなどの追加のプロパティを持つことになります。
銀行業務ソフトウェアを開発する場合は、«Account» ステレオタイプを提供するプロファイルを定義できます。これにより、クラス図を使用して複数の異なる種類の口座を定義し、口座間の関係を示すことができます。
独自に生成したプロファイルはチームに配布できます。すべてのチーム メンバーがそれぞれそのプロファイルをインストールできます。これにより、チーム メンバーは、独自に編集を加えて、そのステレオタイプを使用するモデルを生成できます。
[!メモ]
現在編集中のモデルでプロファイルのステレオタイプを適用し、そのモデルを他のユーザーと共有する場合、これらのユーザーは同じプロファイルをそれぞれ自分のコンピューターにインストールする必要があります。インストールされていないと、他のユーザーは適用されたステレオタイプを確認できません。
通常、プロファイルは、より大規模な Visual Studio 拡張機能の一部です。たとえば、モデルのいくつかのパートをコードに翻訳するコマンドを定義できます。このとき、ユーザーが翻訳するパッケージに適用する必要のあるプロファイルを定義します。Visual Studio の単一の拡張機能でプロファイルとともに、新しいコマンドを配布します。
また、プロファイルをローカライズしたバリアントも定義できます。生成した拡張機能を読み込んだユーザーには、ユーザーのカルチャに適したバリアントが表示されます。
プロファイルを定義する方法
UML プロファイルを定義するには
.profile というファイル名拡張子を持つ新しい XML ファイルを生成します。
「プロファイルの構造」で説明されているガイドラインに従って、ステレオタイプの定義を追加します。
プロファイルを Visual Studio 拡張機能 (.vsix ファイル) に追加します。プロファイル用に新しい拡張機能を生成するか、またはプロファイルを既存の拡張機能に追加します。
次の「プロファイルを Visual Studio 拡張機能に追加する方法」を参照してください。
拡張機能をコンピューターにインストールします。
.vsix というファイル名拡張子を持つ拡張ファイルをダブルクリックします。
Visual Studio を再起動します。
プロファイルがインストールされたことを確認します。
UML エクスプローラーでモデルを選択します。
[プロパティ] ウィンドウで、[プロファイル] プロパティをクリックします。プロファイルがメニューに表示されます。プロファイルの横にチェック マークを設定します。
プロファイルでステレオタイプを定義する要素を選択します。[プロパティ] ウィンドウで、[ステレオタイプ] プロパティをクリックします。リストにステレオタイプが表示されます。ステレオタイプのいずれか 1 つにチェック マークを設定します。
プロファイルでこのステレオタイプの追加のプロパティを定義する場合は、ステレオタイプ プロパティを展開してプロパティを表示します。
Visual Studio の他のユーザーに拡張ファイルを送信して、コンピューターにインストールしてもらいます。
プロファイルを Visual Studio 拡張機能に追加する方法
プロファイルをインストールし、他のユーザーに送信できるようにするには、プロファイルを Visual Studio 拡張機能に追加する必要があります。詳細については、「Deploying Visual Studio Extensions (Visual Studio 拡張機能の配置)」を参照してください。
新しい Visual Studio 拡張機能でプロファイルを定義するには
Visual Studio 拡張機能プロジェクトを生成します。
[!メモ]
この手順を実行するには、Visual Studio SDK がインストールされている必要があります。
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスで、[インストールされたテンプレート] の下の [Visual C#] を展開します。[機能拡張] をクリックし、[VSIX プロジェクト] をクリックします。プロジェクト名を設定し、[OK] をクリックします。
プロファイルをプロジェクトに追加します。
- ソリューション エクスプローラーで、プロジェクトを右クリックし、[追加] をポイントして、[既存の項目] をクリックします。ダイアログ ボックスで、生成したプロファイル ファイルを見つけます。
プロファイル ファイルの [出力ディレクトリにコピー] プロパティを設定します。
ソリューション エクスプローラーで、プロファイル ファイルを右クリックし、[プロパティ] をクリックします。
プロパティ ウィンドウで、[出力ディレクトリにコピー] プロパティを [常にコピーする] に設定します。
ソリューション エクスプローラーで、source.extension.vsixmanifest を開きます。
このファイルは拡張機能マニフェスト エディターで開きます。
[資産] のページで、プロファイルを説明する行を追加します:
[新規作成] をクリックします。ダイアログ [新しい資産の追加] で、次のフィールドを設定します。
[種類] を Microsoft.VisualStudio.UmlProfile に設定する。
これは、ボックスの選択項目の 1 つがではありません。キーボードからこの名前を入力します。
[ファイル システム上のファイル] をクリックし、プロファイル ファイル (MyProfile.profileの名前を選択します。
プロジェクトをビルドします。
プロファイルをデバッグするにはの F5 キーを押します。
Visual Studio の実験用インスタンスが開きます。この場合、モデリング プロジェクトを開きます。UML エクスプローラーで、モデルの、[プロパティ]ウィンドウのルート要素を選択するためのプロファイルを選択します。次に、それらに対して定義したモデルと set ステレオタイプ内の要素を選択します。
配置用の VSIX を抽出するには
Windows エクスプローラーで、.\bin\Debug フォルダーまたは .\bin\Release フォルダーを開いて .vsix ファイルを見つけます。これは Visual Studio 拡張ファイルです。このファイルは、自分のコンピューターにインストールできるほか、他の Visual Studio ユーザーに送信することもできます。
拡張機能をインストールするには
.vsix ファイルをダブルクリックします。Visual Studio 拡張機能インストーラーが起動されます。
実行中のすべての Visual Studio のインスタンスを再起動します。
Visual Studio SDK がインストールされていない場合は、サイズの小さい拡張機能に対して、次の手順を代わりに使用できます。
Visual Studio SDK を使用せずにプロファイル拡張機能を定義するには
Windows ディレクトリを生成し、次の 3 つのファイルを格納します。
<プロファイル>.profile
extension.vsixmanifest
[Content_Types].xml (この名前を示されているとおりに角かっこで囲んで入力します)
次のテキストが含まれるように [Content_Types].xml を編集します。それぞれのファイル名拡張子のエントリが含まれている点に注目してください。
<?xml version="1.0" encoding="utf-8"?> <Types xmlns="https://schemas.openxmlformats.org/package/2006/content-types"> <Default Extension="profile" ContentType="application/octet-stream" /> <Default Extension="vsixmanifest" ContentType="text/xml" /> </Types>
既存の extension.vsixmanifest をコピーし、XML エディターを使用して編集します。ID、Name、および Content の各ノードに変更を加えます。
次のディレクトリ内に、extension.vsixmanifest の例が含まれています。
<ドライブ>:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles
Content ノードは次のようになります。
<Content> <CustomExtension Type="Microsoft.VisualStudio.UmlProfile" >YourProfile.Profile</CustomExtension> </Content>
3 つのファイルを 1 つの zip ファイルに圧縮します。
Windows エクスプローラーで、3 つのファイルを選択して右クリックし、[送る] をポイントして、[圧縮 (zip 形式) フォルダー] をクリックします。
zip ファイルの名前を変更し、ファイル名拡張子を .zip から .vsix に変更します。
Visual Studio の適切なエディションがインストールされているコンピューターにこのプロファイルをインストールするには、.vsix ファイルをダブルクリックします。
Visual Studio 拡張機能から UML プロファイルをインストールするには
Windows エクスプローラーで .vsix ファイルをダブルクリックするか、または Visual Studio 内でこのファイルを開きます。
表示されたダイアログ ボックスで、[インストール] をクリックします。
拡張機能をアンインストールしたり一時的に無効にしたりするには、[ツール] メニューの [拡張機能マネージャー] を開きます。
ローカライズされたプロファイルを定義する方法
複数の異なるカルチャまたは言語に対して複数の異なるプロファイルを定義し、それらすべてを同じ拡張機能にパッケージ化することができます。ユーザーが拡張機能を読み込むと、ユーザーのカルチャに対して定義されているプロファイルが表示されます。
既定のプロファイルは必ず用意する必要があります。ユーザーのカルチャに対して定義されているプロファイルがない場合は、既定のプロファイルが表示されます。
ローカライズされたプロファイルを定義するには
前の「プロファイルを定義する方法」および「プロファイルを Visual Studio 拡張機能に追加する方法」の説明に従ってプロファイルを生成します。これが既定のプロファイルであり、ローカライズされたプロファイルが用意されていないインストールで使用されます。
既定のプロファイル ファイルが格納されているディレクトリ内に新しいディレクトリを追加します。
[!メモ]
Visual Studio 拡張機能プロジェクトを使用して拡張機能を構築する場合は、ソリューション エクスプローラーを使用して新しいフォルダーをプロジェクトに追加します。
新しいディレクトリの名前を、ローカライズ カルチャを示す短い ISO コードに変更します (たとえば、ブルガリア語の場合は bg、フランス語の場合は fr)。fr-CA のような特定カルチャではなく、通常 2 つの文字で構成されるニュートラル カルチャ コードを使用する必要があります。カルチャ コードの詳細については、すべてのカルチャ コードが一覧表示されている「CultureInfo.GetCultures method (CultureInfo.GetCultures メソッド)」を参照してください。
既定のプロファイルを新しいディレクトリにコピーします。ファイル名は変更しないでください。
サンプルの Visual Studio Extension フォルダーは、ビルドされる前、または .vsix ファイルに圧縮される前は、次のフォルダーおよびファイルを格納しています。
extension.vsixmanifest
MyProfile.profile
fr\MyProfile.profile
de\MyProfile.profile
[!メモ]
extension.vsixmanifest にはプロファイルのローカライズ バージョンへの参照を挿入しないでください。コピーされたプロファイル ファイルの名前は、親フォルダー内のプロファイルの名前と同じある必要があります。
プロファイルの新しいコピーを編集して、ユーザーに対して表示されるすべての部分 (たとえば、displayName の属性) をターゲット言語に翻訳します。
追加のカルチャ フォルダーとローカライズされたプロファイルは、必要なカルチャの数だけ生成できます。
前のセクションで説明したように、拡張機能プロジェクトをビルドするか、またはすべてのファイルを圧縮して、Visual Studio 拡張機能を生成します。
プロファイルの構造
UML プロファイルの XSD ファイルは、サンプル「Setting Stereotypes and Profiles XSD (ステレオタイプおよびプロファイル XSD の設定)」にあります。プロファイル ファイルを編集しやすいように、次の場所に .xsd ファイルをインストールします。
%ProgramFiles%\Microsoft Visual Studio 11.0\Xml\Schemas
ここでは、例として C# プロファイルを使用します。完全なプロファイル定義については、次のファイルを参照してください。
<ドライブ>:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles\CSharp.profile
このパスの最初の部分は、インストールに応じて異なる可能性があります。
.NET プロファイルの詳細については、「UML モデルの標準ステレオタイプ」を参照してください。
UML プロファイル定義の主要なセクション
すべてのプロファイルに次の内容が含まれています。
<?xml version="1.0" encoding="utf-8"?>
<profile dslVersion="1.0.0.0"
name="CSharpProfile" displayName="C# Profile"
xmlns="https://schemas.microsoft.com/UML2.1.2/ProfileDefinition">
<stereotypes>...</stereotypes>
<metaclasses>...</metaclasses>
<propertyTypes>...</propertyTypes>
</profile>
[!メモ]
name という属性には、空白または句読点を含めることはできません。ユーザー インターフェイスに表示される属性 displayName は、有効な XML 文字列である必要があります。
すべてのプロファイルに次の 3 つの主要なセクションが含まれています。これらのセクションを逆順に示します。
<propertyTypes>: stereotypes セクションで定義されているプロパティに対して使用される型のリスト。
<metaclasses>: このプロファイルのステレオタイプが適用されるモデル要素の型のリスト (IClass、IInterface、IOperation、IDependency など)。
<stereotypes>: ステレオタイプの定義。それぞれの定義には、ターゲットのモデル要素に追加されるプロパティの名前と型が含まれています。
プロパティの型
<propertyTypes>のセクションでは <stereotypes> のセクションのプロパティに対して使用される型のリストを宣言します。プロパティの型には、外部型と列挙型の 2 種類があります。
外部型は、標準 .NET 型の完全修飾名を宣言します。
<externalType name="System.String" />
列挙型は、リテラル値のセットを定義します。
<enumerationType name="PackageVisibility">
<enumerationLiterals>
<enumerationLiteral name="internal" displayName="internal" />
<enumerationLiteral name="protectedinternal" displayName="protected internal" />
</enumerationLiterals>
</enumerationType>
メタクラス
<metaclasses> セクションは、このプロファイルのステレオタイプを定義できるモデル要素の型のリストです。
<metaclass
name="Microsoft.VisualStudio.Uml.Classes.IClass" />
<metaclass
name="Microsoft.VisualStudio.Uml.Classes.IInterface" />
<metaclass
name="Microsoft.VisualStudio.Uml.Components.IComponent" />
メタクラスとして使用できるモデル要素および関係の型の完全なリストについては、「モデル要素の型」を参照してください。
ステレオタイプ定義
<stereotypes> セクションには、1 つ以上のステレオタイプ定義が記述されています。
<stereotype name="CSharpClass" displayName="C# Class"> ...
各ステレオタイプには、そのステレオタイプを適用できる 1 つ以上のモデル要素または関係の型が記述されています。基本型の名前を指定して、すべての派生型を含めることができます。たとえば、Microsoft.VisualStudio.Uml.Classes.IType と指定した場合、このステレオタイプは、IClass、IInterface、IEnumeration、およびいくつかのその他の要素の型に適用できます。
<metaclasses>
<metaclassMoniker name=
"/CSharpProfile/Microsoft.VisualStudio.Uml.Classes.IClass" />
</metaclasses>
metaclassMoniker の name 属性は、<metaClasses> セクションの要素へのリンクです。
[!メモ]
モニカー名は /yourProfileName/ で始まる必要があります。ここで、yourProfileName は、プロファイルの name 属性で定義されています (この例では "CSharpProfile")。モニカーは、メタクラス セクションのいずれかのエントリ名で終わります。
それぞれのステレオタイプでは、ステレオタイプが適用される任意のモデル要素に追加する 0 個以上のプロパティを指定できます。<propertyType> は <propertyTypes>のセクションで定義されている型の 1 種類へのリンクを示します。リンクは、<externalTypeMoniker> (<externalType>, を参照する場合) または <enumerationTypeMoniker> (<enumerationType> を参照する場合) のどちらかである必要があります。このリンクについても、プロファイルの名前がプレフィックスとして付けられます。
<properties>
<property name="IsStatic"
displayName="Is Static" defaultValue="false">
<propertyType>
<externalTypeMoniker
name="/CSharpProfile/System.Boolean" />
</propertyType>
</property>
<property name="PackageVisibility"
displayName="Package Visibility"
defaultValue="internal">
<propertyType>
<enumerationTypeMoniker
name="/CSharpProfile/PackageVisibility"/>
</propertyType>
</property>
</properties>
</stereotype>
モデル要素の型
ステレオタイプを定義できる型のセットは、モデル要素の型 に記載されています。
トラブルシューティング
ステレオタイプが UML モデルに表示されません。
パッケージまたはモデルでプロファイルを選択する必要があります。これで、ステレオタイプはパッケージまたはモデル内の要素上に表示されます。詳細については、「方法: モデル要素にステレオタイプを追加する」を参照してください。UML モデルを開くと、次のエラーが表示されます。VS1707: The following profiles cannot be loaded because a serialization error occurred: MyProfile.profile
.profile の基本的な XML 構文が正しいことを確認してください。
各モニカー名の形式が /profileName/nodeName であることを確認してください。profileName とは、ルート プロファイル ノードの名前属性の値です。nodeName とは、メタクラス externalType または enumerationType の名前属性の値です。
構文が、ここで説明したとおりであること、およびドライブ**:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Architecture Tools\UmlProfiles\** で示すとおりであることを確認してください。
障害のある拡張機能をアンインストールします。[ツール] メニューの [拡張機能マネージャー] をクリックします。
- 拡張機能が表示されなければ、次のアイテムを確認します。
VSIX ファイルを再構築し、Windows エクスプローラーで開いて再インストールします。Visual Studio を再起動します。
拡張機能マネージャーには拡張機能が表示されませんが、その拡張機能を再インストールしようとすると、次のメッセージが表示されます。The extension is already installed to all applicable products.
LocalAppData\Microsoft\VisualStudio\11.0\Extensions\ のサブフォルダーから、拡張ファイルを削除します。
LocalAppData を見るには、Windows エクスプローラーの [フォルダー オプション] の [表示] タブの [すべてのファイルとフォルダーを表示する] を設定する必要があります。
LocalAppData は、通常、C:\Users\userName\AppData\Local\ にあります。
Visual Studio を再起動します。