減災インフォで収集している自治体ツイートについて


※この記事は IT DART アドベントカレンダーに参加しています。

減災インフォでは自治体が運用しているTwitterアカウントがつぶやくTweetを収集しています。

現時点で 全国の自治体アカウントと自治体の防災関連のアカウントあわせて672 アカウントのツイートを日々収集しています。

次の地図は自治体のうち、市区町村アカウントの分布を表したものです。

市区町村Twitterアカウントマップ( 拡大して見る )

は 認証済みアカウントで災害情報の配信が目的に入っているアカウント、
が 認証済みではないけれど災害情報の配信を目的にしているアカウント、
が 認証済みだけど、災害情報配信目的でないアカウント、
が 認証済みでも災害情報発信目的でないアカウントです。

※この地図は市区町村レベルを表したものです。アカウントを持っている都道府県ありますが、それは表示していません。

仕組みについて

これらのアカウントの日々のつぶやきを収集しているのですが、その仕組みについてご紹介します。

次の図のような仕組みでツイートを収集しています。

自治体ツイート収集の仕組み

この仕組みを順に説明します。

①収集用アカウントのUserStreamの収集

この収集のために @stream_hole というTwitterアカウントを運用しています。このアカウントの UserStream を Twitterの Streaming API を用いて取得します。
UserStreamと言うのは タイムラインで @stream_hole 自身のつぶやきとともに @stream_hole がフォローしているアカウントのつぶやきも取得することができます。つまり、@stream_hole のタイムラインを取得することができます(Twitter社が差し込む広告はもちろん含まれません)。

この仕組みはとても便利で、収集したい自治体アカウントの追加・削除は @stream_hole でフォローしたりアンフォローするだけですみます。また、Twitter REST APIのような実行回数制限を受けずにツイートを取得できるのでタイムラインを漏らさず取得できるのです。しかも各アカウントがつぶやく度にリアルタイムに取得できます。

②収集したツイートをGoogle BigQueryに転送

集めたデータを後で見たり分析するために収集したつぶやきをどこかに保存しておく必要がありますが、自前でデータベースサーバを運用するのは大変なので、減災インフォのツイート収集では Google BigQueryというサービスを利用しています。このBigQueryサービスは名前の通りビッグデータの保存・解析に適したデータベースサービスで、それほど大規模でないデータを検索するには速くないのですが、大規模なデータをまあまあのレスポンスタイムで検索したい場合にはとても速く便利なサービスです。
BigQueryにもStreaming Insert APIというものがあり、これを使うと随時発生するデータを発生した時に登録してくことが可能です。この収集の仕組みでは、取得したつぶやきのデータから必要な項目のみを抜き出し、Fluentdというログ収集ツールを利用してBigQueryに流し込んでいます。

①、②の処理にはRubyで作成したtl_captureというプログラムを利用しています。TwitterのStreaming API とそれを扱うRubyのライブラリ、Fluentdが便利にできているためとてもシンプルなプログラムとなっています。

BigQueryのついてはプログラムがシンプルで済みそうだということの他に、フルマネージドなサービスなので稼働させておくというレベルでは全く手間がないことと、フルマネージドでありながら非常に安価(このつぶやきの収集程度の利用料ではBigQueryのほぼ無料枠に収まっているようです)であることで採用しました。

③Google App Script を使ってスプレッドシートに出力

収集したつぶやきは、BigQueryに入ったままだと少し不便なのでさっと見返せるように毎日Google スプレッドシートにアカウントごとにソートした形で書きだしています。
スプレッドシートへの出力は Google App Script (GAS) を利用して自動的に処理しています。

GASとGoogle BigQuery は同じGoogleのサービスということもあり、親和性が高く GASから BigQuery API を利用して直接データを取り出すことが可能です。GASからBigQueryのデータを直接抽出して、Spreadsheets APIを利用してスプレッドシートに書きだしています。GASは定期的な処理の実行も可能で、毎日1時から2時の間に処理しています。

出力したスプレッドシートは 自治体Tweet で公開しているので興味のある方は見てみてください。

自治体のつぶやき

自治体のTwitterアカウントの運用は様々です。アカウントを持ちながら、ほとんど使われていないものから、毎日たくさんつぶやいている自治体、災害関連専用のアカウントを運用しているところもあります。
つぶやいている内容も主にゆるキャラがつぶやいているものから、地域のイベントの宣伝、職員の採用募集など様々です。災害・防災関連では、気象警報の内容や防災無線に流している内容をそのままつぶやいているもの、避難訓練の案内などが発信されています。

現状、収集したツイートをあまり分析できていないのですが、月一回、収集したツイートを集計して Tableau Publicの減災インフォアカウントで公開したり、「自治体が運営する災害時Twitterの現状 インフォグラフィック」を作ったりしています。

今後は収集したつぶやきを分析して、どのアカウントが有益なツイートをしているのか、どのような活用方法が効果的なのかを共有できるようになっていけばと思っています。