自治体のオープンデータでWebアプリを作ったので、一連の流れと作り方(技術的な話)。自分の地域でも公開されているので人様に役立つ何かを作りたい、自身が不便なので何とかしたいと思ってる方の参考になれば幸いです。
オープンデータ?
皆さんはオープンデータってご存じですか? 色んなデータを著作権などの制限なし*1で出して、「まぁ使ってよ」って商用非商用 関わらず使えたりするようなもの。
一部の企業や機関、政府(○○省)も出していますが、最近は(政府の方針で?)地方の自治体で流行っていて、色んな県や市が、市民の生活向上、ひらかれた行政をアピールする為にデータを公開しています。
*1 データによりライセンス形式は変わります。自治体のデータは出典元を表記するライセンスの物が多い。
どんなデータなの?
自治体で良く公開されているのは、こんな感じのデータ。
- 位置情報(文化財、名所、AED、公共施設、防災)
- 統計情報(人工、経済/財政、工業指数)
- 生活に係わる情報(ごみ、病院、幼稚園/保育園/学校)
- 報告書などの文章
- DATA GO JP(政府が公開しているオープンデータ)
https://www.data.go.jp/ - CityData(全国のオープンデータ一覧と、作成されたアプリ)
http://citydata.jp/
私の住んでいる三重県津市では県が2015/2月に、市が2015/3月に公開しました。
- 三重県(三重県オープンデータライブラリ)
http://www.pref.mie.lg.jp/IT/HP/87579000001.htm - 津市(津市オープンデータライブラリ「みんなのデータ」)
http://www.info.city.tsu.mie.jp/www/contents/1001000000855/
正直、現時点では 地味で何に使って良いのか分からないものが多く、いち市民がワクワクするような楽しいデータは殆ど出されていません。
市の観光協会が同様のデータ(イベント情報、写真 etc)を出してくれたらきっと市のPRにもつながる楽しい物が色々作られてくと思うのですが、何か色々あるんでしょうかね。
で、私でも使えそうなのが「生活に係わる情報」。その中でも、自分自身も困っていて 便利にしたいと思ってた(=利用者もそれなりに居そう)のが、今回使ったゴミに関するデータです(地味なんですけどね…)。
ゴミに関するデータ
多くの市で提供されているのが、何をどの区分(燃える/燃えないなど)で出せば良いかを示した「ゴミ分別」と、いつ出せば良いのかの「地域別ゴミ出し収集日」のデータ。
当初、津市で「オープンデータ始まったよ」と告知があった時点では、どちらのデータも無かったのですが、「無いデータはリクエストして下さい」と書いてあったので メールを送ったところ、元データがあったゴミ分別のみ1週間くらいで公開して貰えることになりました(ありがとうございます)。
実はこのデータ、ちょうど1年前にゴミを担当する環境政策課に直接メールをして「オープンデータとして提供して欲しい」と言う話をしたのですが、ていよく断られました。
現在 お住まいの地域に、そう言うデータがない/何か欲しいデータがある場合は、市の「情報企画課」や「地域振興部」に問い合わせると良い気がします。既にデータが有りそうな場合(1から作ってくれることは希でしょう)、担当者のやる気次第ですが、今なら「オープンデータ」って呪文で提供して貰える可能性がある気がします。
メモ
小さい市では担当者のやる気に左右される。無い場合は「情報企画課」に聞いてみよう。
ゴミ分別に関するデータ
このデータには下記の利点があります。
- 紙媒体は紙面の都合がありデータが少ない&量が多いので探すのが大変→不便
- 紙冊子が直ぐに行方不明になる。
- 多くの人が困っている(但し使用頻度は低い)。
- データの劣化が少ない(年毎に変更や更新が少ない)。
ゴミ出し日の方は年度が代わると変更があるかもしれないので、年度更新がめんどくさいんですよね…
システム化に当たって
ここからは若干 技術的な話。興味ない方は「公開→宣伝」まで飛ばして下さい。
ゴミの検索システム(オープンソース)
ゴミ関連はメジャーなオープンデータなので、「csvを加工すれば使える」的なWebアプリがいくつかオープンソースで公開されています。プログラムとかあんまり詳しくないけど… と言う方はこのあたりを使ってみるのも良いかと思われます。
- ゴミチェッカー / 越前市ぷらぷらぼ
http://www4.ttn.ne.jp/~flowerhana/gomiindex.html
- ゴミナシ / Code for Kanazawa
http://5374.jp/
ただ、自分の場合 上記2つはピンと来なかったので、一から作りました。事前にgoogleさんに “csvから検索するjQueryライブラリがいくつか出ているよ” って教えてもらってたのも一因です。
ただ、上記「ゴミチェッカー」の”ひらがな検索”は非常に使いやすく これは欲しかったのですが、公開されたデータには”ひらがな”が入っていません。
漢字が混ざっているデータを”ひらがな”に変換する
市が公開しているデータはこんな感じ(csv)。
ID,50音,品目,分別区分,分別区分(略称),出し方のポイント 1,あ,アイスクリームの外箱・容器・ふた(紙製),燃やせるごみ,可燃, 2,あ,アイスクリームの外袋・容器・ふた(プラスチック製),容器包装プラスチック,容プラ,中身を使い切る
元が50音順の冊子なので、こんな感じなのでしょう。
ひらがな検索を作りたいので、これから なんとか”ひらがな”データを作りたい。検索したところYahooAPI(テキスト解析:日本語形態素解析)を利用したアプリを作ってる方がいらっしゃいましたが、長いのはダメなど 若干の制限が有りました(使ってみたら途中で切れた)。
- 漢字をひらがなに変換 / You Look Too Cool
http://tool.stabucky.com/convert/kanji2kana.php
何度かに別ければ良いのですが 面倒。でも「形態素解析」で思い出したのが、めかぶ & ちゃせん。「mecab ひらがな変換」とかで調べるとやっぱりできるっぽいのでコレを使うことにします。
最近の言葉なら新しい辞書の方が良いと思いますが、ゴミ分別のデータならipa辞書で良い&ラクしたいのでyumでインストール(CentOS6)しました。
$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm $ sudo yum install mecab mecab-ipadic
$ mecab 今日も良い天気です。 今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー も 助詞,係助詞,*,*,*,*,も,モ,モ 良い 形容詞,自立,*,*,形容詞・アウオ段,基本形,良い,ヨイ,ヨイ 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。
7列目がふりがなっぽい。ドキュメントを見ると-Oyomiでふりがなだけ取り出せるらしい。
echo 今日も良い天気です。 | mecab -Oyomi キョウ モ ヨイ テンキ デス 。
カタカナは嫌なので、ひらがなに変換。
$ sudo yum install nkf $ echo 今日も良い天気です。 | mecab -Oyomi | nkf -w --hiragana きょう も よい てんき です 。
ふむ。
$ echo "1,あ,アイスクリームの外箱・容器・ふた(紙製),燃やせるごみ,可燃," | mecab -Oyomi | nkf -w --hiragana 1,あ,あいすくりーむのそとばこ・ようき・ふた(かみせい),もやせるごみ,かねん,
下記のスクリプトで元データを全て”ひらがな”化します。
ひらがな化 $ hiragana.sh hoge.txt > hoge_hiragana.txt $ cat hiragana.sh #!/bin/bash cat $1 | while read line do echo $line | mecab -Oyomi | nkf -w --hiragana done
Excelのデータ→テキストファイルを使ってデータを取り込み、640件のデータを下記のように加工(2列目に”ひらがな”データを追加)しました。
1,あ,アイスクリームの外箱・容器・ふた(紙製),燃やせるごみ,可燃, ↓ 1,あいすくりーむのそとばこ・ようき・ふた(かみせい),アイスクリームの外箱・容器・ふた(紙製),燃やせるごみ,可燃,
海外の方への対応
日本人でも困るゴミの分別。海外の方はもっと困ってるんじゃ無いかなぁと思いました。
○○人はゴミの分別が!って聞いたりもするけど、情報無かったら守ることもできない。小さいながらも県庁所在地で、それなりに海外の方も居るので上記を多言語化したデータが有るのかと問い合わせたのですが「ない」とのこと。
使えるのかどうか分からないけど、日本語→英・中国・スペイン語で機械翻訳にかけたものを用意しました。翻訳はgoogleスプレッドシートを使って「=GoogleTranslate(A1,”ja”,”en”)」とかすると、A1セルの日本語を英語にしてくれます(en:英語、zh:中国語、es:スペイン語)。
良い感じにセルに設置したデータを上記の命令&オートフィルを使い一気に翻訳。翻訳したものをコピーしてテキストエディタに貼り付け、”,”に置換すればあっと言う間に目的のcsvデータが完成します。便利な世の中だ。
- Google Docsのスプレッドシートで多言語対訳表が簡単に作れるよ
http://bulldra.hatenablog.com/entry/google-docs-translate
また、怪しげな翻訳よりも「ひらがな」くらいは読める人も居るかも&幼稚園児とか小学生にも使って欲しいなぁと思い、全てが「ひらがな」のデータも用意しました。
で、できたデータがコチラ。
- 分別さん用データファイル
https://github.com/koike-moyashi/gomi_tsu_csv
翻訳に関しては、もう少しましなものにしたいと翻訳ボランティア募集のページを作りました。当初は上記GitHubでプルリクエストを受けて… と思っていたのですが、(翻訳ならできる)一般の方にはハードル高いので、googleスプレッドシートで共同編集できるようにしました。
英・中国・スペイン語が得意な方、もし興味有りましたら下記をご覧下さい。
- 分別さん – 翻訳協力のお願い
http://gomi-tsu.moyashi-koubou.com/honyaku.html
データ検索ライブラリ
600件くらいならDBつっこんで色々やるより、ブラウザにまかせてしまえと思ったので、下記の2つを使いました。
- Papa Parse (CSV→JSONパーサ)
http://papaparse.com/
- jQuery Bootgrid (グリッド表示&全文検索)
http://www.jquery-bootgrid.com/
Webページ作成
動的な言語を使った方が楽な部分もありましたが、後にあげるサーバの関係で静的なページとしました。
利用するシチュエーション的にはスマートフォンが圧倒的だろうから、スマートフォン中心のレスポンシブで。今思えばフリーのテンプレート使えば、よりそれっぽい物ができた気もするけど、1から書いてしまいました。
配信サーバ
動的な言語を使ったページなら自分のサーバ(AWS/VPS)を使ったのですが、市のサービスだと どれくらい人が来るか分からず、AWSでアホみたいにお金を取られるのはちょっと辛い。
GitHubがGitHub Pagesと言うサービスをしていて、(無料会員は)リポジトリを公開にしておけば使えるらしいので、それを使うことにしました。
Github PagesでWebページを配信
今回はアカウントのWebページ(1アカウント1つ)では無く、リポジトリごとのWebページ(リポジトリ毎に作成可能)を使用しました。gh-pagesブランチってのを切ると使えるようになります。
- Githubを使って3分でHPを公開する / Qiita
http://qiita.com/budougumi0617/items/221bb946d1c90d6769e9
独自ドメインの割り当ては、gh-pagesブランチにCNAMEと言うファイルを置きます。
- GitHub Pagesで独自ドメインを使う / hello-world.jp.net
http://blog.hello-world.jp.net/git-2/2612/
公開されるページはgh-pagesブランチに置いておくらしいのですが、他のブランチで作って~とやってると非常に面倒。commitした時にgh-pagesも良い感じにしてくれるようにしました。
$ cat .git/hooks/post-commit #!/bin/sh git checkout gh-pages git rebase master git checkout master
- 実践GitHub Pages運用のユースケースとワークフローの詳細
http://tokkono.cute.coocan.jp/blog/slow/index.php/programming/github-pages-workflow/
Webの中身はこんな感じになりました。
- 分別さん – GitHubリポジトリ
https://github.com/koike-moyashi/gomi_tsu_web
GitHub Pagesは はじめは使いにくかったのですが、慣れれば、commit→git pushってすればページが反映されて凄く楽ちんです。
公開→宣伝
中途半端な部分もあったけど、さっさと公開してしまえとfacebookとtwitterで作ったよーって書きました。facebookの”市に関するグループ”への書き込みは それなりに反応もありました(どこの市でも有ると思います)。
反応を見ていると「○○だったら便利なのに」と言う書き込みがあったりしたので、ユーザがゴミデータを追加できる等、”自分としても面白そうな奴” だけ付け加えました。
また、スマートフォンの方用に「”ディスクトップショートカット”を作るとアプリのように使えるよ(&操作方法のリンク)」と書いたのですが、その辺は無視され「アプリが欲しい」と言う書き込みをいくつか見ました。
一般の方には、Webアプリ=形のない物、アプリ=形のある物で、形のある物を持っておきたいのか… うーん。
スマートフォン アプリ化
サーバサイドの言語を使ってないので、単純なスマートフォン化なら、さほどハードルは高くありません。
PhoneGap(Cordova)を使おうと久しぶりに、Eclipse(Android SDK)を起動。しかし、時代はAndroid Studioになってるとかでアップデートが上手く動かない。Android Studioを落とし起動するも、余りにもの重さにイライラしていたところ、以前”はてブ”で「Webブラウザでスマートフォンアプリが作れる」って記事があったのを思いだしました。
- Monaca – HTML5ハイブリッドアプリ開発プラットフォーム
https://ja.monaca.io/
これを使うと、Androidアプリ/iOSアプリ/Windows8アプリ/Chrome Appsが作れて、しかも無料。内部的にはCordovaでよろしくやっている感じですが、”重い”の代名詞のIDEもWebで使えてサクサクと軽いです。
単純なアプリ化は 機能差も無く 管理コストも増えるので、あんまり気は進まなかったのですが、デベロッパーアカウントのあるAndroid版だけ作ってマーケットに出しました。
できたのはコレ
で、完成したのはこれ。
- 分別さん – 津市のゴミは僕にまかせろ
http://gomi-tsu.moyashi-koubou.com/
今のところアクセスはボチボチですが 毎日使う物でも無いし、個人的には便利だと思うので、徐々に使って貰えることを願っています。ゴミ回収日のデータが市から提供されてないので、出たら(気が向いたら)組み合わせて、もう少し便利にしたいと思ってます。
さいごに
三重県内の”オープンデータ”の活用事例としては初めてらしく、取材を受けたり市のページに載せてもらい、少しだけ承認欲求が満たされました。
行政のオープンデータは、公的機関が持っているデータをどんどん出してこうって取り組みですが、誰を対象にしているかがいまいち分かりません(”市民”では無く、どういう市民なのかって部分)。
他の地域を見ている限りは議事録などより、位置情報や今回のようなデータなどPC利用を考えた物が多く感じられ、利用方法としては「市民(技術者)をその気にさせてタダ働きさせる仕組み」って面もある気がしています。しかし、殆どのデータは面白味の少ない、どこも似たり寄ったりな無難なデータが多く、個人的にはワクワクできません。
もちろん利用方法によっては今出ているデータでも嬉しい方はいらっしゃるのだとは思いますが、今後はよりいっそう多用なデータが出てくれることを望んでいます。それには「こんなのが作られました」的な実績がいるのでしょうかね。卵が先か鶏が先か…
ただまぁ、ハッカソンをはじめ、皆で何かアイデアを考えたり、個人のアイデアで何かを作ることは単純に楽しい作業。技術者の方は、自分や周りの生活をちょっと便利にするため、承認欲求を満たすために、おひとつ何か作ってみてはいかがでしょうか。
その後 (2015/5追記)
メディアでの紹介とアクセス数
鳴かず飛ばずな感じ… メディアに載った瞬間はアクセス有るのですが、その後はボチボチ。
毎日使うサイトでも無いですしね… アクセス解析によると市外からのアクセスが半数以上でまだまだ宣伝が足りていない感じです。
- オープンデータを活用された市民によるアプリが公開されました@津市ホームページ
http://www.info.city.tsu.mie.jp/modules/news2/article.php?storyid=2903 - 読売新聞 朝刊(地方版)/ 2015/4/22
InternetExplorer8問題
紙媒体から来るユーザはInternetExplorer8を使っている方が思っているよりも多いです(2015/春)。
上記の新聞に載った直近3日はディスクトップ率が64%(普段は35%前後)。最上位ブラウザがieで、ie中36%がie8でした。ちなみに今回作ったサイトはie8では動きません。WindowsVista以降のユーザのie8は2012春に自動アップグレードされているからもっと少ないと思っていたのですが、思っていたよりも多かったです。
新聞を良く見そうな層(&便利そうなのでワザワザPCで使ってみようと思ってはいる)の環境はこんな感じのようです。本当の意味で「市民の為に!」と言うことであれば、この辺りを意識しておいた方が良さそうな感じでした。
ちなみに旧IEのチェックは(ざっくりであれば)IEの開発者ツールでエミュレーションできます。
コメント