SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

UWPアプリ開発の最前線

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

UWPアプリ開発の最前線 第3回


  • このエントリーをはてなブックマークに追加

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

  • このエントリーをはてなブックマークに追加

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

お詫びと訂正(2019/3/12)

 当初UWPアプリではWindows認証のみとしていましたが、読者からご指摘をいただき、UWPアプリでもSQLユーザー認証が利用可能だと判明しました。ここにお詫びするとともに、そのように記事を修正させていただきました。

はじめに

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

 2017年の後半になって、.NET Standard 2.0をサポートするプラットフォームが出揃いました。 Windowsのデスクトップ(WPFWindows 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以降

実行に必要な環境

  • SQL Server(TCP/IP経由でSQL Serverのユーザー認証が使えるように設定が必要)
  • Northwindサンプル データベース(SQL Server上にご用意ください)
  • Active Directoryドメイン(Windows認証を使う場合に必要)
  • ドメインに参加しているPC(Windows認証を使う場合に必要)

どんな機能なのか?

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

SQL Serverのデータを表示しているUWPアプリ
SQL Serverのデータを表示しているUWPアプリ

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

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

 このように、1つのクラスライブラリを.NET Standard 2.0規格で書くだけで、たくさんの最新プラットフォームのアプリから利用できるのです。

同じクラスライブラリを利用しているWindows Formsアプリ
同じクラスライブラリを利用しているWindows Formsアプリ
同じクラスライブラリを利用しているWPFアプリ
同じクラスライブラリを利用しているWPFアプリ
同じクラスライブラリを利用しているXamarin.Forms(Android)アプリ
同じクラスライブラリを利用しているXamarin.Forms(Android)アプリ
同じクラスライブラリを利用しているXamarin.Forms(UWP)アプリ
同じクラスライブラリを利用している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のプロジェクトを作るときのダイアログ
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アプリのプロジェクトを作るときのダイアログ
UWPアプリのプロジェクトを作るときに出てくるダイアログ

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
従来のPCLと.NET Standard

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
UWPアプリ開発の最前線連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10702 2019/11/10 20:56

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング