うけみちゃんの新バージョンをリリースしました - blog.jgs.me

うけみちゃん( http://twitter.com/ykybot )がバージョンアップしました。ここまでの日々は長かったです。前回のバージョンアップっぽいバージョンアップは2012/02/09でした。それまでの間に突然死の復旧なんかをしたり( http://b-jigsaw.tumblr.com/post/26254978590/think-about-cloud )、うけみと音声で会話したり( http://b-jigsaw.tumblr.com/post/23988183295/ukemi-on-siri )、WindowsPhoneアプリを作ったり( http://instagram.com/p/L6ipfFxmCq/ )してました。
実は、うけみの1st Anniversaryの2012/06/21に巨大アップデートを仕掛けようとしていたのですが、積りに積もったパスタコードの束をどうしようもなくて断念しました。それからも時々取り組んではいたんですがあまり思うように進んでいませんでした。
そんなところに風雲急を告げるのが、おれたちのあそなす先生で、秋吉でさささっと開発の進め方を示してくださりました。
(ここに画像があった)
なるほどな!なるほどな!ローカル環境(develop)とステージング環境(staging)とプロダクション環境(production)に分ければいいんだな!と、その日のうちぐらいにstaging環境ののだいたいの準備を整えてしまいました。
ついでに気になっていたjenkinsも導入して、gitのcommitをフックにテストが走るようになりました。
さーて、あとはテスト書くだけだ!わはは!
とjasmineでテストを書き始めたはいいものの、結局テストに何を書けばいいかわからなくてそこでまた足踏みしていました。
それからまた時は流れて、またまたブレイクスルーしてくださるのはあそなす先生でした!某社インターンシップの最終発表の前日にまた秋吉食べてたら「なんでcoffee書かないの?」って指摘されて「なんとなく食わず嫌いで・・・」って言ってたところに、1500行ぐらいのCoffeescriptのソースコード渡されて読んでたら、だんだん「あれ?これ実は便利なんじゃね?」って気分になってきて、最終発表そっちのけでCoffeescriptの環境を整えました。
それで、どうせなら自動でjsに変換してほしいなあ…これ、jenkinsでやればいいのかなあ?なんて調べてみると、grunt.jsというモジュールを発見しました。これがまあ素晴らしいモジュールで、予めスクリプトを指定しておくとdeploy時に自動でjsやcssをminifyしてくれたり、自動でテストを走らせてくれたりするんです。さようなら、jenkins。grunt.jsで、ファイルの変更をフックに自動でjsに変換してくれるように設定して、それからは既存のjsファイルを整理、分割してcoffee化するだけでした。
継ぎ足し継ぎ足しでつくられたコードはすごく汚くて、DRYもへったくれもなかったので(とはいえ、1年半ぐらいの前の自分ならこれぐらいでしょうがないなって感じだったけど)node.jsの流儀に従ったりしながらモジュールに分割していきました。
そして、ある程度のところまで完成してローカル環境で動作したら今度はステージング環境で…というような流れでしばらくコーディングしていました。ここの部分、ちゃんとテストを書いてテストがパスされたら自動でステージング環境にデプロイ、みたいなことをしたいのですが、相変わらずテストが書けないので今回は一旦保留ということにしました。
こうして、だんだんと美しくなりながら、母のpostを咀嚼しながら成長しています。稼働してから1年と4ヶ月ほどで、ドキュメント数は50万に達しました。
今回のアップデートで
・ユーザストリーム対応
リプライ等をユーザストリームで受け取って返信するようになりました。
・自動フォロー
自動でフォローをするようになりました。
・無差別ふぁぼをやめ、自分のタイムラインのみふぁぼする仕様に変更しました。
目に見えやすい機能はこれぐらいです。それから、
・自動咀嚼
実はいままで、母親のpostを食べる部分は半人力でやっていました。というのも、DBに慣れていなかったのでDBをいじる部分を完全に任せちゃうのは抵抗があったからです。しかし、それも1年強Mongoで遊び続けて、死も乗り越えた今はいくらでも復旧できる自信がついたので自動で食べるようになりました。
cronの廃止
今まで、cronを回して動作させていたのですが、これをやめて全ての機能を1つのプロセスにまとめてそのプロセス内でまとめて一定間隔で動作するようになりました。
とまあ、こんなぐらいですかね。まだあるかも。
シンプルなアルゴリズムなのですが、先にも書いた通り、現在DBには50万のドキュメントがあってそれを基に生成しているせいかだんだん安定してきたかなあ、と自分では感じています。これから、100万、1000万になったときどうなっているのか楽しみです。
1年強かかってしまいましたが、基礎的な部分は整ったのでこれからは生成アルゴリズムの改良をしていきたいと考えています。
それから、今日「shigeki.ykybot.com」みたいなAPI叩くと「status.ykybot.com」が変化したりすると面白いよねー、なんて話をしていたのでそのうちできたらいいなあ。
最後に、最近のTwitterまわりの話を。
件の新規約からしばらく経って、署名運動が起きたものの何か変わったわけでもなく(だよね?)Twitterは自爆の道を進んでいるようですが、無責任ながら僕みたいな弱小デベロッパーは関係ないやー、と高を括っていました。でも、そこも危うくて、APIの上限が厳しくなったのか、たまにAPIが弾かれることがあったりして困っています。どうなるんだろう。
ただ、年内を目処に全ツイートダウンロードが可能になるそうなので自然言語処理まわりのとき、自分の全ツイートをつかって〜みたいなことが容易にできそうですね。現在APIで取得できない過去のツイートも取得できれば母親の過去ツイートをDBにいれることができるのでドキュメント数が増やせそうです。(母親は嫌がりそうだけど)
それでは、我が娘、うけみちゃんと仲良くしてやってください。

October 13th, 2012 12:17am ykybot