Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GTFSの汎用的ななんちゃってAPIっぽいをもの作ってみる

E2c61cbea45ae5f873d1502980e70a9c?s=47 shota-yano
February 12, 2020
14

 GTFSの汎用的ななんちゃってAPIっぽいをもの作ってみる

熊本のGTFSが公開されたので、HTTPのリクエスト投げたらいい感じにデータ取ってきてくれるAPIっぽいものが欲しくて試してみました。
おまけでAzure上に作ったSQL Databaseにデータ入れるところも資料に追加しました。
※途中マスク足りてない気がするけどもう気にしない(面倒だからリソース消したし

E2c61cbea45ae5f873d1502980e70a9c?s=128

shota-yano

February 12, 2020
Tweet

Transcript

  1. GTFS勉強会 2020/2/12 KumaMCN 矢野 翔大

  2. 自己紹介 • 株式会社KIS • 矢野翔大 • 興味あること:ARとかVRとか電子部品 • 趣味はモノづくり •

    ようやくMRTKv2触り始めた • Dynamics365 Guidesお試し中 • KumaMCNで活動中 MRTKv2 Dynamics365 Guides
  3. GTFSを楽に使いたい

  4. HTTPリクエスト投げれば 良い感じにデータ取れると嬉しい

  5. Azureを使って 汎用的なAPIぽいものを作る

  6. 簡単なイメージ 近くのバス停 知りたい 田迎付近にいるの で「田迎」で検索 GTFSのデータが 入ったデータベース 「田迎」に一致す るバス停検索 検索結果を返す

    結果を表示
  7. LogicAppsを使う理由 • ほぼノンコーディングで作れる • プラットフォームやプログラミング言語に依存しない • HTTPのリクエストを受け取って起動するだけ • Azure Functionsでも良い

    • コード書ける人はこっちのほうがいいかも 運用どうすんのとか置いといて、ゆくゆくは・・・ • 開発者が気軽にGTFS使えるようになるといいな • 「このAPI叩けばこのデータ返ってくるよ」という形 • 福岡のCKANとかに似てる
  8. LogicAppsの中身 LogicAppsのリソース を作る デザイナーをクリック

  9. LogicAppsの中身 リクエスト受けたら 起動する このURLに対してPOSTすればいい JSON形式で好きに書く

  10. LogicAppsの中身 接続先DBを選ぶ 今回はSQLServerを 使ってる 発行するクエリ POSTで受け取ったパラ メータをセット 受け取ったパラメータは formalParameterを使わない と、SQLインジェクション的

    なことができちゃうみたい なので注意
  11. Pythonで実行(google colaboratoryで試す) 検索条件(あいまい検索 LogicAppsのURL リクエスト投げる 結果の表示 「田迎」に一致するバス停の情報

  12. Pythonで実行(google colaboratoryで試す) 先頭1件だけ取ってマップに プロットしてみる HTMLファイルを保存 HTMLファイルを開くと バス停がプロットされてる

  13. とりあえずできた • URLに条件つけて送るだけなので簡単 • 検索条件をいろいろ指定できるようにLogicApps側を頑張る必 要がある • スマホの独自アプリや、webアプリだけでなく、LINEBotなど のプラットフォームに乗せることもできる •

    意外とダイヤ改正が頻繁にあってるようなので、データを最新 に保つのが大変そう • Webページに更新日欲しい • ダウンロードしたZIPを解答して中身を見ないといけないのは面倒
  14. おまけ ローカルPCにSQLServerとか入れるの大変な人向け

  15. Azure SQL Database を作る リソースを作成する

  16. Azure SQL Database を作る ①リソースグループはなけれ ば新しいものを作る ②データベース名入力 なんでもいい ③新規作成をクリック

  17. Azure SQL Database を作る 全部入力して「OK」 ログインのユーザとパスワードは 後で使うので忘れないように

  18. Azure SQL Database を作る クリックして構成を変える

  19. Azure SQL Database を作る ①汎用目的にする ②サーバレスにする ③最小値でいい(今回は)

  20. Azure SQL Database を作る ⑥クリック ⑤10Gもあればいい ④1時間にする ※ここに推定金額が 出るので参考までに

  21. Azure SQL Database を作る クリック

  22. Azure SQL Database を作る クリック

  23. Azure SQL Database を作る 完了まで待つ

  24. Azure SQL Database ができました クリック

  25. ファイアウォールの設定 ファイアーウォールの 設定をクリック

  26. ファイアウォールの設定 ①クライアントIPの追 加をクリック ここに自分のIPが表示され てるのでこれを追加する

  27. ファイアウォールの設定 ②保存 IPは範囲指定でもいい ※少なくともここに載っているも のしかアクセスできないので必要 に応じて追加が必要です ①クリック ③保存後クリック

  28. ログインできるか確認 ①クリック

  29. ログインできるか確認 入力してOK ※DBにログインできるかの確認 ※ネットワークによっては ポートに穴をあける必要がある

  30. ログインできるか確認 ログインできればOK

  31. SSMSのインストール(DB管理用ツール) クリックしてダウンロード 後インストール https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

  32. SSMS側でデータの登録などをすればOK インストール後はSSMSからこの サーバー名と ログイン確認で使ったユーザとパ スワードでログインし、操作可能

  33. SSMS側でデータの登録などをすればOK サーバー名と ログイン確認で使ったユーザとパ スワードで接続

  34. GTFSのデータを登録 データベースを右クリック後 タスク>フラットファイルのインポートを 選択

  35. GTFSのデータを登録 次へ

  36. GTFSのデータを登録 熊本バスのバス停のファイルを 選択(なんでもいい) ファイル名がテーブル名になるので必 要に応じて変えること ※バス会社ごとに同名のファイルがあ るのでマージが後で必要になる 次へ

  37. GTFSのデータを登録 次へ

  38. GTFSのデータを登録 次へ ※必要に応じて型の確認はする こと(今回はそのまま)

  39. GTFSのデータを登録 完了

  40. GTFSのデータを登録 閉じる エラーにならなければOK ※ほかのデータも同様に取り込むといい とりあえず今回はバス停のファイルだけ

  41. GTFSのデータを登録 ①新しいクエリをクリック SELECT文でデータが取れればOK ※欲しい情報をLogicAppsのクエリに書 けばデータが連携できる

  42. おわり