YAML を使用する

完了

アプリを展開した後、YAML のサブセットを使用して、抽出した式をテキスト ファイルに保存できます。 YAML は、人が使いやすいデータ シリアル化言語です。 その目的は、ソースの読み取りと書き込みのプロセスを簡略化し、バージョン間の違いを特定することです。 また、これらのファイルは、採用されている Microsoft Power Fx YAML 式の規則に従っていれば、任意のテキスト エディターを使用して編集できます。

次のラベル コントロールは、YAML として表されます。

   LblAppName1 As label:
        Fill: =RGBA(58, 58, 58, 0)
        Height: =88
        Size: =27
        Text: ="Companies"
        Width: =Parent.Width - Self.X - IconSortUpDown1.Width - IconNewItem1.Width - IconRefresh1.Width
        Wrap: =false
        X: =20
        ZIndex: =2

YAML ではキーと値のペアを使用してデータが表され、ペアの入れ子がサポートされています。 たとえば、lblAppName1 などの項目に、幅に合わせて調整高さサイズなどのインデントされたキーと値のペアを含めることができます。 YAML では、インデントを使用して構造が決定されます。 インデントにはスペースが使用されますが、タブは使用できません。

YAML に Power Fx 式がどのように埋め込まれるかに関する 3 つの特徴を次に示します。

  • コントロールは、As キーワードを使用して入力されます。 前の例のように、ラベル コントロールは lblAppName1 as Label: 式を使用して定義できます。 プロパティ値を指定する場合、通常、YAML ではコロン (:) の左側の名前は 1 つのみです。 ただし、YAML 仕様では、より複雑な左側の式が除外されることはなく、Power Fx YAML 構文では、プロパティに名前を付けてそのタイプを指定するときに、この省略による利点が得られます。

  • すべての式は、先頭が等号で始まります。 Microsoft Excel と同様に、等号 (=) によって静的値ではなく式が導入されます。 Power Apps Studio で先頭の等号 (=) を入力する必要はありませんが、常に数式バーに表示されます。 また、先頭の等号 (=) により、静的値に対して YAML で実行される通常のデータ型解釈 (式には適さない) を回避できます。

  • 一部の式は、YAML 複数行構文で表す必要があります# が埋め込まれた文字列を含む式がある場合、YAML によってコメントの開始として解釈されるため、行の残りの部分は切り捨てられます。 これを回避するために、必ず YAML の複数行構文を使用してこの式を表してください。最も一般的なのは、| 構文を使用する方法です。

詳細については、Microsoft Power Fx YAML 式の文法を参照してください。

フォルダー構造

キャンバス アプリを展開すると、一連のファイルとフォルダーが作成されます。 展開プロセスを実行すると、次のキー ファイルおよびフォルダーがあります。

  • \src - コントロール ファイルとコンポーネント ファイル。 このファイルにはソースが含まれています。

  • *.fx.yaml - control.json ファイルから抽出された式。 ここで式を編集できます。

  • CanvasManifest.json - ヘッダー、プロパティ、および publishInfo に通常存在する情報が含まれているマニフェスト ファイル。

  • *.json - 未加工の control.json ファイル。

  • \EditorState*.editorstate.json - Power Apps Studio で使用するためのキャッシュされた情報。

  • \DataSources - アプリによって使用されるすべてのデータ ソース。

  • \Connections - このアプリに保存され、Power Apps Studio に再読み込みするときに使用される接続インスタンス。

  • \Assets - アプリに埋め込まれたメディア ファイル。

  • \pkgs - テンプレート、API 定義ファイル、コンポーネント ライブラリなど、外部参照のダウンロード済みのコピー。 これらのファイルは、nuget/npm 参照に似ています。

  • \other - .msapp ファイルの再作成に必要なその他のすべてのファイル。

  • entropy.json - 揮発性要素 (タイムスタンプなど) がこのファイルに展開されます。 このファイルを使用すると、ラウンドトリップは可能なままで、他のファイル内でノイズの多い差分を減らすことができます。 .msapp ファイルの他のファイル (\references 内のファイルなど) が保持されます。

ファイル形式

末尾が *.fx.yaml のファイル内で、式を編集できます。 展開されたファイルを確認すると、すべてのファイルに YAML が含まれるわけではないことがわかります。多くのファイルはネイティブ形式で、Power Apps Studio の外部で編集することは想定していません。

ソースの変更のマージ

展開によって有効になる 1 つのシナリオとして、複数のユーザーがアプリを編集し、ソース管理の変更をマージするための機能があります。 このシナリオでは、競合を最小限に抑える必要があります。 たとえば、同じコントロールで式を編集すると競合が発生する可能性は高いですが、2 人のユーザーが異なる画面を編集するシナリオでは、競合が生じる可能性は低くなります。

クラウドでアプリを作成し、ダウンロードして編集した場合は、再梱包したバージョンをアップロードすると、クラウド バージョンに対して行ったすべての変更が上書きされる (ダウンロードしたため) ことに注意してください。

このシナリオでは、オンラインで行った作業が上書きされて失われるのを防ぐために、クラウドからアプリを再度ダウンロードして展開し、ファイルの変更をコミットして競合を解決してから、新しいアプリを再梱包してアップロードする必要があります。 ソース管理にアプリのメイン コピーが含まれていることを確認してください。

複数のユーザーが同時に編集しているため、競合が発生します。 たとえば、異なる画面で 2 人が同じコントロール名を選択した場合、マージの競合が発生します。 詳細については、Microsoft Power Platform CLI ドキュメントを参照してください。