けんちゃんくんさんの Web日記

WEB+DB PRESS Vol.68が届きました

いつもありがとうございます!今号は連載終了と連載開始がたくさんあって、年度の変わりを感じました。

Rubyわくわくナビはかなり好きだったのに終わってしまうのですね。お二人の次回作に期待しております!

WEB+DB PRESS Vol.68
WEB+DB PRESS Vol.68

Jenkins Plugin(JRuby)の勉強会をしました

昨年から細々と続けている社内勉強会の60分一本勝負で、(デブサミで川口さんとnahiさんからいろいろ聞いてきた)hsbtにJenkinsプラグインをJRubyで書く方法について教えてもらいました。

私はそもそもJavaが入ってなかったので次のような感じでいろいろ入れるところからスタート。

最後に入れているjpiがJRubyでJenkins Pluginを作るためのgemだそうな。

手順としては、

  • jpi new hogehgoeで雛形を生成
  • jpi generate hogehoge fugafugaとしてできたファイルを編集
  • jpi buildでパッケージング
  • jpi serverで作ったプラグインが入ったJenkinsが起動

という感じで、generate hogehogeがけっこう肝な感じでした。

Generatorは、いまのところ次の6つがあるんですが、後半はhsbtもよくわからないとのこと。

  • publisher (設定画面で「ビルド後の処理」に入るもの)
  • builder (設定画面で「ビルド」に入るもの)
  • wrapper (設定画面で「ビルド環境」に入るもの)
  • node_property
  • run_listener
  • computer_listener

まずは、上の3つをいろいろ使ってみたり、いまのところJRubyで書かれた唯一のプラグインであるrvm-pluginを見ながらエスパーしたり、「Rubyで書けるならこう書きたい!」みたいなのを考えてみようかという話をしていました。

あとは、Gentooでjpi serverが動かない問題を調査して、pull requestはhsbt(と奥さんの英語力)に託したりと、なかなか有意義な勉強会でした。

通販生活

イヤホンが断線してしまったので、5000円以下では鉄板と言われているEP-630を買ってみました。 本当はBluetoothにしようかと思ったんですが、

  • DR-BT63EXは、実体としてはBT-30に1500円のイヤホンが付いているだけ
  • MW600はインタフェースがもにょもにょ
  • AT-PHA05BTはちょっとお高い

ということがわかったので、状況がかわるまで我慢しようかなぁと思った次第。

EP-630で最初に聞いたときはまぁこんなもんか思ったのですが、2日くらいで慣れてきたのでした。 たしかに鉄板と言われるだけのことはありますね。

あとは、発売日に入手し逃したwacの「音楽」が入荷したようなのでぽちったりしました。

Creative インナーイヤー型イヤホン EP-630 ブラックモデル EP-630-BK
Creative インナーイヤー型イヤホン EP-630 ブラックモデル EP-630-BK

FFXIバージョンアップ

GEEK DAY TOKYOの準備があった影響で、バージョンアップからずっとほっといたけどようやく再開。

バージョンアップ前の状況としては、コルスは取れないまま、トキは取れたという感じでした。

丁度よくプロマシアルートの募集があったので潜り込んだけどアットワで4敗して終了。詩人で参加する度にいつも思うんですが、つらいときに何も出来ないのがもどかしいですね。

黒だってタゲとって薬とマナウォールで1分以上耐えられることだってあるのに…

GEEK DAY TOKYOで「ソーシャルコーディング時代の幕開け」という発表をしてきました

04/03 ジョブポストのURLが過っていたのを直しました

主催のDecooで働いている大学の同期である@nittyanから依頼を受けたので、GEEK DAY TOKYOで発表させていただきました。

イベントの雰囲気や他の発表者の方、参加者の方々を見ても、うちみたいな受託の会社が発表していいもんかとだいぶ不安だったのですが、終わってみればいろいろ反響があって安心しております。

時間の関係もあり、具体的な話があまりできませんでしたが、永和がこれからどんな開発をしていきたいのかというところが伝わると嬉しいです。

大切なこと

ESMでは、こんな開発に興味があるガッツとパッションにあふれるRubyistを募集しております。興味のある方は是非以下のリンクをご覧ください!

esminc / jobs

また、「この話もうちょっと聞きたい!」というイベント主催者の方がいましたら、スライド中のメールアドレスまでご連絡ください。

参考資料

おまけ

スライドで紹介したPull Requestがあるプロジェクト「eiwakun」は、社内で使っているIRCボット件Twitterクライアントみたいなものです。(ソースは諸事情で公開していません)

蕁麻疹とか捻挫とか

先週の金曜日から息子のお腹の調子が悪くて、さらに日曜日のお昼食べたあとに急に体が痒いみたいで見てみたら、蚊に刺されたような膨らみがいっぱいできてて、これが蕁麻疹というものらしいとわかったのであった。 ぎりぎり駅前の皮膚科に間に合うかどうかという時間だったので、若干奥さんと喧嘩しながら走って連れていったけど間に合わず、冷してあげたりすればそんなに痒くはないようなので月曜日まで様子を見ることに。

そして、月曜に奥さんに病院に連れていってもらうことにしたら、病院の前で奥さんが足首を捻挫。

昨日は早退させてもらって家のことをいろいろしていたのでした。

捻挫の痛みはだいぶ引いてきたようなので一安心。息子は蕁麻疹は引いてきたけど、お腹の調子はまだ悪いままなのであった。

アジャイルリーダーシップトレーニングを受けてきました

アジャイルサムライの著者による、本に書いていないアジャイルリーダーシップのトレーニングがあるということで、会社の教育として受けさせてもらいました。

最初に、ジョナサンにとってのトレーニングのインセプションデッキとして、受講者にこのトレーニングで知りたいこと言ってもらい、それをリストアップしていました。

折角なので、実際に困っている「1〜3人の小規模チームでのリーダーシップについて知りたい」という事をお願いしてみたのですが、それについてのディスカッションは後述。

一番ぐっときたこと

発表資料を見直してみても載ってなかったのですが、

大切なのは、継続的に価値を届けること、そしてそれでハッピーになることだ

ということを言っていたような気がするんですよね。そう、みんながハッピーにならなきゃいけないんだよ!

全体として

すばらしいトレーニングでした。 なによりも、要所要所でジョナサンが話す彼が経験してきたプロジェクトの話は興味深く、とても刺激的なものでした。 最後のディスカッションでも、受講者の現場の問題に役立ちそうな彼のエピソードを話してくれて、すごく視野が広がった感覚があります。

また、翻訳、通訳をしていただいた和智さん、本当にありがとうございました。後半はもう頭が働かなくて翻訳に頼りっぱなしでした…(英語勉強します…)

leadershipのScienceについて

初めに、ジョナサンがトレーニングのアジェンダを紹介したのですが、最初が「leadershipのscienceについてだ」というのを聞いてこれはやばいと思いましたね。

ぐっと来たのは、

  • 人は自分のやり方で仕事がしたい
  • 報酬は、ある閾値を超えると効果がなくなる(むしろ悪影響がある)
  • 目標、評価は多角的に、チートできないように設計する

上の2つはダニエルピンクの「モチベーション3.0」の研究成果からの紹介だったのですが、最後の目標と報酬の話は非常に面白かったです。

たとえば、販売部門とシステム部門の部長の評価は、評価の一部に「相手の業績を上げるようなことができたか」という項目を入れることで、足の引っ張り合いもなくなるし、自然と仲良くなるというような話でした。

自分自身をリードする

(アジャイルな)リーダーとは、3つ事をリードしなければならなくて

  • チーム
  • 自分自身
  • 上司(組織)

というような話だったと思います。

そのなかでも、自分自身をリードするために、ドラッカー風エクササイズを実際にやってみるという内容でした。

10 tips for leading your agile team

これはほとんどアジャイルサムライの内容でしたね。 ぐっと来たところだと

  • 「悪いニュース」は伝えるのではなく、誰の目からみても明らかになるようにする(見える化の話)
  • 目標を高く設定し、それをキープする
  • コントロールなんて諦める。ただ、崖から飛びおりようとしていたら止める

小規模チームの話

実際今も1〜3人くらいの小規模チームで仕事をしているのですが、私が感じていた問題は

  • 次イテレーションの準備が十分にできない
  • 一人が休むとプロジェクトが止まってしまう(これはちゃんと伝えられなかったけど、アドバイスは非常に参考になった)

というものでした。ジョナサンから貰ったアドバイスは次のようなものでした。

まず、小規模チームというのは素晴らしい。2人なんて最高だ。 顧客とも直接話ができるんだろう? なら、次イテレーションの準備なんて言わずに、そのイテレーションの最初、もしくは途中でも、そのイテレーションでやることを決められるんじゃないか?

思わず「あぁ…」と声を漏らしそうになるくらい、今自分が出来ていないことがわかってしまう、とても的確なアドバイスでした。もっと精進します。

ディスカッションの他のテーマ

1時間くらいは受講者の知りたいことについてディスカッションする時間があったので、これの為に来たと思ってもお釣りがくるくらいいい内容でした。

メモ程度ですが気になったことを書いておきます。

  • 組織にアジャイルを普及されるために、今アジャイルで上手くいっているチームをバラしてもいいのか
  • トレードオフスライダーは「scopeを変えますよ」という宣言のために作るんだ
  • 全てがfixされているプロジェクトでは、お金を出している人を探すところから
  • チームが自発的にタスクを取ってくれない?リーダーが2週間いなくなればいいよ

おわりに

アジャイルサムライ大好きなのに、ジョナサンの話を聞いたのはこのトレーニングだけだし、記念写真とりわすれるし…

ただ、またいつか会える日がきて、そのときはジョナサンに私のサムライ戦記を伝えられるように、これからもがんばろうと思ったのでした。

散髪

前回から3ヶ月経ってたらしいですね。(散髪ログ便利)

家から徒歩3分の美容院がPM11時まで受けつけなのでいつもお世話になっていたんですが、来月からPM8時が最終になるらしくて困り気味。

聞くところによると、深夜に入れる若者がどんどん辞めていってしまっているらしく、どこの業界でも若者は3年でやめるのかーと思ったのでした。

GEEK DAY TOKYO ワクワクエンジニアリングで発表してきます

3/31にあるGEEK DAY TOKYOというイベントで「ソーシャルコーディング時代の幕開け」というタイトルでお話させていただくことになりました。

タイトルからもわかる通りGitHubの話なんですが、「受託開発の会社がお仕事のリポジトリとしてGitHubを採用してみたら何が起きたか」という話をしようと思っています。

他の発表者の方を見ると、普段あまり接点がない感じなので、楽しみでもあり不安でもあるという複雑な感じです。

なにやら、Asakusa.rbの花見が同じ日にあるようですが、興味のある方は来てみてください。(ドリンク(アルコール有)、軽食無料だそうです!)(LTと展示も募集中だそうです!)

はてなブックマークボタンを行動情報を取得しないものに変更しました

ここ数日揉めていた件に対応しました。

行動情報を取得しないはてなブックマークボタン作成ページ

普通に作るボタンは「行動情報を収集する」パターンで、下に灰色の文字でオプトアウト版の作成ページへのリンクを作るというのは、なんというかそこまでいってしまったんだなぁという感が否めないですね。

記事のURLが.htmlとなるように変更しました

octopressのデフォルト設定では、記事のURLは/YYYY/MM/DD/#{title}/のようになるんですが、某ブックマークサービスでは末尾のスラッシュを名寄せしてくれなかったり、ブラウザによって末尾のスラッシュ無しの場合にリダイレクトされたURLがアレな感じになったりするので、.htmlで終わるように設定を変更しました。

これによって、過去の記事のURLも全て変更されていますので、ブックマークから見れなくなっていると思います。すみません。

Turnipを使ってtappのテストを書いた話

WEB+DB PRESSのRubyわくわくナビでも紹介されたtappのテストについては社内でも定期的に上がる話題で、もう少し広い意味で考えると、標準出力を扱うアプリのテストをどうするかという話になったりするのですが、

  • tappの単体テストってなんかしっくりこないよね
  • 標準出力に出すだけだしね
  • そういえば、vim-ruby-refactoringっていうVimプラグインのテストがCucumberで書いてあるんですよ
  • そういえば、jnicklas先生の新作Turnipっていうのがあって…
  • それ使ってみましょう

という感じでTurnipを使ってAcceptance Testを書いてみました。

Turnipの特徴はこんな感じです。

  • 記法はCucumberと同じGherkin
  • Stepの定義に正規表現を使わずに、ただの文字列と、その中にコロン(:)をプレフィックスとしたプレースホルダで変数を扱う
  • Stepに名前空間ある
  • Stepの名前空間に変数が持てる

日本語で書けるかどうかは試してないですが、なかなかよさそうじゃありませんか?

Turnipで書いたtappのテストを下に載せておきます。 ただ、名前空間とかは使ってないので、Cucumberとは殆ど変わりませんね。

Feature: Object#tapp

  Scenario: Call tapp within methods chain
    Given I have the following code:
    """
    require 'tapp'

    (1..5).tapp.select(&:odd?).tapp.inject(&:+)
    """

    When Ruby it

    Then I should see:
    """
    1..5
    [1, 3, 5]
    """

Step定義も合わせてどうぞ。 こっちは、よくある標準出力をテストする方法を使っています。

step "I have the following code:" do |code|
  @code = code
end

step "Ruby it" do
  stdout = StringIO.new
  $stdout = stdout
  begin
    eval @code
  ensure
    $stdout = STDOUT
  end
  @output = stdout.string.chop
end

step "I should see:" do |output|
  @output.should == output
end

結構読みやすいと思うんですがどうでしょう。標準入出力を扱う簡単なツールは、こんな感じで単体テストよりもエンドツーエンドのテストを書いておいた方が価値があると思います。

The RSpec Book (Professional Ruby Series)
The RSpec Book (Professional Ruby Series)

デブサミ参加記録

(これは3/1に書きました)

去年はなんとなく参加しなかったデブサミですが、今年は少しだけ参加しました。

  • 1日目: 平鍋さん
  • 2日目: 角谷さん、松田さん

私にとって、デブサミと平鍋さんの組み合わせは特別なものなので、今年はどうしても行きたかったのです。

あれは2005年、学生として潜り込んだデブサミで平鍋さんの見える化の話を聞いたのが、私と永和の出会いだったのです。 その7年後の2012年に、平鍋さんから聞くアジャイルの10年という話は、あの頃の衝撃を思いださせてくれる、平鍋さんにしかできない話で感動しました。

角谷さんの話は、だいたい会社で話してることや、耳に入ってくる話が中心ではあるんですが「自然なソフトウェアの作り方」と「オープンソースソフトウェア」という話は、なるほどなーと思いました。オープンソースソフトウェアはすごい。

最後の松田さんは、もうあれは聞かなかった人は、スライドだけでも見るべきですね。必修科目です。GitHubとはなんなのか、何故GitHubなのか、彼等は何をなしとげたのか、すごく綺麗にまとまっていました。 これを聞いてから、GitHubの事を他の人に話そうとしても、松田さんの言ってたことをそのまま言うしかなくなってしまって少し困っています。

1年振りに参加したデブサミはとても満足できたのですが、一方で技術的なセッションがソーシャル系というかビッグデータ系ばかりなのは、ちょっと寂しいというか、もう少し何か話題がないのかな〜と思いました。

(本当は、1日目の和智さんも聞きにいく予定だったのですが仕事で間に合わず。後日Twitterを眺めて雰囲気を楽しみました。)

1日遅いバレンタインデー

生クリームを買ってこいとの指令があったので買って帰ったら作ってくれました。 ありがとう!おいしゅうございました。

FF11のバージョンアップ

新ナイズルのみで、しかもその仕組みもドロップもごにょごにょらしいのでちょっと様子見。 30分しばりのせいで野良でも行きにくいし、身内でたまに行くしかやりようがないですな。

とはいえ、VWも

  • コルスカンティ
  • トキ
  • ルベウス頭、アトス頭(コンプしたいけど別にどうでもいい)

くらいしか欲しいのがないし困ったなぁ。

HTML5 Advent Calendar 2011の電子書籍

GIHYO DEGITAL PUBLISHINGでHTML5 Advent Calendar 2011の電子書籍が出ていたので読んでみました。

https://gihyo.jp/dp/sp/advent2011/G11C23

内容では、マイナーAPIの紹介がどれもおもしろかったです。

まとめページや個別の記事をブクマするのもいいですけど、電子書籍として持つのも悪くないんじゃないですかね。 何回もクリックしなくても全部をざっと読めますし、技評さんとアドベンドカレンダーを書いてくださったみなさんに感謝。

えのき氷

先週くらいから妻が「えのき氷」を作りはじめているのでした。

週に2回くらいえのきを3パックほど購入しているのですが、作ってるときの匂いがあまり好きになれずに、こちらはあまり食べていないのでした。(勝手に入れられているようだけど…)

効果のほどは数ヶ月後に。

Galaxy Nexusのアップデート

Galaxy Nexusのアップデートが降ってきたので更新業。

目玉はエリアメール(緊急地震速報)ということで、ものすごい危険な感じのアイコンのアプリが追加されてました。

送別会

福井での新人研修でお世話になった方の送別会でした。

研修中はいろいろ勝手なことを言ったり、やらせてもらったりと、大変お世話になりました。

定年退職で教え子に送別会をしてもらえるような人になりたいですねー。

幹事の@jyun1さん、ありがとうございました。

アジャイルサムライ トレーニングのご案内

アジャイルサムライの著者Jonathan Rasmussonの来日に合わせてアジャイルサムライ トレーニングが開催されるそうです!

トレーニングコースは「アジャイルリーダーシップトレーニング」「アジャイルインセプションデッキ作成ワークショップ」の2つだそうで、リーダーシップトレーニングは著書の中ではあまりふれられなかった内容ですし、インセプションデッキは最近弊社でもやっていてすごく楽しそうというか、もうこれは必須だろうという感じなので、どちらのワークショップも参加してみたい!

今月中は早期割引があるようなので、興味のある方は早めに申し込むといいと思いますよ。

お申し込みはこちら:アジャイルサムライ トレーニングのご案内

あわせて読みたい:『アジャイルサムライ』原著者によるトレーニングを開催します - Ruby x Agile

アジャイルサムライ−達人開発者への道−
アジャイルサムライ−達人開発者への道−

Chrome for Android Beta

Chrome Beta - Android マーケットのアプリ

早速入れて使ってますが、これはなかなかいいものですね。 拡張と自動入力データ(パスワードとか)の同期はまだないみたいですが、拡張はともかく自動入力データの同期が入れば文句なしな予感。

最近のパスワード管理は、ランダムな文字列を生成して、それをChromeさんに覚えてもらっているので、これが携帯に同期されればいろいろな問題が解決してすごくハッピーな感じです。

(当然Googleアカウントは2段階認証にしています)

(1Passwordをポチるのをぐっと我慢し続けてきてよかった)

UIも嫌いじゃないので、さっそくデフォルトのブラウザアプリを変更したのでした。

JenkinsのXvfbプラグイン

Jenkinsでcapybara-webkitをX無しで使うためにheadlessを入れていました。 ただ、CIの環境に依存したコードが少なからずリポジトリに入ってしまうのもなんだかなーと思っていたところ、Xvfbプラグインなるものがあるそうなのでこちらに乗り変えてみました。

設定は、xvfbコマンドのあるところを教えてあげるだけでいいので楽チンです。

コードベースからもいらないコードが消せるので、headlessを使っていた人は乗り換えてもいいんじゃないでしょうか。

gigをセットアップ

hsbtのgig(github irc gateway)を使い始めたを読んでなかなか良さそうだったので、自分のサーバにも入れてみました。

そのまま1.9.2で起動したみたら、daemonizeするときのSTDIN.reopenでエラーで落ちてしまうので、$stdinにファイルディスクリプタを代入するようにして起動してみました。

あとで理由を調べてフィードバックしたいところ。

ひとまず、githubのwatchとかfollowとかを見る癖がつくのはだいぶいい感じですね。