UWPアプリからSQL Serverにアクセス ~.NET Standard 2.0の威力! WPFやXamarinからも共通に使えるクラスライブラリを作る

CodeZine / 2018年3月27日 14時0分

 今回は、.NET Standard 2.0規格のPCL(ポータブル クラス ライブラリ)を紹介します。そのように作ったクラスライブラリは、.NET Frameworkのアプリから使えるのはもちろんのこと、UWPアプリやXamarinで作ったAndorid/iOSアプリからも共通に使えるものになります。さらに、長らくUWPアプリの開発をしてきた人には驚きでしょうが、SQL Serverに直接アクセスすることもできるのです。

※適用バージョン:Windows 10 version 1709(build 16299)以降

■はじめに

 .NET Standardは、.NET FrameworkでPCL(Portable Class Library=移植可能なクラスライブラリ、MSDNでは「汎用性のあるクラス ライブラリ」と訳されることも)を作るための新しい規格です。 .NET Standard規格に準拠して作られたクラスライブラリは、その.NET Standard規格をサポートしている.NET Framework実装(プラットフォーム)の上で動作します。

 2017年の後半になって、.NET Standard 2.0をサポートするプラットフォームが出揃いました。 Windowsのデスクトップ(WPF/Windows Forms)だけでなく、Mono(ASP.NET Core 2.0など)/Xamarin(Android/iOSなど)/UWP(Universal Windows Platform)でも、.NET Standard 2.0規格準拠のクラスライブラリが動くようになったのです。

 ところで、UWPは(Windows 8.xのWindows Runtimeの時代から)ずっとADO.NETをサポートしてきませんでした。それが、.NET Standard 2.0のサポートにあわせて、ついにADO.NETも使えるようになったのです。

 今回は、.NET Standard 2.0規格のクラスライブラリを作る方法と、そこでSQL Serverにアクセスするサンプルコードを紹介します。

■対象読者

.NET FrameworkでWindows用のアプリを作っている開発者
.NET Framework互換プラットフォーム用のアプリを作っている開発者
Xamarinアプリ(Xamarin.Forms/Xamarin.iOS/Xamarin.Android)を作っている開発者
UWPアプリの開発者

■必要な環境

 サンプルコード(GitHub)のすべてを試してみるには以下の環境が必要です。

開発環境

Windows 10 version 1709(build 16299)以降
Visual Studio 2017 Version 15.5以降(無償のCommunity Editionで可)
UWP用Windows 10 SDK:C#/VB用の10.0.16299以降
.NET Core 2.0 開発ツール(SDK)
Xamarin.Forms 2.5.0以降

実行に必要な環境

Active Directoryドメイン(UWPアプリのみに必要)
ドメインに参加しているPC(UWPアプリの実行に必要)
SQL Server(UWPアプリ用にはWindows認証が必要/他はSQL Serverのユーザー認証で可)
Northwindサンプル データベース(SQL Server上にご用意ください)

■どんな機能なのか?

 サンプルコード中のUWPアプリを実行している画面を次に示します。
SQL Serverのデータを表示しているUWPアプリ

 UWPアプリで、SQL Serverからデータを取得して表示しています。そのデータ取得ロジックは.NET Standard 2.0規格のクラスライブラリ(⇒UF03StdLib)にまとめられていて、ADO.NETを使ってSQL ServerのNorthwindサンプルデータベースからCategoryテーブルの全レコードをセレクトしています。

 そして、上と同じクラスライブラリを利用して、Windows Forms/WPF/Xamarin.Forms(Android/UWP)の各アプリも動きました(次からの4画像)。ASP.NET Core 2.0やXamarinのiOSは試していませんが、同様に動作するはずです。

 このように、1つのクラスライブラリを.NET Standard 2.0規格で書くだけで、たくさんの最新プラットフォームのアプリから利用できるのです。
同じクラスライブラリを利用しているWindows Formsアプリ 同じクラスライブラリを利用しているWPFアプリ 同じクラスライブラリを利用しているXamarin.Forms(Android)アプリ 同じクラスライブラリを利用しているXamarin.Forms(UWP)アプリ

■.NET Standard 2.0規格クラスライブラリの作り方/使い方

 .NET Standard 2.0規格に準拠した移植可能なクラスライブラリの作り方と、それを使うアプリの作り方を説明します。Visual Studio 2017の最新版を使っていれば、特に苦労することはありません。

●.NET Standard 2.0規格クラスライブラリを作るには?

 Visual Studio 2017(version 15.3以降)でプロジェクトを追加するときに、[クラス ライブラリ (.NET Standard)]を選ぶだけです(次の画像)。
[新しいプロジェクトの追加]ダイアログで[クラス ライブラリ (.NET Standard)]を選ぶ

 このとき、[新しいプロジェクトの追加]ダイアログの上部にある.NET Frameworkのバージョン選択ドロップダウン(上の画像では4.7になっています)は無視され、.NET Standard 2.0規格になります。2.0以前のバージョンにするには、プロジェクトを作成してからプロジェクトのプロパティページで変更します。

 プロジェクト作成直後にソリューションエクスプローラーを見ると、プロジェクトの[依存関係]に警告マークが付いていることがあります(次の画像)。これは、プロジェクトを一度ビルドすれば解消するはずです。ビルドしても失敗する場合は、インターネットからNuGetパッケージを取得できる環境になっているか、また、プロジェクトを配置したパスの途中に '$' や '@' といった記号が含まれていないか、チェックしてみてください。
ソリューションエクスプローラーで[依存関係]に警告マークが付いた

 .NET Standard 2.0規格でコーディングに使えるAPIの一覧は、.NET APIブラウザの「.NET Standard API リファレンス version 2.0」に掲載されています。APIのリストは、GitHubの .NET Standard 2.0にも載っています(こちらはシグネチャだけ)。また、検索してdocs.microsoft.comのAPI解説ページにたどり着いたときは、ページの一番下に "Applies to" として利用可能なバージョンが記載されています(旧MSDNの解説ページには.NET Standardの記述がないようです)。

●.NET Standard 2.0規格クラスライブラリを使うには?

 上のようにして作ったクラスライブラリを使う側のプロジェクトも、.NET Standard 2.0規格をサポートしていなければなりません。サポートしているなら、使いたい.NET Standard 2.0規格クラスライブラリ(プロジェクトまたはバイナリファイル)への参照をプロジェクトに追加するだけです。

従来のデスクトップアプリ(Windows Forms/WPF)

 Visual Studio 2017(Version 15.3以降)のインストーラーで、[.NET デスクトップ開発]ワークロードとともにオプションの[.NET Core 2.0 開発ツール]を入れておきます。Windows Forms/WPFのプロジェクトを作るときに、.NET Framework 4.6.1以降を指定します。

Xamarin.Forms

 Visual Studio 2017(Version 15.5以降)でXamarin.Formsプロジェクトを作るときに次の画像のようなダイアログが出てきます。その[Code Sharing Strategy]セクション(赤枠内)で[.NET Standard]を選びます。
Xamarin.Formsのプロジェクトを作るときに出てくるダイアログ

 Version 15.4までのVisual Studio 2017では上記のダイアログが出てきませんので、手作業で対応することになります。詳しくは田淵義人さんのブログ記事「Xamarin で使う .NET Standard ライブラリ/PCL(Portable Class Library)/Shared Project について」などをご覧ください。

UWPアプリ

 Visual Studio 2017(Version 15.4以降)でUWPアプリのプロジェクトを作ると次の画像のようなダイアログが出てきます。下側の[最小バージョン]ドロップダウンで[ビルド 16299](またはそれ以上)を選びます。
UWPアプリのプロジェクトを作るときに出てくるダイアログ

biac[著]

【関連記事】
日本語OCRによる文字認識 ~WPFなどの.NET FrameworkアプリやUWPアプリからWindows 10のOCRエンジンを使う
Microsoft Azureで使えるデータベースはSQL Serverだけじゃない! フルマネージドなAzure Database for MySQL/PostgreSQL入門
超簡単! WPFなどの.NETのアプリからUWPのAPIを使う ~日本語の読み仮名を取得するAPIを題材に
XAMLで条件分岐 ~UWPの複数バージョンに対処する「条件付きXAML」
米MS、開発者向けオンラインイベント「Connect(); 2017」を開催、今年は「AI/データドリブンなインテリジェンス」の将来性を強調

■記事全文へ

CodeZine

トピックスRSS

ランキング