デブサミ2012に行ってきた 2日目

デブサミ2012の2日目です。この日は、

  • 17-A-1 Continous DeliveryとJenkinsアブストラクト
  • 17-E-2 Ruby PaaS 「MOGOK」〜ソフトウェアエンジニアのためのクラウドサービス〜
  • 17-C-3 オフェンシブな開発 〜「納品しない受託開発」にみるソフトウェア受託開発の未来
  • 17-C-4 Axure RPによる画面プロトタイプを活用した要件定義の改善
  • 17-B-5 アジャイルマニフェスト ディケイド
  • 17-B-7 ソーシャルコーディング

を受けてきました。僕の体力的には(レッドブル++しても)、6本が限界でした。それほど内容が濃いということでしょう。

賑わう会場。

では、各講演について以下に。

17-A-1 Continous DeliveryとJenkinsアブストラクト

Jenkinsと言えば、最近はCI業界において不動の地位を得ている、今やソフトウェア開発については欠かせないソフトウェアの一つ。

知らない人は、そろそろオライリーからJenkins本が出るので読んでみると良いかもしれません。

Jenkins

Jenkins

私もJenkinsはちょっとだけ使っていて、特定のタイミングでプログラムをビルドしてテストを実行する仕組みとしてJenkinsを使っています。が、この講演を聞くと自分の使い方は全然甘かったということが分かりました。そのことについて。

徹底的に自動化

当たり前のことですが、コンピュータは同じことを繰り返すことが得意です。そして、コンピュータを使うためのコストも年々加速度的に下がってきています。そのコンピュータに対して仕事をさせないと損・損と言った感じで、川口さんはJenkinsを紹介されてました。

特に、

人間の貴重な時間をテストに割り当てず、どんどんテストを並列にコンピュータに流してしまえば良い

という言葉には非常に共感を覚えました。ですが、川口さんの考えはさらに進んでいて、

人間がテストのことをできるだけ考えないようにする

ところまで、考えられてました。そのための仕組み作りとして、検証済みマージを取り上げてました。

検証済みマージは、今月出るWebDBPressに詳細が書かれているとのこと。今から楽しみですね。

WEB+DB PRESS Vol.67

WEB+DB PRESS Vol.67

新3種の神器

達人プログラマで出てきたかと思いますが、システム開発における3種の神器というのがあります。それが、

なのですが、最近はすでに当たり前の世界になってきました(なかなか、そうではない所も多いんですが。例えば、ビルドスクリプトなんて、Eclipse立ち上げて・・・ってところも多い)。

達人プログラマー―システム開発の職人から名匠への道

達人プログラマー―システム開発の職人から名匠への道

  • 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2000/11
  • メディア: 単行本
  • 購入: 42人 クリック: 1,099回
  • この商品を含むブログ (341件) を見る

この3種の神器が当たり前になってきた昨今、新3種の神器が定義できるのではないかということで、川口さんは以下の3つを挙げられました。

  • デプロイスクリプト
  • XaaS
  • クラウド

XaaSというのは、SaaS(Software as a Service)、PaaS(Platform as a Service)、IaaS(Infrastructure as a Service)、HaaS(Hardware as a Service)をまとめた総称といった感じ。これらによって、普通のプログラマでも、物理的な制約を考えることなく仮想マシンを複数台持てるという時代になってきました。

こうやって、計算機能力は湯水のように使えるのだから、それを有効活用しないと損だよねということで、例えば、Jenkinsは分散ビルドに早期から対応していることを紹介されていました。

そして、

計算能力は湯水のように使える。いろいろな技術の流れが後押ししており、Jenkinsはこれらの計算能力をうまく活かしていくニーズを吸収していく。

という言葉で講演を締めくくりました。

感想

Jenkinsの時代の先取り感が圧倒的であるように感じました。
例えば、ムーアの法則はみんな知っているのですが、そこから複数のマシンを同時に扱えるように分散ビルド機能をJenkinsに導入するというのは、時代の流れを見極めるとともに、自分の信じる道(この場合、徹底的な自動化)に沿って実装されている所には感銘を受けました。

Jenkinsがもつ機能の極々一部しか使ってなくて、それでJenkinsを使っている気になっている自分がちょっと恥ずかしく、もっと使ってみようかと。

17-E-2 Ruby PaaS 「MOGOK」〜ソフトウェアエンジニアのためのクラウドサービス〜

IIJさんが提供するRuby PaaS「MOGOK」(もごっく)について。確かRubyWorldConference2011でお話聞いたようなと思いながら聞いてみることにしました。

色々クラウドサービスがあるなかで、IIJさんがクラウドサービスを提供する理由として

ソフトウェアエンジニアのより多くの仕事をクラウド側に転嫁する。例えば、言語・ミドルウェア実行環境の整備、VCS、BTS、CIなどをクラウド側に転嫁する。

と述べられてました。たしかに、これらが全部クラウド側でできると楽だよなぁと思いながら聞いていたのですが、残念なところ、BTSやCIはまだ未提供ということ。う〜む、惜しいなぁ。

さらに惜しいと思うのは、SDKがWindows版とLinux版しかないということ。な、なんでRubyユーザの大半がMacユーザである現実があるのに、なんで、SDKにMac版を提供しないのか・・・。

一気に使う気が失せたというか、がっくりというか。

まだクローズドベータとのことなので、今後に期待でしょうか。に、してもなぁ・・・

現在、モニターユーザ募集中ということなので、気になる人はMOGOKのサイトにアクセスしてみてはいかがでしょうか。

17-C-3 オフェンシブな開発 〜「納品しない受託開発」にみるソフトウェア受託開発の未来

ソニックガーデンの倉貫さんによる講演です。倉貫さんいわく、

今日の話はデブサミ2006でベストスピーカー賞を得た話がベースとなっている。2006年に宣言したことの実践結果を今日お話しします

とのこと。実体験に基づいた話は、説得力が強く、興味深いですね。

受託開発にアジャイルは適用できない?

アジャイル開発がブームですが、アジャイル開発を受託開発の中でやってもどうもしっくりこないという考えを持った倉貫さんは、このころ、「ディフェンシブな開発」をブログに投稿されています。

上のブログにも書かれていますが、今のSIerがやるビジネスは製造業からきていることから、品質の考え方がPoint of Sales(売上時に最高の品質)。このため、ウォーターフォール型の開発も特に違和感はないと述べられています。

ただ、倉貫さんの思いはSIビジネスにはなく、ずっとソフトウェア開発に携わり、顧客のソフトウェアシステムにずっと責任をもって見ていきたいという思いから、タイトルにある「納品しない受託開発」を考え、実践されました。

実践

では、納品しない受託開発とは何か。倉貫さんは、

前提としてクラウドで使えるソフトウェアの開発及び運用を提供する。これにあわないものはお断りする。このモデルを使うのは、開発から運用までライフサイクルすべてを見ていきたいから。

ということで、クラウドを前提としたシステム構築を実践されています。このことによってソフトウェア開発に対する考え方も変わり、

  • 「バグは出さない」という考え方から「バグは出してもすぐに直す」
  • 「サーバーは落ちないものにする」という考え方から「サーバーは落ちてもすぐに復旧できるようにする」

というふうに考え方が変わってきたとのこと。さらには、

生産性を上げれば上げるほど、ひとりで多くの案件を担当できる。結果、それが評価に結びつき、プログラマのモチベーションを上げることができる。
複数の案件にかけることができるようになれば、案件の数を増やすのではなく、1週のうちでスタートアップチャレンジをやる時間と顧客対応をやる時間を分けることを行っている。部門・人を分けるようなことはスタートアップチャレンジは必ず失敗する。

ということで、エンジニアそれぞれのスキルアップ・評価アップ・モチベーションアップについて考えられ実践されています。

感想

考えられたビジネスモデルがうまく時代にマッチして、ディフェンシブな開発として記されていた「同じゲームに従う」ことなく、ビジネスを進められているところはさすが。

これからこのビジネスモデルが中心となるかどうかは分かりませんが、SIerビジネスがジリ貧になっていくなか、このビジネスモデルがスケールアップしていくのではないかとちょっと楽しみです。

17-C-4 Axure RPによる画面プロトタイプを活用した要件定義の改善

画面プロトタイプを作成するツールAxure RPの紹介とそれによって要件定義が成功したよというお話。

これまでのアジャイル系のお話とは全く異なり、SIerSIerによるSIerのための講演。Webアプリケーションをつくるために要件定義を行う時に出てくる画面イメージ図。
んなものHTML、CSSJavaScriptとかで作ればエェやんと思うんだけど、なかなか難しいんだそうな。ま、プログラマにとっては当たり前なんだけど、最近そう言うのが書けない人も多いからねぇ。Dreamweaver。。。いや、なんでもないです。

そこで、出てくるのがAxure RPというソフトで画面設計を行い要件定義がうまく言ったという話。

HTMLとかで書くとなると結構時間がかかったりするんだけど、Axure RPでは1日10画面程度作れるとのことなので、そこは大きなメリットかな。
画面遷移に関して、ノンプログラミングで動きを作れるようなので、そこらへんJavaScriptが書けない人にとっては重宝するのかなとは思いましたが、あんまり魅力を感じず。

17-B-5 アジャイルマニフェスト ディケイド

Rubyエバンジェリストの角谷さんのお話。いつもどおり、熱い想いに溢れている講演でした。

アジャイル宣言が行われたのが2001年2月。10年(+1年)経過した今、アジャイル開発はフリーソフト・オープンソースウェアには広く普及しました。これらオープンソースなどのソフトウェアを角谷さんは「自然なソフトウェア」と呼んでいます。

一方で、業務システムなどを「人工のソフトウェア」と呼び、

次の10年に向けて。自然なソフトウェアでやっていることを人工的なソフトウェアの開発に活かすためには。

ことをテーマとして、聴講者全員に問いかけてました。

ただ、この問に対しては

答えはないと思うのがいいかなと思う。良い考え方を追っかけるのではなくて、自分で答えを出さないと。質問をして、意見を交換していくのが重要。

ということで、答えはないことを宣言し、各人それぞれが考え、表現し、意見交換することを求めています。む、難しい問題だなぁ。

ただ、今すぐに答え出すわけじゃなく、これからもしばらくソフトウェアエンジニアをa続けていくつもりなので、そこでゆっくりと考えていこうかと。

この講演はデブサミの最高聴講者記録を打ち立てたとのこと。

17-B-7 ソーシャルコーディング

Ruby界、Rails界で著名な松田さんによる講演。githubのロゴに描かれている「Social Coding」について講演されました。

革命

松田さんは、Social Codingを革命を呼んでいます。どのような点が革命かというと、

  • ソーシャルコーディング以前、プログラミングは機械に対して語りかける言葉。ソーシャルコーディング後、プログラミングは人間が人間に対して語りかける言葉に変わってきている。
  • オープンソースは、プロダクトありき、プロダクトオーナーが主、使用者が従(ソーシャルコーディング以前)から、すべてのリポジトリが平等で、誰もがリポジトリに対して読み書きできることに変わった。
  • 人民たちがソースコードを保持する権利を手にすることからコミュニティが始まった。このことがgithubがもたらした革命。

という点。淡々と語られていましたが、非常に熱い想いです。

仕事とソーシャルコーディング

ソーシャルコーディングは楽しいんだけど、仕事となるととたんに相性悪くなる。いきなり仕事で使っているプログラムをオープンソースにしましょうって難しいですよね。

そこで発送の転換。

会社で作ったものをいきなりオープンソースにするのはハードル高い。趣味で作っているものを業務に適用してみよう。

僕の場合、こっちのほうがあっているかも。ソフトウェアのアイディアって大半が仕事から来ているので、それを生かせるようになりたい。

まとめ

ということで、二日間行われたデブサミ。いつものように楽しく過ごせたんですが、これを面白かった、楽しかったで終わらせないために、今日から、今から何か行動をおこさないといけない。

それがこのブログだったり、githubにソースを上げることだったり、本を読むことだったり、色々なやり方はあると思うんだけど、この思いを一年間、ずっと持ち続けていきたい。

おまけ

デブサミ会場ではサイン会が開かれてました。

この本が先行発売されていたので、そのサイン会だったようです。

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

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

また、Windows Phone , Kinectのライブコーディングも行われてました。