隗より始めよ

今後はいろいろやり始めます。

アーバンデータチャレンジにアプリを作って出してみた!

f:id:mazarimono:20190129233559j:plain 先週一週間かけて引きこもり、ウェブアプリを作っていました。そう、オープンデータチャレンジという、政府が出しているデータを使って何かするというコンテスト用作品を作っていました。ウェブのこととか全然わかっていないのですが、Dashを使うと、アプリケーションを作って、herokuに簡単に上げられることが分かったので、とりあえずそれでウェブアプリにしてみました。

内容は、一つは地域の経済的な動きを見てみる的なものを作り(大阪のデータ)、発表されているデータをたくさん見られるものを作ってみました。出されているデータの整形に苦労しました。エクセルデータで担当の人が変わるごとに作りがちょっと変わるとかで手を焼きましたが、何とか形にはできました。 京都のデータは以前から出していた宿泊施設のプロットに最近の増加を感じられる線グラフをつけて、京都の宿泊者数の増減を見るグラフもつけたのですが、残念ながら、宿泊施設増加後のデータが全然ないので、どうなったか分からんなぁという感じでした。

Dashに関してはこれまで勉強会で何度か資料作りをして、今回のアプリ作成でもドキュメントを何度も見返したので、今後解説記事を作ってみようと思います。Dash愛。

dash.plot.ly

OS
windows10 home

バージョン情報       
python 3.7.0      
dash 0.28.5
dash_core_components 0.36.0
dash_html_components 0.13.2
dash_table 3.1.3
plotly 3.4.1
pandas 0.23.4

使っているライブラリのバージョンは上のような感じです。全くアップデートしていないです。Dashのインストールサイトを見ていると全然最新版に追いついていないことが分かります。これが、herokuにアップしたものに動かない部分がある原因だろうか(どうなのだろう?herokuには別にバージョンを指定してライブラリを入れていないので、どちらかというとそうではないような気もします。)?

Dashを使うと素人でも簡単にインタラクティブなグラフを使ったアプリケーションがウェブにあげられてよいです。しかし、ウェブのこととか、ファイルのこととか全然わかっていないので、一つのファイルで全ての作業をさせているせいか、物凄くアプリケーションは重たくなっています。

この辺り全然わかっていないので、何かご助言いただけると幸いです。

ちなみにアプリケーションは大阪のデータを見たものが

↓これで osaka-takoyaki.herokuapp.com

京都のデータを見たものが

↓これ

my-dash-kyoto.herokuapp.com

です。一応有料にしたったで!

大阪アプリについて

大阪アプリは最初は交通データの分析みたいなことをしようと思っていたんですが、色々と自分の興味が移って、これはどうなってんだろうとか思うと、そのデータを探して加工してグラフ化してみたいなことをしていて、こっちに時間の9割を割きました。

その割に、アップできたと思ったら最初のテーブルがいきなり出てなかったり(ローカルでの起動では出るのになぁ)、スライダーが動かなかったりとちょっとあれです。でも、たくさんのデータを見られることによって、人々が色々考えるようになり、統計データ使えるやんってなって、データの価値が見いだされ、予算が当てられると良いなぁという思いが途中から生じ、たくさんのデータを放り込んだものができました。ちょいちょいインタラクティブな感じのグラフも作りました。最初はインタラクティブな奴ばかりにしようかと思ったのですが、使い方を解説できないといきなり触って使えない人もいるけど解説をいっぱい書くとそれはそれでいまいちだなーと思って、結局、これまで人々が触れてきた簡単なものと、ちょっとDash的な感じなもの(Altairでもできる)を入れたものを作りました。

くしくも統計の不正が発覚した時に作ったてのが、たくさんデータを入れて人々が見やすくするってののモチベーションとなりましたが、まぁどうでしょうね。

残念だったのはこれを作っている間、大阪のオープンデータのサイトが閉じていたということですね。というわけでググって色々さがしながらって感じで作ってました。まぁこうしたらよかったという点はあるものの、経済の基礎的なものを交通手段を使ってみるというようなことを一応できそうかなぁと思ったり思わなかったり。

京都アプリに関して

京都アプリは民博のインパクトみたいな感じのことをやりたかったので、まぁ地図グラフで2010年代を押したらほとんどのプロットが消えるというのと、その補助のために線グラフとの棒グラフをつけたら、まぁインパクト分かりますわなぁという感じで良いかと思います。こっちはヤフー様の経度緯度APIでその位置情報を出すとかなかなか勉強になりました。

まぁ作り替えるのであれば、区ごとの統計とか付けたらよいかなぁとも思いますが、この辺は一目瞭然な感じなのであまりいりませんね。それをやるのであれば、その宿泊施設の規模(宿泊可能な人数)を調べて、100メータ四方でどれくらい宿泊できるキャパがあるとか、Airbnbのデータをスクレイピングして、そのデータとここにあるデータの合致具合を見たりとかですかねぇ。

ま、色々と拡張するアイデアはありそうです。

まとめ

今日こそはコードを書くかと思い、バージョンまで書き出したのに、結局一行もコードは登場せず、感想で終わるというエモい記事の典型みたいな感じになりました。書類ワークが忙しいし堪忍してください(その割に最近記事が多いのは机に座っているからだなぁ。書類処理の時に使う机はPCのないものにすることも考えないといけません。)。

Dashに関していつも通りいうと、こういう感じで普通のグラフでも全部出して消していくとかできるので(本当は初期に3,4個出しておいてdash_core_componentsのチェックボックスで出していくって方が良いのかもしれませんが、インパクトあるかなぁと思って全部出して、分かりにくいのも消しながらできるっていいたかったけど、プレゼンはなし)、みんなで大量のデータを見られるってところが強みに思います。

これまで定量的な分析を、プレゼンとかでやると処理が大変な割にどうしても詰まらんのと時間が持たないってのがありました。それはどうしてかっていうと、多くのデータの扱いを増えてとしている場所では、作った人が全部のデータを見て、ある程度の道筋を作るってことがやってこられるので、その道筋以外見えなくて、まぁそうですわなぁとしかならなかった部分があったのだと思います。Dashとかインタラクティブなグラフを使うと、大量にあるデータを全部見てその中からピックアップしたり何やかんやできるので良いことが起こりそう。でも、ややこいおっさんしかいなかったら、迷走に迷走を重ねいつも通り訳分らん結果になるケースもあるでしょうが。

というわけで、結構面白いものができるんでみんなPython使っている人はDash使ってみてください。僕は頑張ってJavaScriptを勉強します。

コードはgithubにあります。また書き方はブログを作ります。

github.com

github.com

クラウド開発徹底攻略 (WEB+DB PRESS plus)

クラウド開発徹底攻略 (WEB+DB PRESS plus)