2012年7月31日火曜日

Jenkins ユーザ・カンファレンス 2012 東京に参加してきました #juc2012

Jenkins ユーザ・カンファレンス 2012 東京
http://connpass.com/event/467/

Jenkins ユーザ・カンファレンス 2012 東京
http://build-shokunin.org/juc2012/

2012/07/29Jenkins ユーザ・カンファレンス 2012 東京 Vol.1 #juc2012
http://togetter.com/li/346310

2012/07/29 Jenkins ユーザ・カンファレンス 2012 東京 Vol.2 #juc2012
http://togetter.com/li/346736

きっかけ

本格的にJenkinsを使い出したきっかけは、TDDBC横浜でコミットフックでビルドからレポートまで自動で行われていたのを見てからです。
仕事で使うツールを作っていた時、カバレッジを取るためにCoberturaを使っていたのですが、マシンが非力なため欲しい時にすぐに見れないというもどかしさがありました。
JenkinsならSCMと連携してコミットフックスクリプトからジョブを起動することができます。
これで、重たいビルドやレポート処理を別のマシンに任せることが出来、結果、テストの漏れや他のテストを壊していないか確認しながら進めることが出来ました。
その他にも、シェルスクリプトが書けるので、DBのバックアップを定時処理やwgetを実行して任意のタイミングで取る等に利用しています。
そんなに便利なJenkinsさんを使い倒している人たちが集まるカンファレンスなので、自分の知らない使い方を知ることが出来ると思い、参加しました。

セッション

当日は、以下のセッションを受講しました。
  1. Jenkinsプロジェクト現状報告とこれから (基調講演)
  2. Jenkinsによる自動受け入れテストから継続的デリバリーまで
  3. 愛されるJenkins氏になるために
  4. マルチステージ型継続的インテグレーションのすすめ
  5. 毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
基調講演では、現在のJenkinsがどのような状況なのか知ることが出来ました。
特に印象的だったのは、Githubと連携してJenkinsがbuildを開始するデモにおける@kohsukekawaさんのタイプスピードでした。
その他には、プラグインの拡張ポイントの拡充や、Rubyによるプラグイン開発を可能にしたりとよりプラグインを使いやすくしたりする方向にシフトしているとのことです。
また、UIもVersion up毎に変わっていたのを感じていましたが、よりUXを充実したものにしようとする試みがなされていてとても使いやすくなってきています。

継続的デリバリーの話は、@ryuzeeさんの講演でいろいろ聞いていましたので英語でも分からないことが少なくてよかったです。
受け入れテストをコードで書くのは、SpockなりGebなりでやってみようと思います。
Jenkinsさんは、プロセスを改善する際に現状の把握と手助けをしてくれます。
そして、現実と戦うためにはやらないことや優先順位の低いものとして割り切らなければならない選択が必要になってきます。その選択を手伝ってくれるのもJenkinsさんです。
仮想化が出来るようになったおかげで、環境構築のテストも自動化の対象とすることが出来るようになりました。
Chef soloの実運用の話が聞けたのは、とても有意義でした。特に冪等性の話は、一度だけではなく何度でも実行できるようにしておくことで、フィードバックループを早く回せることが出来るので、スクリプトを組む際は考慮して行こうと思いました。

最後に

基調講演でも紹介されたbuildhiveに先日のTDD in Actionで利用したプロジェクトを試しに追加してみました。
自動的にgradleのプロジェクトとして認識されて、普通にtestまで出来てしまいました。
まだgradleでカバレッジ系のプラグインを試していないのですが、多分普通に使えるのでは無いかなと思っているので、試してみたいと思います。
レポジトリにpushされるたびにビルドが実行されるので、pull requestとの相性もバッチリです。

Jenkinsさんを世に出してくれた@kohsukekawaさん、リアルJenkinsさんである@ikikkoさん、講演者の方々、スタッフの皆様、会場を提供してくださった法政大学様ありがとうございました。

2012年7月26日木曜日

TDD in Action に参加してきました #tddact

TDD in Action #tddact
http://kokucheese.com/event/index/44005/

TDD in Action #tddact
http://togetter.com/li/343540

先日のSCMBootCamp in Tokyo 3に引き続いて、参加してきました。

今回は、パートナーにアジャイルサムライ読書会の横浜道場でお世話になっている@y_sumidaさんを迎えて、IntelliJ IDEA + groovy + Spockでやりました。
ドライバーの交代のたびにいちいちPC移動させるのは面倒だし、説明するよりコード書いたほうが分かりやすいので、ペアプロ用にHHKB Lite2を持って行きました。

課題はこちら
TDD Boot Camp 大阪 2.0/課題

当日の成果はこちら
https://github.com/grimrose/tddact_20120722

マウスを持っていかなかったのでちょっと手こずる場面もありましたが、交代もスムーズに出来ましたし、話し合いながら手を動かすことが出来たのでとても楽しかったです。
@y_sumidaさんありがとうございました。

環境設定にはgradleを利用しました。
gradleだとIDEA + groovy + Spockの環境は簡単に出来ますし、gradle wrapperまで用意できればgradleが設定されていないPCでもJDKさえ入っていれば同じことが出来るようになります。
gradleさん、パネェっす。

JPOUGさんのご好意で朝からビールが飲めるビールクズ環境でしたが、アルコールが入ると寝てしまう体なので懇親会まで飲めませんでした。

主宰の@kyon_mmさんと@pocketberserkerさんのライブコーディングは、Thinkから始めていたのでとても勉強になりました。
あの段階は、レポジトリの歴史に載っていないことが多いので、ライブならではだと感じました。
実業務でもあのやり方を取り入れてやってみます。

TDDのイベントで一番面白いのは、他の言語をテストから知ることが出来るということだと思います。
同じ課題をこなすことで他の言語でも、なんとなく文脈を読み取れるのでとても勉強になります。
TDDの課題と実装が言語ごとにまとまっていると、写経するにしても知っている言語との比較で理解できるのでとても参考になると思います。

今回のTDD in Actionは、BootCampと違って、自分のTDDに対する考え方に不安を持っていたり、他のやり方に興味が有るような人にとって、良い場を提供してもらえたのではないかなと思います。
次回あるか分からないとおっしゃっていましたが、関東でも続けていければいいなと思いました。

最後に

2日間イベントを開催してくださった@kyon_mmさんと@pocketberserkerさん、お疲れ様でした。
この2日間とても楽しい時間を過ごすことが出来ました。
スタッフの皆様、ビール等提供して下さったJPOUGさん、会場を提供して下さった日本オラクル様ありがとうございました。

2012年7月24日火曜日

SCMBootCamp in Tokyo 3 に参加してきました #scmbc

SCMBootCamp in Tokyo 3 #scmbc
http://kokucheese.com/event/index/42642/

SCMBootCamp in Tokyo3 #scmbc
http://togetter.com/li/342324


きっかけ

subversionを使っていてコミットせずにローカルの履歴管理出来たら嬉しいのにと思っていたので、分散VCSを知った時はこれで出来ると思っていました。
しかし、なかなか今までの考え方では理解できないこともありました。そこで、githubに触れながらgitに慣れていこうと独りでもくもくとやっていました。
SCMBootCampは2回目の内容が面白そうだったので、次回開催されるのであれば参加したいと思っていました。
準備にGitHubの設定があったので、もしかしたらpull requestの実践も出来るのではないかと期待してました。

世代差で見る履歴管理ツール入門
http://www.lares.dti.ne.jp/~foozy/fujiguruma/scm/scmbc-201207/speech.html

Gitチートシート

個人的にコマンドがずらずら並んでいるチートシートより「こういうことしたいならこういうコマンド使うといいよ」みたいなチートシートにすれば必ず見ると思ったので、チームに提案してみました。
その他にも、チームがsubversionに慣れていたので同じ事をする場合、svnとgitのコマンドを並べてみるや、ブランチに関するコマンド、GitHubに関するコマンド等をやることになりました。

成果はこちら。
https://github.com/grimrose/scmbc201207

コンフリクトを狙ったのに、綺麗にマージされたり、macとwinの改行コードや文字コードの問題があったり、コンフリクトの解消に手間取ったり、pushしてもrejectされて(´・ω・`)となったり、といろいろコミットグラフを振り返って見ると思い出されました。

初めはpullを使っていましたが、以下のようにfetchとrebaseを利用することで、コミットグラフを見やすくできるということを教えていただきました。
  • git checkout -b fix_xxx
    • - file edit -
  • git add
  • git commit
  • git checkout master
  • git fetch
  • git rebase origin/master
  • git merge --no-ff fix_xxx

複数のブランチをマージする際に使ってみようと思います。

期待していたpull requestも無事できました。演習とはいえ実際に取り込まれるとやっぱり嬉しいですね。
先日、間違えてgradleをforkしてしまったのですが、いつかはpull requestを投げてみたいと思いました。

最後に

反省点として、うまく伝えたいことを伝えられなくて、同じチームの人に迷惑をかけてしまったのかなと思いました。
中途半端に知っているのが一番良くないというのが、如実に出てしまいました。

懇親会でBitbucketのTシャツをいただきました。なので早速アカウントを作って見ました。
BitbucketってMercurialだけだと思っていましたがgitも使えるので、プライベートなレポジトリを作る際に利用してみたいと思います。

scmbc主宰の@kyon_mmさん、@pocketberserkerさん、スタッフの皆様、会場を提供してくださったニフティ株式会社様ありがとうございました。

2012年7月23日月曜日

アジャイルサムライ読書会 横浜道場 特別編 「アジャイルは組織を変えられるのか」 に参加してきました #agilesamurai #横浜道場

アジャイルサムライ読書会 横浜道場 特別編 「アジャイルは組織を変えられるのか」
http://partake.in/events/8b888e57-e3d3-4703-a456-4c042bcaf429

2012/07/19 アジャイルサムライ読書会 横浜道場 特別編 「アジャイルは組織を変えられるのか」 #agilesamurai #横浜道場
http://togetter.com/li/341420

アジャイルサムライ読書会 横浜道場 特別編  #agilesamurai #横浜道場
https://yukar.in/note/ckF3it


今回は、楽天の藤原さん(@daipresents)、及部さん(@TAKAKING22)を迎えての特別編でした。

アジャイルリーダーシップと組織改革


アジャイルペーペーシップとチーム改革

印象に残ったこと、共感したこと

  • 少人数で開発側からアプローチするならXPは、やりやすいと思う
  • 定量的に観測できる手段があると、今までと相対化出来、見える化出来るのは大きい。
  • サービスやOSSとしてリリースしすると、継続的に変更やバグ対応しなければならないので、テストが重要。
  • コーチがいなくなっても大丈夫なように「ヒト」を残す。
  • やらなければ分からないこともある、失敗から学ぶこともある。
  • 自分が変わることで、周りが変わってくる
  • 一歩でも前へ
特に、藤原さんがチームを去った後から、及部さんがどうやって改善していったのかが勉強になりました。
Agileは抽象化された部分ではそれぞれ似ていると思いますが、実現方法はチームや人によって変わると個人的に思っています。
それぞれのチームでやりやすいと思う方法を導入して改善できれば、いいのではないかなと思いました。

ビアバッシュ

懇親会では、ビアバッシュをしながらのQ&A大会でした。
お酒が入ったせいかいろいろな意見が出て面白いと思いました。
自分の質問は、以下のような質問をしました。
  • 「ファシリテーションするときに心がけていることは、何ですか」
返答は、
  • 「サンデル教授のようにふるまう」
でした。

確かに、場をうまくコントロールすることで、チームで発言していない人から意見を聞くこともできますし、タイムボックスを守ることも出来ます。
自分は、どうしても喋り過ぎてしまうので簡潔に話せるようにしたいと思います。

最後に

一度、特別編として全編ビアバッシュ and ディスカッションをやるのも面白いと感じました。
講師の藤原さん、及部さん、横浜道場のスタッフの皆様、会場を提供してくださった株式会社アットウェア様ありがとうございました。

2012年7月19日木曜日

Gradleトーキョー に参加してきました #jggug #gradle_ja #gradle_tokyo

Gradleトーキョー
http://atnd.org/events/30137

2012/07/18 Gradleトーキョー #jggug #gradle_ja #gradle_tokyo
http://togetter.com/li/340726

きっかけ

ここ数ヶ月今までant + ivyでビルドしていたプロダクトを徐々にgradleへ切り替える検証を行なっていました。
eclipseのtomcat pluginを前提としたプロダクトだったのですが、柔軟に設定が出来るおかげでなんとか上手くやれそうです。
また、gradleのおかげでgroovyを勉強する勢いがつきました。
gradleは、taskの中でgroovyスクリプトをGroovyShellを利用して呼ぶ出来るので、制約がいろいろあったりする特殊なプロダクトにうってつけです。
そんなgradleの勉強会が開かれると言う事で参加してきました。

gradle入門

gradleの良い点は、IDEのプラグインが優秀なのでeclipse、IDEAであれば簡単にそれぞれのプロジェクトが作れます。
gradleのイマイチな点は、mavenのようなテンプレートプラグインがまだ標準でついていないところです(テンプレートのプラグインは探すと見つかります)。
ただ、propertiesに標準のディレクトリパスを持っているので、それを利用してディレクトリを作るタスクを作ってしまうと言う事も出来ます。
gradleは、antのタスクも利用できますし、build.xmlも利用できます。なので、既存のbuild.xmlをそのまま利用するといったことも出来ます。
そのため、antからmavenへ移行するよりgradleへ移行する方がスムーズに出来ます。

gradle wrapper

gradle wrapperの良い所は、JDK1.6以上さえ入っていれば、環境設定をいじることなく実行できるので、デモ環境を作りやすいとこだと思います。
もちろんgradle wrapperからでも「--gui」のオプションをつけることでGUIで利用することが出来ます。
gradleのデーモン化も出来る等、gradleをインストールしている環境と同じことが出来るので、おすすめです。
wrapperの配置も簡単なので、配布するようなプロダクトでは使いましょう。

最後に

カスタムプラグインの作り方を学ぶことが出来たので、実際に作ってみたいと思いました。
講師の@mike_neckさん、gradle wrapperを解説してくださった@toru_inoueさん、会場を提供してくださったNTTソフトウェア様ありがとうございました。