2014-12-24

OpenSpendingを支える技術

このエントリはCivic Tech Advent Calendarの23日目の記事です。突然ですが、私が時々コミットしているOpenSpendingについて技術周りの事を書きます。
https://openspending.org

OpenSpendingとは

OpenSpendingは政府や自治体の予算・支出・財務諸表等の情報を集めてマッピングしたり分析したり、配布するプラットフォームです。誰でも登録されているデータセットを利用する事ができ、API経由での取得、ヴィジュアライゼーションの作成ができます。また手元にデータセットがあれば登録する事ができます。現在73カ国、905のデータセットが登録されています。
By understanding how governments spend money in our name can we have a say in how that money will affect our own lives.
The journey starts here.
トップページにある上の文章が示す通り、税金がどのように使われるかを知る事で、我々がそれに対してどうあるべきか発言できる事を目指しています。

一体どこで使われているのよ、と思うかもしれませんが有名な所でいうと日本の地方自治体ローカライズ版も多く作成されたWhere does my money go?というサイトがOpenSpendingのAPIを利用しています。

開発と運用はOpen Knowledge Foundationの支援を受けてコミュニティベースでされています。

OpenSpendingの開発

OpenSpendingはGitHub上で開発が進められており誰でも参加する事ができます。

アプリケーションサーバーはPython(Pylon + Celery Worker)、全文検索にはSolar、WebフロントはJavaScript、主にd3.jsが使われています。今時Pylon?と思われるでしょうが、もちろんFlaskにリプレースする作業も進行中です。

開発チーム目下の課題とこれからのアーキテクチャ

OpenSpendingの提供する機能を分類すると
  • データの保存
  • データアップロードとETLプロセス
  • データ取得と分析、クエリ
  • Webサイト
  • ヴィジュアライゼーション
といった具合になります。OpenSpending開発チームが課題としているのは、現状のアーキテクチャはこれらが1つのアプリケーションとして動作している事によるメンテナンス性の低下です。例えばデータの保存場所をAmazon S3にしようとしても、すぐにやれないといった状況です。開発チームの議論ではrisk of causing a butterfly effectといった文芸的な表現になっており、とてもそんな表現は思い付かないなと関心してしまいました。

さて、この状況を改善するために現在議論されているのがマイクロサービス化です。
https://github.com/openspending/osep/blob/gh-pages/01-approach-and-architecture-of-openspending.md

詳細は次のドキュメントにまとめられていますが、各役割毎にコンポーネント化しマイクロサービスとしてそれぞれを動かすといった方針になっています。
マイクロサービスそれぞれがDockerコンテナで動いてオーケストレーションされて全体が動作するとなると、いかにも今風な感じですね。

UI周りの開発

アーキテクチャ全体の話とは別に私が見ている所だと、ヴィジュアライゼーションの追加というタスクがあります。公会計の可視化は、よくある企業会計のそれとはまた違った目的、ターゲットとなるので別の難しさがあります。
ヴィジュアライゼーション作成画面

その他

アプリケーションのコードの他にも、OSSのプロダクトとして開発者を集め、コントリビュートしてもらうためにはドキュメントや開発環境を構築するためのスクリプトも必要になります。特にコマンド1発でローカル環境ができない様では、開発者に興味持たれたとしてもすぐに逃げられてしまうでしょう(しかし最近までVagrantfileがバグっていた) 。この辺りの作業も人が足りていない印象。

Contributor募集

というわけで開発者が足りていません。特に日本人はAPIをガツガツ叩くくせにコミュニティにコミットしてくれないと評判です。PythonかJavaScript、もしくはインフラの知識があれば大丈夫だと思うので是非開発に参加してみてください。

GitHubのISSUEには今すぐ着手できそうなライトな物も登録されているので、チラ見してから考えるのも良いと思います。


このエントリーをはてなブックマークに追加