発言駆動日記

何事も発言駆動な日記。HDD

レッツゴーデベロッパー2012 THE NEXT 参加レポート

 2012、6月9日。東北の地、仙台で開催されましたレッツゴーデベロッパー2012なるイベントに参加いたしました。


 東京から東北新幹線「やまびこ」で2時間ほどで到着の後、(人生初となるSubWayなるファストフード店で昼を済ませ)イベント会場「エルパーク仙台」(高島屋5F)へ。
 会場到着後は、そそくさと受付を済ませ、空いた席に座ってスマホをいじりながらtwitterで「とうちゃくなう」とか呟いたりして1つ目のセッションが開始されるのを静かに待っておりました。


プログラム

1. スタートアップならRuby on Rails!

   藤岡岳之 氏 (株式会社 ラビックス)… Ruby 一筋10年、東北の地で

2. "足"を使ってリーンUX! -- 顧客開発インタビュー入門講座

  樽本哲也 氏 (アジャイルUCD研究会)… UCDとはユーザ中心設計の略です。

3. 「継続的デリバリーが拓く新世紀」日本語出版記念 特別パネルディスカッション

  須江信洋 氏、和智右桂 氏、高木正弘 氏、いまいまさのぶ 氏

4. プログラマを一生の仕事にできるビジネスモデルで目指す未来のビジョン

  倉貫義人 氏 (株式会社 ソニックガーデン)


 鮮烈なオープニングムービー(主催者:綿引氏による制作。渾身の作品)を観つつ、配られた「今日のお菓子」を食べていると第1セッションが始まりました。


1. スタートアップならRuby on Rails!

 Ruby一筋10年、まだRailsが産声をあげるその前から、Rubyソフトウェア開発を続けてきた過去と、これからチャレンジしていくことについて聞いてきました。


10年の歴史… Rails1.0が世に出るその前、イベントの受付システムを提供する福島大ベンチャーとしてスタート。
 イベント受付システムは一回限りの案件が多く、数多くこなしてもノウハウは蓄積されるものの、締め切りまで間もないタイミングでの依頼が多かったり、仕様の変更が頻繁にあったりとなかなか苦しかったそうです。("cgi.rb"をGoogle検索すると、トップに「cgi.rbがイケてない12の理由」などがヒットするあたり、今のRails開発と比較すると苦労が多そうな印象です。)
 2006年にRubyカンファレンスRailsを受講し、持っているサービスを全てRailsへ移行してからは、(ほぼ)100%Railsで開発したサービスを扱っているとのことでした。(cgi.rbに比べて開発時間が1/3になって、かなり楽になった!と聞いております)


Rubyの利点欠点… Railsでの開発こそ最速!とは言うものの、一応欠点も挙げておきましょうということでいくつか教えていただきました。
 聞いてはっとしたのが、テストを沢山書かなければいけないということ。コンパイルのないスクリプト言語の特徴というか、「サービス稼働中に、普通に "method missing…" とかでてきますからね!」という言葉には、我が身を振り返ると身に覚えありという感じでした。
 そのほか、Rubyが比較的簡単にかける言語だという印象を持たれることが多いが、実際のRails開発となると、むしろ初心者には向いておらず、慣れている人が早く書けるという感覚だということでした。私も、以前Railsでアプリ開発をやったりRuby on Railsが簡単というのは嘘 - 30 to 30を読んだりしていて、ある程度は納得でした。


THE NEXTということで… Web + 組込み。
 長年ソフトウェアの開発を手がけてきた中で、Webは出来る、あるいは、組込みは得意だ、という人はしばしば見かけるが、両方できる人っていないんじゃないかということに気づき、1年ほど前からそれらを組み合わせたサービスの開発に着手しているということでした。
 セッション中、そのようなアイディアの一つとして、津波警報機の制作についてお話いただきました。(東北の地ということもあり、先の 3.11 の体験が発想のきっかけとなっているとのことでした。)組込み基盤としてBeagleBoneや自作のMasamuneCape(仮)にLinuxを載せ、rubyアプリで気象庁RSSを監視するというものでした。
 組込みについては今後避けて通れないでしょ、というオーディエンスの声もあり、私も書店出よく見かける組込みキットなどで入門してみようかと…


2. "足"を使ってリーンUX! -- 顧客開発インタビュー入門講座

 UCD(User Centered Design)コンサルタント樽本氏のセッションでは、よいUX(User eXperience)やUI(User Interface)を実現するために必要なプロセスとしてのインタビュー手法について聞きました。
 ”使える”ソフトウェアを作るにはどうしたらよいか、ということは常々考えることだと感じますが、今回は、むしろ ”使われない” ソフトウェアを作らない為には、という視点でお話いただいたという印象を受けています。


”使われない" システム作ってませんか?… というわけで、例えば2001年、森政権で提唱されたe-Japan戦略。今まで手作業で5分もあればできた申請書の作成を1時間かかって作成できるようになったシステムの事例など、結局だれにも使われないシステムの事例をいくつか聞きました。極端な例にも思えますが、アプリケーションの8割の機能はほとんど使われないという研究結果もどこかにあったような気がしますし、そういう例は身近にもあるものと思われます。


 ある日アイディアが閃いて、アプリケーションを作ろうと考えた時、開発者として気にするのがCoolな画面やアクションのことだったり、どんな技術が使えそうかといったことかもしれません。ただ、画面(UI)の設計や技術の検討の前に、まず「その製品は、だれのどのような問題を解決するするのか?」についてはっきりした答えがあるべきでしょう、ということです。この質問への議論をしてなかったり、最終的に答えのない製品は、例えどんなにすばらしい技術の結晶であったとしても、結局”必要のない”製品に成り果ててしまうことになりそうな感じがします。


 誰も使わないものを作らない為に、「手を動かす前に、足を動かして、仮説を検証せよ。思い込みや勘違いをくそう」、というのが樽本氏のメッセージです。足を動かして仮説を検証する、というのは、つまりインタビューをすることで、インタビューのやり方やその活かし方を講演の中で実演されているので、ぜひUstreamを…


3. 「継続的デリバリーが拓く新世紀」日本語出版記念 特別パネルディスカッション

 人間には、人間にしか出来ないことをやろう… 最後にそう言い残して壇上を去る4名の講演者の言葉に感動しつつ、
 継続的デリバリーと継続的インテグレーションとを混同していた過去に別れを告げました。

 継続的デリバリーが出来ているかどうかは、


 「稼働中のシステムのプログラムコードを1行修正し、本番環境に反映するまでにどれくらいかかりますか?」


 に対してどれだけ短い時間を答えられるかに要約できると理解しました。(これから勉強します…)
 つまり、ソースコードのビルド自動化(コンパイルやテストの自動化)だけでなく、ありとあらゆるところを自動化し、平穏な土日を約束しよう、ということだと思います。


 ただ、講演者の方々ですら「継続的デリバリーは未来の話だよね」、「デプロイの自動化まではすぐ出来たが、その他は…」という感じで、実際のプロジェクトのさまざまな要因により、継続的なデリバリーをやるのは非常にハードルが高そうと言う印象でした。


 なにはともあれ、「継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化」を読むことにします。


4. プログラマを一生の仕事にできるビジネスモデルで目指す未来のビジョン

 プログラマから経営者へといたる13年の道のりを往く中で得た多くの気づきやメッセージが凝縮されたセッションでした。
 後日、セッション中に会場の参加者から投稿されたTwitterのつぶやきを確認したところ、最もTimeLineを加速させたのが倉貫氏のセッションだったと思います。


 実は、2012年始まって間もない2月、東京にて開催されたDevelopersSummit2012へ参加した際も、倉貫氏の講演を聞きました。
 今回のセッションはそのときの内容と同じものでしたが、当時、受け止めきれなかったメッセージも沢山あったことに気づきました。
 ※非常に早口で、刺激的な内容が盛りだくさんなので、聴講後の疲労感ではNo.1かとおもいます。(いい意味で

  
DevSumi2012レポートの追記として…


SIerプログラマが楽しくない理由の一つ… 顧客が開発と運用を異なる組織に委託する
 開発への投資比重を重くみがちな顧客としては、運用を安くしてでも開発にお金をかけようとする傾向にある。そのため、開発と運用は別の組織に委託することになり、そこに開発者の苦しみが生まれるという話。
 開発者は後に運用側へ渡される多くのドキュメントをも求められることになり、コードの質を上げるよりもそちらで苦労することになる。また、運用側も保守の難しいコードとドキュメントを突き合わせ頭を抱えるという事態になることもしばしば...
 このような現状があることも、SonicGardenのビジネスモデルが必然性を持つ理由の一つかなと感じました。


会社は自分の顧客… オーナーシップを持とう
 自分の勤める会社への不満、ありますよね?という話。会社にとってお金をもらうのは、顧客からであり、自分がお金をもらうのは会社から。という訳で、会社も自分にとってはお客さんという関係であると考えてみようということです。
 普通、お客さんへの要求は「提案」の形で持ちかけるように、自分の会社への要求も、同じく「提案」という形で行いましょうということ。また、顧客に対しては細やかな態度一つにも気をつけるように、自分の会社に対しても常に平静に交渉しましょうということです。
 こういった態度を徹底することで、ビジネスの感覚を磨くことが出来るし、自らビジネスを立ち上げるということも将来的な視野に入りやすくなりそうな気がします。持ちましょう、オーナーシップ


サラリーマンとして…

  • 現状に疑問を持つ
  • 常に準備をしておく
  • プレゼンスすること
  • 仕事を楽しむこと
  • 新しいチャレンジをすること

 技術者として、黙々と仕事に向かうだけでなく広い視点を持ちましょうということだと思います。
 社外や社会に向けて情報発信をおこなうことでこそ、常に自分の位置を確かめ、地に足をつけて将来を考えることができるし、新しいチャンスに出会える機会も逃さずつかみ取れるような気がします。


 なんと、今回のセッションはUstreamに収録されています。(しかも地元のTV局の力を使い、かなり質の高い映像でみることが出来ます!)
 しばらく後で見返すと、また新たな発見がありそうなくらい盛りだくさんなので、もし自分で周りが見えなくなってきたと感じたときに見直すとよいのではと感じています。


懇親会

 実は、勉強会で一番大切にしているのが懇親会への参加です。
 参加者の方とこの場で、始めて話すことも多く、今日のセッションについていろいろと話しながら振り返ることができます。また、参加者それぞれが様々な経緯を経てこの場に集まっていますし、そういった体験談などを気軽に沢山聞くことができるのは非常に貴重な経験だと思います。「体験談」って本当に貴重です。新しいこと、経験のないことをやってみようという意識も、こういった場でどんどん湧いてきたりします。


 仙台の皆さん、講演者のみなさん、運営のみなさんほんとうにありがとうございました。
 牛タン弁当、新幹線のなかで食べました。

続・Webの新聞をスクレイピングのターゲットに

前回の記事では取得したhtmlを自分で強引に加工してしまっていたのですが。。。

今回は、nekoHTMLを使用してかなりすっきり書くことができました。


結果

0: 三菱重工、客船に空気潤滑システム−泡の力で燃費向上
1: 軸受各社、EV技術競いインホイールモーター開発加速
2: 新東工業、鋳造工場の節電指南−設備の改修を提案
3: NTTPC、社内サーバ3000台節電−CPUの能力制御
4: 日産、情報システム投資再始動−新興国拡大策と歩調
5: NECとGSユアサ、リチウムイオン電池で協業
6: 熊谷組、CO2減へ工事現場用車両に省燃費ナビ導入
7: 日本環境調査研、除染水の凝集沈殿剤を福島などに投入
8: ファミマ、牧場支援へ福島牛を一頭買いを開始
9: 金相場見通し、通年平均1690ドルで推移−上昇続く
10: 京大、CO2原料に「安息香酸」の直接合成に成功
11: 新潟県、EVへの改良に補助金−需要喚起を期待
12: 近畿大、セシウム99%取り除く漆喰材料を開発
13: 酸化ストレス抑制たんぱく質、がん転移を促進
14: 次世代環境地域構想、会津で始動−再生エネ“地産地消”へ


参考記事(ほぼそのまま)
Groovyでスクレイピングしてみる(NekoHTML編) - No Programming, No Life
Groovy/NekoHTML でパース(読み込み)時にエンコーディング指定 - 再発明日記

淡々と進めるTomcatのインストール

OS X Lion へapache tomcat 6 のインストール手順

1. バイナリのダウンロード
 http://tomcat.apache.org/download-60.cgi
 6.0.35のtar.gz版

2. インストール

$ tar xzvf apache-tomcat-6.0.35.tar.gz 
$ mkdir /usr/local/tomcat 
$ mv apache-tomcat-6.0.35 /usr/local/tomcat
$ ln -s /usr/local/tomcat/apache-tomcat-6.0.35 /usr/local/tomcat/current

3. JAVA_HOMEの設定
homeディレクトリの .bash_profile に記載済みだったので何もせず。

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

4. 権限の付与(所有者の変更)

$ sudo chown -R username:staff apache-tomcat-6.0.35
$ sudo chown -R KazukiMurakami:staff current

5. tomcat 実行

$ sudo /usr/local/tomcat/current/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat/current
Using CATALINA_HOME:   /usr/local/tomcat/current
Using CATALINA_TMPDIR: /usr/local/tomcat/current/temp
Using JRE_HOME:        /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

http://localhost:8080/ でアクセス


6. tomcat 停止
停止しておかないと、EclipseからTomcatを起動できなかった。

$ sudo /usr/local/tomcat/current/bin/shutdown.sh
Password:
Using CATALINA_BASE:   /usr/local/tomcat/current
Using CATALINA_HOME:   /usr/local/tomcat/current
Using CATALINA_TMPDIR: /usr/local/tomcat/current/temp
Using JRE_HOME:        /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
Using CLASSPATH:       /usr/local/tomcat/current/bin/bootstrap.jar

以上

Let's go Party -条件分岐と処理の組み合わせをクロージャで-

しょうもない例を交えて、Groovyのクロージャで手習い。

class Party{
  def with  
  def pay
    
  def myFeeling(cond){    
    if (cond.menber.call(with) && cond.price.call(pay)){    
      cond.feel.call()
    }
  }
}

class Condition{
    Closure  menber
    Closure  price
    Closure  feel
}

def conds = [
    new Condition(
                menber:{it == 'boys'},
                price:{(0..3000).contains(it)},
                feel:{println "どうしよかな"}),

    new Condition(
                menber:{it == 'girls'},
                price:{(3000..10000).contains(it)},
                feel:{println "行く!!"})
]
            
def afterFive = new Party(with:"girls", pay:8000)

conds.each{ afterFive.myFeeling(it) }

構造は参考記事そのままですが、クロージャを使った条件分岐と処理の組み合わせが面白いと思ったので、思いつくままにアレンジ。 いやはや。

参考記事複雑な条件でもOK - おっさんの手習い

まずはWebの新聞をスクレイピングのターゲットに

Groovyで日刊工業新聞のヘッドラインをとってくる。

def urlStr = "http://www.nikkan.co.jp"
def url = new URL(urlStr)
def html = url.getText('euc-jp')

def contents = html.tokenize('\n').findAll{ it =~ /class="entry-content"/ }
headLine = [:]
contents.each{ news ->
   info = news.tokenize(/<*>/)
   title = info[3]
   newsUrl = urlStr + info[2].replaceFirst(/a href=/,"").replaceAll('"','')
   headLine[title] = newsUrl
}

println new Date().format("yyyy/MM/dd(E)") 
headLine.eachWithIndex{ it, no ->
  println "${no}: ${it.key}"
}

とやると、

2012/05/11(金)
0: ダイキン、インド生産エアコンに次世代冷媒を採用
1: 富士通FIP、130億円投じ大阪・横浜DC増強−中国進出も
2: 政府、東電の総合特別事業計画を認定−実質国有化
3: ソフトバンク、米ペイパルと合弁−スマホで決済システム
4: シーエムシー技術開発、超硬具からタングステン99%回収
5: 昨年度の国内携帯出荷、富士通が初の首位−MM総研調べ
6: ルネサス、12年3月期−営業赤字567億円
7: LTTバイオ、既存薬の新規適用に重点
8: ライオン、CO2量を前倒し削減−今年の目標値に到達
9: 株、3カ月ぶり9100円割れ−欧州情勢を警戒
10: 東京の黄銅棒、5カ月ぶり下落−相場・実需とも停滞感
11: 京大、膀胱の体内時計が夜間に多く尿をため良好な睡眠を支えていることを発見
12: 北陸先端大、耐熱305度Cバイオポリエステル
13: 埼玉県産技総合センター、BEMS・HEMS実験開始
14: NEC、LTE向け屋内基地局の設置密度3倍に
15: マルエツ、レジ待ち時間短縮する新サービスを実験
16: 宇部興産、中国でリチウム電池用電解液を生産

と出てきました。

んん、もっとかっこよくコードをかけるようになりたいですね。


追記
続・Webの新聞をスクレイピングのターゲットに - 発言駆動日記

RubyでTwitter Bot作ろうとしたら、いろいろと勉強になりました。

twitter botの基本構成ができるまでの作成手順をざざっと書きました。

1. レンタルサーバ

【VPS】 ServersMan » ServersMan@VPS
【プラン】Entryプラン (¥490/月)
【OS】 Cent OS
【パッケージ】 ディスクパッケージ(標準パッケージ)

2. サーバ環境構築

リモートサーバログイン

OS Xのターミナルで下記を実行

ssh -l <ログイン名> <ホスト名(IPアドレス)> -p <ポート番号>
gccのインストール

サーバ上で下記のコマンドを実行

yum install -y gcc
Rubyのインストール

サーバ上で下記のコマンドを実行

$ mkdir ~/sources
$ cd ~/sources
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p330.zip
$ unzip ruby-1.8.7-p330.zip
$ cd ruby-1.8.7-p330
$ ./configure
$ make
$ make install
RubyGemのインストール
$ yum install -y zlib-devel
$ cd ~/sources/ruby-1.8.7-p330/ext/zlib
$ ruby extconf.rb
$ make
$ make install

$ cd ~/sources
$ wget http://rubyforge.org/frs/download.php/70697/rubygems-1.3.7.zip
$ unzip rubygems-1.3.7.zip
$ cd rubygems-1.3.7
$ ruby setup.rb
$ gem –version
TwitterGemのインストール

下記のコマンドを実行

$ gem install twitter

3. bot用のtwitterアカウントの取得

Twitter

4. twitterアプリケーション登録

申請

Sign in with your Twitter account | Twitter Developers
Application Ditails に下記を入力
【Name】botの名前
【Description】説明(10文字以上)
【WebSite】ブログのURLなど
【Callback URL】ブログのURLなど(オプション)

設定

Home>>My Application>>自分のアプリで下記を設定
【Settings】 Application TypeをRead and Writeに設定
【Details】Access Tokenを取得(Create my access token ボタンを押下)
【OAuth tool】Consumer key, Consumer Secret, Access Token, Access Token Secret を確認。

5. OAuth認証用のライブラリのインストール

サーバ上で下記のコマンドを実行

$ gem install oauth

$ yum install openssl-devel
$ cd ~/sources/ruby-1.8.7-p330/ext/openssl
$ ruby extconf.rb
$ make
$ make install

6. twitter bot の作成

サーバ上で下記のコマンドを実行

$ cd ~/

$ wget https://raw.github.com/rnurakami/Susie/master/tweet.rb
$ sed -i -e "s/YOUR_CONSUMER_KEY/あなたのCONSUMER_KEY/g" tweet.rb
$ sed -i -e "s/YOUR_CONSUMER_SECRET/あなたのCONSUMER_SECRET/g" tweet.rb
$ sed -i -e "s/YOUR_OAUTH_TOKEN/あなたのACCESS_TOKEN/g" tweet.rb
$ sed -i -e "s/YOUR_TOKEN_SECRET/あなたのACCESS_TOKEN_SECRET/g" tweet.rb

$ cat tweet.rb

tweet.rbの中は下記の通り

require 'rubygems'
require 'twitter'

CONSUMER_KEY       = "YOUR_CONSUMER_KEY"
CONSUMER_SECRET    = "YOUR_CONSUMER_SECRET"
ACCESS_TOKEN        = "YOUR_OAUTH_TOKEN"
ACCESS_TOKEN_SECRET = "YOUR_TOKEN_SECRET"

Twitter.configure do |config|
  config.consumer_key       = CONSUMER_KEY
  config.consumer_secret    = CONSUMER_SECRET
  config.oauth_token        = ACCESS_TOKEN
  config.oauth_token_secret = ACCESS_TOKEN_SECRET
end

Twitter.update('bot: "Hello World!"')

tweet.rb を実行

$ ruby tweet.rb

twtterに「bot: "Hello World!"」とつぶやかれていれば成功。

8. JSONライブラリのインストール

サーバ上で下記のコマンドを実行

$ gem install json

9. 雛形をダウンロード

サーバ上で下記のコマンドを実行

wget https://raw.github.com/rnurakami/Susie/master/userstreamtweet.rb

若干長めですが、userstreamtweet.rb の内容は下記の通り

# coding: utf-8

require 'rubygems'
require 'net/https'
require 'twitter'
require 'oauth'
require 'json'
require 'pp'

class MyBot
  CONSUMER_KEY       = "YOUR_CONSUMER_KEY"
  CONSUMER_SECRET    = "YOUR_CONSUMER_SECRET"
  ACCESS_TOKEN        = "YOUR_OAUTH_TOKEN"
  ACCESS_TOKEN_SECRET = "YOUR_TOKEN_SECRET"

  MY_SCREEN_NAME = "YOUR_SCREEN_NAME"

  BOT_USER_AGENT = "my bot @#{MY_SCREEN_NAME}"

  HTTPS_CA_FILE_PATH = "./verisign.cer"

  def initialize
    @consumer = OAuth::Consumer.new(
      CONSUMER_KEY,
      CONSUMER_SECRET,
      :site => 'http://twitter.com'
    )
    @access_token = OAuth::AccessToken.new(
      @consumer,
      ACCESS_TOKEN,
      ACCESS_TOKEN_SECRET
    )
  end

  def connect
    uri = URI.parse("https://userstream.twitter.com/2/user.json?track=#{MY_SCREEN_NAME}")

    https = Net::HTTP.new(uri.host, uri.port)
    https.use_ssl = true
    https.ca_file = HTTPS_CA_FILE_PATH
    https.verify_mode = OpenSSL::SSL::VERIFY_PEER
    https.verify_depth = 5
    pp https

    https.start do |https|
      request = Net::HTTP::Get.new(uri.request_uri)
      request["User-Agent"] = BOT_USER_AGENT
      request.oauth!(https, @consumer, @access_token)

      buf = ""
      https.request(request) do |response|
        response.read_body do |chunk|
          buf << chunk
          while(line = buf[/.+?(\r\n)+/m]) != nil
            begin
              buf.sub!(line,"")
              line.strip!
              status = JSON.parse(line)
            rescue
              break
            end

            yield status
          end
        end
      end
    end
  end

  def run
    loop do
      begin
        connect do |json|
          if json['text']
            user = json['user']
	    pp json['text']
            if(json['text'].matche(/^@#{MY_SCREEN_NAME}/))
              @access_token.post('/statuses/update.json',
                'status' => "@#{user['screen_name']} Hay!",
                'in_reply_to_status_id' => json['id']
              )
              puts "success update!"
            end
          end
        end
      rescue Timeout::Error, StandardError
        puts "Twitterとの接続が切れた為、再接続します"
      end
    end
  end
end

if $0 == __FILE__
  MyBot.new.run
end

実行する為には、下記のCA認証局の証明書が必要

 HTTPS_CA_FILE_PATH = "./verisign.cer"

10. 証明書の取得

証明書

1. FireFoxhttps://userstream.twitter.com/2/user.json にアクセスする。
2. メニューバー>ツール>ページの情報 を開く
3. セキュリティ>証明書を表示... を開く
4. 詳細>書き出す... を開く
5. ファイル形式に「証明書パスを含む X.509 証明書 (PEM)」を選択して保存(ファイル名は verisigin.cer にしました)

サーバへアップロード

OS Xターミナル上で下記のコマンドを実行

$ cd 証明書のあるディレクトリ
$ sftp -oPort=<ポート番号> <ログイン名>@<ホスト名(IPアドレス)>
$ put verisign.cer
$ ls

11. Stream API を使った twitter bot の実行

リモートサーバ上で、userstreamtweet.rb を実行(YOUR_CONSUMER_KEY等を書き換えた上で)

$ ruby userstreamtweet.rb

別のtwitterアカウントからbotへMension(@付きでつぶやく)して、
botから「Hay!」と reply があれば成功



AgileJapan2012 東京サテライト ハイライト編

3月16日。行ってきましたAgileJapan2012 東京サテライト。

メイン会場は大阪ですが、サテライト会場として、ここ東京を含め10拠点(島根もあるよ)で開催されています。

IBM

東京会場は日本橋にありますIBM本社で行われました。(島根会場は松江テルサ! 学生時代、出雲市から電車で通っていた私は、ここのトイレを使うのが日課となっていました。人気がなくて静かです。)

 

 

 アジャイル読書会のメンバーと参加しました。

 

 

 受付には弊社からの助っ人@to_kaneoka氏の姿も。

 

 

 午前のイベントは大阪会場からのUSTREAM中継がメイン。壁に投影された映像から熱が伝わってきます。

アジャイルサムライの著者、ジョナサンによる気迫の講演で開幕し、最後まで熱の冷めない一日となりました。

ジョナサンの講演と岸良氏の講演の内容は、あとで別記事に残しておこうと思います。

 

 

 AgileJapanで最も盛り上がるイベントとして有名な懇親会は、講演やワークショップ、普段の仕事の内容をネタに参加者と講演者がともに語り合うことができる最高のフィニッシュでした。(懇親会はすべてAtlassian社の奢りです。ありがとうございました。)

 AgileJapanに参加して、いろいろと振り返りたいこともありますが、ここは一旦ハイライト編ということで。

 

ワールドカフェで再会を誓ったみなさん、島根出身の学生さん、その他のすごい方々と出会えたことに感謝。