2017-07

【Java】Twitter4jを使ってひなっちのおはっちをさーちして遊んだっち!


別にここであえて語るまでもないことだが、「ひなっち」とは、
ロックバンド「ストレイテナー」「Nothing's Carved In Stone」「Fullarmor」「Killing Boy」のベーシスト「日向秀和」氏の愛称である。
(以後、本項では「ひなっち」と記載させていただく)
ひなっちは基本毎日ツイッターで「おはっち」という挨拶を心がけており、
それに対してファン(フォロワー)のアカウントの方から「おはっち」と返信(リプ)をすると、
リプした順番に応じて(大体5位くらいまで?)ひなっちから「1番おはっちおめでとう!」というようなメッセージがもらえる。
フォロワーの方たちはひなっちおはっちいっちばん(一番)を取るべく
気合いをいれてツイッターでまちかまえているのだ。
これはライブ会場で先頭に赴く心情と近いものがあるのだろう(勝手な予想)。

で、この「ひなっちのおはっち」に対して、

  • 一体どれほどの人が「おはっち」しているのか?
  • 最短でどれほどの時間で「おはっち」しているのか?

というのを知りたくなったので、
Twitter4jというJavaのツイッターAPIを使ってひなっちおはっちさーちし、集計してみることにした。
本項ではそのためのTwitter4jのメモと、それをもとに作成した趣味用プログラム「ひなっちおはっちさーち」について記述する。

Twitter4j公式ページ:
http://twitter4j.org/ja/index.html

※ちなみに、Twitter4jを使うにあたっては、大前提で「APPアカウント登録」みたいな作業が必要になる。
ググれば出てくるが、https://apps.twitter.com/に行って、
指示に従って「APPアカウント登録」を行い、認証に必要な以下4つのプロパティ情報を取得のうえ、
Java実行環境と同階層に「twitter4j.properties」という名前で保存する。

oauth.consumerKey=*************************  
oauth.consumerSecret=**************************************************  
oauth.accessToken=**************************************************  
oauth.accessTokenSecret=*********************************************  

あるいは-Dのシステムパラメータで設定するとか、
Java内でConfig設定用クラスを用いて設定するとか、
いくつか方法があるみたいではあるが、とりあえずこれで。


 


UTF-8の2バイト文字の存在を失念していたことによる失敗談(+サクラエディタの見え方の違和感)について


バージョンとか設定とかにもよるのかもしれないが、サクラエディタは、中途半端にブチ切れられたUTF-8の文字コードを上位サロゲートの一部と見做して文字コード表示してしまうらしい。バイナリエディタとかで中身を見ると実際のコードは違ったりする。

例えば「あ」だが、UTF-8では「E3-81-82」の3バイト。
これを無理やり「E3」「81」「82」の1バイトずつにぶった切って保存すると、
「E3」は「U+DCE3」
「81」は「U+DC81」
「82」は「U+DC82」
で表示される。

実験として「あ」を無理やり1バイトでブチきったときのスクリーンショット↓
「E3」部分


上位サロゲートはUnicodeでU+DC00~U+DFFFの範囲なので「E3」という1バイトが勝手に上位サロゲート範囲の文字の一部として扱われてしまっている。
UTF-8の1バイト文字のコード範囲は「00」~「7F」までなので、「E3」というバイトは定義外にあたるため、
エディタの都合上無理矢理サロゲート範囲に位置づけているという考えもなくはない。
そもそも「文字」としては表現できないコード値なので、テキストエディタにこれをちゃんとコード値で表現しろというのも酷な話な気がするが
最初は「なんで突然サロゲートなんか出てきてるんだ?おい?」と思って軽くビビった。