編集部イチオシ
2021年12月6日

#非エンジニアがドライバを作る

17
疋田 | Select * from Cloud @hornets79

今年は、顧客も、売上もチームメンバーも大幅拡大した。年初にやりたかったことの多くはやった。 が、個人目標で3年ほったらかしの「自分でスクラッチでドライバーを作る」を片付けよう。私は、非エンジニアでコードは書けないが、CData API Driver を使えばSQL ベースのドライバーを書ける、らしいぞ

2021-12-05 22:43:44
疋田 | Select * from Cloud @hornets79

とりあえず、どんなAPI で試そうか。重要なのは好きなことだ。俺は変態じゃないからAPI ドキュメントを見て、「このAPI が好き」とは思えない。 じゃあ、とりあえず好きなことだな。アメフト大好きだからNFL のデータがAPI で取れるsportsdata API で行く。 sportsdata.io/developers/get…

2021-12-05 22:45:46
疋田 | Select * from Cloud @hornets79

Sportsdata API ちゃんとフリーのトライアルあるじゃん。これAPI 使ってほしかったら基本だで。サクサク~ sportsdata.io/cart/free-tria…

2021-12-05 22:47:06
疋田 | Select * from Cloud @hornets79

よし。Sportsdata API で、NFL を選んで無償トライアルで使えるAPI Key が取れたぞ。なんかもう1/3 ぐらいたっせいした気がする。 #非エンジニアがドライバを作る pic.twitter.com/lI5Gji2ftK

2021-12-05 22:51:11
拡大
疋田 | Select * from Cloud @hornets79

とりあえず、こういう時はウワサのPostman だな。 コード書かなくてもAPI が呼び出せるヤツ。 postman.com #非エンジニアがドライバを作る

2021-12-05 22:52:24
疋田 | Select * from Cloud @hornets79

さて、API ドキュメントはどこから見るか? とりあえず認証だ。これがOAuth 2.0 だったら2-3倍はAPI を呼び出すのが大変だ(気がする) おお!普通のAPI Key によるシンプルなトークン認証だぞ。俺でもいけるんじゃないか。いけるんじゃないか~? #非エンジニアがドライバを作る pic.twitter.com/CPuoUB6PzJ

2021-12-05 22:59:12
拡大
疋田 | Select * from Cloud @hornets79

まずはこのNews というエンドポイントを使おう。 ふむふむ。なんかREST っぽい気がする。きっとAPI のバージョンが3 で、JSON て書いてあるからレスポンスはJSON に違いない。しかもURL(I) が "News" と名詞だから、ピーン! REST だな api.sportsdata.io/v3/nfl/scores/… #非エンジニアがドライバを作る

2021-12-05 23:06:07
疋田 | Select * from Cloud @hornets79

Postman で: ・メソッドはきっとGET だな。 データ取得がGET じゃなかったら、帰っていいと先生たちは言っていた。 ・認証を HTTP request header に入れろと書いてあるので、ドキュメント通りにHeader に追加! "Send" ボタンで、いけ~~~~~! #非エンジニアがドライバを作る pic.twitter.com/khxIYpThzp

2021-12-05 23:10:10
拡大
疋田 | Select * from Cloud @hornets79

レスポンスがキタ――(゚∀゚)――!! JSON が返ってきました。Arizona Cardinals のレシーバーのDeAndre がハムストリングの怪我から復帰とな。Cardinals といえば JJ Watt だよね。今年もサック量産してるかな 記事読んでる場合じゃなかった。ドライバー作るんだった #非エンジニアがドライバを作る pic.twitter.com/6WVbsXcGhA

2021-12-05 23:14:18
拡大
疋田 | Select * from Cloud @hornets79

ここから、何やるか全然わからないぞ。 そう、過去もここまではいけるんですよ。とりあえずAPI 試すところまでは。 そ、こ、で、ググりましょう。 CData はドキュメントやヘルプが超充実してるらしいし、SEO 強いらしいからな 「cdata api driver profile 作り方」 #非エンジニアがドライバを作る

2021-12-05 23:17:36
疋田 | Select * from Cloud @hornets79

API Driver で使える事前定時Profile の作り方の記事ありますね!! えらいぞCData #非エンジニアがドライバを作る cdata.com/jp/kb/articles… pic.twitter.com/JrUm2tTmZu

2021-12-05 23:19:25
拡大
疋田 | Select * from Cloud @hornets79

え。記事後ろ半分英語じゃぞ すぐにローカライズチームに残りの部分の日本語化を指示。 ま、ワイは英語はバッチしなので心折れません。 #非エンジニアがドライバを作る pic.twitter.com/Wdn4ztNowE

2021-12-05 23:23:59
拡大
疋田 | Select * from Cloud @hornets79

まずは、スキーマファイル(.rsd)を作る。ほうほう。 CData のドライバーは、定義ファイル(REST API のJSON の項目をテーブルにマッピングしている定義ファイル)が.rsd という拡張子で作ります。オブジェクト(テーブル)ごとに1ファイルです。 news.rsd だな。 #非エンジニアがドライバを作る pic.twitter.com/RAdgmDMSFY

2021-12-05 23:28:36
拡大
疋田 | Select * from Cloud @hornets79

次にスキーマ定義ファイルの中身を作っていきます。 ぜったいわからんけど、記事にサンプルがあるから丸々コピーと。 #非エンジニアがドライバを作る pic.twitter.com/um2JigZgIA

2021-12-05 23:31:00
拡大
疋田 | Select * from Cloud @hornets79

とばして、次を見る。 これは、URL 入れるっぽいな。New オブジェクトのやつでよいようだ。 title はテーブル名か。desc は説明だから適当に。 <api:info xmlns:other="api.sportsdata.io/v3/nfl/scores/…" title="news" desc="Get News"> #非エンジニアがドライバを作る

2021-12-05 23:38:13
疋田 | Select * from Cloud @hornets79

そのあとは、カラム定義だな。これは面倒だけど、書けそう。 <!--Individual column definitions--> <attr name="UserName" key="true" xs:type="string" readonly="true" other:xPath="UserName" /> となるとわからんのは1行目だけか。 #非エンジニアがドライバを作る

2021-12-05 23:41:13
疋田 | Select * from Cloud @hornets79

なんかこれ、最初のやつは共通なんじゃないか。 で、api= のところに今回ソースとするやつをいれる気がしますね。 xmlns:api="api.sportsdata.io/v3/nfl/scores/…" これでいってみよう。 twitter.com/hornets79/stat…

2021-12-05 23:45:22
疋田 | Select * from Cloud @hornets79

あってるかわからないけど、JSON レスポンスをカラム定義に手書きで落とす。 <attr name="NewsID" key="true" xs:type="string" readonly="true" other:xPath="NewsID" /> どこにも書いてないけど、きっとこれが key だな。 #非エンジニアがドライバを作る pic.twitter.com/25GjBfxW8m

2021-12-05 23:51:43
拡大
疋田 | Select * from Cloud @hornets79

w3.org/2001/XMLSchema うまれではじめてこのURL たたいた。 WWW のXML Schema のルールというやつか? この世界にいながらはずかしいな、俺。 #非エンジニアがドライバを作る

2021-12-05 23:54:42
疋田 | Select * from Cloud @hornets79

引き続きカラム定義をと。 "Updated": "2021-12-05T13:06:03", あ~、datetime っぽい。きっとそうでしょう。 <attr name="Source" xs:type="datetime" readonly="true" other:xPath="Source" /> #非エンジニアがドライバを作る pic.twitter.com/P9zJaoDvxb

2021-12-05 23:58:05
拡大
疋田 | Select * from Cloud @hornets79

ドライバを使う側のアプリBI とかからすれば、当然データ型欲しいんですよね。でもAPI はデータ型の定義がドキュメントになくて「API のレスポンス見て判断してね」が多いんです。 そこで実はCData ではドライバーを開発実装するエンジニアがエンドポイントを叩いて、データ型を定義しています。 twitter.com/hornets79/stat…

2021-12-06 00:00:02
疋田 | Select * from Cloud @hornets79

とりあえずカラム定義書きあがりました!! これ、ほんとはXML フィルタ使えば、VS Code でちゃんと色をオシャレに表示してくれるんだろな。どうやって、.rsd の拡張子をXML で見れるように設定するんだろ。 偉い人教えて。 #非エンジニアがドライバを作る pic.twitter.com/00MxpiWxcO

2021-12-06 00:08:34
拡大
疋田 | Select * from Cloud @hornets79

次に、グローバルパラメータを追加する。 ここでページサイズとか変えられるんすね。 あ、ここにソースのURL 入れるんだな。 #非エンジニアがドライバを作る pic.twitter.com/uGSChNbJiN

2021-12-06 00:16:01
拡大
疋田 | Select * from Cloud @hornets79

ということで、さっきの <api=> とかは、サンプルのままでよいのか。。。

2021-12-06 00:17:40
\ Tgから毎日100名様にお好きなポイントプレゼント /

コメント

平木しげる @pirack 2021年12月9日
やってることは面白そうだからいいのだが、これはドライバーではないのでは?
5
ちゃんやま @Chann_Yama 2021年12月11日
デバイスドライバのほうのドライバかと思って読み始めてしまった元組み込みソフト民。 こちらはスタブとドライバのほうのドライバですね?
4