Windows プレゼンテーション ファウンデーション

Windows プレゼンテーション ファウンデーション (WPF)
原作者マイクロソフト
開発者.NET ファウンデーション
初回リリース2006年11月21日 (2006年11月21日
安定版リリース
v8.0.5 / 2024年5月14日[ 1 ] (2024年5月14日
リポジトリ
書かれたC#C++C
オペレーティング·システムマイクロソフトウィンドウズ
プラットフォーム.NET フレームワーク.NET
タイプソフトウェアフレームワーク
ライセンスMITライセンス
Webサイト.microsoft .com /en-us /dotnet /desktop /wpf /を学ぶ

Windows Presentation Foundation ( WPF ) は、Windowsベースのデスクトップアプリケーション用の無料かつオープンソースのユーザーインターフェースフレームワークです。WPF アプリケーションは.NETベースで、主にC#XAMLを使用して開発されます。[ 2 ]

WPFはもともとMicrosoftによって開発され、 2006年に.NET Framework 3.0の一部として最初にリリースされました。 2018年に、MicrosoftはMITライセンスの下でWPFをオープンソースとしてリリースしました。[ 3 ] WPFのデザインとレイアウト言語XAMLは、UWP.NET MAUIAvaloniaなど、他の複数のUIフレームワークに採用されています。

概要

WPFは、XMLベースの言語であるXAMLを使用して様々なインターフェース要素を定義およびリンクし、C#を使用してプログラムの動作を定義します。[ 4 ] WPFアプリケーションはスタンドアロンのデスクトッププログラムとして展開されます。

WPFは、2D/3Dレンダリング、固定ドキュメントとアダプティブドキュメントタイポグラフィベクターグラフィックス、ランタイムアニメーション、プリレンダリングメディアなど、多くの一般的なユーザーインターフェース要素をサポートしています。これらの要素は、様々なイベント、ユーザーインタラクション、データバインディングに基づいてリンクされ、操作されます。[ 5 ]

WPFは、 Windows「Longhorn」向けのWinFXプログラミングモデルの一部として、「Avalon」というコードネームで開発されました。2004年8月、マイクロソフトはWinFXのコンポーネントをWindows XPおよびWindows Server 2003バックポートすることを発表しました。[ 6 ]その後、これらのオペレーティングシステム用の無料ダウンロードである.NET Framework 3.0の一部としてリリースされました。[ 7 ] WPFランタイムライブラリは、 Windows VistaおよびWindows Server 2008以降のすべてのバージョンのMicrosoft Windowsに含まれています。[ 8 ] [ 9 ]

2018年12月4日のMicrosoft Connectイベントにおいて、MicrosoftはWPFをGitHub上のオープンソースプロジェクトとして公開することを発表しました。これはMITライセンスの下で公開されます。Windows Presentation Foundationは.NETソフトウェアフレームワークをターゲットとするプロジェクトで利用可能になりましたが、このシステムはクロスプラットフォームではなく、依然としてWindowsでのみ利用可能です。[ 3 ] [ 10 ]

コード例

WPFでは、画面やその他のUI要素は、 XAMLファイルと、拡張子が.xamlである関連C#ファイル(「コードビハインド」と呼ばれることが多い)の2つのファイルを使用して定義されます.xaml.cs。XAMLファイルは、UI要素のレイアウト、コンテンツ、その他のプロパティを宣言的に定義し、C#ファイルは、インタラクティブ機能のためのコードエントリポイントを公開します。[ 4 ]

対話型のHello, World!プログラムの基本的な例は次のように作成できます。

メインウィンドウ.xaml:

<Window x:Class= "WpfExample.MainWindow" xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml" Title= "MainWindow" Height= "200" Width= "300" > <StackPanel Orientation= "Vertical" > <TextBlock Text= "お名前は何ですか?" /> <TextBox x:Name= "NameInputTextBox" /> <Button x:Name= "SubmitButton" Click= "SubmitButton_Click" > <TextBlock Text= "送信" /> </Button> <TextBlock x:Name= "ResultTextBlock" /> </StackPanel> </Window>

メインウィンドウ.xaml.cs:

System.Windowsを使用します名前空間WpfExample {パブリック部分クラスMainWindow : Window {パブリックMainWindow () { InitializeComponent (); }private void SubmitButton_Click ( object sender , RoutedEventArgs e ) { string name = this.NameInputTextBox.Text ; this.ResultTextBlock.Text = $ " Hello { name } ! " ; } } }

上記の例では、UI要素 が組み込みクラスのサブクラスMainWindowとして宣言されています。XAMLファイルはレイアウトを定義しており、この例ではコントロールの縦方向のコレクションです。コントロールとは、ユーザーへの指示を概説するテキストブロック、ユーザーが名前を入力するためのテキストボックス、送信ボタン、そして結果テキストブロックです。ボタンがクリックされると、ファイル内で定義されているメソッドが呼び出されます。この関数は最後のテキストブロックを更新し、ユーザーへの挨拶メッセージ(送信された名前でユーザーを呼びかけるもの)を表示します。 WindowSubmitButton_Click.xaml.cs

特徴

メディアとグラフィック

WPFは、ベクター画像、ラスター画像、オーディオ、ビデオなど、ほとんどの最新のメディアタイプをサポートしており、2Dと3Dの両方のレンダリングをサポートできます。[ 11 ]また、 HLSLピクセルシェーダーや、ぼかしドロップシャドウなどの組み込み効果など、視覚要素へのグラフィカル効果の実装もサポートしています。[ 12 ] [ 13 ]

WPFは主にベクターグラフィックスに依存しており、ほとんどのコントロールと要素を品質の低下やピクセル化なしに拡大縮小することができます。[ 14 ] [ 15 ]

データバインディング

WPFはデータバインディングを採用しています。これは、ユーザーインターフェイス要素とプログラムのオブジェクトモデル間の変更を伝播する技術です。 [ 16 ]たとえば、XAMLで定義されたテキストブロックは、次のようにその内容をC#オブジェクトに格納されている 文字列プロパティにバインドできます。

<TextBlock Text= "{バインドユーザー名}" />
パブリッククラスExampleViewModel {パブリック文字列ユーザー名{取得;設定; } }

これにより、テキスト ブロックにプロパティの値が表示されますUsername

データバインディングの方向は設定可能で、UIからソース(例:テキストボックスに入力されたテキストがコード内のバインドされた文字列プロパティに伝播される)、ソースからUI(例:コードに格納されている現在の時刻を表示するためにビジュアルクロックが更新される)、または双方向に定義できます。[ 16 ]

データバインディングには型に関する制限はなく、構造体クラスコレクションをバインディングできます。コンバーターを使用すると、バインディング中に使用される値と型を転置することができます。例えば、テキストボックスをDateTimeプロパティにバインディングし、コンバーターを使用して時刻をフォーマットされたローカライズされた日付文字列として表示することができます。[ 16 ]

組み込みコントロールのほとんどのプロパティはデータバインドが可能で、カスタムコントロールでは依存関係プロパティを定義することでバインド可能なプロパティを作成できます。[ 16 ] [ 17 ]

MVVMは、MicrosoftがWPF開発者向けに推奨するアーキテクチャパターンであり、データバインディングに大きく依存しています。[ 18 ]

スタイルとテンプレート

テンプレートとスタイルを使用して、開発者は UI 要素のビジュアルと構造を定義できます。

スタイルとは、単一のプロパティ属性を持つUI要素に適用できるプロパティ設定の組み合わせです。例えば、「青いラジオボタン」というスタイルを作成し、プログラム内の任意の数のラジオボタンコントロールで再利用することができます。スタイルはコントロールのプロパティのコレクションを変更できますが、構造的な大幅な変更を目的としたものではありません。

テンプレートは、WPFアプリケーションの一部に代替UIを定義するためのメカニズムです。WPFには、様々なシナリオに対応する複数のテンプレートタイプが用意されていますが、いずれもUI要素のコンテンツ、レイアウト、構造を定義するという共通の目的を持っています。[ 19 ]

アニメーション

WPFでは、多くの視覚プロパティをアニメーション化できます。これは、データバインディングが依存する基盤システムと同じ依存関係プロパティを通じて公開されます。WPFアニメーションはフレームベースではなく、時間ベースです。[ 20 ]

アニメーションクラスは、アニメーション化される.NETプロパティの型に基づいています。例えば、要素の色の変更はColorAnimationクラスで行い、要素の幅(double型のアニメーション化はDoubleAnimationクラスで行います。[ 20 ]

アニメーションはストーリーボードにグループ化することができ、ストーリーボードはアニメーションを開始、停止、一時停止、その他の操作を行う主な方法です。[ 20 ]

文書とテキスト

WPFはページ区切りのドキュメントをネイティブにサポートしています。DocumentViewer固定レイアウトのドキュメントを読むためのクラスを提供しています。このFlowDocumentReaderクラスは、ページ単位やスクロール可能など、様々な表示モードを提供し、表示領域のサイズが変更された場合にテキストをリフローします。XML Paper SpecificOpen Packaging Conventionsの両方をサポートしています。[ 21 ]

WPFには、 OpenTypeTrueType、OpenType CFF(Compact Font Format )フォントなど、数多くのテキストレンダリング機能が含まれています。つまり、WPFは、合字旧式数字スワッシュフォント、分数上付き文字と下付き文字、スモールキャップルビ文字グリフ置換、複数ベースラインカーニングなど、幅広いテキスト機能をサポートできます[ 22 ]

WPFはUnicodeでテキストを処理し、システムロケールなどのグローバル設定に依存せずにテキストを処理します。さらに、フォント名に依存せずに書字方向(横書きか縦書きか)を指定できるフォールバックメカニズム、単一言語フォントのグループを使用して複合フォントから国際フォントを作成できるフォールバックメカニズム、複合フォントの埋め込み機能も提供されています。フォントのリンクとフォールバック情報は、複合フォント技術を使用してポータブルXMLファイルに保存されます。[ 23 ] XMLファイルの拡張子は.CompositeFontです。

WPFテキストエンジンは、組み込みのスペルチェック機能もサポートしています。また、自動行間調整、拡張国際テキスト、言語ガイドによる改行、ハイフネーション、行端揃え、ビットマップ効果、変換、影、ぼかし、グロー、回転などのテキスト効果などの機能もサポートしています。アニメーションテキストもサポートされています。アニメーションテキストとは、アニメーション化されたグリフや、テキストの位置、サイズ、色、不透明度のリアルタイムでの変化を指します。

WPFのテキストレンダリングは、サブピクセルポジショニング、自然なアドバンス幅、Y方向のアンチエイリアシング、ハードウェアアクセラレーションによるテキストレンダリング、ビデオメモリへの事前レンダリングされたテキストの積極的なキャッシュなど、 ClearType技術の進歩を活用しています。[ 24 ] ClearTypeは、古いWPF 3.xアプリケーションではオフにできません。[ 25 ]

相互運用性

Windows フォームElementHost機能は、クラスとクラスを使用することで実現できますWindowsFormsHost

WinFormsの使用を有効にするには、開発者はWPF C#コードからこれを実行します。[ 26 ]

System.Windows.Forms.Integrationを使用しますWindowsFormsHost . EnableWindowsFormsInterop ();

WPFプログラムは、CLRのP/Invoke機能を介して、Windowsライブラリの関数呼び出しなどのネイティブ機能にアクセスできます。これにより、アンマネージライブラリを含むオペレーティングシステムの他の部分と通信し、操作することが可能になります。[ 27 ]

代替入力とアクセシビリティ

WPFは、ペン入力用のWindows Ink[28]とWindows 7以降のマルチタッチ入力をサポートしています。[ 29 ]またMicrosoft UI Automationもサポートおり開発者がアクセス可能なインターフェイスを作成し、UIを自動テストフレームワークに公開することができます。[ 30 ]

XAML

Web 開発用マークアップ言語の成功を受けて、 WPF はXMLに基づいたeXtensible Application Markup Language ( XAML ; / ˈ z æ m əl / ) を導入しました。XAML は、アプリケーションのユーザー インターフェイスを開発するためのより効率的な方法として設計されています。[ 31 ] XAML は宣言型言語であり、開発者 (または設計者) は手続き型プログラミングを使用せずにコンポーネントの動作と統合を記述します。アプリケーション全体を完全に XAML で構築することはまれですが、XAML の導入により、アプリケーション設計者はアプリケーション開発サイクルにさらに効果的に貢献できます。ユーザー インターフェイスの開発にXAMLを使用すると、モデルとビューを分離することも可能になり、これは優れたアーキテクチャ原則と見なされています。[ 32 ] XAML では、要素と属性は基礎となる API のクラスとプロパティにマップされます。

ウェブ開発と同様に、レイアウトと特定のテーマはどちらもマークアップに適していますが、どちらにもXAMLは必須ではありません。実際、WPFのすべての要素は.NET言語(C#VB.NET )でコーディングできます。XAMLコードは、他のすべての.NET言語と同様に、最終的にはマネージアセンブリにコンパイルできます。

展開

WPF アプリケーションは、Windows 専用のスタンドアロン デスクトップ実行可能ファイルです。

歴史的に、WPFはNPAPIプラグインを介してWebブラウザに表示されるファイル形式であるXBAPへのコンパイルをサポートしていましたが、NPAPIとXBAPのサポートはブラウザによるサポートが段階的に廃止され、XBAPコンパイルはWPF for .NETには含まれなくなりました。[ 33 ] [ 34 ]

使用法と影響

WPFは、マイクロソフトの主力IDEであるVisual Studio の開発に使用されており、Microsoft Expression Blendの開発にも使用されました。[ 35 ]

WPFの影響を受けたXAMLベースのフレームワークであるUWPで作成されたアプリの例

WPFとそのレイアウト言語であるXAMLは、他の多くのUIフレームワークに影響を与えてきました。 2007年にリリースされたSilverlight(コードネームWPF/E - WPF Everywhere)は、非推奨のクロスブラウザブラウザプラグインです。Silverlightには、レイアウトにXAMLを使用するなど、ビデオ、ベクターグラフィック、アニメーションをサポートするWPFベースの実装がありました。[ 36 ]アドオンを使用することで、Mozilla FirefoxInternet Explorer 6以降、Google Chrome 42以下、Apple Safariでサポートされていました。Microsoftは2015年に開発者にSilverlightの使用を停止するよう促し、[ 37 ] 2021年に正式にサポートが終了しました。[ 38 ]

2018年にオープンソース化されたWPFは、MITライセンスの下で配布されるオープンソースの.NETクロスプラットフォームXAMLベースのUIフレームワークであるAvaloniaの開発に影響を与えました。[ 39 ] WPFはWindowsのみを対象としていますが、AvaloniaはWeb(WebAssembly経由)、MacOSAndroidiOSLinux向けのビルドもサポートしています。Avaloniaの名前はWPFの開発中のコードネーム(「Avalon」)を参照しており、「WPFの精神的な後継者」として売り出されています。[ 40 ] Avaloniaは現在、UnityGitHubJetBrainsが作成したツールで使用されています。[ 41 ]

OpenSilverは、 WebAssemblyを用いてWPFソリューションをWebに移行するために設計されたフレームワークです。2024年12月にリリースされたOpenSilver 3.1には、 Visual Studio Codeで使用できるXAMLデザイナーが含まれています。[ 42 ]

もともとWPF向けに設計されたXAMLは、Windows 10Windows 11Xbox OneXbox Series S/Xアプリケーション向けに設計されたUWP [ 43 ]や、クロスプラットフォームのネイティブAndroidおよびiOSアプリを作成するために設計された.NET MAUI(旧称Xamarin.Forms)など、Microsoftが開発した他の同様のUIライブラリにも採用されています[ 44 ]

発達

WPFアプリケーションの開発者は、通常、Microsoft Visual Studioを使用します。Visual Studioには、Visual Studio 2008以降、XAMLエディターとWPFビジュアルデザイナーが統合されています。[ 45 ] Visual Studio 2008より前は、WPFデザイナーアドイン(コードネームCider)が、 WPFウィンドウ、ページ、ユーザーコントロールを作成するためのWYSIWYGエディターのオリジナルリリースでした。これは、WPFの初期リリースでは、Visual Studio 2005の.NET Framework 3.0 CTP拡張機能として利用可能でした。 [ 46 ]

WPFプロジェクトの開発にはVisual Studioは必ずしも必要ではありません。ソリューションはMSBuildを使用してコマンドラインで構築できるためです。[ 47 ]

Microsoft Blend は、 2D および 3D グラフィック、テキスト、フォームコンテンツを含む WPF アプリケーションを作成するためのアートボードを提供するデザイナー向けツールです。他のツールにエクスポート可能なXAMLを生成し、ソリューション(sln ファイル)およびプロジェクト形式(csproj、vbproj)を Microsoft Visual Studio と共有できます。Microsoft Expression Design は、 XAMLへのエクスポート用のビットマップおよび 2D ベクターグラフィックツールです。

参考文献

  1. ^ "v8.0.5" . github.com " . 2023年5月14日". 2023年5月30日閲覧
  2. ^ 「Windows Presentation Foundation - WPF .NETとは」 . learn.microsoft.com . 2023年6月2日. 2024年5月15日閲覧
  3. ^ a b Martin, Jeff (2018年12月4日). 「MicrosoftがWPF、WinForms、WinUIをオープンソース化」 . InfoQ . 2018年12月6日閲覧
  4. ^ a b dotnet-bot. 「XAML の概要 (WPF)」 . msdn.microsoft.com . 2018年3月31日閲覧
  5. ^セルズ、クリス、グリフィス、イアン (2007). 『WPFプログラミング:Windows Presentation FoundationによるWindows UIの構築』O'Reilly Media, Inc.. ISBN 9780596554798
  6. ^ Thurrott, Paul (2005年4月29日). 「Paul ThurrottのSuperSite for Windows: The Road to Windows Longhorn 2005」 . www.winsupersite.com . 2005年5月7日時点のオリジナルよりアーカイブ。 2025年10月11日閲覧
  7. ^ Somasegar, S. (2006-06-09). 「Somasegar's WebLog : .NET Framework 3.0」 . blogs.msdn.com . 2007年6月11日時点のオリジナルよりアーカイブ。 2025年10月11日閲覧
  8. ^ kexugit (2007-03-14). 「メールバッグ: どのバージョンの .NET Framework がどのバージョンの OS に含まれていますか?」 learn.microsoft.com . 2024年5月25日閲覧
  9. ^ gewarren (2024年4月24日). 「.NET FrameworkとWindows OSのバージョン - .NET Framework」 . learn.microsoft.com . 2024年5月25日閲覧
  10. ^ Hanselman, Scott (2018年12月4日). 「WPF、WinForms、WinUIがオープンソース化されることを発表」. 2018年12月6日閲覧。
  11. ^グラフィックスとマルチメディア。Msdn.Microsoft.com。2013年8月29日閲覧。
  12. ^ dotnet-bot. 「Effect クラス (System.Windows.Media.Effects)」 . learn.microsoft.com . 2024年5月22日閲覧
  13. ^ 4. WPFとSilverlightのシェーダーの使用方法 - XAML開発者のためのHLSLとピクセルシェーダー[書籍]。ISBN 978-1-4493-2499-5. 2024年5月28日閲覧{{cite book}}:|website=無視されました (ヘルプ)
  14. ^ 「Windows Presentation Foundation の紹介」 msdn.microsoft.com 2010年5月11日. 2018年3月31日閲覧
  15. ^ 「WPF 3.5 の新機能は? 15 の優れた機能をご紹介します...」2007 年 10 月 14 日閲覧
  16. ^ a b c d adegeo (2023年9月2日). 「データバインディングの概要 - WPF .NET」 . learn.microsoft.com . 2024年5月22日閲覧
  17. ^ adegeo (2022年6月28日). 「依存関係プロパティの概要 - WPF .NET」 . learn.microsoft.com . 2024年5月22日閲覧
  18. ^ kexugit (2016年12月8日). 「パターン - Model-View-ViewModel デザインパターンを使用したWPFアプリ」 . learn.microsoft.com . 2024年5月25日閲覧
  19. ^ adegeo (2023年3月3日). 「スタイルとテンプレート - WPF .NET」 . learn.microsoft.com . 2024年5月22日閲覧
  20. ^ a b c adegeo (2022年3月17日). 「アニメーションの概要 - WPF .NET Framework」 . learn.microsoft.com . 2024年5月22日閲覧
  21. ^ adegeo (2023年2月6日). 「ドキュメントの概要 - WPF .NET Framework」 . learn.microsoft.com . 2024年5月22日閲覧
  22. ^ adegeo (2022年8月18日). 「OpenTypeフォント機能 - WPF .NET Framework」 . learn.microsoft.com . 2024年5月22日閲覧
  23. ^ 「Windows Presentation Foundation のタイポグラフィ」 msdn.microsoft.com 2006年11月3日2018年3月31日閲覧
  24. ^ dotnet-bot. 「ClearType の概要」 . msdn.microsoft.com . 2018年3月31日閲覧
  25. ^ 「アンチエイリアシングを無効にする」 . social.msdn.microsoft.com . 2018年3月31日閲覧。
  26. ^ dotnet-bot. 「WindowsFormsHost.EnableWindowsFormsInterop メソッド (System.Windows.Forms.Integration)」 . learn.microsoft.com . 2024年5月22日閲覧
  27. ^ jkoritzinsky (2024年5月10日). 「Platform Invoke (P/Invoke) - .NET」 . learn.microsoft.com . 2024年5月25日閲覧
  28. ^ adegeo (2022年8月18日). 「デジタルインク - WindowsフォームとCOM vs. WPF」 . learn.microsoft.com . 2024年5月22日閲覧
  29. ^ kexugit (2015年8月12日). 「MSDN Magazine: UI Frontiers - WPF のマルチタッチ操作イベント」 . learn.microsoft.com . 2024年5月22日閲覧
  30. ^ Xansky. 「UIオートメーションの概要」 . msdn.microsoft.com . 2018年3月31日閲覧
  31. ^マクドナルド、マシュー (2010). VB 2010 の Pro WPF: .NET 4 の Windows Presentation Foundation . Apress. ISBN 9781430272403
  32. ^ラーマン、クレイグ『UMLとパターンの適用:オブジェクト指向分析・設計と統一プロセス入門』(PDF)(第2版)472ページ。
  33. ^ adegeo. 「XBAPのサポートに関するFAQ」 . learn.microsoft.com . 2024年5月15日閲覧。
  34. ^ kexugit (2011-03-09). 「IE9 - インターネットゾーンでXBAPが無効化される」 . learn.microsoft.com . 2024年5月15日閲覧。
  35. ^ブログ、Visual Studio (2010-02-16). 「Visual Studio 2010 の WPF - パート 1: 概要」 . Visual Studio ブログ. 2024年5月22日閲覧
  36. ^ kexugit (2019年10月1日). 「Silverlight: Web上でより深いエクスペリエンスを構築し始めましょう」 . learn.microsoft.com . 2024年12月27日閲覧
  37. ^ブログ、Microsoft Edge; Smith, Jerry (2015年7月2日). 「HTML5 Premium Mediaへの移行」 . Microsoft Edgeブログ. 2024年5月23日閲覧。
  38. ^ GitHub-Name. 「Silverlight 5 - Microsoft ライフサイクル」 . learn.microsoft.com . 2024年5月23日閲覧
  39. ^ 「クロスプラットフォームのWindows Presentation Framework、いかがですか? 一言で言えば、イエスです。Avaloniaの解説」 2024年9月27日時点のオリジナルよりアーカイブ2024年12月27日閲覧
  40. ^ 「Avalonia UI - .NET向けクロスプラットフォームUIフレームワーク」 . Avalonia UI . 2024年5月16日閲覧
  41. ^ 「Avalonia UI - ショーケース」 . avaloniaui.net . 2024年5月23日閲覧
  42. ^ 「OpenSilver 3.1、VS Code向けドラッグアンドドロップXAMLデザイナーを発表」 Visual Studio Magazine、2024年12月10日。 2024年12月16日閲覧
  43. ^ jwmsft (2022年10月20日). 「XAML プラットフォーム - UWP アプリケーション」 . learn.microsoft.com . 2024年5月23日閲覧。
  44. ^ davidbritch (2023年7月25日). 「XAML - .NET MAUI」 . learn.microsoft.com . 2024年5月23日閲覧
  45. ^スタッフ、CodeGuru (2009-04-06)。「Visual Studio 2008 の WPF のツアー」コードグル2024 年 5 月 23 日に取得
  46. ^ 「ダウンロードの詳細: Microsoft Visual Studio コードネーム「Orcas」コミュニティテクノロジプレビュー - WinFX™ 開発ツール」。Microsoft 。2006年4月15日。2006年4月15日時点のオリジナルよりアーカイブ。 2024年5月23日閲覧
  47. ^ adegeo (2022年8月18日). 「アプリのコンパイル - WPF .NET Framework」 . learn.microsoft.com . 2024年5月23日閲覧

参考文献