ふるつき

私は素直に思ったことを書いてるけど、上から目線だって言われる

golangからTwitterするanacondaを触って、update_nameをやった

  • golang
  • gox
  • anacondaの関数自分で一個作った
  • update_nameした

golang

 まともに書いたの(書いてないけど)初めてでした。golangにした理由みたいなものはなくって、バイナリ生成できる何かならいいかなーっと。

golangを書いていて思ったことをちょっと書きますが、ググれば解決策出てくるようなものです。

  • GOPATHとかGOROOTとか面倒
  • err何回も使いまわしているの嫌だ
  • スコープがわからん

忘れてたけど(追記してる)、ちょっと挙動確かめたいとかいってコメントアウトとかウカツにするとimportで怒られるの悲しいです。

gox

github.com

あとに書きます(書かないかも)が、さくらのVPSCentOSの6を入れて、そこで動かすことにしたので、バイナリをかっちょよく生成したくなりました(クロスコンパイルしたいという意味)。goxというのが便利らしいので、gogetしてgox -osarch="linux/amd64"しました。これだけでバイナリできるのすごい(時間とか気にかけなければ、goxだけで、たくさんのばいなりが作れます)。

anaconda

github.com

anacondaはgolangのライブラリでTwitterAPIを叩きます。StreamingAPIも多分対応してます(叩いてない&調べてないけど、GoDocみたらそれっぽい関数があった)。使い方は、日本語の情報もそれなりにあるのでパス。anacondaの関数作ったよという話を。

anacondaが用意する関数とかいろいろは、↓からわかりやすく見えますが、

godoc.org

私はupdate_nameしたいのに、それっぽい関数がなかったので作りました。anacondaに用意されているそれぞれの関数はとても小さくてわかりやすいのでこぴってぺってしてtwitterのapidocみてurlとかいじるだけでした。

func (a TwitterApi) UpdateName(v url.Values) (user User, err error) {
        response_ch := make(chan response)
        a.queryQueue <- query{a.baseUrl + "/account/update_profile.json", v, &user, _POST, response_ch}
        return user, (<-response_ch).err
}

↑をanacondaパッケージに放り込んだら叩けます。サイコー。

update_name

ということでupdate_nameを作りました。さくらのVPSいっこ借りているので、そこにバイナリを投げて、cronで毎分呼び出しています。

感想

 楽しい。

 Streamingとか、golangは得意そうなので余裕があればそういうことやりたい。