烏滑稽スマートフォン用の表示で見る烏滑稽ブログはじめました(迫真)この広告は、90日以上更新していないブログに表示しています。Calendar枠まだありますって言ってて、勢いで登録してしまった。以前どこかで聞いた気がして調べて見つけたのが東京メトロのオープンデータです。東京メトロオープンデータ開発者サイト東京メトロの路線情報や駅情報をAPIで参照できます。APIを利用するためには開発者登録をすると最大2営業日ほどでアクセストークンが取得できるとのことだったんですが自分がやったら半日で登録してくれました、ありがたい。Lonで駅検索したりいろいろできるんですが、とりあえず全路線の現在状況が知りたければhttps://api.tokyometroapp.jp/api/v2/datapoints?rdf:type=odpt:Train&acl:consumerKey=を叩いておけば大丈夫です。arrayが返ってくるだけです。レスポンス項目は開発者登録後に読めるドキュメントにありますが、よく読まなくてもとりあえず可視化すればなにかいい感じでわかるでしょう!わかるといいな!Elasticsearchのセットアップ今回の目標は可視化です。サーバもインスタンスも準備する暇はないので自分のmacで構築します。自分は以前2.3系のelasticsearchを使っていたことがあったのですが、今は5系(何故か3系4系がとんだ?)が出ているのらしいのでせっかくだから新しいやつを使ってみます。https://www.elastic.co/jp/downloads/elasticsearchダウンロードページを見ると3ステップ書いてあります。超カンタンですね!では早速Macの適当なディレクトリで作業していきます。./bin/elasticsearchいろいろログが出て起動できた感じです。アクセスするとクラスタ情報がJSONで表示されました。本当に1分でできちゃいますね。UIで表示してくれるお決まりのプラグインがありまして。pluginがなくなったようです。headが使えないわけではなく、今はelasticsearchの外から起動できるようになった感じだと思います。ふたこと今回は単独Mac起動なので触れませんがスケールアウトも簡単にできます。基本同じネットワーク内であれば同じクラスタ名でelasticsearchを起動してシャード数を増やせば勝手に分散します。Kibanaのセットアップさて、次はKibanaです。ballがありますね。ステップを見るとelasticsearchほどはシンプルでないでしょうか、とはいえ5分で終わるか。ま、気にせず進めましょう。./bin/kibana起動できたようです。アクセスするとkibanaのリッチなUIが表示されました。ステップ2のkibana.ymlの編集を飛ばしましたが問題ありませんでした。デフォルトでelasticsearchはlocalhost:9200に接続しにいくようになっているんですね、親切。ひとこと新規構築時にはあまり問題にならないのですがElasticsearchとKibanaの連携可能バージョンは限られています。逆にKibanaをバージョンアップしたらElasticsearchが古くてうまくいかないとかありがちだと思います。バージョンアップ時は基本的には両方最新にしていきましょう。Client開発メトロAPIを引いて結果JSONをelasticsearchに投入するJavaコードを書いていきます。Clientを使うのは初となります。↓のページを見ながら進めていきます。transportとlog4jです。<version>2.6.2</version></dependency>で開発したコードスニペットがこれです。}}これでインデックスできました。ここでgetMetroAPIメソッドは重要ではないです。Arrayを取得しているだけです。testメソッド内でcli.prepareIndex(...).setSource(なにか).get();しているところが実際にelasticsearchにインデックスしている箇所です。setSourceの引数でインデックスする内容を入れますが、JSON文字列だけでなくMapやJacksonシリアライズしたバイナリも選択できるようです。自分でコンテンツをいじってインデックスするような場合はMapやJacksonシリアライズの方が良い選択肢でしたが、今回は外から取得したJSONをそのままインデックスするのでJSON文字列を選択しました。インデックス名は適当にtrainとしました。事前にインデックスを作っておかなくても存在しなければelasticsearchが勝手に作ってくれます。これをcronなどで定期的に実行するようにして放置しておきます。可視化1日だけしか回さなかったので少ない時間とデータですが、elasticsearchにはいくらか路線情報がインデックスされたはずです。これを可視化していきます。※すみませんここからだんだん適当に。stackを使うことを想定しているためです。作ったインデックスは"train"なのでtrainと書きましょう。普通インデックス名はプレフィックスとyyyyMMdd等を組み合わせて、インデックスが肥大化しすぎないように一定期間毎に区切ったりするのですが今回はめんどくさいので"train"だけです。指定するとインデックスを認識してTime-fieldの指定ができるようになります。今回のログの場合タイムスタンプ型の項目は2つありましたが、項目仕様からdc:dateを選んでCreateボタンを押します。するとtrainインデックスの各フィールドが認識されて以下のような画面になりました。次に各路線の遅延グラフを作ってみます。chartを選びます。Y軸、X軸などが指定できる画面になるので、ノリで設定していきます。Y軸は遅延秒を表すodpt:delayをCountではなく、Sumで。Histogramにしてインターバルは重複しないようにわざと分固定にします。AggregetionをTermsに、フィールドを路線名に指定して再生ボタンみたいなやつを押します。APIの叩き漏れなどでいまいちなグラフになってしまいましたが一応路線ごとの1日の遅延時間をグラフ化することができました!地下鉄は外の路線と違ってあまり遅延しないかなと思っていたのですがこうして見るとなんだかんだどの路線もちょっとは遅延してますね、特にラッシュ時間。この日は朝が千代田線、夕方は銀座線が10-15分くらい遅延していることがわかりました。これをもっと長期でとって、遅延傾向もいろんな側面でグラフ化して、さらにかっこよくダッシュボード化すると面白そうですが夜も更けてきたので記事はこれくらいにしておこうと思います。Clientいじりで時間を消費し、3時間は少し厳しいものがありました。いえ簡単にログ可視化ができるツールであることは間違いないと思うのでお試しあれ。Client)月別アーカイブ参加グループテクノロジーはてなブログをはじめよう!rice_kokumutyoukanさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。