Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

Twitter4Jハッカソンを行いました(一人勉強会)

9/11日曜日のよちよちAndroidの会で一人ハッカソンを開催いたしました。
ここ一週間ずっと「Twitter API ポケットリファレンス」 という本を読んでいたのでその中に出てくるTwitter4Jというライブラリーを使ったTwitterアプリケーションを作ってみたいというチャレンジでした。
当日はなんと、Twitter4Jの作者にしてTwitter API ポケットリファレンスの著者様である山本裕介さんが応援にいらして下さいました。
すっかり舞い上がりました。小学生の草野球チームの練習試合にイチローが現れて指導するといったような状況にあたりますから。
本当に親切にいろいろ教えてくださってありがとうございました。

ではハッカソンでやったことをご紹介いたします。

アプリ名「だら奥ったー」
機能 
あらかじめ用意しておいた定型文をTwitterに投稿する
初回はTwitterのユーザー認証をする

techboosterさまの記事をたくさん参考にしました。この場を借りて厚く御礼申し上げます。

前日の下準備
Twitter4Jのダウンロード(Android版スリムバージョンを選択)
テスト用Twitterアカウントの作成
◯「だら奥ったー」のツイートの選択画面等作成
◯Twitter4jをプロジェクトに読み込む
参考サイトを見ながら、「だら奥ったー」をTwitterへをアプリケーションの登録をする
◯ユーザー認証部分のサンプルコードを物色

当日
参考サイトのコードを参考にOAuth認証を行う
参考サイトのコードを参考にツイートを行う
◯取得したアクセストークン/アクセスシークレットをアプリ内で保存/取得する処理を実装する
◯その他バグ修正など

上記が全て順調にうまくいくわけがなく、OAuth認証のところで例外が発生してしまい、はまりました。
よちよちの若手天才開発者の方がTwitterアプリを作っていたので、ソースを見せて欲しいとオバハラをかまして見せてもらってももうまくいかず。

Twitter4Jから投げられる例外の意味がよくわからず山本さんに助けを求めたところ、
Twitter4Jに設定できるプロパティファイルの作り方を教えて頂き、その中で「debug=true」というプロパティを設定して再度実行しました。

そこで出たメッセージを元に、
Twitterに登録したアプリケーションの設定で、Desktop/Browserクライアントって選択肢を選ぶ所が違っているのではないかと推測されました。
実際に画面を見てみると、その選択肢は以前あったらしいのですが失くなっており、「コールバックURLが指定されていればBrowserクライアント」のような扱いになっているようでした。
そこでコールバックURLに適当なURL(Googleにしちゃいました)を入れ、ついでにApplication typeを「Read, Write and Access direct messages」にして設定を保存後、再度認証処理を実行したらうまくいきました!

その後はツイート処理はあっさり実行できました。
ちなみに、再度テストをしたらツイートができておらず、logcatを見たらTwitterExceptionになっていました。
山本さんがまた助けてくださって、同じ日に全く同じツイートは出来ない仕様になっているそうで、
ツイートに時刻をプラスするように変更したらうまくいきました!
ありがたや〜

リファレンス本を読んだり、当日実際に実装してみて思いましたが、Twitter4Jは非常に使いやすいです。本日はツイートしただけですが、シンプルで簡単なコードで高度な処理ができるようです。(高度なコード・・・あっすいませn)Androidからも特別難しいことはなく使えるところもよいです。

そんなこんなで、「とりあえず動くものを作る」という目的は達成できました。
まともなアプリらしくするためには多くの処理を加えなければなりませんが、
緊張感の中でずっと集中して、非常に勉強になりました。
皆に前もって宣言していたので、9/11という締切に向かってあれこれと調べたり調整したり
とにかく作るんだ!という気合満々で行動出来たのもよかったです。
失敗してもいいからやってみるものですね。

当日来てくださった山本さんをはじめ、ずっと集中させて下さったよちよちの方々、Twitterで教えてくれたり話して下さった方々、本当にありがとうございました。
そして、この拙いエントリーを読んで下さっている方、ありがとうございました!