Hatena::ブログ(Diary)

脱線こそ本道

2012-09-11

Scrum Boot Camp in 福岡 開催お手伝いしました。

f:id:goking:20120908094541j:image

まずは、1年以上ブログを更新していないことに愕然…。最近軽い記事はQiitaとかに書いてるしなあ。

さて、気を取り直して。タイトル通り、Scrum Boot Camp in 福岡というイベントの開催をお手伝いしました。元々は、 @haradakiro さんより福岡開催してみない?と昨年あたりからそそのかされていて、まずはどんなものかと第三回に参加してたりしたのですが、なんだかズルズルといってこの時期の開催と相成りました。

日程的にも明星和楽というビックイベントに被ってしまい、集客不安があったのですが、最終的には27名もの方に参加頂きました。長崎から朝6時に出発して車で来た猛者4人組(といっても3名女性!)もいらっしゃって、ホントに有り難かったです。

f:id:goking:20120911120939j:image:right

内容は、ざっくりまとめると以下の通りでした(間違えているかも)。

(昼食)

[]は参加者が手を動かしたもの。

神戸では午後にやった(と記憶している)紙ヒコーキが、福岡では午前に変更されていたりしたのですが、その場では特になんとも思いませんでした。しかし、その後のScrumの導入のところで「スプリントとは、さっきの紙ヒコーキの時の…」という説明を聞いてやっとわかりました。説明に対する理解度が上がるよう、先に体感させるという検査適用がなされた結果だったんですね。すごい。

細かい内容は後日補足を書くかもしれませんが、まずは、開催の報告まで。

最後になりましたが、講師のみなさまに感謝

  • 当日メイン講師を務めて頂いた @ryuzee さん
    • 当日マイク存在を伝え忘れていて、喉を痛めさせて申し訳なかったです m(_ _)m
    • ほぼ一日しゃべりっぱなしで、本当にお疲れ様でした!
  • PBIの見積もりなどでサブ講師を務めて頂いた @kappa4 さん
  • 全般的なサポートを頂いた @takaesu0 さん
    • 持続可能なペースとは何か体を張って教えていだけましたw
  • 最初に声をかけて頂いた @haradakiro さん
    • やっと開催できました!

f:id:goking:20120911120932j:image:h300:left

f:id:goking:20120911120905j:image:h300

せっかく、九州でScrumに関心をもっている方と繋がりをもつことができましたので、今後コミュニティに発展させて行きたいなあーと思っています。

まずは瀕死?のアジャイルサムライ福岡道場の立て直しからだな!

2012-09-10

Scrum Boot Camp in 福岡 開催お手伝いしました。

まずは、1年以上ブログを更新していないことに愕然…。最近軽い記事はQiitaとかに書いてるしなあ。

さて、気を取り直して。タイトル通り、Scrum Boot Camp in 福岡というイベントの開催をお手伝いしました。元々は、 @haradakiro さんより福岡開催してみない?と昨年あたりからそそのかされていて、まずはどんなものかと第三回に参加してたりしたのですが、なんだかズルズルといってこの時期の開催と相成りました。

日程的にも明星和楽というビックイベントに被ってしまい、集客不安があったのですが、最終的には27名もの方に参加頂きました。長崎から朝6時に出発して車で来た猛者4人組(といっても3名女性!)もいらっしゃって、ホントに有り難かったです。

内容は、ざっくりまとめると以下の通りでした(間違えているかも)。

[]は参加者が手を動かしたもの。

神戸では午後にやった紙ヒコーキが、福岡では午前に変更されていたりしたのですが、その場では特になんとも思いませんでした。しかし、その後のScrumの導入のところで「スプリントとは、さっきの紙ヒコーキの時の…」という説明を聞いてやっとわかりました。説明に対する理解度が上がるよう、先に体感させるという検査適用がなされた結果だったんですね。すごい。

細かい内容は後日補足を書くかもしれませんが、まずは、開催の報告まで。

最後になりましたが、講師のみなさまに感謝

  • 当日メイン講師を務めて頂いた @ryuzee さん
    • 当日マイク存在を伝え忘れていて、喉を痛めさせて申し訳なかったです m(_ _)m
    • ほぼ一日しゃべりっぱなしで、本当にお疲れ様でした!
  • PBIの見積もりなどでサブ講師を務めて頂いた @kappa4 さん
  • 全般的なサポートを頂いた @takaesu0 さん
    • 持続可能なペースとは何か体を張って教えていだけましたw
  • 最初に声をかけて頂いた @haradakiro さん
    • やっと開催できました!

せっかく、九州でScrumに関心をもっている方と繋がりをもつことができましたので、今後コミュニティに発展させて行きたいなあーと思っています。

まずは瀕死?のアジャイルサムライ福岡道場の立て直しからだな!

2011-08-11

社内ハッカソンを成功させる5つのポイント

先日、社内ハッカソン実施しました。こちらの記事をリツイートしている社員を見つけたのがきっかけです。

no title

すぐさま「やりましょう」と言っちゃいました。上のブログの通り30時間アウトプットを出す(つまり2日がかり)というルール適用したのですが、結果としてはかなり盛り上がり、質はバラバラでしたが、それなりに「おおっ」となるプロダクトがアウトプットされました。初回にしては成功したと思います。

f:id:goking:20110811081456j:image:right

その要因をまとめてみようと思います。

名前を付ける

会社名がハウという略称で呼ばれているので、「ハウッカソン」という名前にしました(安易ですが)。「社内ハッカソン」という呼び名でやるよりも、自分たちで作っている感がでます。参加していない人へのアピールにも使えますし、お奨めです。

日常である事を強調する

今回は参加者が「ビール飲みたい!」と言い出したのがきっかけで、特に意図もなく飲み始めたのですが、会社の中で昼間っからビール片手にコード書くと、何だかいたずらをしているような高揚感を覚えました。

社内なので参加者間には下手に色々な先入観人間関係があります。最初はどうしても会話がぎこちなかったり、発想が偏ってしまうこともあると思います。そういう時はアルコールを注入してみるというのも手だと思います。

もちろんあまりに注入しすぎると、コーディングどころじゃなくなってしまうのでご注意を。とはいえ、2日目は時間が無くなってきたせいもあって、ほとんどの人はアルコールに手をのばさず、コーディングに集中していましたが…。

あくまで関係性をほぐしたり、非日常の思考にシフトするきっかけづくりが出来ればいいので、アルコールに限らず、勤務中はタブーだろうという事をあえてやってみるとよいと思います。

リソースをうまく使う

社内なのでリソースは色々あると思います。パッケージ製品サービスなどを持っていれば、それを土台にすることが出来ます。ジョーク的に機能をつけてみるという方向もあれば、コードベースだけ流用するという方向もあります。

他部署のコードを見るいい機会にもなりますし、いずれにせよ、アイディアの実装に集中できるので成果が見えやすいというメリットは活かすべきでしょう。

食事はその場で食べれるものを

実際始めると時間が全然足りなくなり、食事をとるのも惜しいという状態になります。いそいそと各人コンビニに買い物に行くのもいいのですが、サンドウィッチやおにぎりなど、つまみやすいものをドーンと用意できるのであればその方がベターです。

今回はカミさんが手料理を差し入れてくれて、お昼タイムはいい憩いの時間になりました。Thank you honey!

成果を公開する

出来たコードや動いているサービス、そしてハッカソンに参加して得られたことを、積極的に公開することはとても大切です。参加者にとっては、ハッカソンという非日常な集中の場で得られたことの価値に気づくきっかけとなりますし、その他の人には、会社の潜在能力を知るいい機会となります。

はいえ、社内ハッカソンで産み出されたものが、そのまま事業に繋がるかどうかは分かりません。それを過度に期待することはハッカソン存在意義を歪めてしまうことになるでしょう。

まとめ

社内ハッカソンは、いわば競技であって事業ではありません。産み出したものそのものよりも、その結果得たものの方が大切です。日常のしがらみを解放し、とにかく目の前のコードに集中することを純粋に楽しむ…それが社内ハッカソンの神髄だと思います。

ハウッカソン当日の、とあるチームのまとめがこちらにありますので、これからやってみようという方には参考になると思います。

日記

2011-05-05

旧Twitterの画面に戻す方法

twitter.comのWeb画面を旧インターフェースに戻したいという方は、結構いらっしゃるようですね。Twitterの方針としてはそのうち旧インターフェースは廃止するようですが、2011/5/5現在、まだ猶予期間中のはずなのに戻せなくなっているようでした。

そこで、戻す方法をメモします。ブラウザFireFoxを例にしますが、他のブラウザでも「Cookieを消す」という基本は同じはずです。

さて、旧インターフェースを使っていると次のようなバーが上部に表示されます。

f:id:goking:20110505150114p:image

「新Twitterに切り替える」というボタンを押すと、新インターフェースに切り替わるのですが、問題は切り替えたあと戻せなくなってしまう、ということです。正確にいうと、新インターフェースの右上にある自分アカウントクリックすると「旧Twitterへ」というメニューが出てくるのですが、これを選択してもエラー画面が表示されてしまい、戻れないのです。

f:id:goking:20110505150535p:image

f:id:goking:20110505150536p:image

これは、Twitter側の問題ですので、そのうち解消されるかも知れませんが…。さて、戻す方法ですが、FireFoxオプションを開き、プライバシーを選択します。

f:id:goking:20110505151030p:image

Cookieを個別に削除」というリンククリックすると、以下の画面が表示されます。ここで、検索ボックスに「phx」と入力すると以下のように、サイトtwitter.com、Cookie名がphx_seen_bannerという項目が表示されますので、それをクリックします(もし、複数表示された場合は、サイトCookie名が一致するものを選択してください)。その後、「Cookieを削除」というボタンクリックし、ウィンドウを閉じます(オプションウィンドウも)。

f:id:goking:20110505151158p:image

そしてブラウザの再読込みボタンを押して、twitter.comを再表示させると、再び「#NewTwitterへようこそ!」というバーが上部に表示されるようになります。

f:id:goking:20110505151909p:image

このバーの「旧Twitter」というリンククリックすると、旧インターフェースに戻ることができます。

2010-11-25

JIP -- Java Interactive Profiler

最近技術ネタ続きですね。というか、久しぶりにコンスタント投稿しているからそう見えているだけかもしれません。

さて、今、とあるモジュールをプロファイリングしていて、完了するのに1時間ほどかかるのでその間に使っているプロファイラについてポストします。

本当は、今やっているプロファイリングは、NetBeans Profilerを使って行うはずだったのです。ところが、NetBeans Profilerのエージェントが対象のクラスをあらかたキャッシュし終えて、そろそろ開始かなと思ったとたんに接続が切れてしまう…という現象が、対象の環境で発生しました。いろいろ試行錯誤したのですが、結局原因がわからず、急遽別のプロファイラに乗り換えることにしました。もちろん無償で使えるモノ…。

そこで見つけたのがJIPです。結構歴史は古い(2005年SourceForge登録)ようですが、日本語での紹介記事がほとんどなく、意外と知られていないのかな?

http://jiprof.sourceforge.net/


JVM付属の)hprofおよびNetBeans Profilerと比較しつつ、JIPのいいところを3つ挙げてみたいと思います。

JIPの特徴

1. インタラクティブプロファイリング

計測ON/OFFや除外クラスの変更などを、付属コマンドを使ってJVM再起動することなほぼ一瞬で操作することができます。

hprofだと再起動しない限りON/OFFできませんので、とあるリクエストの処理だけ計測する…ということができずWebサーバ起動までの処理もみんな一緒くたに集計されてしまいます。一方、NetBeansは、ON/OFF可能ですが、除外クラスの変更はキャッシュを作り直しているのか結構時間がかかります。


2. Pure Java

普通プロファイラは、*.soとか*.dllといった共有ライブラリ付属していますが、JIPはPure Javaです。プラットフォームを選ばずに動作します。それだけでなく、JIPはASMを利用した非常にシンプルな作りになっているため、自分で独自の集計ができるように改良する、なんてこともやりやすいでしょう。

作者による、オレオレプロファイラの作り方を書いた、この記事にエッセンスが詰まっています。

http://www.ibm.com/developerworks/jp/java/library/j-jip/


3. フィルタの充実

プロファイリングでは、計測対象のクラスフィルタリングが非常に大事です。多すぎると遅くなって計れないし、少なすぎるとボトルネックを絞り込めません。JIPはクラスローダーによるフィルタリングベースに、クラスのincludeとexcludeを合わせて指定できます。

hprofは何も指定できないので論外。NetBeansは意外にもincludeか、excludeかどちらかしか選べないのです。その点、JIPは柔軟に指定できます。


使い方

JIPをダウンロードして解凍したら(解凍ディレクトリをJIP_HOMEとします)、計測対象のアプリケーションを起動させましょう。Tomcatで動作するWebアプリケーションなら、以下のような環境変数を指定します。

> SET JAVA_OPTS=-javaagent:%JIP_HOME%\profile\profile.jar -Dprofile.properties=%JIP_HOME%\profile\webapp.profile.properties

なお、ここで出てくるwebapp.profiler.propertiesは、Tomcat用に予め用意された設定ファイルで、必要に応じて変更してください。

そうしたら、あとはTomcatを起動するだけです。うまく設定できていれば、Tomcatログに以下のような出力が含まれるはずです。

・・・
profiler: off
remote: on
port: 15599
thread-depth: compact
・・・

感覚的に普通の起動より5倍以上時間がかかりますので、コーヒーでも入れながら気長にトライしてみてください。これでも、hprofよりはましなはずです。

起動したら、計測したい箇所まで画面遷移させたら、プロファイラをオンにして計測を開始します。

> cd %JIP_HOME%\client
> start.bat localhost 15599

処理が終わったらプロファイラを止めて結果をダンプさせます。

> finish.bat localhost 15599

そうすると、結果のprofile.txtprofile.xmlが、Tomcatの実行ディレクトリ(大抵の場合CATALINA_HOME)に出力されるはずです。

profile.txtテキストエディタで見るだけでも十分なのですが、NetBeansに比べると見劣りしてしまいますよね。そういうときは、jipViewerの出番です。引数profile.xmlへのパスを指定して下さい。

> cd %JIP_HOME%\tools
> jipViewer.bat path\to\profile.xml

すると、こんな感じでプロファイリング結果が表示されます。

f:id:goking:20101125180044p:image

実行時間ソートしたり、呼び出し元をたどったりと、必要十分な感じです。まあ、欲をいうと、値をコピーしてExcelかに貼り付けられるようになると、もっと便利な気はしますけども。

そんなこんなで、是非使って見てください。