ThinkUp1.0を日本語コンテンツを扱うには

ThinkUpというオープンソースのウェブアプリケーションがあります。Genaさんが一人で作り始め、共感したコミュニティが形成されてみんなで開発し、最近バージョン1.0が公開されました。

ThinkUp
http://thinkupapp.com/

日本ではまだあまり知られてないのか、検索しても関連する記事がそれほどヒットしません。確かに少し地味なウェブアプリケーションかもしれませんが、米国ホワイトハウスのTwitterアカウントおよびFacebookページのサポートをしています。

どんなものかは、このホワイトハウスの導入ページをご覧いただくのがよいかもしれません。

該当するアカウントをめぐるアクティビティを集約・表示してくれるアプリケーションで、コメントやリツイートの件数やつながっているユーザの数の推移などをみることができます。

これらのデータは公式ツールや外部サービスで見ることもできますが、ThinkUp一括でまとめて見られるようになります。

 日本語では、こちらのブログが分かりやすいです。

ThinkUp で自分のソーシャルアクティビティをまとめる
http://blog.gaspanik.com/track-own-social-activity-with-thinkup

ThinkUpは、単純に自分の発言や書き込みをまとめるだけでなく、返信された内容(やりとりの流れ)やRTされた回数といったものまで集計することができるので、企業アカウントでも簡単な効果測定的に使えるかもしれません。

ただし、日本語環境で使うのに2つのハードルがあります。

メニューやドキュメントは日本語未対応

ThinkUpは、まだ他言語対応をしておらず、言語ファイルも用意されていないので、簡単に日本語表記にするのはちょっと難しいです。一度リクエストしてみようと思います。

マルチバイト文字に未対応

もうひとつは、ほとんどの機能は問題なく使えるのですが、グラフ表示を伴う機能部分だけが表示されません。原因はGoogleのグラフ作成APIの文字数制限にひっかかりエラーになることと、日本語含むマルチバイト処理でエラーになるためです。

ThinkUpのダッシュボードにある「Recent Activity」でGoogle Graph APIを使って棒グラフによるレスポンスを表示するのに、大まかには下記の処理を行なっています。

  1. コンテンツの本文を取得する
  2. 先頭の50文字(バイト)を残して切り捨てる
  3. URLエンコードをする
  4. APIに引き渡す引数文字列を作る
  5. Google Graph APIから棒グラフ(本文見出しとグラフ)画像を取得する。

日本語の場合、URLエンコードをすると元の文字数の数倍に変換されるため、50バイトを取得するとThinkUpで想定されているよりも引数文字列が長くなり、APIの制限を越えてしまうのです。(たとえば、「エンコード」の5文字の日本語はURLエンコードすると「%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%89」の45文字になります)

また、日本語全角文字と半角英数文字が混在した場合、50文字(50バイト)または変更して30文字(バイト)で切り捨てる際に、2バイト文字をまたぐことがあるため、不正な文字コードを返してしまいます。最後の1文字が文字化けしていることが ウェブ上で時々ありますが、これが原因です。

そこで、

1)マルチバイト文字を対象とした切り捨て用コードを追加し、それを使って処理をするようにカスタマイズ

2)取得文字数を32文字にカスタマイズ

の2つの対応で、無事日本語コンテンツでのグラフ表示がされるようになりました。

追加したコードのファイル(modifier.mbtruncate.phpというSmarty関数プラグイン)とカスタマイズしたテンプレートファイル(dashboard.tpl)を加えたThinkUpをGithubにアップしました。

https://github.com/ToshiOshio/ThinkUp

2つのファイルの詳細はcommitされたソースでご覧いただけます。

初めてGithubにアカウントを作り、勢いで本家からForkしてしまったのですが、いつか日本語リソースを追加する機会があれば参加したいと思っております。現在バージョン2が進行しているようで、そちらはグラフの中にマルチバイトが入らないようなので、この問題からは解放されるかもしれません。

シェアする

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

フォローする