【一般】東京都オープンデータソースAPIを活用してみる（基礎準備編）

[Sharperlight](https://sharperlight.jp/)を使用してデータの統合や分析を行う手法をこれまで色々と見てきました。しかしながら、Sharperlightもクエリをかけるデータがそこにあって初めて生き生きと活躍を始めるわけであり、今回はそのデータを収集および蓄積し、そうして集まったデータに対してクエリをかけてレポートを作成する一連の作業内容を記事にしてみようかなって思っています。
で、な～んか良いデータがないかな～って探してたら、**オープンデータ**というものに出会いました。日本を20数年間も離れてたのでオープンデータというものに国家単位で取り組んでいるなんて知りませんでした。調べてみるといろいろあるではないですか。
ここ直近の記事では、札幌市や京都市のオープンデータをCSVやXLSの形でダウンロードさせていただき、Sharperlightを使用してGoogle Mapに位置情報等を表示するようなものを紹介してきましたが、その方法だとデータファイルをダウンロードしてという手作業が発生します。
そこで、APIで随時提供されるようなデータはないかな～って探してました。するとヒットしました。東京都がいくつかのデータセットをAPIで提供してくれていました。今回はそれを利用させていただきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d37d4de4-b7ab-bd26-fda1-8b297efcae18.png)
早速、Postmanを利用してどのようなデータセットが返ってくるのか検証してみます。
APIエンドポイント一覧の一番上のエンドポイントを使ってみます。こういったJSONデータが返ってくるんですね。
いいね！:thumbsup_tone1:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/6269d4f9-dedc-e570-c237-7e5854256a06.png)
よし！、じゃ処理の流れとしては、Sharperlightスケジューラでこのエンドポイントからデータを、一日一回でいいかな？って感じで取得して、データベースに蓄積します。データベースにデータが蓄積されさえすればSharperlightの本領発揮です。なんでもできる！！
というわけで**Sharperlightファウンドリ**を使用してデータベースおよびデータモデルの設計を一気にやっつけてしまいます。
### Sharperlightファウンドリ ###
[Sharperlight](https://sharperlight.jp/)アプリケーションメニューから**Sharperlightファウンドリ**を起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/8f71adfd-b51a-4bda-84df-9860ed9cb58a.png)
#### 製品 タブ ####
起動したら`製品コード`、`説明`、`著者`、`データベース`(データベース名)等を記述します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/46942d9b-7331-91de-2188-d9417bc06eb5.png)
#### テーブル タブ ####
ここではテーブルの設計を行います。
先ほどのエンドポイントではこのようなJSONデータが返ってくるので、それを元にテーブルの設計を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/1cbbec72-c9c7-fb2d-0cee-223edaea897a.png)
`新規`アイコンをクリックしてテーブル定義の作成を開始します。`クエリを基に...`というメッセージが表示されますが、ここでは`No`で先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/e48fd4aa-cf39-1b53-da74-773a0af4e98b.png)
テーブル名には使用するAPIエンドポイントの名称を使いましょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/1b6c7233-69ee-8041-69de-aada5ba6b33d.png)
テーブルのテンプレートが作成されます。属性の編集を行いましょう。
**分類：** 大きく分けて**Dimension**と**Fact**があります。Dimensionは顧客名や分類コード等の参照データが入るテーブル、Factは実際の取引データ等が入るテーブルです。ここで使用するデータの場合は、Factテーブルはいいでしょうね。その他の属性はこのような感じでいいでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f26d48ac-c761-55d7-20a2-f62145887b09.png)
#### フィールド タブ ####
ここでは、作成したテーブルのフィールドを設計していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/25b069fc-d865-e0de-d95f-44e2b840922a.png)
最低でもこれだけのフィールドを準備する必要がありますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/6c8ce5bd-3379-615d-2d92-d1c208abe5af.png)
`新規`アイコンでフィールドテンプレートを追加します。最初のフィールド名は**No**としましょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/d75fda7f-2c62-561e-9d80-2af73717f774.png)
`データ型`や`データ長`の既定値が表示されるので、実際のデータに合うように編集を行います。**No**フィールドに関してはこのような感じでいいでしょう。その他の属性は初期値のままで。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ea4503fa-7279-acc3-5b31-83c541136e60.png)
同じように残りのフィールドも作成していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/9b3441b2-2f12-2d3b-97ff-69f639cb5d97.png)
#### 値 タブ ####
ここでは、性別フィールドがフィルターとして使用される場合、索引リストに表示されるリストを定義します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0ba809cd-6f6c-94f1-cee1-b2cd2245291c.png)
#### 保存 ####
これまでの作業を失わないように先ず定義を保存しましょう。`保存`ボタンで行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ada00652-2f89-8e26-6b86-1509ea905eb7.png)
**.fdy**拡張子のついたファイルが作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/0988a905-543e-d88c-daef-1794b76ff81b.png)
#### 検証 ####
`検証`ボタンで行います。特に異常はなさそうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/194770b8-bd0c-3b71-31f3-adbabb43b755.png)
#### 実行 ####
では`実行`ボタンをクリックして、Sharperlightオブジェクトを生成してみます。
このようなメッセージが表示されるので、`Yes`で先に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/56137b47-01fc-b6a6-db46-e8c4196d00fa.png)
生成プロセスが行われ、最終的にはこのような結果となります。データベース、データモデルやレポートパックが作成されているはずです。生成されたファイルを拝見したい場合は、`Yes`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/5994a8f6-6321-7e70-b118-824e89951e84.png)
指定したフォルダにこのようなファイルが生成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/79e14c05-560d-7aa8-ac81-cefe5e5620bd.png)
データモデルはここに作成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/b23b3f44-0887-e0e8-792c-508c223cb350.png)
データベースは？というと...ここに出来ています。なぜ`ここに`っていう疑問がありますよね。それは、ファウンドリを起動したSharperlightインスタンス（今回は本体）のシステムデータベースが存在するSQLデータベースサーバー内に作成されるっていうことです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/7ec038a5-b576-3c61-983d-9bcfaf4d40b4.png)
ここで指定しているデータベースサーバーです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/21967c6b-1c2d-c986-5024-34c37f39c19b.png)
新しく作成されたデータモデルのデータベースへの接続情報も正確に設定されていることがここでも分かりますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/ed21df76-bce9-c3c4-cdaf-0d93e25f77dc.png)
またデータベース内には、テーブルやフィールドも設計したように作成されていますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530698/f9d0af11-a511-b72d-df49-86258276c88a.png)
このようなデータベースやデータモデル等を一つ一つ手作業で作っていくこともできますが、ファウンドリを使用することで効率よく早く作成することができますね。まあ、完璧にできているかどうかは実際使っていかないと分からないので、あくまでも基礎作りの手間を簡素化できるといったところですかね。今後どのような修正／変更が発生するかは次回以降の記事で記していきます。
今回は、Sharperlightファウンドリを使用して、スピーディにデータベースやデータモデルの作成を行うところまでとします。
次回はSharperlightスケジューラのタスクについて記します。JavaScriptコードを少し書いて、APIエンドポイントからデータを取得しデータベースに保存するところまでですね。
では、失礼します。