ASP.NET Core Blazor C# で CData ADO.NET Provider kintone を使う
最近 Blazor を触り始めました!
JavaScriptフレームワークがjQueryで止まっている私(Reactはちょこっと触ったけど)にはめちゃくちゃありがたいフレームワークだなと思いながら、楽しんでいます。
Blazorは .NET ライブラリ・既存の .NET エコシステムを流用できるのが大きなポイントです。やっぱり JSON.NET とか REST Clientとか使いたい。
そして、私の会社で提供している CData ADO.NET Provider も .NET Core 対応をしていたので、これならイケそうじゃん? と思い、試してみました。
CData ADO.NET Provider について
今回は kintone API に接続するためのProvider CData ADO.NET Provider for kintone を使ってみました。
kintone API(REST API)は通常、以下のリファレンスにあるようなデータの取得アプローチを行いますが
CData ADO.NET Provider では、以下のように通常であればRDBに接続するフレームワークである ADO.NET DataAdapterやLinqToSQL(もしくはDapperなどのORMを挟んでもいいです)で、kintoneのデータにアクセスできるようになります。
string connectionString = "User=myuseraccount;Password=mypassword;Url=http://subdomain.domain.com;GuestSpaceId=myspaceid"; using (KintoneConnection connection = new KintoneConnection(connectionString)) { KintoneDataAdapter dataAdapter = new KintoneDataAdapter( "SELECT CreatorName, Text FROM Comments", connection); DataTable table = new DataTable(); dataAdapter.Fill(table); Console.WriteLine("Contents of Comments."); foreach (DataRow row in table.Rows) { Console.WriteLine("{0}: {1}", row["CreatorName"], row["Text"]); } }
http://cdn.cdata.com/help/EKE/jp/ado/pg_ADOqueriestable.htm
上記コードはSELECTですが、INSERT・UPDATE・DELETEにも対応しているので、kintone アプリのデータは柔軟に操作可能です。
Blazor で使ってみる
Blazor で使うからといって特に特別なことが必要なわけではありません。
もちろん、RDB向けのドライバーと違い最終的にはHTTPリクエストが行われるので、サーバーサイド Blazorとしてサーバーサイドから実行されるのか、クライアントサイド Blazorとして、実行中のブラウザからHTTPリクエストが行われるのかの違いはあります。そのあたりはネットワークやプロキシの設定として注意が必要でしょう。
今回はとりあえずプロジェクトテンプレートでデフォルト生成される サーバーサイドBlazorで試してみました。
まずは以下のURLから CData ADO.NET Provider for kintone のトライアルを入手します。
https://www.cdata.com/jp/drivers/kintone/ado/
インストールは特に難しいところはありません。EULAを確認し次へ次へと進めていくだけです。
Visual Studio を立ち上げて、Blazor アプリのプロジェクトを作成します。
プロジェクトを作成したら「C:\Program Files\CData\CData ADO.NET Provider for kintone 2019J\lib\netstandard2.0」から「System.Data.CData.Kintone.dll」を参照してください。
あとは、ADO.NET Provider 接続部分をKintoneConnectionに切り替えて、DataAdapterを利用するだけです。
あまりこんな書き方はしないと思いますが、せっかく Blazorなので、そのままrazorページでコールしてみました。
接続文字列には、kintoneのURL、IDとパスワードを指定します。また、CData Driverの都合上、ライセンスが接続文字列埋込み型になるので、試したい方はCData サポートデスク(support@cdata.co.jp)までご連絡ください。
実行すると、このような形でkintoneからデータ取得を行い、HTMLテーブル形式にレンダリングしています。
もうちょっとスタイルを整えれば、以下のような感じにもできます。
通常Kintone APIがサポートしないようなCountやJOINなんかも駆使できるのがいいですね。
簡易的に社内で kintone 連携の外部アプリを作りたい時とかいいですね。
Blazor自身、もちろんまだまだ課題も多いフレームワークだと思いますが、C#を触っている人間からすると、直感的に書けるのが大変ありがたいですね。
なお、この記事は「CData Software User Group Advent Calendar 2019」の1日目の記事としても書いています。