| @技術/プログラミング

暇だったので自動で特定のユーザーを延々favし続けるスクリプトを書いた。

ヒトデ君が書いた hitode909/user-stream-receiver - GitHubRuby+User Stream APIで無言リプライに高速返信するbotを作りました - ps aux | grep aquarla を参考にさせてもらった。というかほとんどまるパクリ。またOAuthのところはtily氏の tily/ruby-oauth-cli-twitter - GitHub に全面的に依存している。

User Stremを受診してるのでcronとかの設定なしでネットストーキングしたい相手のことを延々追跡できる。しかも発言があった瞬間に即favする。大変気持ち悪いですね。

しかしUser Streamはときどき調子が悪く、発言を拾い落とすこともある。そんなときは以下のコードを使う。

これでUser Stream経由で取りこぼした発言もfavできる。それぞれ使い方はこんな感じ。

$ ruby favoritter.rb ストーキングしたい相手のユーザー名
$ ruby favstream.rb ストーキングしたい相手のユーザー名

| @技術/プログラミング

あけましておめでとうございます。なんか2010年後半は転職とか引っ越しとかあってあまりここに記事を書けなかったのが残念です。Rubyとか全然さわってねーし、JavaScriptも忘却曲線の彼方。というわけで2011年一発目はJavaScriptについて。

AutoPagerize対応なページで、読み込まれた2ページ目以降でもJavaScriptを動かす方法について調べてみた。oAutoPagerizeのos0xさんのページでまとめられてる。

いちばん手っ取り早そうだったので、以下のような書き方をした。

if (window.AutoPagerize) {
  window.AutoPagerize.addFilter(fucintion(){
    // 実行したい処理
  });
}

ただ無名関数は呼び出せないので、二回書かなければならなくなる。これはアホっぽい。関数リテラルにして呼び出し用に function init() みたいのを書き、その中から呼び出せばよい。そしてその init() を上記 // 実行したい処理 内にも書いてあげればオッケーだ(もちろん window.onload で呼び出す必要もある)。

jQueryについては live() というメソッドがある。これは動的に生成された要素にも処理を適用してくれる非常にありがたいメソッドだ。しかし個人的な事情で、 live() というメソッドと一緒に、処理を一度しか実行しないというメソッド one() も適用している要素があり、これを二つ両立するのがjQuery的に無理っぽい。単純に処理実行のフラグを作って処理を分ければいいんだけど、これにもjQuery的なかっこいい書き方があることを知った。ネタもとはこちら。

$('処理を適用したい要素').live('click', function(e) {
  if($(e.target).data('oneclicked')!='yes')
  {
    //Your code
  }
  $(e.target).data('oneclicked','yes');
});

jQuery().data() 、なかなか便利そうだ。

| @WWW

Backlogユーザーのミートアップに行ってみた。Cacooなどで注目されているヌーラボのイベントなので何か面白い話が聞けるのではと期待して行った。

Backlogのそもそもの開発経緯は、自分たちが受託開発のプロジェクト管理のために作ったものを公開したのだそう。37signalsのBasecampと一緒だなと思った。『小さなチーム、大きな仕事』に書いてある。「自分たちが必要なものを作れ」、「最初の顧客になれ」ってやつ。自分たちすら必要としないものは誰からも欲しがられないのだろう。

ユーザーの活用事例で面白かったのがドメインの失効管理にBacklogを使うという使い方。前勤めてたとこでドメイン切れ事故が起きてしまったんだけど、ああいうのはExcelで管理してるだけじゃ確かに忘れやすい。Backlogに課題として登録してリマインダーの設定しとくと安全だなと思った。

意外に知らなかったのが開発者向けAPIの存在。シャノンの堀さんはAPIにアクセスするプログラムを書いて月初にBacklogにタスクを登録してしまうそう。これをアジャイル開発の手法であるスクラムと組み合わせて運用しているとのこと。生産性が3倍以上になったそうです。

人生初体験だったワールドカフェもなかなか興味深かった。テーブル上の紙にどんどん各人がアイディアを書いていき、時間を区切って席を替わりながら討論していく。紙の上にアイディアを書くので、声が小さい人の話も紙の上に残るし、話し好きの人が延々話し続けるタイプのディスカッションより話題に広がりが生まれるなと感じた。

ワールドカフェの議題は「あなたなら今後のBacklogをどうしますか」というもの。自分はGit対応や、37signalsのBasecampが幅を利かせている海外で勝負するには、オープンソースコミュニティには無償で使わせてあげるとPRになっていいのじゃないだろうか、といった意見を出した。

SkypeやGoogle Appsとの連携を希望しているユーザーが多くいる一方で、非ウェブ系企業ではファイル共有はおろかSVNさえ外部のリポジトリを利用することが禁じられ、Backlogの機能を十分に生かし切れていないとのことだった。

Backlogという製品に関してよりも、いろんな業種の人が異なる様々な条件でウェブサービスを使ってるんだなーということを知ることができて楽しかった。

また懇親会ではアラタナ研究所の @shunsuk さんとVimやRubyトークに花が咲いて非常に楽しかった。阿蘇にいた頃は技術の話ができる人が身近にいなくて悶々としてたもんだから、田舎から出てきて良かったなーとしみじみと感じた。天神で Kumamoto.rb やりたいです。

ヌーラボさんにはこのような場を提供していただき感謝しております。楽しかったです。ありがとうございました。

| @WWW

IMG_0109

先々週になるけど、福岡に新しくできた アラタナ研究所 のレセプションに行った。研究所の所長であらせられる @rytich さんに招待してもらった。

なんと同研究所には熊本にいた頃からお会いしてみたいと思っていた @shunsuk さんもお勤めであり、お目にかかってご挨拶することができた。

@shunsuk さんのブログ「 で写真が見られるけど、パーティションが全面ホワイトボードのオフィスはとてもかっちょよい。ホワイトボードに↑の落書きを施した後、他の人が書いたのを見てたらウェブアプリケーションのスキーマを書いたとおぼしき走り書きが目にとまった。前の職場で一人でプログラム書いてた頃が無性に懐かしくなった。ああでもない、こうでもないと考えながら、作っては壊し、作っては壊しを繰り返してプログラムを書いていくのがとても楽しかったことを思い出した。

レセプションの最後に若くてイケメンな株式会社アラタナの濱渦社長が「九州から面白いサービスを作っていきましょう」とスピーチしていたけど、すごく楽しそうで羨ましかったし、自分もなんかしなきゃと焦ってしまった。

何はともあれアラタナ研究所オープンおめでとうございます。

| @技術/プログラミング

RSpecでテストコードを書いていて、initializeメソッドをテスト時にスキップしたいと思った。ググってたらこんなのを見つけた。

| @技術/プログラミング

二月末に行ったスマートフォン開発環境セミナー(仮)でmasuidriveさんのTitanium Mobileについての発表を見てすっかり感化された。これからはJavaScriptで空を飛べる時代が来ると思った。

ドイツの会社がやってるToDo管理のサービスにWunderlistってのがあって、これは結構かっちょいUIのiPhone/Mac/PC/Webアプリを出してたりする。なんでそんなにマルチプラットフォーム対応できんの? と思ってたらどうもTitanium MobileとTitanium Desktopを使ってるみたい。だから簡単にマルチプラットフォーム対応できてるわけ。他にもThe Hit Listが一向にiPhoneアプリを出さないのでそれに業を煮やしたSenchaの社員が作ったHub ListっていうアプリもJavaScriptでデスクトップアプリを書いててマルチプラットフォーム対応してる。

しかし、なんかTitanium Desktop使って僕みたいなスキルしょぼい人がアプリ作るときじゃくせい(なぜか変換できない)を突かれて困ったことになる懸念もあるみたい。

とはいえ、最近プログラム書き始めたばっかでObjective-CとかJavaとか分かんない自分には、JavaScriptでiPhone/Androidはもちろんのこと、MacやWindows、はてはLinux向けのデスクトップアプリケーションが作れてしまうのTitanium MobileとTitanium Desktopにはとてつもない魅力を感じる。

連休期間中にしょぼいのでいいからなんか一個作りたい。

| @雑談

おっさんだけど夢を見てる。うんこしながら情熱プログラマーとか小さなチーム、大きな仕事とかを繰り返し読んでる。技術書も買ってるけど全然読めてない。積ん読してるだけ。なんとか状況を良くしたいと思ってるけど、なかなか状況は良くならない。時間だけが過ぎていく。