2011年12月30日金曜日

2011年に参加した勉強会やIT系イベントのまとめと来年やりたいこと

今年一年を振り返るエントリを書こうと思い、いろいろ考えてみると、今年はやっぱりいろんな勉強会やイベントに参加して物凄く世界が変わった一年だったな、思ったので、そのあたりを個人的にまとめてみようと思います。

去年(2010年)にエンジニアライフでコラムを書くようになって、そこでエンジニアライフのオフ会とか、イベントなどでライトニングトークをしたり、イベント開催のお手伝いをさせてもらったりしながら「おもしろい世界があるなぁ」と思い、今年(2011年)になっていろいろな勉強会やイベントに行くようになりました。

■2011年1月
この頃は、関西在住のコラムニストさんたちとオフ会(ただの飲み会)をしてましたね。他にはminami.rbという勉強会に何度かお邪魔してました。ただ、勉強の興味がいろいろ変化して、Rubyはちょっとお休みしてしまってます。
いずれきちんと勉強したいと思ってる言語なので、またそのときはよろしくお願いします。

■2011年2月
この月は勉強会参加はゼロでした。
エンジニアライフのコラムニストさんとやっぱり飲みに行ったり、岡山の方までカキを食べに行ったり、関東のコラムニストさんとお酒飲むために東京に行ったりしてました(笑
交流の中心はあくまでも「エンジニアライフ」でしたね。

■2011年3月
3月は、会社業務の一貫として、某シンポジウムに参加してました。
クラウドについて研究して、それの発表をする、というもの。僕は論文の執筆担当で、2月からずっとひたすら論文書いてました。

シンポジウムの様子はこんな感じ。

・初日
http://daiksy.blogspot.com/2011/03/blog-post.html
・二日目
http://daiksy.blogspot.com/2011/03/2.html

シンポジウムが終わった後に、あの震災がありました。

3月の後半には、コラムニストさんで集まってFacebook勉強会なんてことをやったりもしました。

■2011年4月
4月3日にこちらのイベントに行きました。

・Untitled!!!!!!!!
http://m2.cap-ut.co.jp/un/

震災の直後で、エンジニアたちで何かできないか、という主旨のイベント。
こちらのイベントがきっかけで、Web系の開発という世界への興味が深まったりもしました。

4月16日は、OSC神戸へ行きました。

・OSC神戸
http://www.ospn.jp/osc2011-kobe/

このときの懇親会で、かねてからTwitterのフォロワーでもあったOSCのスタッフさんとはじめてお会いして、そのご縁で夏のOSC京都に出展することになりました。

4月30日。
Scalaという言語に興味があり、少しずつ自分でも勉強していたのですが、Scala本の読書会があるということで参加しました。

・Scala本読書会 第一回
http://atnd.org/events/14177

この勉強会で知り合った方たちとは今でもお付き合いが続いていて、僕が「エンジニアライフ」以外の場で活動するきっかけになった勉強会だったと言えるかもしれないです。

■2011年5月
5月20日、こんな勉強会にお邪魔しました。

・関西DB勉強会「DecoBoco」
http://atnd.org/events/14380

エンジニアライフでコラムを書かれていた生島さんが講師をされる、ということで行ってきました。普段、アプリの開発でDBを扱ったり、SQL書いたりしてますけど、餅は餅屋というか、データベースを専門的に扱うエンジニアさんのお話をいろいろ聞けて面白かったです。

あとは、何度かモクモク会という名の朝活を会社の近くのカフェでやったりしてました。

・モクモク会
http://daiksy.blogspot.com/2011/05/blog-post.html

こちらは中断してますが、また復活させたいですねぇ。

■2011年6月
・Javaソースコードリーディング 第4回
http://atnd.org/events/14143

Twitter4jのコードリーディングですが、今やTwitterの中の人となられたTwitter4jの作者である@yusukeyさんも来てくださった、楽しい勉強会でした。

僕もLTをさせてもらいました。
http://daiksy.blogspot.com/2011/06/twitter4j.html

あと、この勉強会をきっかけにして、TwitterAPIの本を献本いただき、書評を書いたりもしました。
http://el.jibun.atmarkit.co.jp/bookshelf/2011/07/post-4166.html

6月の後半にはコラムニストさんとHTMLの勉強会とかもしましたね。

■2011年7月
エンジニアライフのコラムニスト一同、ということで、OSC京都に参加しました。
ブースを出展し、コラムニスト数名でLTをやるセッションで登壇しました。

http://daiksy.blogspot.com/2011/07/osc-2011.html

http://jibun.atmarkit.co.jp/lcom01/special/osc2011/01.html

これは楽しかったですねぇ・・・。
来年ももっとパワーアップしてなんかやりたいと思ってます。

■2011年8月
・play! framework勉強会
http://daiksy.blogspot.com/2011/08/play.html

play! frameworkの勉強会です。第二回の東京での勉強会にも後に参加することになります。こちらでは30分のセッションをさせていただきました。
僕の勉強会での発表としては、今のところ最長ですね。

・Javaらへん読書会
http://daiksy.blogspot.com/2011/08/java.html

Javaっぽい本についてみんなで紹介しあいましょうという会。
ここで披露したJoJo LTは、僕のLTの代表作(?)になりました 笑。

■2011年9月
もともと、エンジニアライフのオフ会的なイベントをしましょうということで企画を進めていたのですが、いろいろな人たちの協力により、一つの大きなイベントになりました。
僕が今年参加したイベントの中でも最大の規模のイベントです。

・ITコミュニティ夏祭り
http://tcc.nifty.com/cs/catalog/tcc_schedule/catalog_110816203681_1.htm

http://daiksy.blogspot.com/2011/09/it.html

IT系のコミュニティや勉強会の初心者の方に、「勉強会やコミュニティって怖くないよ。すごく楽しいよ」ということを伝えようという主旨のイベントです。

僕は第一部のトークセッションと、懇親会でLTをしました。

ちなみに懇親会では例の JoJo LTをやったのですが、こちらは自分のLT史上もっとも会場を爆笑の渦に叩きこみました 笑。

■2011年10月
・第二回 Play! framework勉強会
http://daiksy.blogspot.com/2011/10/2-playframeworklt.html

大阪で開催した第一回勉強会からの流れで、東京に行ってきました。
東京での知り合いがたくさんできたので、来年も何度か東京の勉強会やイベントに行きたいと思ってます。

・Scala勉強会
http://daiksy.blogspot.com/2011/10/scala.html

すごく面白い勉強会でした。また、それと同時に自分の勉強がまだまだ足りないな、と思った会でもありました。
この勉強会をきっかけに、来年「関数型言語勉強会」を開催しようと思っていますので、よろしくお願いします。

■2011年11月
・ やきに駆動 秋のJava祭典スペシャル in 大阪〜こりん星
http://daiksy.blogspot.com/2011/11/java.html

みんなで焼肉食べるついでに勉強しましょう、という会。
いつも集まる勉強会仲間と、内輪でワイワイ遊ぶ感じですが、妙に濃い発表があったり楽しかったです。

■2011年12月
・謎の忘年会改め「忘年会駆動 年末発表しつくしセール 〜除夜のフエ聞きながら年越しラムネですね、分かります〜」
http://daiksy.blogspot.com/2011/12/blog-post_23.html

こちらも11月の焼肉と同様、忘年会きっかけの会です。

11月と12月は、勉強会というベクトルに対してトーンダウンしてます。
これはまた、年明けにきちんとエントリを書こうと思ってますが、この時期は自分自信の仕事に対しての環境を変えるための具体的な活動にリソースを集中させていたので、あまり勉強会に時間を割くことができなかったんです。
その活動にも良い結果が出たので、来年はまた勉強会活動にも積極的に取り組もうと思ってます。

■その他
・変態アドベントカレンダー
http://atnd.org/events/22020


・Play! framework Advent Calendar
http://atnd.org/events/22247

■来年やりたいこと
・関数型言語勉強会
今年の秋に、準備会ということでお手伝いくださる皆さんといろいろお話させていただきました。春頃には開催したいので、その際はよろしくお願いします。

・LT大会
友人のつてで、某所の寄席を会場として借りられるということなので、寄席を会場としたLTイベントを開催しようと思っています。
こちらも暖かくなってきた頃の開催を予定しています。

・study4bg
2月開催の勉強会に呼んでいただいたので、何かお話させていただきます。
http://el.jibun.atmarkit.co.jp/azk/2011/12/--1---bd60.html

・その他面白い事なんでも。
来年は今年以上に面白いことしたいですね。OSCにもまた参加しようと思ってます。

■まとめ
2011年は、つらいことやしんどいこともたくさんありました(例:デスマ)。
ですが、こうして振り返ると、充実した良い一年でもありました。

新しい友人もできました。
いろいろな悩みを打ち明けたり、相談にのってもらったり、自分にとってかけがえのない人間関係を築くこともできました。

2012年も、今年以上に良い一年になるよう、頑張ろうと思います。

2011年12月23日金曜日

忘年会駆動勉強会に行ってきた。

忘年会駆動勉強会に行ってきた!

正式名称は、謎の忘年会改め「忘年会駆動 年末発表しつくしセール 〜除夜のフエ聞きながら年越しラムネですね、分かります〜」

もともとはフグが食べたいなーと思って、勉強会仲間を誘って忘年会やろうと思ったら、tangoさんの会社の会議室が借りられるということで、みんなで勉強会してきました。

経緯はこちら。
http://togetter.com/li/224500

で、僕はアップルパイの実装についてと見せかけたポモドーロについての今更感漂うお話をしてきました。

他にも、@backpaper0さんのベルセルクLTと見せかけたO/Rマッパの話があったり、@irofさんの来年の勉強会の紹介があったり、@hakuraiさんのdukeくんのモデリングについての話があったり、@tan_go238さんのJavaのオンラインエディタを見せてもらったり。

っていうか、dukeくん、凄いっすよ。


これは本当に凄い。
次回はこれの着色版と量産型が披露されるのかな? |д゜)チラッ

で、勉強会のあとは、みんなでフグのコースを美味しく頂いて、
たいへん楽しい勉強会でした。

みなさんとは今年になって知り合った方たちばかりですが、こうして忘年会とかできることはたいへん幸せなことだなぁと思います。

来年もよろしくお願いします。 

2011年12月3日土曜日

皆もすなるランニングといふものを、我もしてみむとてするなり

大阪マラソン、神戸マラソンとそれぞれ大成功のようで、なによりです。

実はこれらは僕も走りたいと思って、申し込んでいたのですが抽選で落ちてしまって…。結局神戸マラソンは友人の応援などしてました。

神戸マラソンを走った友達をGPSでストーキングしたというはなし
http://daiksy.blogspot.com/2011/11/gps.html

落選したとはいえ、せっかく走ろうとヤル気を一度は出したのだから、一度くらいはちゃんとしたマラソン大会を走りたいと思い、来年の2月にこういうイベントがあることを友人が教えてくれたので、10kmコースにエントリすることにしました。

神戸バレンタイン・ラブラン
http://www.sanspo-marathon.com/entry.php?itemid=54418

で、参加が決まったら真面目に練習せねばならないので、さっそくシューズを購入。


どうせ走るなら、楽しく走ろうと思い、iPhoneにNike + GPSを入れて、とりあえず初回は3kmほどゆっくり走りました。

Nike + GPS
http://itunes.apple.com/jp/app/nike-gps/id387771637?mt=8

Nike + GPSですが、これは凄く楽しいです。

各種設定後、ワークアウトを開始すると、そこからGPSを使った計測がはじまります。FacebookやTwitterと連動させることで、開始や終了時の記録をソーシャルにシェアすることもできます。

イヤホンを装着し、iPhoneに入れてる音楽を聞きながら走るのですが、1kmごとにその旨と総経過時間、1kmごとの平均ラップタイムを音声で知らせてくれます。

リアルタイムで走行距離を計測してくれるので、2km半くらいで疲れたので歩こうかと思ったのですが、iPhoneを見たらあともうちょっとで3kmだからそこまでは走ろう、という具合に励みにもなります。

ソーシャルに情報をシェアするので、この記録をみんなに見られるわけですから、たとえば1kmだけでやめちゃうとか、そういうのは恥ずかしいからせめて3kmは走ろう、という気持ちになれたのも、このアプリのおかげでした。

これが無かったら、結構早い段階で音を上げていたかもしれません。いや、まぁ、1kmだろうと3kmだろうとたいして変わらんよ、というご意見もあるでしょうが、そこは初回ということで、千里の道も一歩から。徐々に鍛えていこうと思います。

記録はネットでアップロードされ、下の画像のようにいつでもPCなどで詳細に確認できます。


ちょっとした工夫で、走るのが楽しくなるので、こういうアプリをお伴に走るのはなかなかおすすめです。

PlayframeworkのPDFモジュール

Play! framework Advent Calendarの14日目の記事です。

Advent Calendarといえば、クリスマスをターゲットとしたイベントですが、クリスマスが終わればもうお正月。

ということで、PDFモジュールを使っておみくじを作りました。

PDFモジュールの使い方は簡単です。

% play install pdf

とコマンドを打てば、インストールされます。
あとは、他のモジュールと同じようにapplication.confに書くか、dependencies.ymlに追記してdependenciesコマンドを叩きます。

実際に使用する場合は、

import static play.modules.pdf.PDF.*;

とimportします。

以下、おみくじアプリのコードです。

package controllers;

import play.*;
import play.mvc.*;
import java.util.*;
import models.*;

import static play.modules.pdf.PDF.*;

public class Application extends Controller {

    public static void index() {
        Options options = new Options();
        options.filename = "omikuji";

        String result = getResult();

        renderPDF(options, result);
    }

    private static String getResult(){
      String[] kuji = {"Daikichi", "Chukichi", "Kichi", "Shokichi", "Kyo", "Daikyo"};
      Random rnd = new Random();
      int index = rnd.nextInt(kuji.length);
      return kuji[index];
    }
}

実際にPDF出力する実装は、通常render()とする箇所をrenderPDF()と書いているだけです。第一引数のoptionsは、PDF出力の際の各種オプションを設定することができ、今回はファイル名を定義しています。
その他のオプションについてはこちらを参照してください。
http://www.playframework.org/modules/pdf-0.7/home

viewのコードを見ていただくとわかるのですが、cssも普通に反映されます。

#{extends 'main.html' /}
#{set title:'Home' /}

<style type="text/css">
<!--
.omikuji{
    text-align:center;
    margin:0px auto;
    background-color:#FFCC5A;
    border-color:#660000;
    border-width:2px;
    border-style:solid;
    width:150px;
    height:100px;
    display:block;
}
-->
</style>

<div class="omikuji">
  Your fortune is <b>&{result}</b> !!
</div>

今回の実装で一点詰まった箇所がありまして、コードを見ていただくと分かるのですが、おみくじの結果が"Daikichi"のように少し不自然な形になっています。
本来は"大吉"としたかったのですが、日本語のフォントに対応していないようで、レンダリングされませんでした。

heroku上でこのアプリを実際に動かしていただくことができます。
http://quiet-beach-8560.herokuapp.com/
アクセスするといきなり結果がPDFで出力されますのでご注意ください。

ソースコードはこちら。
https://github.com/daiksy/PlayAdvent


ちなみに、RenderPDF()をRender()と書き換えると、このように動きます。
http://pure-ocean-8055.herokuapp.com/


それでは、少し気が早いですが、来年の運勢など占ってはいかがでしょうか?

次は @arahaya さんです。


2011年12月1日木曜日

いろいろな言語で変態

12/1になり、各地でいろんなアドベントカレンダーが始まったようです。

我々の変態アドベントカレンダーは意識が高すぎるあまり、11月ですでに終了の気配が濃厚なのですが、諦めたらそこで試合終了なので、続けて行きましょう。

と、いうことで軽い感じのエントリ。

いろんな言語で変態を実装してみました。

Ada:
with Ada.Text_Io; use Ada.Text_Io;
procedure Hentai is
begin
 Put_Line ("お巡りさん! この人です!");
end Hentai;

BASIC:
10 PRINT "お巡りさん! この人です!"
20 END

C:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv) 
  {
  puts ("お巡りさん! この人です!") ;
  return EXIT_SUCCESS ;
  }

C#:
class HentaiApp 
{
 static void Main() 
 {
  System.Console.WriteLine("お巡りさん! この人です!");
 }
}

COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. HENTAI.
PROCEDURE DIVISION.
DISPLAY "お巡りさん! この人です!".
STOP RUN.

Java:
public class hentai{
    public static void main(String[] args){
        System.out.println("お巡りさん! この人です!");
    }
}

Ruby:
puts "お巡りさん! この人です!"

Scala:
object Hentai extends App {
  println("お巡りさん! この人です!")
}

SQL:
SELECT 'お巡りさん! この人です!' FROM dual;

PHP:
<?php
echo 'お巡りさん! この人です!';
exit;
?>

え!? どこかで見たエントリだって?  気にしない、気にしない!

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


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

2011年10月31日月曜日

このハッシュタグはわしが作った! -> #ハロウィンプログラマ

今日はハロウィンということで、「#ハロウィンプログラマ」 なるハッシュタグを作ってみた。きっかけは @lpczclt さんのこのツイート
プログラマクラスタで『お菓子をくれないと○○しちゃうぞ!』というツイートが流れてくるたび、日本のシステムは彼らの良心によって動いているんだなぁと思うMon Oct 31 03:24:47 via twicca

面白そうなので僕もネタを2つほど投下してみた。

「お菓子くれないと帰っちゃうぞ☆」(訳:お菓子いらないから帰らせてください。 #ハロウィンプログラマMon Oct 31 03:34:12 via Tween

お菓子くれないとシングルトンクラスのコンストラクタをpublicにするぞ! #ハロウィンプログラマMon Oct 31 03:38:55 via Tween

で、なにげなくハッシュタグをつけてみたらなんだか盛り上がってきた!!!
Togetterまとめ
http://togetter.com/li/207661
http://togetter.com/li/207648



Twitterトレンドになってる??

あげくのはてに、ねとらぼで記事にまでなった!?
http://nlab.itmedia.co.jp/nl/articles/1110/31/news052.html

と、いうわけで誰にもお菓子をもらえなかったけど、
いいハロウィンだった!!

(追記:)
ニコニコニュースで2位になった!

2011年10月30日日曜日

Genius Bar初体験でiPhone 4Sを交換した経験から顧客満足度について考えてみるというはなし


auに念願のiPhoneがやってきた!!

と、いうわけで早速ゲットし、数日夢のiPhone体験を満喫していたある日のこと。

画像のように、「不正なSIMです」と表示されて通信ができなくなった。
最初は接触が悪いのかな、と思いSIMをもう一度挿し直し、再起動。無事に元に戻った。

それからというもの、一日一回のペースで3G通信ができなくなる現象が発生。ディスプレイには「3G」と表示されているが、ネットワークにまったく繋がらない。これも端末を再起動することで治るのだが、一日一回再起動しなければならないなんて、こんな面倒な運用はありえない。

そこで、金曜日にGenius Barを予約。日曜日の16:40から最速の空きだったので、行ってきた。

日曜日ということもあってアップルストアは激混み。16:40からの予約だったが、結局名前を呼ばれたのは17:00をゆうに過ぎていた。

待ち時間の間、Genius Barのカウンタを眺めていたが、お客さんの6〜7割くらいがiPhoneについての問い合わせらしく、みなさん次々に端末を交換してもらっていた。

名前を呼ばれ、カウンタで症状を伝える。Genius Barに持っていった日は、その前日からiPhoneはすこぶる調子が良く、まったく現象が再現しないので、どうなることかと思ったが、話を聞いたスタッフさんは即座に端末交換を申し出てくれた。おそらく、似たような現象の人が多いのだろう。

で、端末交換。ものの10分ほどで新しいiPhoneが手元にやってきた。

スタッフさんの対応はたいへん誠実で好感が持てるものだった。交換前のiPhoneに貼っていた液晶保護フィルムも、新しいiPhoneに貼り替えてくれたし、交換前は自分で貼ったので隅に空気が入ってたりしていたのだがスタッフさんのプロの業で保護フィルムは前より綺麗に貼られていた。

症状が治ったのかどうかは数日様子を見ないとわからないが、待ち時間が少し長かった事を除けばGenius Barの対応はたいへん気持ちの良いものだった。

セールスフォース・ドットコムのマーク・ベニオフCEOが、著書でこのような主旨のことを書いている。

ーーあってはならないことだが、サービスが万が一停止してしまった場合、必要なのは顧客への正しい説明である。停止中のサービスの最新の状況を常にWebで参照可能にし、問い合わせのあった顧客に対して誠実に説明することで、サービス停止という状況であっても顧客満足度はアップすることがある。ーー

確かに、製品の不具合やサービス停止など、頻繁にあってはたまったものではないが、稀に起きるこういった状況にあっても、スタッフの真摯な対応によって逆に信頼が増す、ということは感覚的に理解できる。

今日のGenius Bar初体験は、そんな体験だった。

アップルストアのスタッフのみなさん。丁寧な対応ありがとうございました。


2011年10月19日水曜日

iPhone 4Sの micro SIM を IS03に挿してみた。

IS03からiPhone 4Sに乗り換えた。

iPhoneとauのAndroidはSIMカードの規格が違うが、アダプタでサイズを合わせれば使えるという説を聞いたので試してみる。

ちなみに実験される方は自己責任でおねがいします。たぶん失敗して壊しちゃってもメーカーサポート受けられません。

まず、iPhoneからSIMを取り出す。



で、アダプタにセット


これをIS03に入れてみる。


結果は……、ダメでした。(´・ω・`)

2011年10月16日日曜日

scala勉強会に行ってきた!

第1回 大阪scala勉強会 に行って来ました。

scalaは前々から少しずつ勉強を続けていた言語で、もうひとつ興味を持っているPlay Frameworkとも深い関係にある言語です。

やはり注目度が高いようで、50人近い人数が集まり、会場はほぼ満席でした。

・@asan_w さん 「Scala入門」
用事があったため少し遅れて入ってしまったので、途中からになってしまいましたが、scalaの基本的な構文や言語仕様の解説で面白かったです。
プログラム言語って文章を読んでもいまいちピンと来なくて、写経してはじめて分かる、という部分もありますが、口頭でコードを解説してもらうと写経しなくても理解が早まったりするのかな、と思います。
そういう意味で、初心者向けにこういうセッションは喜ばれると思うし、自分がまったく知らない言語の勉強会などに行った際にこういうお話をしていただけると嬉しいですね。

圧巻はscalaで作ったというシューティングゲーム。
ステージの最後に巨大なボスが登場し、Twitterの「#scala_osaka」のタイムラインがボス一色になってましたw

・@uskz さん「FilterMonadicってなんだ?」
関数型言語を勉強していると、どこかのタイミングで必ずモナド、というキーワードに遭遇します。
で、さっぱり理解できなくていつも諦めるのですが、このセッションはそんなモナドのお話。
関数型言語のモナドの概念に到達するために、まずは数学の圏論のお話から、ということだったのですが……。

……ごめんなさい。文系プログラマのわたしでは理解できませんでした…。

ただ、やっぱり関数型言語をきちんと勉強しようと思えば、数学的な概念をある程度おさえておかないといけないんでしょうね。
関数型言語自体が、数学的な意味での「関数」を基本とするプログラミングモデルなわけですからね。

前々から思っていたのですが、近いうちに「関数型言語勉強会」を開催しようという決意をさらに固めることができました。

いざ、登壇駆動学習!! モナディックプログラミング!!!

・@mitsuhirow さん「Lift」
scalaのwebアプリケーションフレームワーク、Liftのお話。
名前だけは聞いたことはあったのですが、具体的なコードの組み方などははじめて聞きました。
viewはHTMLだけで記述できる、デザイナライクなフレームワークらしいです。

最近の新しいフレームワークに共通することですが、ちょっとしたwebアプリなら凄く簡単に作れそうですね。もちろん、がっつりそれなりの規模のアプリをつくろうと思うといろいろ制約はあるのでしょうが。

実際にこれで業務アプリを作られたということで、質疑応答が大変盛り上がったセッションでもありました。

・@kitora_naoki さん  Play! with Scala
scalaといえば僕的はこれは外せないですね。Play!です。
Play2.0はさらにscala寄りになっており、個人的に少し真剣に勉強したいと思っている分野です。

ベンチマークなど面白いデータが提示されていて興味深かったです。
さらに衝撃だったのは…。

「play test で使用するヒープの上限がハードコード->対策:その行をコメントアウト!」

そんなアホなwwww

セッションの後では @yalab さんのscalaでAndroidアプリが作れるぜ! という飛び込みLT。@backpaper0 さんの Unfiltered の紹介LTと盛りだくさんの勉強会でした。

次回も企画されているそうなので、LTくらいできるように仕込みをしておこうと思います。

みなさん、どうもありがとうございました!!

2011年10月11日火曜日

少しずつ芸風を変えなきゃなって思ってるというはなし

最近、いろいろなご縁だったり、機会をいただいたりであちこちでLTやったり、人前で喋らせてもらったりしてます。


だいたい月一くらいのペースでどこかでLTやってます。

で、僕のやるLTって基本的に「ネタLT」なんですよね。あんまり技術的に「へぇ」って言ってもらえるような内容ではなくて、一発笑いを取りに行くようなのが僕のLTの「芸風」なわけです。

まぁこれはこれで場が和んだり、いろいろと効能もあると思うし、なによりLTのポイントである「発表の敷居が低い」という部分にのっかってるわけだから何も悪いことではないと思ってます。ただ、そろそろ少し芸風を変えていく必要があるのかなって考えるようになりました。

僕がネタLTしかやらないのは、ぶっちゃけると「自分の技術に自信がないから」です。

自分のスキルが、人前で発表したり、偉そうなこと言ったりできるレベルではないって思ってます。そんな中で僕が唯一、ちゃんと技術に向き合って作ったのは、第一回のPlayframework勉強会で30分の時間をもらった「Play! でつくったアプリをGAEで動かしてみよう」という発表です。
しかし、これにしても、「第一回目だし、初心者向けセッションがあってもいいよね、だから自分も割りと初心者だけど、発表したっていいよね」というある意味逃げのスタンスで作った発表です(「逃げ」と言ってしまうと勉強会の主催者さんに失礼ですね。もちろん発表はまじめにきちんと考えて、時間を使って作りました。あくまで自分自信の振り返りの結果とお考え下さい)。

自分がエンジニアとして生活していて、そしてこれからも色々なコミュニティ活動や、勉強会でLTしたり、発表したいと考えているなら、やっぱり自分の商売道具である「技術」にきちんと向き合わなきゃいけないと思います。

きちんとした技術的なバックボーンがあって、自分が自信を持って振りかざせる武器を持っていて、そのうえでネタを仕込むから、「ネタLT」にも深みが出るんだろうな、と思うのです。

もちろん、プロとしてお金をもらって普段から仕事をしていますから、自分の技術に自信が無いわけではありません。ただ、やはり人前で発表できるような自信を持てるほどには、自分の素振りはまだまだ足りてないと思うのです。

今回、参加させてもらった勉強会で、凄い人達の素晴らしい発表を聞かせてもらい、そんなことを考えました。

もちろん、変に自重するつもりもないし、ネタLTだろうが何だろうが機会があればどんどん今までと変わらないスタンスで飛び込んでいくつもりですが、自分のクオリティもう一段上に上げるために、芸風を少しずつ変えて技術に根ざしたアウトプットをしていけるように頑張りたいです。

もっともっと素振りしなきゃなぁ……。

2011年10月9日日曜日

第2回 Playframework勉強会でLTしてきたはなし

先日、大阪で開催された第一回に続いての第二回 Playframework勉強会

第一回では僕もちょっとした発表をさせてもらっていて、そのときに @ikeike443 さんが第二回は東京でやりますよ、というお話をされていた際に、「じゃあ僕もLTやりに行きます!」と約束させてもらっていたので、それを果たすために参加してきた!

今回の勉強会はスタッフのみなさんのご尽力のおかげで大変すばらしく、楽しい勉強会でした。みなさん、ありがとうございました。

さて。今回の勉強会は面白い話が盛りだくさんだった。

詳細はUstだったりスライドだったりがUpされているので個人的な感想を。

・@ikeike443 さん 「Play! の紹介」
Playの魅力がよくわかる素晴らしい発表だった。特に圧巻はライブコーディング。
それなりのWebアプリとREST APIがあれほど短時間でできあがるのはまさにPlayの真骨頂。あの発表を見れば、みんな絶対Playでコード書きたくなると思う。

・@garbagetown さん 「playdocjaのこれまでとこれから」
いつもお世話になっている、playdocja の中の人のお話。
翻訳作業ってモチベーションを保つのがすごく大変だと思う。特にPlayって公式が頻繁に更新されるし。
いままで何気なく読んでる翻訳サイトの中のお話が聞けて楽しかった。
英語読める人はどんなわずかでもいいから翻訳のお手伝いすればいいと思うよ!
読めない人は中の人に超リスペクトしながら読むんだよ!!

・@genki_ さん 「Play!で作る業務アプリケーション構成例」
Playで業務アプリの事例はまだ少ないだろうなと思っていたので、このお話を聞けたのは貴重だった。まだ途中とのことで、ご苦労もいろいろと多そうだけどぜひ完走してその時はまたお話を伺いたい。
ゆくゆくは仕事でPlay使ってみたいなー。(それよりお仕事では未だにJava1.4が動いていたりいなかったり)
iPadを使ったプレゼンがかっこよかった!

・@hagikuratakeshi さん 「Play! + GAEで作ったアプリをPlay! + Heroku で動かすとどうなるか」
僕、最初はLTで「Playアプリをherokuで動かす」っていうネタをやろうと思っていたんだ。でもATNDで @hagikuratakeshi さんがこのネタを発表されるということだったので、違うネタに変えたんだ。
でも変えて本当に正解だった。@hagikuratakeshi さんの発表はすごく面白かったし、僕が勉強してた内容なんて比べ物にならないくらいクオリティも高かった。
だってGAEからherokuに移植するときにmodelを書きなおす手間が嫌だからプラグインを書き換えちゃうようなクールな人だぜ? すごく勉強になった。
それにしてもGAEの値上げがすごい……。

続いての怒涛のLTタイムもどなたも凄く面白かった。
僕もLTをさせてもらったのだけど、東京というアウェー感と人数の多さにすごく緊張したが、まあそれなりにやれたんじゃないかな。
@bash0C7 さんが、以前「東京の勉強会でLTしたときに大阪から来ましたって言ったらそれだけで盛り上がったよ!」とおっしゃっていたので真似してみたら確かにウケました!!

発表のスライドやらUst録画はこちらー。



Video streaming by Ustream

LT以外の他のUst録画はこちらー。

http://www.ustream.tv/channel/playframework%E5%8B%89%E5%BC%B7%E4%BC%9A

Togetterとスライドのまとめはこちらー。

http://togetter.com/li/198173
http://ponta027.blogspot.com/2011/10/playframework.html

第三回もまた行くよ!!


2011年9月19日月曜日

ITコミュニティ祭りでお話してきた話。



9月17日、ITコミュニティ夏祭り に参加してきました。

イベントの概要はリンク先をご覧いただくとよいのですが、DevLOVE、GLT、エンジニアライフというコミュニティが一同に介するというお祭り。
コミュニティ初心者の人たちに、コミュニティや勉強会って怖くないよっていうことを伝えるという主旨のイベントでした。



僕はエンジニアライフ代表として第一部の「コミュニティの中の人ぶっちゃけトーク」に登壇させてもらいました。

今でこそこうして「コミュニティの中の人」という形で舞台に上がっていますが、コミュニティや勉強会デビューをしたのは去年から。本格的に参加するようになったのは今年になってからなので、初心者という立場でいろいろお話させていただいたり、「コミュニティの外」から見た場合に気になっていたことなどを質問させていただいたりしました。


Video streaming by Ustream

当日の模様はUst録画がありますので、お越しいただけなかった方は是非ご覧ください。

あとから録画を見なおして思ったのは、自分が話していたことを結構忘れてるんですね。緊張していたからでしょう。あれ? こんなこと話してたんだ? という内容がいくつかありました。LTなどのように事前に準備や練習をしていないライブ感ならではなんでしょうね。
内容を覚えてないのは緊張していたからで、決して本番前に楽屋でビール飲んでいたからではないですよ!!

自分自信が勉強会に参加したり、イベントでDevLOVEとGLTのお二人に伺ったお話を聞いて思ったのは、本当にコミュニティとか勉強会は怖くないです。
初心者とか大歓迎だし、皆、常に新しい仲間を求めてます。

7月にエンジニアライフでOSCに出展した際、スタッフとしていろいろ準備などのお手伝いもさせていただきましたが、当日本当に来てくれる人いるんだろうかと、もの凄く不安でした。そして、実際に来ていただいた人たちには頭があがらないくらい感謝したい気持ちでいっぱいでした。勉強会やコミュニティの中の人は、みんなそんな風に考えているので、自重せずに参加したらいいと思います。

第二部のLT大会(上のUstにその模様も入ってます)に続き、懇親会では野良LT大会が行われました。野良LTなので飛び込み参加もOKです!


Video streaming by Ustream

僕は第一部で登壇してるし、野良LTは聞く側に回ろうと思ってたのですが、みんなのLTを見ていると自分もやりたくなってきたので、以前別の勉強会でやった「JoJo LT」を飛び込みでやってきました。

同じく第一部、第二部で登壇した方も引き続きここでLTやったりして、みんな出たがりですねー。最高です!! 出たがり、嬉しがりな人、僕、大好きです!!

そんなこんなで、あっという間でしたが、ものすごく幸せな時間を過ごすことができました。またやってみたいですね。

どこかの勉強会などでもしお会いすることがあれば、お気軽に声かけてください。

僕もあんまり「空気読む」とか気にせずに、イベントに参加したりLTしたりしたいと思います。

2011年8月21日日曜日

Javaらへん読書会に行ってきた。

今日はJavaらへん読書会に行ってきた。

元々はJavaっぽい本について、みんなで持ち寄るっていう感じの趣旨だったので、
一番最近読んだJavaっぽい本ということで『Twitter APIポケットリファレンス』の
紹介をさせてもらおうと参加申し込みした。

参加メンバーさんとのTwitterでのやり取りの中で、Javaという縛りを緩くして、
もう少し幅広くしてもいいのではないか、という意見が出たり、『ジョジョの奇妙な冒険』
はプログラマの嗜みという話題が出たり、気がついたらなぜかジョジョに関するLTをやることになった。

しかもこんなムチャぶりっぷり!!


ちょww 基調講演ってwwww

とはいえ、僕もこういうノリは大好きなので頑張ってこのフリに乗っかってみた。

で、そのLTのスライドはこちら。


おかげさまで大変好評をいただきました。

で、本編では以前書いた書評の内容をベースに『Twitter API ポケットリファレンス』
の紹介をさせてもらいました。

あとは個人的に紹介したい本として、発表とは別に
Being Geek』と『アジャイルサムライ』を持っていった。

他の参加者の皆さんが発表されたり、持ち寄られたりした本は、
@Kuchitama さんがコチラにまとめてくださっている。

個人的には今日の発表を聞いて『レガシーコード改善ガイド』を読んでみたいなと思った。

今日の勉強会は凄く面白かった。

普段、みんながどんな本を読んでいるのか、どんな感想を持っているのかを聞けたし、
タイトルはよく聞くけれど実際に読んだことのない本についての解説や感想を聞けたり、
自分が本を買うにあたって参考となる話がたくさん聞けた。
今日は良い意見交換が出来たのではないかと思う。

どちらかというと勉強会って発表者の話やLTを聞いて、それで終わりっていうパターンが多いけれど、今日は発表者ではない参加者のお話も積極的に聞けたように思う。

機会があれば是非またやりたいと思った。

今日の勉強会の場を作ってくださった皆さん、本当にどうもありがとうございました。

2011年8月7日日曜日

play勉強会で発表してきた。

第1回「Play framework勉強会」IN 関西 で発表しました。




僕自信、あまり勉強が進んでいるわけではないのですが、第一回だし、軽い感じのセッションがあってもいいだろうと思い、play fameworkで作ったアプリをGAEで動かす場合の手順について、お話させていただきました。

スライドはこちらです。

デモで使ったコードはこちら。

デモその1:占いアプリ
https://github.com/daiksy/play-study
デモその2:sienaでDataStoreに対応したアプリ
https://github.com/daiksy/daiksyApp

Scala版だといろいろ上手くいかないパターンもあるようですが、
Java版であればスライドの手順を踏むだけで簡単にGAEで動くはずです。

デモその2のsienaについての詳しい解説は、
こちらのエントリに書いていますのでご参考に。

Play!でsienaを動かしてみた。
http://daiksy.blogspot.com/2011/07/playsiena.html

次の勉強会は東京で開催される計画があるそうです。
もう少し勉強を進めて、次も何か発表ができればいいなと思っています。

2011年7月17日日曜日

コラムニストとして情報発信するということ - OSC京都 2011 -

7月15日、16日の二日間にわたって開催された、オープンソースカンファレンス 2011 kansai@kyotoにエンジニアライフのメンバーとして参加してきた。

前回の神戸でのOSCの懇親会で、あるスタッフさんとお話ししていた際にご提案いただき、エンジニアライフの編集部の快諾も得られ、初参加の運びとなった。

Facebook上で仲の良いコラムニストさんたちと意見交換をしながら企画を練り、準備を重ね、ブースセッションを持つことになった。

イベント前日には紹介記事まで書いていただき、本番当日を迎える。


ブースにはコラムニスト募集のチラシとコラムニストカードを置き、いろいろな方とお話させていただいた。ただ、他のオープンソースコミュニティと比べるとデモなどブースならではで紹介できるものがなく、「情報発信コミュニティ」としてのブース出展の難しさも感じた。
初日にブースに遊びに来てくださった、まっちゃだいふくさんも、以前セキュリティ勉強会のブースを出展したものの、やはり同様の難しさを感じたと仰っていた。
次回はこのあたりをもう少し上手くやる方法を考えてみたいと思う。

一方、コラムニストのはがねのつるぎさんも、エンジニアライフメンバーとしての参加と並行して個人出展もされており、こちらは自作のJQueryプラグインのデモが好評だった。


途中でフィンランドの方がブースに来られ、「英語でコラム書いてもいいですか?」と聞かれたものの、一介のコラムニストにすぎない我々では返答に困る場面などもあった。
(あの後、編集者に確認したら、OKだとのことでした。もしこのブログをご覧になってらしたら、是非お申し込みください)

そのような感じでブースを出展しつつ、二日目にいよいよセッションである。

10:00より、はがねのつるぎさんによるセッション「JQueryプラグインの『使い方』ではなく『作り方』」は朝一のセッションにも関わらず大盛況だった。


この会場がほぼ満席になるほど!!

セッションの録画はこちら。



そして13:00より、エンジニアライフによるLTセッションである。
「コラムニストとして情報発信するということ」というテーマで7名のコラムニストによるライトニングトークを行った。


ちなみに僕のセッションは29:00ごろから。

僕のスライドはこちら。

それほど大きくない会場だったということもあったが、お客さんが会場に入りきらず廊下に立ち見が出るほどの盛況だった。

その後の懇親会でも「見たかった」というお言葉をいろいろな方からいただき、自分の予想以上に注目度の高いセッションだったようだ。

個人的な感想としては、今回の参加は初めてということもあり、少し内側に向きすぎていたかな、という気がしている。
どちらかというと、文化祭的なノリで参加してしまっていたんじゃないかな、という反省点がある。

次回も参加を許されるなら、もう少し今度は外に向いて、来場者を意識しつつ幅広くリーチしていけるような関わり方をしたいなと思う。

まぁ、このようにいろいろ個人的な反省点はあるものの、今回の参加は大成功だったと評価しても良いと思う。

スタッフのみなさん、コラムニストのみなさん、編集部のみなさん、本当にありがとうございました。次回もよろしくお願いします。

2011年7月2日土曜日

Play!でsienaを動かしてみた。

※今回の実行環境
Play! 1.2.1
Play!のGAEモジュール 1.4
Play!のsienaモジュール 1.5
これらの環境がインストール済みであること。

さてさて。今回はPlay! でsienaを使ってdatastoreを使ってみよう。
この辺りがクリアできれば、GAEでBigTableが使えるようになるはずだ。

と、いうことでまずはローカル環境で実験。

application.confに以下の記述を追加する。

# The siena module
module.siena=${play.path}/modules/siena-1.5

これで準備完了!

app/models配下に、Comment.javaクラスを作成する。
package models;

import siena.*;

@Table("Comment")
public class Comment extends Model {

  @Id(Generator.AUTO_INCREMENT)
  public Long id;

  @Column("Comment_Value")
  @Max(200) @NotNull
  public String commentValue;

  public static Query all() {
    return Model.all(Comment.class);
  }

}

@Table、@Column、@Maxといったアノテーションは、BigTableに対しての定義になるみたい。
@Idアノテーションがついたフィールドがキーになるようだ。Id値は自動採番。

Model クラスを継承することで、sienaとしてinsert, update, deleteといったメソッドが使えるようになる。

これでModelクラスの定義が完了。
基本的にはこいつに対して操作してやることで、datastoreが触れるはず。

さっそくテストを書いてみよう。

test/ 配下にあるBasicTest.javaにテストを追記。
import org.junit.*;
import java.util.*;
import play.test.*;
import models.*;

public class BasicTest extends UnitTest {

    @Test
    public void aVeryImportantThingToTest() {
        assertEquals(2, 1 + 1);
    }

    @Test
    public void sienaTest() {
      Comment cm = new Comment();
      cm.commentValue = "テスト";
      cm.insert();

      //insertが成功したかのテスト      
      List<comment> getList = Comment.all().fetch();
      assertEquals(getList.get(0).commentValue,"テスト");

      //後片付けにデータを削除(ついでにデータ更新のテストも兼ねる)
      for(Comment deleteKeys :getList) {
        Comment delcm = new Comment();

        //データ更新のテスト
        delcm.id = deleteKeys.id;
        delcm.commentValue = "更新されてる?";
        delcm.update();
        List<comment> afterUpdateList = Comment.all().filter("id",delcm.id).fetch();
        assertEquals(afterUpdateList.get(0).commentValue,"更新されてる?");

        delcm.delete();
      }

      //削除ができていれば、fetch結果は0件のはず
      List<comment> afterDeleteList = Comment.all().fetch();
      assertEquals(afterDeleteList.size(),0);
    }

}

さきほど作ったCommentクラスのインスタンスを生成し、commentValueに値を設定。
insertメソッドを呼び出す。

これで、datastoreに値が保存されたはず。

getListにデータをfetchし、確認してみる。

あとは後片付けでデータ削除。ついでにupdateとdeleteのテストもやっておく。

これでテストを実行!!




上手く行ったようだ。

playで作るGAE用のwebアプリをscalaで書いたら、テストが動かないでござる。ニンニン。の巻

※今回の実行環境
Play! 1.2.1
Play!のGAEモジュール 1.4
Play!のscalaモジュール 0.9

先日Play frameworkを使ってGAEで動かすための実験アプリを作った。

コレ→ http://play-study.appspot.com/

まずはGAEで動かすぞ! ってことがテーマだったので、まだテストを書いていない。
そこで、次のステップとしてPlay frameworkでTDDを実践するため、まずはファーストステップとしてこのアプリのテストを書いてみた。

で、颯爽とテストを書き、"play test"コマンドを華麗に叩いたのち、"http://localhost:9000@tests"にブラウザでアクセスして大胆にテストを実行しようとしたところ…。


な、なんか出たーーーー!!?

前日にPlayでのテストを学ぶため、今回のアプリとは別のアプリを新規作成して実験していた際には普通にテストが動いていたので、いったい何が原因なのか…。

と、いうわけで、アプリを新規作成して、実験してみた。

まずは"play new [Application name] with --scala"と繊細にコマンドを叩き、アプリの新規作成。

この段階で"play test"でテストを動かしてみる。

……。うん。動いた。

続いて、テストを書いてみる。

……。うん。動いた。

で、テストが通るようにロジックを実装。

……。うん。動く。

viewを実装し、占いアプリの全体像が仕上がった。

テスト実行!!


…動くやないの。

ここで、GAEのモジュールを適用していないことに気づく。

dependencies.ymlに
  -play -> gae 1.4
という記述を追記し、"play dependencies --sync"を実行!!

で、テスト動かす。


う、動かなくなったーーーーー!!!!

続いて、scalaモジュールを入れずにJavaで全部書いてGAEモジュールを入れたところ、正常に動いた。

結論として、playでscalaとGAEのモジュールを混在させるとどうも上手くいかないみたい。理由までは調べてないけど。

※:アプリ作成時に、"play new [Application name]"でJava用の新規作成を行ったのち、GAEとscalaのモジュールを追加すると一応動いた。
このパターンで二種類ほどアプリをつくってみたけれど、片方はやっぱり同様のエラーで動かなくなっちゃったので、GAE用のアプリでテストを動かしたければ、まだscalaは使わないほうがいいのかも…。

2011年6月11日土曜日

Twitter4jに学ぶ、スピード感

Twitter4jのコードリーディングに行ってきた。
(http://atnd.org/events/14143)

なんと、Twitter4jの作者である山本さんが来られるというこの企画。
せっかくなので、勉強会の前にモクモク会の土曜日Ver.も開催。
(http://atnd.org/events/16541)

すると、なんと山本さんはモクモク会にもいらしてくださった。
本当にありがとうございました。

ちょっとしたご縁があって、わたしもLTをさせてもらった。

そのスライドはこちら。

朝のモクモク会から懇親会まで、今日はここに書ききれないほどのいろいろな面白いお話をたくさん聞かせていただいたのだが、その中で最も印象に残ったエピソードをご紹介しよう。

ひと通り皆さんの発表が終わり、みんなでモクモクとTwitter4jのコードを読んで分からないことがあれば山本さんに聞こう、という流れになった。

そのなかで、こんなことがあった。



で、その現象を確認した山本さん。



ま、まさかのご本人によるバグフィクス!!!

そして数分後。



早い!!!

公式サイトみたら、最新版でもう修正されてる!!!!

あとで懇親会でこのやりとりについてのお話を伺うと、やはり「Webの世界はスピード感が一番大事。誰よりも先にやるということが重要」とのこと。

これはものすごくエキサイティングな体験だった。

なかなか経験できない、本当に貴重な時間をすごさせていただき、今日の勉強会に関わったすべての皆さんに感謝したい。

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

2011年6月5日日曜日

歌川国芳- 萌えは時代を超え、そして僕は変態 -

大阪市立美術館に歌川国芳展を見に行ってきた。

歌川国芳といえば、

こんな絵や

こんな絵が有名である。

それになんといっても、浮世絵といえば武者絵と役者絵が花形なのだが、今回、僕はそういった「国芳らしい絵」よりも、少し違ったポイントでグッときた。

僕がグッときたのは、美人画である。

「美人」という定義は時代と共に変化する。江戸時代の美人画を見て、萌えることなどあり得ないだろうとタカをくくっていたのだが、僕はこの絵にやられたのである。


なんということのない、どこにでもある美人画である。
現代の萌え絵とは似ても似つかぬ、教科書にでも載っていそうな絵。

僕はこの絵の、足の部分に注目してみた。

着物越しに浮かび上がる足のライン。なんとなくセクシーではないだろうか。
通常、着物を着ている女性の足の形が見えることはない。しかしこの絵では、描かれている女性が座っているため、太もものラインが着物越しに見えてしまっているのだ。

僕は雷に打たれたような衝撃を受けた。

美人画鑑賞の真髄は、フェティシズムにあるのだ!!

そう思って他の絵を見てみると、着物の柄や布の流れが実に克明に描写されており、セクシーなのだ!


足元のチラリズム。


うーむ。実に艶めかしい……。

で、極めつけは次の絵。


お魚を咥えた猫をつかまえてたしなめる女性。
この絵のポイントは、左上に描かれた勇ましい武者絵である。

彼の名は、源頼政。鵺(ぬえ)退治で有名な武将である。

そう! 女性が猫をたしなめる状況を、頼政の鵺(ぬえ)退治に見立てているのだ!!

し…し…シチュエーション萌えキターーーーーー!!!!

なんという高度な表現技法であろうか……。国芳先輩、パネェっす!!!! オレ、一生付いていきます!!!!

今日の結論:僕はやっぱり変態