Google Code Jam 2013 Round 1A

毎年恒例、今年もGoogle Code Jamに参加しています。

A-small, A-large, B-small, C-small-1を正解。
669位でRound 2進出です。

いつもRound 1Cまで粘って辛うじて通過しているので、
1Aで通過したのは初めてでテンションが上がりました。
A問題が得意分野でlargeを通せたのがよかったようです。

A. Bullseye

まずは法則を見つけるため、1本目、2本目、3本目…のリングの面積を求めてみます。
1本目(n=0): π(r+1)^2 - πr^2 = π(2r+1)
2本目(n=1): π(r+3)^2 - π(r+2)^2 = π(2r+5)
3本目(n=2): π(r+5)^2 - π(r+4)^2 = π(2r+9)

1,5,9...の部分をkとすると、k = (2n+1)^2 - (2n)^2 となる気がします。
(てか4n+1なのですが、競技中はこれで進めてました)

したがって、π(2r + (2n+1)^2 - (2n)^2)と一般化できます。
1mlで面積πを塗れるそうなので、πで割るとペンキの必要量になります。

n+1本のリングを塗ったときのペンキの必要量は、
Σ[x=0→n](2r + (2x+1)^2 - (2x)^2)
= 2r(n+1) + Σ[x=0→n]((2x+1)^2 - (2x)^2)
となり、後半のΣの部分をWolframAlphaに突っ込むと、
= 2r(n+1) + (n+1)(2n+1)
となります。

これで、n本の場合のペンキの量がO(1)で出せるようになりました。
あとは、ペンキの量がt以下になる最大のnを求めます。
tの範囲も大きいので、二分探索で求めます。
nの範囲は適当に0 〜 2*10^18としても2^60くらいなので、60回くらいのループで求まります。

ソースコード

B. Manage your Energy

smallは範囲が狭いので、使うエネルギーの組み合わせは5^10 = 1000万通りくらいです。
なので総当たりしました。

ソースコード

C. Good Luck

テストデータのすべてに正解する必要はなく、指定された個数以上合ってればいいという珍しい問題です。
去年の乱択といい、確率問題がよく出ますね。

small-1は、Maryamが選ぶのは2〜5の数字を3個なので、
組み合わせの数はH(4, 3) = C(4+3-1, 3) = 20通りです。
Hは重複組み合わせです。今回ググって初めて知りました。

で、3個の数の部分集合は2^3 = 8通りです。
なので、数の集合とその部分積をすべて列挙しても20 * 8 = 160要素のテーブルで済みます。

テーブルを作ったら、与えられた積になり得ない数を削除していきます。
例えば、積が10なら、3 3 3の部分積は10になり得ないので、3 3 3を削除します。
こうして残った数のうち、適当に1つを回答します。

この方法でsmall-1は通りました。small-2はテーブルを作り終わる前にタイムアウトでした。
ちなみにRubyだと、Array#repeated_combination, Array#combination, Array#injectで一瞬でテーブルが作れました。超便利。

ソースコード

無断転載じゃないワロスbotを作ってみた → @1000favs_RT, @1000Retweets_RT

忙しい人へのまとめ

ワロスbot([twitter:@wwwww_BOT])は人気のツイートを無断転載して、フォロワー数を増やしています。
そして、ときどき広告を入れて広告費を稼いでいます。それを企業としてやっています]。
他にも、同様のbotは多数あります。

無断転載されると…

  • 感じ悪い
  • 公式リツイートじゃないので、原作者にたどり着くのが難しい
    • ツイートが気に入っても原作者をフォローしにくい
  • ツイートの反響が、本来受け取るべき原作者に届かない
  • 原作者がツイートを削除したくなっても、削除できない

また、Twitter利用規約に、「繰り返し他のユーザーのツイートを自分のものとして投稿した場合」は利用規約違反になると明記されています。

そこで、原作ツイートを自動で検索し、公式リツイートするbotを作りました。
このbotをフォローすれば、無断転載ではなく、原作のツイートを読むことができます。

詳しく知りたい人は最後まで読んでみてください。

コピペツイート

最近Twitterで、ツイートのコピペ行為を見かけます。
これは公式RT*1をせずに、他人のツイートをコピペして自分のツイートとして発信することです。

コピペ行為には、様々な問題点があります。

単純にパクリ

パクられた側はいい気はしないでしょう。よく練り込んだ渾身のツイートならなおさらです。

原作者にたどり着きにくい

公式RTされたツイートには、原作者のホームへリンクが張られています。
原作者に興味を持ったら、過去のツイートを読んだりフォローしたりすることが自然にできます。

コピペツイートの場合、原作者を探すことが難しくなります。
ツイート内に原作者のアカウント名が書かれていることもありますが、それでも検索したりする手間がかかります。

原作者が受け取るべき反響を奪う

Twitterでは、価値のあるツイートにはリプライ・Fav(お気に入り)・RT(リツイート)などで反響が寄せられます。
思わぬ反響に驚くこともありますし、反響を狙って練り込んだツイートをする人もいます。

コピペツイートでは、コピペしたアカウントを発信者としてツイートが広がるため、
原作者が受け取るべき反響を、コピペしたアカウントが奪うことになります。
反響が原作者に伝わりにくいだけでなく、原作者の知名度が上がる機会なども自分のものにしていることになります。

原作者がツイートを削除できない

公式RTの場合、原作者がツイートを削除すると、公式RTで拡散したツイートも消滅する仕組みになっています。
ツイート内容に誤りがあった場合など、これ以上の拡散を望まないときに、原作者の判断でRTを止めることができます。
コピペツイートは原作者の意思で削除ができないため、意図に反して広がり続けてしまいます。

コピペbot

最近、ワロスbotを筆頭に、コピペツイートばかりを自動的に行うbotが多数存在しています。
これらのアカウントは、主に人気のツイートを対象としてコピペを繰り返しています。

ここで言う人気のツイートとは、FavやRTを多く集めたツイートのことです。
Favstar, ふぁぼったーなど、人気のツイートを集めたサイトがあるため、
これらのサイトをクロールすれば、機械的に大量に手に入れることができます。

コピペbotはフォロワー数が多いものが多く、これらのbotがコピペをすると大きな影響があります。
10000フォロワー程度のものは多数あり、中には300000〜500000フォロワーのものも存在します。

なぜそんなに成長するのでしょうか?
人気のツイートは注目を集めた実績から分かるように、コンテンツとしての価値が高いです。つまり、RTされやすいのです。
それをコピペすることで、そのツイートはコピペbotを発信者としてどんどんRTされていきます。
するとコピペbotに注目が集まり、フォロワー数が増えていきます。
フォロワー数が多くなれば、より多くRTされるようになり、さらにフォロワー数が増えやすくなるという循環が起きます。

実際悲しいことに、RTするよりコピペしたほうがフォロワー数が増えるという現実があります。

コピペbotの中には、アフィリエイトのリンクが入ったツイートを混ぜるものもいます。
パクリ行為で注目を集めた上に、金銭的な利益まで得ているのです。

動機と経緯

こうしてコピペbotは幅をきかせていて、私のTLにもときどきコピペツイートのRTが流れてきます。
私がフォローしている人の中にも、コピペbotを毛嫌いしている人がいました。

この状況を見ていて、やはり原作者にはフィードバックがあるべきだと考えるようになりました。
自分自身ときどきFavやRTをもらうことがあり、反響があるのは楽しいと感じています。

また、Fav, RTの数を競うことに強いこだわりがある人もいるようです。
彼らにとっては、コピペbotは目の敵でしょう。

少し抽象的な話ですが、1人の技術屋として、Twitterに限らずコピペは嫌いです。
情報のコピペは様々なデメリットがあり、極力行わないように普段から気をつけています。
コピペをせず、ソースを明示できる公式RTという手段があるのに、それを使わずわざわざコピペする行動に苛立ちを感じていました。
原作者へ飛ぶのが面倒など、1ユーザーとしてリアルに不便も感じていました。

そこで私はささやかな抵抗として、コピペbotのツイート内容が気にいったときは、
本文で検索してオリジナルのツイートをFav, RTするようにしました。
当然、面倒です。でもこれは意義のあることだと思います。
たまに面倒でそのままFavすることもありますが、少なくともRTはしないようにしています。
コピペbotの利益にさせたくはありません。

何度かこれを行っているうちに、自動化するのは技術的に可能そうで、面白そうだと思うようになりました。
本文で検索してオリジナルのツイートを見つけることができたり、
コピペ回数のランキングを作ってコピペbotをさらし者にするようなサイトの企画を考え始めました。

そう思っていたとき、ぱくったーが公開されました。
考えていたサービスとほぼ同じで、しかもサイトの文面が切れ味抜群。タイトルからしてキャッチーです。

出遅れた悔しさも加わって、テンションが上がってきました。
そこで、他のアイデアのひとつを急いでリリースすることにしました。

アンチコピペbot

コピペbotがコピペツイートをするたびに、そのオリジナルを自動で探して公式RTするbotを作りました。
一言で言えば、コピペbotの公式RT版です。「アンチコピペbot」と呼ぶことにしましょう。

詳しく説明すると、以下のように動作します。

  • コピペbotの新規ツイートを監視する
  • 新しいツイートが来たら、その本文をGoogleで検索し、オリジナルのツイートを見つける
  • オリジナルを公式RTする

コピペbot([twitter:@1000favs])とアンチコピペbot([twitter:@1000favs_RT])を並べてみてください。
同じ内容のツイートが並びます。

しかし、かたやコピペで同じアイコンが並び、原作者にたどり着きにくい。
かたや公式RTで色とりどりのアイコンが並び、原作者のホームにすぐ移動できます。
この2つを見た人は、当然アンチコピペbotを選ぶでしょう。

おわりに

アンチコピペbotの裏話、いかがだったでしょうか?
既にご存じの方は今後とも、初めて知った方はこれをきっかけに、コピペ問題に関心を持っていただければと思います。

敢えてコピペbotを肯定的にとらえると、面白いツイートのまとめとしての価値があります。
コピペの問題を意識しない人にとっては、単純に「面白いツイートがどんどん流れてくる、便利なアカウント」です。
また、公式RTをするスタイルでは、おそらくここまで広まることはなかったでしょう。

Twitter社には結構な数のスパム報告が届いていると思うのですが、コピペbotがなかなか凍結されないのは、
こういった側面が理由になっているのかもしれません。

とはいえ私自身は反対の立場に変わりありません。
今後も、ほかのコピペbotの公式RT版を作っていく予定です。
また、他のアプローチでコピペ対策ができないか、アイデアを練っています。
みなさんも面白いアイデアがありましたら、ぜひお寄せください。共にコピペ行為と戦いましょう。

*1:公式リツイート。ソースを明示して、自分のフォロワーにツイートを広める仕組み

Android 4.0 + IIJmioで常に圏外表示になる問題の対処法

Galaxy S2 LTE (SC-03D)にCyanogenMod 9をインストールした環境で行っています。

こちらの手順を参考に、自分の環境に合わせて少し変更しています。
http://bl.oov.ch/2012/01/android-sim.html

開発者向け設定で

  • USBデバッグ → 有効
  • Rootアクセス → アプリとADB

端末をUSBで接続。ストレージは有効にしない

datasim_framework_jar_patcher_20120317.zip を解凍
execute.batを実行

API Levelは

Android 4.0.3〜 :    15 : Ice Cream Sandwich MR1

モードは

99 : モード 0 でダメな場合

緊急通報は

0 : 変更しない

コマンドプロンプト

adb push C:\datasim_framework_jar_patcher_20120317\framework.jar /sdcard/framework.jar
adb shell

adb shell内で以下を実行
ここで失敗すると起動しなくなるかもしれません。自己責任で。

su
mount -o rw,remount /dev/block/mmcblk0p24 /system  # デバイス名は mount で確認してね

cd /system/framework
cp framework.jar framework.jar.bak
cp /sdcard/framework.jar framework.jar
chmod 644 framework.jar

ボリューム上下を押しながら起動し、ClockworkMod Recoveryに入る
「Wipe cache partition」と、「advanced」の中にある「Wipe Dalvik Cache」

再起動すると、アンテナピクトが正しく表示されているはずです。
セルスタンバイでバッテリー消費が激しい問題は、まだ確認していません。

Galaxy S2 LTE (SC-03D)にCyanogenMod 9をインストール

手順をまとめておきます。
ドコモのアプリやサムソンのダサいUIから解放され、ほとんど素の状態のAndroid 4.0が楽しめます。
詳しくないのですが、CyanogenMod独自の便利機能もいろいろ入っているようです。

もちろん自己責任でお願いします。
エリアメールが使えなくなるので、地震で逃げ遅れるかもしれません。

ファイルの入手

Check Fus Downloaderで、
Choose a firmwareを以下の設定に

  • Android
  • SC-03D
  • Japan - SGH-N034DANDCM

Check firmware → Download

https://github.com/kbc-developers/release/wiki/sc03d から

  • cm-9-20121101-UNOFFICIAL-celoxdcm.zip
  • SC03D-ICS-KBC-20121031-recovery-odin.tar

をダウンロード。前者はSDカードのルートに置く

http://goo.im/gapps/gapps-ics-20120429-signed.zip をダウンロード。SDカードのルートに置く

インストール

Odin3のPDA欄で

  • SC03DOMLPH_SC03DDCMLPH_SC03DOMLPH_HOME.tar.md5 を焼く
  • SC03D-ICS-KBC-20121031-recovery-odin.tar を焼く

ボリューム上下を押しながら電源ON

ClockworkModで

  • wipe data/factory reset
  • wipe cache
  • cm-9-20121101-UNOFFICIAL-celoxdcm.zip をインストール
  • gapps-ics-20120429-signed.zip をインストール

既知の問題

IIJmioのSIMでは、アンテナピクトが常に圏外になる。3G通信は可能。バッテリーの消費が激しいかは確認中
http://techlog.iij.ad.jp/archives/487

ニコニコ超会議 2日目

行ってきました。

  • エンジニアミーティング
  • ニコニコ学会
  • ニコつく

あたり。

入場待機列とエンジニアミーティングではいろいろつぶやいてたのでこちらを。
ニコニコ超会議 2日目 - Togetter

ニコニコ学会は、頭の下がり具合で聴衆の関心度合いをデータ化したり、
網戸にミクを投影して立体映像っぽく見せていたのが面白かったですね。

ニコつくでは技術部が出展していました。作品の実物を見るとインパクトが全然違います。
トイレットペーパーにタコメーターを搭載してたのがアホでよかったです。
ニキシー管の巨大スペアナもインパクトがありました。

なかでも、最後に見た人力3Dがすごかった。
赤青メガネで立体模型の影絵を見るのですが、光源が赤と青の2点あることで3Dに見えます。
ドームスクリーンに投影していて、上から迫ってくるのが迫力ありました。
アバターより飛び出すとの前置きでしたが、けっこうガチです。
中の人も話し慣れている感じで、大道芸の経験がありそうでした。

全体的にウワサ通り混んでいましたが、がんばった甲斐はありました。
次があるならビッグサイトだとうれしい。

Google Code Jam 2012 Round 1A

A-small, Bを正解。1251位でした。
A-largeはほぼ解けていたのですが、ケアレスミスで落としてしまいました。
合っていれば余裕で通過だったのですが…Round 1Bをがんばります。

A. Password Problem

指示通り計算するだけです。
ただし、backspaceの場合を素直に実装するとO(n^2)になり、
ワーストケースで100000^2なので間に合いません。
これに気付かずlargeを実行してしまい、慌てて直したのですが配列のindexがひとつずれていてwrong。残念な結果でした。

バグ修正後の、largeが通るコードです。
GCJ 2012 Round 1A - A. Password Problem · GitHub

B. Kingdom Rush

サンプルを眺めてると、Greedyでいけることに気付きます。

下記の繰り返しで解けます。

  1. 現状で、2-starでクリアできるレベルを選びます。複数ある場合はどれでもかまいません。
  2. 現状で、1-starでクリアできるレベルを選びます。複数ある場合は、2-starの条件が最も厳しいものを選びます。
    • 例: サンプルのCase #4で、0 5, 0 1の2択になったら、0 5を先にクリアします。
    • そうすることで、次に0 1の1-starを飛ばして2-starに挑戦でき、1回節約できます。
  3. どちらも不可能で、未クリアのレベルが残っている場合はToo Badです。

サンプルがヒントになっているあたり親切ですね。
GCJ 2012 Round 1A - B. Kingdom Rush · GitHub

C. Cruise Control

レーンチェンジが必要なのは、前後の車との間隔が0mになった瞬間だけです。たぶん。
事前にレーンチェンジしないと間に合わない場合はないと思います。

それなら、その瞬間の時刻を2分探索で求めればいいのかな。
…くらいまで考えたところで気力と時間が尽きてしまいました。

明日はGoogle Code Jam Round 1A

明日はGCJですね。みなさん準備はいいですか?

私はソースコードのテンプレートと、bashの関数をいくつか用意しているところです。
後者は問題ごとのソースファイルの作成・実行を手早く行うためです。
ヒューマンエラーを防ぐ意味も大きいです。競技中は慌てやすいので、
うっかり違うデータで実行したりファイルを上書きしたりしたら大惨事。

ということで、作った物を晒してみます。
大して実力もない人間の、しかもRuby用ですが、よかったら参考にしてみてください。
軽くデバッグしてありますが、手元での確認も忘れずに。

GCJ ruby template · GitHub
GCJ bash aliases · GitHub

自分用のバックアップの意味もあります(去年も作ったのですが、なくしました…)

オンラインでペアプログラミングしてみました

ペアプロ合コンで知り合った方と、オンラインでペアプロをやってみました。
思った以上に快適だったので、手順をまとめてみます。
両者のPCがWindowsなのを前提にしていますが、Macでも同様にできそうです。

概要

例えば、男性が教える側(ナビゲーター)、女性がコードを書く側(ドライバー)とします。

  • 男性のPCに開発環境を用意します
  • リモートアシスタンスで女性を招待し、男性のPCに接続します
  • 女性側から「制御の要求」をし、男性側で許可します

これで男性のPCの画面が女性側から見えるようになり、マウスとキーボードで操作もできます。
実際に会ってノートPCを貸しているのとほぼ同じ状態ですね。

男性側からも操作できるので、ややこしい作業をするときにアシストしたり、
ここのところね、と示すのにマウスカーソルや範囲選択を使ったりもできます。

テキストチャットだと大変なので、Skypeなどで音声通話しながら進めるのがいいでしょう。

詳しい話

開発環境はご自由にどうぞ。男性側のみが用意すればいいのもこの方法のメリットです。

リモートアシスタンスの使用方法は、こちらを参考にしてください。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1409rassist7/rassist7.html

「簡単接続」はうまくいかなかったので、「招待をファイルに保存」を使用しました。
ファイルとパスワードを相手に送信する必要がありますが、これもSkypeなどで行うと簡単です。

男性側のPCの方が解像度が高い場合は、女性側に合わせて解像度を下げると
くっきりした画面で見ることができます。逆の場合はたぶん問題ないでしょう。

注意点

デスクトップがすべて見えてしまうので、プライバシーにご注意。
デスクトップやブックマークの見られたくないものは隠しましょう。
またブラウザをプライベートブラウジングモードにしたり、
ATOKの予測候補を非表示にしたりしておくとよいと思います。

感想

PCのスペックや回線状態にもよると思いますが、レスポンスが良く想像以上に快適です。

接続も手こずるかと思ったのですが、特にルータの設定なども必要なく、あっさりつながりました。
UPnPでうまくやってくれてるんですかね。

Macの方もiChatで同様のことができるそうなので、試してみてはどうでしょう。

オンラインで気軽にできるので、週末のちょっとした空き時間などが活用できておすすめです。

第1回ペアプログラミング合コンに行ってきました

第1回ペアプログラミング合コンに行ってきました。レポートしてみます。

申し込み

Zusaarのページで、先に女性枠の募集がありました。
その頃Twitterで見かけて、おもしろすぎる、参加するしかないと決意。
集まるのかなー、と見ていたら、しばらくして20人の枠がちゃんと埋まっていました。

[twitter:@pp_con] をフォローして、男性枠を待機。
運良く、募集開始数分後に気づくことができました。
すぐ申し込み。その時点ですでに私は9人目でした。
眺めているとみるみる枠が埋まり、開始45分後には20人の枠が埋まりました。
その後も補欠が増え続けて、最終的に114人。あまりの盛況で募集打ち切りになってしまいました。

選考

人が集まりすぎたせいか、早い者勝ちになったからか、
運営の方も参加者のスキルが不安になったのでしょう。事前選考が行われました。
補欠からの繰り上がりもあるとのことです。

Rails / CakePHPの経験をPRしてください、という内容。
PR文でいいのかなと思って、過去に作ったものの説明などを送りました。

するとしばらくして、

コードで示してほしい。GitHubのアカウント持ってるよね?

という連絡が来ました。
後出しかよ、と思いましたが、やってやろうじゃん、という気持ちもあり、応じることにしました。

特にアイデアもなかったので、事前にもらっていた当日のお題のとおり、
マイクロブログのようなものを作って提出しました → デモソース
模範解答にしておけば外さないだろうとか、当日のイメトレにもなるだろうという目論見もありました。

当日

無事選考を通過し、当日です。

会場は暖色系の落ち着いた雰囲気。大きなテーブルが5つと、ソファーの席もありました。

自己紹介シートが配られたので目を通してみます。
参加者の層はなかなか幅広く、女性は20代前半〜30代、男性は20代後半〜30代くらい。
女性は大学生からベテランのエンジニアまで幅広く、男性はバリバリのエンジニアが多い印象でした。
プログラミング経験も人それぞれで、男女ともに初心者から10年以上のベテランまでいたようです。

まずチーム分けが発表されて、参加者はそれぞれのテーブルに分かれました。
チーム名は動物の名前で、Ruby関連のオライリー本の表紙から取ったそうです。

続いてスタッフの方からアナウンスや、ペアプロについて簡単な説明。
その後herokuの中の人からherokuの紹介がありました。
このへんは普通に勉強会っぽいものの、フランクな雰囲気で話していただいて場の緊張がほぐれてきました。

第一幕

くじ引きをして最初のペアを決定。隣に座ってペアプロスタートです。
時間は30分×2で、間に10分の休憩をはさみました。

最初はお題通りマイクロブログを作ることに。
ペアの方はプログラミング初心者だったので、
解説と雑談を交えつつ、Railsチュートリアルをゆっくり進めました。
scaffoldを生成し、そのコードを参考にトップページを作り始めたところで時間切れ。
htmlの経験がある方で、ここから楽しくなるところだったので残念です。

休憩時間にはお菓子やケーキが振る舞われました。おいしく食べつつ雑談。
お菓子もそこそこに、ガリガリ実装を進めるペアもいたようです。

ワールドカフェ

ペアプロが一区切りついた後、各テーブルでワールドカフェをしました。
私も含め、初挑戦の人が多かったようです。

テーブルの真ん中に大きな紙を置いて、その中央にお題を書きます。
そこになんか適当な物を「トーキングオブジェクト」として置きます。
話す人はこれを取り、話し終わったら戻します。持ってないときは話してはいけません。口をはさむの禁止、というシステムです。
あんまり話してない人がいたら、話を振りつつ渡してあげたりもします。

で、お題からどんどん話を広げていきます。ブレストのように人の意見を拾ったりしつつ、自由に話します。
お題は「プログラミング」で、言語やエディタの話につながっていって盛り上がりました。

第二幕

同じテーブルで再度くじ引きをしてペアを交代。同じ時間配分で第二幕です。

今度のお相手はディレクターの方で、自分でコードを書くよりは
Webアプリがどういう仕組みかを知りたい、ということでした。

動作デモやコードを見ながら、MVCの役割分担・JavaScriptがカバーする範囲などを話しました。
中でも、Viewでのhtmlとerbの連携に興味を持ってもらえました。
そこから、エンジニアとデザイナの分業をどうするかという話につながったりもしました。
CoffeeScriptにも興味があるそうでしたけど、私が未経験で実演できなかったのが残念。

懇親会

2セットのペアプロが終わって、懇親会です。
同じ会場で、オードブルを並べて立食形式。

前に行った勉強会では1人でぼーっとしている人も結構いたのですが、
ここではそれもほとんどなく、男女もほどよく混ざり合ってとても盛り上がっていました。

どうも多くの人に覚えてもらえていたようで、何度も話しかけてもらえました。
事前に #ppcon でつぶやきまくり、当日もアイコンを印刷した名札を下げていたからだと思います。
これ、意識してやってみるといいかもしれません。他の勉強会でも使えそうですね。

酒が回ってきたところで、なぜかその場の勢いでワールドカフェが始まりました。

お題は「理想のデート」→ ラーメン → 飲み放題 → ホテル行く、けど何もしない → 飲み放題
コスプレ → 制服 → セーラー?ブレザー? → ニーソ → 黒派?白派? → いや、黒タイツ

楽しすぎです。この場の男女比は推して知るべし。

二次会

さらに希望者で近くの居酒屋へ。女性参加者が少なかったのが残念。
4人ずつのテーブルとカウンターに分かれましたが、
イスを動かして集まったりもしてここでも大盛り上がり。

ところで、

うp!うp! その場にいなかったのが悔やまれます。

これに限らず、懇親会の時から楽しそうに談笑したりハグしたり、女性陣同士もとても仲良かったです。

まとめ

私の文章だと堅めに感じてしまったかもしれませんけど、全体通して和やかでとてもいい雰囲気でした。

プログラミングそっちのけで合コンになるか、ガチで勉強会になるかのどっちかを想像していたのですが、
後者に寄りつつも堅くなりすぎず、いい会だったと思います。運営の方の手腕を感じました。

ガツガツした人もいなくて居心地がいいので、合コンと聞くと尻込みしてしまう人にもおすすめです。

コピペbotに対抗するbotを作りました

どんなの?

1000ふぁぼツイート(1000favs)の元発言を探し出して公式RTするボットです。
[twitter:@1000favs_RT]

最近、人のツイートをコピペして自分の発言として流すbotが流行しています。
公式RTをしていないので、下記の点で問題があります。

  • 原作者が受け取るはずのfav・RTを自分のものにしている
  • 元ツイートや、原作者のアカウントにたどり着きにくい

原作者を差し置いて、botの名義でfavstarなどのサイトに取り上げられることも増えてきました。
botの名義で、というのがタチの悪いところで、
露出が増えてさらにフォロワーを増やす悪循環になっています。

しかし、コンテンツとしての価値があるのは正直認めざるを得ません。
人気のツイートを集めているので当然なのですが。

そこで、これらの問題を解決するためにbotを作りました。
個人的に元ツイートを探してふぁぼったりしていたので、その手間を省くためでもあります。
意識の高い方は同じようなことをしているだろうなと。

賛同してくださったら、こちらをRTして拡散にご協力ください。

個人攻撃と思われるかもしれませんが、他のコピペbotに対しても同様のものを作る予定です。
敵はあくまで、コピペ行為です。

リリース後の反響

2012/1/20 21:24ごろにリリースしました。
その後、数人の著名な方をはじめ、多くの方に拡散にご協力いただきました。

順調に広まっていったようで、2日間でおよそ1700フォロワーにまで成長しました。
みなさんの声は、後ほどtogetterでまとめようと思います。

内部の仕組み

以下のフレーズでGoogle検索をかけて、元ツイートを探しています。

"(ツイート内容) twitter.com/(アカウント名) site:twitter.com"

"(ツイート内容) (アカウント名) site:favstar.fm"

手作業でも使える方法なので、コピペツイートに出会ったときは検索してみてください。
普段から元ツイートをfav・RTするようにするのが理想ですね。

ツイートが長い場合は検索キーワードの文字数制限にかかるので、
後ろを切り捨てたりしてください。

ターゲットのbotの発言は、Streaming APIで監視しています。
そのため、即座に反応します。ラグは検索時間を含めても数秒程度です。
…といってもまだ不安定なので、ときどき中の人が手動RTしてたりします。