日本へ行くぞ!

来週から久しぶりの日本行きです。今回はいまだかつてなくイベントがてんこ盛りです。一般向けのイベントは以下の通り。

これ以外にもお世話になる皆様、宜しくおねがいします。ちょっと無茶しすぎなような気もしなくもないのですが、これが終われば夏休みだし、場所は日本だし、きっと大丈夫でしょう。

BuildHiveに直接プッシュできるようになりました


BuildHiveではリリース当初からプルリクエストを自動ビルドする機能がついていますが、今日、これに加えて開発者がBuildHiveに直接変更をgit pushする仕組みを追加しました。この仕組みは「検証済みマージ」といいます。



プルリクエストは主に外部の開発者が変更を提案したり、コミッタが他のコミッタに対してコードレビューを依頼する時などに使われる仕組みです。なので、通常、開発者は自分の変更をわざわざプルリクエストにせず、直接リポジトリへプッシュしているのではないかと思います。ただし、それだと問題のあるコミットがリポジトリに混入してビルドが壊れる、ということが起こりえます。検証済みマージをすることで、これを防ぐことができます。この機能は次のように動作します。



まず、GitHub上でbuildhiveユーザーをリポジトリのコラボレータとして追加してください。これによって、BuildHiveがリポジトリに変更をプッシュできるようになります。BuildHiveがこれを自動でやるのはまずいかと思ったので、現時点ではこれは手動でおこなってもらう必要があります。



次に、BuildHiveにログインして、ジョブのページを表示してください()。画面左から「Git Repository for Validated Merge」を選びます。コピーボタンを押して、「git remote add」コマンドをクリップボードへコピーし、このコマンドをワークスペースで実行してください。これでBuildHiveがリモートリポジトリとして追加されます。




準備はこれで出来上がりなので、いつもやっているようにコードを編集し、コミットを作ってください。プッシュする用意が整ったら、いつものように「origin」にプッシュするのではなく、「jenkins」にプッシュしましょう。下の例ではmasterブランチをプッシュしていますが、他のブランチで作業していたらその名前に置き換えてください。


$ git push jenkins master



BuildHiveは変更を受け取ると、GitHub上での現在のそのブランチの先端とマージした上で、ビルドとテストを行います。もしマージの結果がテストに合格した場合は、そのマージの結果がGitHubへプッシュされます。






もし運悪く、変更に不備があれば、テスト失敗が通知されます。その時点でやりかけだった仕事を一度中断して、不備のあった変更を最修正しましょう。どの変更をBuildHiveにプッシュしたか覚えておくのは面倒なので、BuildHiveは不備のあった変更をチェックアウトしやすいようにタグを公開してくれます。コマンドをコピペしてタグを取得しましょう。






$ git stash
$ git fetch -n ssh://anonymous@buildhive.cloudbees.com/kohsuke2/sandbox-ant tag changes/45
$ git checkout changes/45
$ … make edits ...



不備のあった変更に新たなコミットを追加して問題を修正してもいいですし、rebaseやcommit --amendなどを使って破壊的な変更をおこなっても構いません。不備を修正したら、それを改めてBuildHiveに送ってテストしましょう。BuildHiveに修正を送ったら、前に行なっていた作業に戻りましょう。



$ git push jenkins HEAD:master
$ git checkout master
$ git stash pop
… resume the work you were doing ...



もし変更の不備が発見された時にあなたが既に帰宅していたら、他の同僚がかわってこの作業を行うこともできます。



開発者の時間は貴重です。開発マシンがテストの実行を終えるのを待つのではなく、さっさと変更をBuildHiveに送ってしまって、次の作業にとりかかりましょう!この機能を利用すれば、開発者はテストの実行をローカルで行う必要はなくなります。編集→コミット→プッシュだけを繰り返せばいいのです。



なお、この機能はJenkins Enterprise by CloudBeesについている機能をBuildHive上に展開したものです。Jenkins Enterprise by CloudBeesを使えばこのような作業フローを任意のGitリポジトリに対して利用できます。

BuildHiveをリリースしました

このところ頑張って作っていたBuildHiveがようやっとリリースに漕ぎ着けましたので、使ってやってください。


BuildHiveはCloudBeesDEV@cloudの一環で、GitHubリポジトリに対する継続的インテグレーションビルドをとても簡単にセットアップできるサービスです。どなたでも無料で使えます。


トップページには既にBuildHive上でビルドされている様々なプロジェクトが表示されます。新しくプロジェクトをセットアップする為に、BuildHiveにいって右上の赤い「Add your Git repositories」ボタンをクリックします。





GitHubとのOAuth認証を聞かれるので、「Allow」ボタンを押して許可してやってください。





すると、CIビルドをセットアップするGitHubリポジトリを選ぶ画面が出てくるので、適当なプロジェクトを選んで「Enable」を押します。リポジトリがたくさんありすぎる人は、リポジトリの名前の一部を右上のフィルター入力欄に入れて絞って見てください。BuildHiveがリポジトリの中身からプロジェクトの種類を自動判別して、適切なCIジョブを設定してくれます。今はAnt/Maven/Gradle/rakeなどを中心にプロジェクトを判定しますが、自動判別はまだ色々改善の余地があると思うので、うまくいかないのがあったら教えてください。メールの通知先など、ビルドの内容は後から設定画面で修正出来ます。





スクリーンショットは英語で撮ってしまいましたが、トップページを除いてはちゃんと日本語化もしてあります。


やることはこれで終わりです。後は、リポジトリにプッシュされる度に自動でビルドが行われます。また、BuildHiveに登録されたリポジトリにプルリクエストが来ると、プルリクエストをマージした結果が投機的にビルドされ、その結果がプルリクエストにコメントとして反映されます。Jenkinsのプラグインは既にこれを使っています。





これでプルリクエストをマージするのも安心ですね!


Jenkins User Conference New Yorkから帰ってきたら幾つか追加で実装したい機能もあるのですが、ひとまずはリリースということで、感想等をお聞かせくだされば。



裏側では、BuildHiveの機能はJenkins上のプラグインとして実装されています。プロジェクトを幾つかの雛形に落とすためにはテンプレートプラグインが、プルリクエストを投機的にビルドする為には検証済みマージプラグインが使われており、これらの機能はJenkins Enterprise by CloudBeesの一環として提供されているので、似たような環境を自社内のJenkins上で構築する事も出来ます。また、GitHub OAuthプラグインなど様々なオープンソースプラグインも組み合わされています。

日本OSS貢献者賞をもらいました

Jenkinsの活動で、第7回 日本OSS貢献者賞を頂戴しました。畏れ多いことです。推薦していただいた方にもお礼申し上げます。先週の金曜日に授賞式があったそうなのですが、残念ながら用事の都合や渡航費用の関係で参加できませんでした。当然に授賞式での発表も出来なかったので、ここで代わりをします。


Jenkinsは僕にとっては自分の子供のようなものです。年齢的には第一子ということになるのかな。ちょっと古いですが、この子の「成長記録」があるので、もしよかったらどうぞ。



これはコミット活動を可視化したビデオです。実際の子育てと同じように、オープンソースプロジェクトの手の掛かり方も成長と共に変化していきます。最初の2年位は一人でせっせと一人でコードを書いていましたが、ある時Jesse Glickが現れ、徐々に多くの開発者が参加して成長が加速して行きます。コードを書く内容も機能の直接の実装から他の開発者が必要なパーツを提供することに移っていきます。その合間に、宣伝やら、デーモンの整備やら、インフラやら。


日本で普及活動をし始めたのはいつの頃だったか定かではありませんが、大きな転機になったのは勉強会を始めたことです。この活動を通じてid:ikikkoさん、id:cactusmanさん、id:ssogabeさん、id:masanobuimaiさん、id:linoさんといった多くの仲間が増えました。日本での普及はこうした方々のおかげで成り立っていて、僕は鶏のトサカみたいなものです。この中でも特に僕のヒーロー「リアルJenkinsさん」ことikikkoさんについてはまた項を改めてその素晴らしさを書こうと思います。


オープンソースは、人にあげればあげるほど自分にも返ってくるという不思議なものです。そして、一人でコツコツとコードを書くのも楽しいけれども、やはりみんなでワイワイとあれやこれややる方がもっと楽しい。使ってくれるユーザーが増えて「素晴らしいソフトウェアをありがとう」とお礼を言われると嬉しい。そして、何よりも、自分一人だけの力ではなく多くの人の力を合わせないとできないような規模の事を、企業という経済的な合理性という枠に囚われずにできる、というところが素晴らしいです。


Jenkinsにはプラグイン機構という、「船頭多くして船、山に登る」事のないようなスケールする仕組みを作ってあります。また、それなりに大きなプロジェクトになってきたので、コードを書く以外の活動も沢山あります。OSSに参加してみたいけどどうやったらいいのか...という方もどんどん参加してみてください。自分で始めるだけがオープンソースプロジェクトではないですから。

FOSDEMみたいなのを日本でもやりたい!

デブサミで岩切さんにアイディアを売り込んだのですが、もっと多くの人に伝えるためにここにも書きます。


毎年2月、厳寒のベルギーはブリュッセルにて開かれるFree and Open Source Developer's European Meetup (FOSDEM)というカンファレンスがあります。ヨーロッパ最大のオープンソースのカンファレンスです。2008年と今年2012年に行く機会がありました。このカンファレンスは非常にユニークで、4年振りに行ったらさらに独自色が更に濃くなって魅力的になっていました。こういうのを日本でもやりたい、と思うので、紹介します。

その1:OSSのブース

FOSDEMの独自色その1は、展示ブースが全てオープンソースプロジェクトや関連団体の点です。ベンダーのブースは一つもなく、スーツを来たビジネスマンがいるブースもありません。その代わりに、圧倒的な数のギーク達が勢ぞろいし、時には子供連れのおじさんや学生がブースにいる時もあります。Jenkinsブースの隣のIllumOSにも子供がいて、彼が写真を撮ってくれたり「Jenkinsって何?」と質問してくれたりしました。プロジェクトでお揃いのTシャツを着たり、ビール瓶にプロジェクトのステッカーを貼って一本一ユーロで販売したり、お祭りのような雰囲気です。ブースに半田鏝が置いてあるような組み込みLinuxからJenkinsのようなJavaプロジェクト、X.orgMozillaなどあらゆる種類のプロジェクトが来ています。商用製品やサービスの紹介はさせない、というポリシーのようです。しかし、IllumOSにNexantaの人が来ているように、会社勤めでOSSに関わっている人達はたくさんいるようです。

その2:小規模トラック

FOSDEMの独自色その2は、devroomの存在です。FOSDEMは期末試験が終わった週末の大学で開かれるので、100人位収容の小型の教室がたくさんあります。この小型の教室が一つ、テーマ・プロジェクトに割り当てられます。例えば、X.org devroom、open Java devroom、configuration management devroomといった具合です。このdevroomは小さな発表会場ですが、テーマに沿った濃い内容の発表が行われます。このdevroomが10個位同時進行で、日本風にいうなら各コミュニティ勉強会の同時開催のような雰囲気になります。内容も技術的な話だけではなくライセンスの話や、コミュニティに人を呼ぶ工夫、のように多岐に渡っています。

その3:溜まり場

FOSDEMの独自色その3、Delirium Cafe。Cafeという名前ですが、中身はパブです。ベルギーはビールで有名ですが、ここにはベルギービールを初め世界中のビールが勢ぞろいするビール専門店です(日本のものも銀河高原ビールとかが置いてありました)。かなり大きなこのパブが、FOSDEM期間中は事実上FOSDEMの貸切になります。特に前夜祭では、ヨーロッパ中から現地入りするギークが一同に集結し、山手線の満員電車もかくやと思わせる、立錐の余地もない大混雑になります。これが一晩中朝まで続きます。まったくの初心者が行くと壁の花になってしまうかもしれませんが、コミュニティでアクティブな人を何人か知っていれば、その人について廻っているだけで一晩楽しく過ごせます。あまりの喧騒で会話はほぼ無理ですが。Jenkinsプロジェクトでは、ヨーロッパのコミッタが6-8名集まり、なんとかテーブルを占拠してガヤガヤとやりました。JRubyのCharlesが通りかかれば挨拶し、Vagrantの人が通りがかれば挨拶し、という具合です。これがとても楽しい。



FOSDEMにはこれ以外の小道具もたくさんあります。例えば、教室の幾つかにはアジェンダが割り当てられておらず、当日に1時間単位で貸し出され、その場で突発的に発生したミーティングに使われます。Jenkinsもこれを使ってUIに関する議論をし、飛び入りでユーザーの人が参加してくれました。Twitterなどのリアルタイム通信の仕組みが出来てから、こういった即興の集まり毎が簡単になったように思います。


カンファレンス自体も無料で、なんと登録さえ必要ありません!参加者がTシャツを購入してその売上と、スポンサーからの収入によって運営されているようです。スタッフもほとんどは学生のボランティアで(どこからあれだけの数のボランティアを集めてくるのかは謎です)、呼び出しもM/Cもなく、またスポンサーをできるだけ集めなくて済むように、全体を安くあげようというポリシーが感じられます。


今年は4000人規模だったと誰かが言っていたので、その規模が推しはかれるのではないかと思います。


僕は今年デブサミに初めて参加して、あちこちのコミュニティのブースが出展されているのにいたく感動しました。また、FOSDEMにはない、企業の展示とオープンソースを混在させているのもユニークで素晴らしいです。あの感じを失わずに、ここに挙げたFOSDEMのいいアイディアを取り込んでいけたら物凄い事になると思うので、よろしくお願いします>関係者の方。

100人のプロが選んだソフトウェア開発の名著

デブサミ10周年の記念企画として、「100人のプロが選んだソフトウェア開発の名著」に参加しました。100人がそれぞれに一冊の本を推薦するという内容です。

100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

100人のプロが選んだソフトウェア開発の名著 君のために選んだ1冊

僕自身、昔はコーディングに関わる本やAPIのリファレンスなどを買った記憶がありますが、インターネットのせいか、ここ数年はそういう紙の技術書からは遠ざかっていました。この本でお薦めされている本も、そういう時代背景を反映してか、テクノロジーの本だけでなくて、自分の思想や思いを伝えるための象徴としての一冊をあげている人が多いように思いました。(中国語や英語を勉強する本を挙げて、「世界で通用する為には...」みたいな話とか、僕自身のデブサミでのLTでのテーマと同じ意図ですよね。)


そういう意味で、ここに挙がった100人の問題意識や思いの原点が垣間見えて、そういう読み方が面白いです。(翔泳社さんの狙いは勿論ここで挙がった本を買ってもらうことだと思うのにごめんなさい)


だが、しかし!闘うプログラマを誰も薦めていないというのだけは納得できない!

闘うプログラマー[新装版]

闘うプログラマー[新装版]

もっとも、今の人達にとってのWindows NTは僕にとってのMSXみたいな感じで、個人的な思い入れのない歴史の1ページに過ぎないので、読んでも面白くないのかな...。

来週から日本に行きます

2/15から日本へ行きます。例によって色々な用事や発表がてんこ盛りです。

  • 2/16にはデブサミで「あの人の自分戦略を聞きたい!」というLT大会に参加します。自分戦略なんていう大したものはありませんが、おっさんぽく若者に小言を垂れろ、という意味だと理解したので、普段から思っている情報発信について話そうと思います。関連の事は以前にも書きました。
  • 2/17には同じくデブサミで「Continuous DeliveryとJenkins」という内容で話をします。トラックの調整をなさっている和田さんと相談させていただいて、Jenkinsの使い方とか機能みたいな具体的だけど細かい話をするのではなくて、理論というかテーマというか、風呂敷を広げた大きな話をしたほうがよいという事になったからです。これは以前のJJUGでの発表の発展版です。
  • 2/21は楽天さんでJenkins勉強会です。今回はJenkins-as-a-ServiceであるCloudBeesのDEV@cloudについて、宣伝にはならないようにその実装や工夫を紹介したいと思います。いつも運営を一手に仕切ってくださっているikikkoさんには本当に頭が上がりません。現在のところもう満員ですが、第三次募集があるという噂も...?
  • 2/22には豆蔵さんと一緒に、豆ナイトでJenkinsのイベントがあります。僕の中では、Jenkins勉強会では既に使っておられるビルド職人さん向けの高度な話を、豆ナイトでは初めての方向けの導入・入門の話をしようという風に棲み分けています。
  • 2/23は同じく豆蔵さんにて、Jenkins トレーニングをやります。まだ満席ではないので、引き続き参加者を募集しています。
  • 2/24は丸山先生にお誘い頂いた、JJUGクラウド研究会のイベントである第三回「エンタープライズ・クラウドの現在」CloudBees Platformについてしゃべります。これはJenkinsだけの話というよりも、むしろPaaS関係の話がメインになります。


FOSDEMSCALE10xで好評だったステッカーをいっぱい持っていくので、ぜひステッカー目当てに参加してください。この他にも、あちらこちらに個人的にお伺いすることになっていますが、「うちにも遊びにきてよ」という方がおられればできるだけなんとかしたいと思っています。


そういうわけで、皆様、よろしくお願いします!