179 Views
April 20, 19
スライド概要
2019年4月20日に開催された「標準的なバスフォーマット(GTFS-JP) 勉強会 #1」の技術セッションで発表した『「なんじゃこりゃぁ!」DB屋が見たGTFS-JP ファーストインプレッション』の発表資料です。
どうみても、5分の発表資料じゃなかった。。(大幅に時間オーバーしました。すいません)
GTFS勉強会 #1 「なんじゃこりゃぁ!」 DB屋が見たGTFS-JP ファーストインプレッション 2019/04/20 (有)アートライ 坂井 恵 (@sakaik)
はじめに(おことわり) 本セッションでは、GTFSのデータフォー マットについて、講演者が感じた事柄を率 直にお話しますが、これにはGTFS自体の 価値を毀損する意図を含んでおりません。 講演者はGTFSに対して敬意と愛情を以て 接しており、将来的な期待とともに、広く GTFSのデータフォーマットに対する理解 が浸透することを願って本講演を行ってお ります。
自己紹介 • 坂井 恵(さかいけい) @sakaik • 有限会社アートライ 代表取締役 • • • • since 1998 いわゆる「ひとり会社ごっこ」 業務分析や問題解決に強み その根幹にあるのが「データ構造」への理解 • 日本MySQLユーザ会 副代表 • いわゆるオープンソースのボランティア活動 • データベース大好き ・GTFSについて • この分野は素人ですが・・・(本当)(本当に本当)
自己紹介 (インタビューなど) https://employment.en-japan.com/engineerhub/entry/2018/06/22/110000
自己紹介(私のスタンス) 動いているものは、えらい! いくら、 「ここはこうしたほうが・・・」とか 「この部分がイケてないんだよね」とか 外野が言ったところで、 実際に目の前で動くものを提供している人が、 いちばんえらいです! ※画像はイメージ
GTFS-JP データフォーマット 注:上記引用したデータフォーマットは「初版」のものです。
このGTFS-JPファイル群 どうやって作る? テキス トファ イル 変換 ツール Excel ファイル RDBMS 専用ツールに 手入力 抽出・加工 ZIPファイル GTFS GTFS ファイ GTFS ファイ ル群 GTFS ファイ ル群 ファイ ル群 ル群
このGTFS-JPファイル群 どうやって作る? テキス トファ イル 変換 ツール Excel ファイル RDBMS 専用ツールに 手入力 抽出・加工 ZIPファイル GTFS GTFS ファイ GTFS ファイ ル群 GTFS ファイ ル群 ファイ ル群 ル群
GTFS-JPフォーマットをそ のままRDBMSに格納する? • たぶん、そうじゃないほうが良い • GTFSは「データ受け渡し用フォーマット」 • データを「安全に格納する」考え方とは異なる
とか 難しいタテマエは置いといて DB屋が見たGTFS-JP ファーストインプレッション
事故発生!!! 資料作成途中に、いつの間にか、参照していた手元 の「標準的なバスフォーマット仕様書」が、 2版から 初版に入れ替わってしまっていました。 昨晩(深夜)に気づき、なるべくリカバリにつとめま したが、参照先が混乱しているもの、2版では変更 されているものがあるかもしれません。 ご了承ください。
(1)経路は時刻とともに? まず バス停の集合があり、 そのバス停をつないだ路線があり、 その路線に時刻が乗っかる ・・・・かと思っていたら!!→
(1)経路は時刻とともに? • • 時刻情報がないと、バス停の停車順序を記述できない!! これって『「大学の先生」「授業科目」が定義されているけど実 際の受講生が現れないと、どの先生がなんの授業をやるかを表せ ない』という事例(悪い例として使われる)に似ている!
(1)経路は時刻とともに? 結構 カルチャー ショック! • • 時刻情報がないと、バス停の停車順序を記述できない!! これって『「大学の先生」「授業科目」が定義されているけど実 際の受講生が現れないと、どの先生がなんの授業をやるかを表せ ない』という事例(悪い例として使われる)に似ている!
(2)標柱とバス停 合わせて「団地前」 合わせて「○○駅」
(2)標柱とバス停 • まさか、同じテーブルに押し込むなんて・・・ ←ここで見分ける(0が標柱) stop_idにより外部から参照さ れる際に「location_type=0の ものしか参照してはならな い」みたいなルールが発生し ている。おかしい。
(3)道順(経路)のキーが… • キー(★印)とは、ユニークキー(PK)のこと なのですが・・・・ ひとつの shape_id について、sequence 順にバス停を示しているものなので、 shape_id ではユニークにならない。 shape_id と sequence の複合キー とするのが、たぶん正しい。 これは、仕様書が間違っている状態(複合キーとすべき)であること が公知(?)であると、発表中に教えていただきました!
(4)IDが文字列複合ID • 1031_10_01 とか、イヤ!!! • 複数のカラムの値を組み合わせることでユニー クにする方向でひとつ。(1カラムにまとめる 必要はない) ※講演時間がたりないので、主張のみ
その他 気づいた誤植など(1) P. 29 「初版」 の内容 P. 29 (第2版では、このサンプル データの記述全体が廃止され てしまいました。少し残念)
その他 気づいた誤植など(2) P. 25 「初版」 の内容 正しくは60番
その他 気づいた課題 • 位置情報について、測地系を明示する項目がない!? • 測地系がないとはどういうことかというと・・・ • 「80度の液体」熱い?ぬるい? • →摂氏なら結構熱いし、華氏なら結構ぬるい • 現在の日本で主に使われている JGD2011 なら、 米国(Googleなども)で使われている WGS84 と 実用レベルで、ほぼ差はない • 2001年まで日本で使われていた Tokyo測地系だと、 かなり違います GTFS-JPには書かれていないが、本家GTFSのほうには「WGS84」と明記され ている事を、発表中に教えていただきました!(固定なんですね) JPの仕様書にも明記してほしいところです。
Tokyo測地系と JGD2011 こんなに違う (地理院地図) Tokyo測地系での東経135度↑ ↑JGD2011での東経135度
まとめと補足 • DB屋目線で、GPFSフォーマットは、ツッコミどころ 満載で楽しい • たぶん、サンプルデータとおいしいお酒とともに、語 り明かせそう • GTFSは、転送用フォーマットなので、データを受け 取って利用する側に使いやすいことを考えているのか なとも思うので、これ自体が悪いとは思わない • 格納フォーマットは、実際に今、どんなデータを持っ ているか(=データ発生源)によって変化します。今 日の話は、白紙ベースでの思考実験として参考にな さってください 今回聞かせていただいた発表の中にも、GTFSのフォーマットのままテーブルを作って いるという事例がありましたが、それは、手持ちのデータ(入力データ)がその形式で 用意されており、特に大きな加工もなく、そのままの形で出力に供したいという話なの で、そのケースでは最適な判断だと思っています。
ありがとうございました 「なんじゃこりゃぁ!」 DB屋が見たGTFS-JP ファーストインプレッション 2019/04/20 (有)アートライ 坂井 恵 (@sakaik)