編集部イチオシ

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

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