2011年11月24日木曜日

友だちの結婚式を全力で祝ってみる

友だちの @backpaper0 さんがご結婚なさった!!

聞くと、結婚式のLT枠が空いてるということなので、ネタを妄想していると湯水のようにアイデアが沸き上がってきて、せっかくなので全力でお祝いするためにここでスライドをちょびっと披露しておこう。




 内容はいずれも、わたしがスライドにあわせて長渕剛の『乾杯』を熱唱する内容となっております。

オファー、お待ちしております。

うらがみさん!! 本当におめでとうございます!!!

2011年11月21日月曜日

Facebookの「いいね!」ボタンが「変態!」になった!?

はい。変態アドベントカレンダー 12日目。強くてニューゲームな二週目です。

bufferingsさんの11日目の「もしかして:変態」に触発されてこんなことして遊んでました。



Facebookの「いいね!」が「変態!」になった!? http://t.co/aVaIcjlVMon Nov 21 14:18:19 via YoruFukurou


さて。それではこれの種明かしをしましょう。

Google Chromeにはデベロッパーツールというのがあります。

メニューバーから[表示]-[開発/管理]-[デベロッパーツール]で表示可能です。


で、このツール。表示中のHTMLとかCSSとかを編集することができます。
編集箇所を選択してダブルクリックするだけ。

この機能で「いいね」の部分を検索して「変態」に改変するだけ。

変態改変はTLのみんなの十八番ですよね!!!

ではでは。おそまつさまでした。

2011年11月20日日曜日

神戸マラソンを走った友達をGPSでストーキングしたというはなし

神戸マラソンのクォーターに@_funyaさんと@sama_n_thaさんが出場されるということで、@nakau さんと一緒に応援に行ってきた。

え? 僕? 一緒に走る予定で申し込んだけど抽選に外れたんだよ! 言わせんな恥ずかしい。

応援といっても市民マラソン。二人がどこを走っているかなど分からないし、人も多くて普通なら走行中の二人をみつけることは難しいだろう。そこで、走行中の二人に位置情報を常時送信してもらい、それを補足しながら行く先々でストーキング応援するという方式を採った。

事前に打ち合わせをしてそれぞれのスマートフォンにアプリを入れておき、当日それを使ってお互いの位置を把握する、という感じ。

ただ、みんなの端末はAndoridやiPhoneとバラバラなので、共通で使えるアプリである必要がある。そこで、これを使った。

ナカマップ

これを@sama_n_thaさんと僕のスマフォにインストールし、これで準備万端! @nakau さんと待ち合わせして観戦エリアで二人が来るのを待つ。


午前09:00いよいよスタート!!

先導の白バイがやってきた!!


うひょー!! カッコイイ!!

位置情報を見ると、@sama_n_tha さんはまだスタート位置。なるほど、参加者も多いし、後方は走りだすのにも時間がかかるのだろう。

で、しばらく待ってみると、最後尾が通りすぎてランナーがいなくなった。
アレ? 二人は?
位置情報を見るとまだスタート地点。しかしその更新時間を見ると30分前……。

なんてこったい!! どうやらバックグラウンドで動作せず、リアルタイムで送信できてない模様!!

しかし案ずる事なかれ。そこは百戦錬磨のITエンジニア。冗長構成により二系統のプランを用意しておりますよ。@_funyaさんが専用のTwitterアカウントを用意し、そこに5分置きに位置情報をツイートする、という方式を仕込んでくださっていた。

使ったアプリはこれ。
pinprick

で、その位置情報アカウントがこちら。
@flameEppe

位置情報を確認すると、かなり速いペースで元町駅にさしかかっていた。
そこで我々も元町駅から電車に乗り、鉄人28号の待つ新長田へ移動する。


ビルの街にガオー♪
新長田の等身大鉄人28号を堪能。

カッコイイわー。


そうこうしているうちに二人の位置情報を見てみると、接近してきた。
沿道に行って二人を待つ…が、人多すぎてわかんねー><

ツイートも5分おきなのでタイムラグがあり、現在の正確な位置まではわからない。ひょっとしたら、気づかずに通りすぎることも普通にありえる。

しかし、ここで奇跡が!?

@_funya さんと @sama_n_tha さんが両手を上げてこっちに走ってきた!!

おおおお!! 頑張ってーー!!!!

大声で出迎える僕。よし! ハイタッチだ!!

あれ!? 両手を上げる @_funya さん。視線はこっちを見てないぞ?
そして僕らをスルーして、すぐ隣の賑やかな応援グループとハイタッチ!!

き、気づいてもらえてねー…!?

しばし呆然と二人の後ろ姿を見送り、気をとりなおしてゴールの須磨へ移動だ。


須磨へ到着した我々。さっそく位置情報を確認する。
新着ツイートを取得する14秒前のつぶやきを受信。



[住所 兵庫県神戸市須磨区須磨浦通5丁目, 速度 6kph, 地図 http://t.co/NZnskPK1 ]Sun Nov 20 01:30:12 via pinprick



大きな地図で見る

え!? 追いぬかれた!?

と、いうことで、電車の我々よりもランナーの方が先にゴールして出迎えられず、という切ない結果に。

10kmという短いスパンだと、電車を待っている時間だったり、交通規制で迂回路を歩かないといけなかったり、やはりランナーの方が早いようである。

あと、ワーキャー言いながらGPS見て追いかける遊びも楽しかったが、やっぱりお祭りは参加する側の方がもっと楽しそう。

次は僕も走りたいものである。

2011年11月19日土曜日

ソーシャル読書会が楽しい

NHKのEテレで、深夜に「Jブンガク」という番組をやっている。

そこで正岡子規の『病牀六尺』が紹介されていて、読んでみたいと思った。


『病牀六尺』は一度ちゃんと向き合って読んでみよう。こういう作品は父親の死を思い出すから避けてたんだけど、もうそろそろ向き合えるだろう。 #etvThu Nov 17 14:55:17 via YoruFukurou

すると賛同してくれる方がいらした。


@daiksy 読んだことないのですが、坂の上の雲ファンとしては、一度読まなきゃなぁと思ってたところで。ツイッターで同期取りながら一緒に読んでみます?Thu Nov 17 15:03:03 via Echofon

こうして、Twitterで同じ作品を読みながら日々の感想をつぶやく、というソーシャル読書会がはじまった。

IT業界では頻繁に、みんなで集まって技術書を読む読書会が開かれる。
一冊の本に対して、いろんな人の感想や読み取り方を聞くことができて大変楽しいイベントなのだが、こういったSNSを使った手軽な読書会も面白い。

自分の気が向いたときにだけ読んで、ハッシュタグをつけてそれをつぶやく。

同じ本を読んでいるのに、それぞれ目の付け所が異なり、それによって作品に対する新たな発見を得たりする。最高に楽しい。

ちょくちょく、いろんな本でやってみたい。

ちなみに現在進行中の『病牀六尺』のまとめはこちら。

http://togetter.com/li/215561

Togetterの編集も含めて誰でも参加自由なのでどうぞお気軽に。楽しいよ!

2011年11月14日月曜日

焼肉食べるついでにJavaの勉強してきた

これに参加してきた。
 やきに駆動 秋のJava祭典スペシャル in 大阪〜こりん星

みんなでプロジェクタに「焼肉小倉優子」のWebページ映しながら、ゆうこりんのお店の紹介動画が動かないとITエンジニアたちが雁首揃えて四苦八苦しているときにネタを閃いたので、みなさんの発表の途中にスライドを作りつつLTをしてみた。

※LTのスライドは肖像権的なアレでお見せできません。ご了承ください。

っていうか、もともと焼肉パーティーまでの前座の勉強会のはずなのにみんなレベル高すぎ!!! お前ら、大好きだ!!!!

詳しくはこちらにまとめられていますお。

http://togetter.com/li/213867

次の鍋駆動テスト勉強会。謎の忘年会に組み込みますかね? とだれとも無く言ってみる。

みなさん、お疲れ様でした。

2011年11月12日土曜日

Twitterのbotを変態仕様にしてみる。

はい! 変態アドベントカレンダー2日目です。

 http://atnd.org/events/22020

おそらくこれで最終日になるでしょう(笑

@backpaper0 さんが素晴らしいエントリ を書いてくださったのでプレッシャーなのですが、僕はいつものように緩くアホなエントリでお茶をにごそうと思います。

以前、Twitterのbotを作って遊んでいたことがあります。

・bot_n_vengioの使い方

このbotに変態仕様を追加実装するとしましょうか。


このbotは、自分宛のmentionを取得して、それをブランド力に変換してその結果をツイートする、という実装になってます。 結果ツイートの編集はこんな感じです。
   private String editTweet(String targetString){
          
         Double power = 0.0;

         for(int i=0;i>targetString.length();i++){
             Integer point = DATA_MAP.get(String.valueOf(targetString.charAt(i)));
             if (point != null){
                 power += point;
             } else {
                 power += 0.0;
             }
         }

         Double score = (power / targetString.trim().length());

         DecimalFormat df = new DecimalFormat(",##0.0");
     
         StringBuilder result = new StringBuilder();
     
         result.append(targetString);
         result.append("のブランド力は");
         result.append(df.format(new BigDecimal(Double.toString(score))));
         result.append("だね。");
     
         return result.toString();    
    }

DATA_MAPというHashMapに文字ごとのポイントを持っているので、それに一文字ずつ変換して文字数の平均を算出し、それをブランド力としています。

このロジックにちょこっとif文をひとつ入れてやりましょう。


   private String editTweet(String targetString){
 
         if (targetString.indexOf("変態") != -1)
         {
              return "← お巡りさん、この人です!";
         }
         
         Double power = 0.0;

         for(int i=0;i>targetString.length();i++){
             Integer point = DATA_MAP.get(String.valueOf(targetString.charAt(i)));
             if (point != null){
                 power += point;
             } else {
                 power += 0.0;
             }
         }

         Double score = (power / targetString.trim().length());

         DecimalFormat df = new DecimalFormat(",##0.0");
     
         StringBuilder result = new StringBuilder();
     
         result.append(targetString);
         result.append("のブランド力は");
         result.append(df.format(new BigDecimal(Double.toString(score))));
         result.append("だね。");
     
         return result.toString();    
    }

これで変態を名乗ると通報されてしまうようになりました。 やってみましょう。


@bot_n_vengio こんにちは。僕は変態!Fri Nov 11 15:28:57 via YoruFukurou

すると……。

.@daiksy ← お巡りさん、この人です!Fri Nov 11 15:30:49 via bot_n_vengio

はい。
ありがとうございました。

このbotのコードはコチラ。

https://github.com/daiksy/bot_n_vengio/

おそまつさまでした。

11/12:追記

Twitterで仕様についてこのようなアドバイスを貰いました。


元発言を RT するようにして、@tw_police2 をフォローすると良いと思います。 / “言葉をポッケに持ち歩こう: Twitterのbotを変態仕様にしてみる。” http://t.co/TsiWKr1eFri Nov 11 16:52:30 via Hatena

はい。ではさっそく改良しましょう!!


 
    private String editTweet(String targetString, String targetID){
     
         StringBuilder result = new StringBuilder();
     
         if (targetString.indexOf("変態") != -1)
         { 
              result.append("← お巡りさん、この人です! RT @");
              result.append(targetID);
              result.append(" ");
              result.append(targetString);
      
              return result.toString();
         }
     
         Double power = 0.0;

         for(int i=0;i>targetString.length();i++){
              Integer point = DATA_MAP.get(String.valueOf(targetString.charAt(i)));
              if (point != null){
                  power += point;
              } else {
                  power += 0.0;
              }
         }

         Double score = (power / targetString.trim().length());

         DecimalFormat df = new DecimalFormat(",##0.0");
     
         result.append(targetString);
         result.append("のブランド力は");
         result.append(df.format(new BigDecimal(Double.toString(score))));
         result.append("だね。");
     
         return result.toString();    
    }


@bot_n_vengio おはよう! 僕、変態!Sat Nov 12 02:14:02 via YoruFukurou


.@daiksy ← お巡りさん、この人です! RT @daiksy おはよう! 僕、変態!Sat Nov 12 02:15:36 via bot_n_vengio


みーつけた。(。・ω・。) RT @bot_n_vengio .@daiksy ← お巡りさん、この人です! RT @daiksy おはよう! 僕、変態!Sat Nov 12 02:20:15 via tw_police2


見事夢のコラボが実現しますた!!!