鎌玉のよしなしごと

日々のよしなしごとをつぶやいているだけ。由無し言(とりとめもない話)か、良しな仕事(nice job!)かは、あなた次第。

まだまだ終わらない"DevLOVE関西2012Drive" #devlove #DevKan


たいへん遅くなりましたが、2012年11月10日に参加してきた『DevLOVE 関西 2012 Drive』の振り返りを書いておこうと思います。


当日の詳しい流れは、Togetter*1を参照してください。

また、ManasLinkさんがまとめられている一覧も参考になります。

参加の経緯

DevLOVEとは、一言で言うと『開発の現場を何とかしたいという開発者の集まり』です。
私が、DevLOVEという集まりがあることを意識したのは、昨年7月に開催されたデブサミ2011東北の前後あたりでした。


デブサミ2011東北において、DevLOVEは 『Project 4tate (帆立のもじり) 』という企画をされていました。
デブサミのハッシュタグ ( #devsumi ) に DevLOVEのハッシュタグ ( #devlove #4tate )が非常に多く混在していて、DevsumiとDevLOVEってどういう関係なんだろう? と非常に頭を悩ませました*2


デブサミ2011東北については、Togetter*3や、日記*4を参照ください。


デブサミ東北が終わった後も、はてなブックマークの人気エントリにあがる DevLOVEで講演されたスライドの内容や参加者の感想*5を読んで、DevLOVEは楽しそうだなと思っていました。
また、『現場を何とかしたいという開発者の集まり』ということに非常に共感を覚えました。
というわけで、この度、徳島から高速バスとかで3時間かけて参加してきたわけです。

オープニングおよびキーノート

DevLOVEを始めた市谷聡啓( @papanda )さんと、関西でバトンを受け取った中村洋( @yohhatu )さん のお話。

オープニング:「DevLOVE in a nutshell -DevLOVEとは何か- 」

キーノート:「開発現場を、駆動せよ -DevLOVE関西Driveがもたらすもの- 」

朝から、半袖Tシャツで語るお二人の姿からは DevLOVE を通じて、開発の現場をもっといいものに変えたいという熱い想いを感じることができました。

印象に残った話

市谷さん

  • 人一人の人生は限られている。開発に携われるのは、たかだか300人月。他人の経験を借りよう*6
  • DevLOVEはもうすぐ100回目を迎えるが、今後は東京・関西だけではなく、名古屋・仙台・四国など日本中を巻き込んだ発展を目指している。
  • DevLOVE四国は、現在2人で立ち上げている。
    • 後に伺ったところ、もう1人は松山でAgileコミュニティをつくり活躍されている懸田( @kkd )さんでした。


中村さん

  • DevLOVE関西2011では、関西の各コミュニティの力を借りた。
    • スライドに @kiy0taka さんの名前があり、今回も講演予定であるが、まだ来ていない。
  • DevLOVE関西も、東京のように、テーマを決めて1週毎にやるようにするのか模索中*7
  • 中村さんがDevLOVE関西をやろうと思ったのは、『モチベーション』のため。
    • ソニックガーデン代表の倉貫さんのブログ*8に、人が働くモチベーションとして示されている4パターンのうち、「誰と(誰に)仕事をするか」を重視する『サポータータイプ』であるとご自身を分析されている。
    • 素晴らしいエンジニアをつなげたい、現場を変える力を与えたいということで、DevLOVE関西を始めた。
  • 格言として『ブログを書くまでが勉強会』というのがあるが、もうブログはもう書かなくていい! それよりも現場を変えよう。その過程を報告してくれ!!
  • 人一人が開発に携われるのは、360人月*9
  • 開発現場を駆動するには、技術とマネジメントが車の前輪・後輪のように連動していかなければならない。
    • そして、何よりも自分自身の『情熱』が必要。
    • 厳しい現実の前では、『情熱』を燃やし続けることは困難である。
    • DevLOVEという場で、技術・マネジメントの両輪を学び、仲間たちと知識・経験を共有するということで、情熱を燃やし続け、現場を、自分自身を駆動していこう。


中村さんの話の途中で、近くの席の人と4人1組となり、自己紹介しあって『(DevLOVE関西から)何を持ち帰りたいか』を各自宣言しあいました。
ちなみに、私の場合は『(開発を駆動する)やる気』を持ち帰ることを宣言しました。

各セッションの紹介

通常の勉強会やセミナーでは申込時に決めたセッションしか参加できませんが、今回*10は各セッションの説明を聞いて、事前申込に関係なく、参加するセッションを決めていいとのことでした。
それで、各セッションの内容を、各講師にやってもらってたんですが、@kiy0taka さんが自分の番のところという 神がかり的なタイミングで会場に到着して笑いを呼んでいました*11

インターミッション

ITで日本を元気に! から、いただいたシールが大量に余っていたので、配らせていただきました。
ちなみに、チャリティTシャツ - Hack For Japan でTシャツを購入した場合も、「ITで日本を元気に!」に寄付金が回るので、Tシャツの購入をご検討くだされば幸いです。

A-1:「乙女ゲーを支える技術 - play2.0 + Scala の開発事例 -」

粕谷 大輔 (@daiksy)さんによるPlay framework2.0と関数型言語Scalaを使った乙女ゲー*12の開発事例の話。

現在、業務で Play framework 1.2.5 (Java) を使っていて、技術的なことも聞きたかったのですが、技術的なことについては、以下を参照だそうです。

WEB+DB PRESS Vol.71

WEB+DB PRESS Vol.71


※ 粕谷さんも記事を書いておられます。


今回の話は、新しい技術をどうやって開発に取り入れていったかという内容で、非常に示唆に富むものでした。


Play frameworkを業務で使用している大半のところは、Javaフレームワークの中から Play framework 1.x を選択していると思います。
しかし、粕谷さんのところ*13は、Scalaに注目して Play framework 2.0 RCの段階から開発を始めたそうです。
RCの段階だから、開発中にフレームワーク自体の仕様が何度か変わって、コンパイルエラーとの戦いだったそうです。


リリースまで4ヶ月。チーム構成6名。しかも、メンバー全員が開発基盤である Scala/Play/Git/AWS/nginx の経験ゼロ。
粕谷さん自身は、入社2日目から投入…。


なんという、無理ゲーでしょうか?!


しかし、粕谷さんのチームは、月・水・金の始業前に30分の勉強会(コップ本を輪読)や ペアプログラミングを行うことで2ヶ月でScalaを全員が違和感なく扱えるようになったそうです。

Scalaスケーラブルプログラミング第2版

Scalaスケーラブルプログラミング第2版


「最初の一ヶ月はほぼ進捗がなかった」そうですが、リリースまで持ち込めたのは、始業前勉強会やペアプログラミングを通じて、チームの士気が高まっていたためだと思います。
チームづくりの参考とさせていただきます。

B-2:メンバーの行動が激変!「ペアふりかえり」ワークショップ

西 丈善(@takepu)さんによるペアを組んで、KPT(ケプト*14 )やなぜなぜ分析を行うワークショップ。

西さんを初めて見かけたのは、デブサミ関西の懇親会。なぜか、メイド服でした。( http://codezine.jp/article/detail/6788?p=2 )
A-2のCIの方にも興味はあったのですが(内容が分からなかったので)、ふりかえりの手法を本の上ではなくワークショップで学ぶということを経験したかったので、こちらに参加しました。
発表された手法は、西さんが実際に問題児の後輩に対して実践して効果があり、社内の新人教育でも使われるようになったそうです。


ワークショップは、次のように行われました。

  • スライドによる説明。
  • 参加者が誕生日順に輪になる。
  • 輪の先頭から2名ずつ組みになる。*15
  • お互いに名乗りあい、適当な質問を3つだけする。
  • KPTシートが配布され、先輩役/後輩役を決める。
  • 後輩役が解決したい仕事の悩みを決める。
  • その悩みに対する「良かった事」を 後輩役があげて 「Keep」欄に記述する。
    • このとき、先輩役は「すばらしい!」と褒め、発言をけなさない。
  • 次に「悪かった事、問題点」を 後輩役があげて 「Problem」欄に記述する。
    • このとき、先輩役は、責めない、けなさない、叱らない。
    • 「なるほど」「そうか」といった相槌も効果的。
  • それから、問題点の改善案を 後輩役が「なぜなぜ分析」で絞り出し、「Try」欄に記述する。
    • なぜなぜ分析では、先輩役から、「Problem」欄の発生原因について質問*16を5回行う。
    • 質問では相手を責めない*17
    • 改善案は、必ずできる実践項目とする。「考える」ということでもいい。
  • 先輩役/後輩役を交代して、KPTを行う。
  • 最後に、みんなで輪になって、このセッションの感想を2拍子で言っていく*18


ペアで1人が聞き役に徹することで、自分への問いかけが深まり、問題点について多様な角度から見つめ直すことができました。
また、この手法が真の力を発揮するのは、バックボーンを共有するペアが定期的に行うことで、前回見いだせなかったものが見いだせてくるものだと感じました。

A-3:なぜ私はソニックガーデンのプログラマに転身できたのか?

アジャイルRuby、そして『納品のない受託開発』という全く新しいビジネスモデルで有名なソニックガーデン( http://kuranuki.sonicgarden.jp/2012/09/post-90.html ) 。
そのソニックガーデンに、Rubyの開発経験もない地方の社内SEから、リモート勤務という形態で入社された 伊藤 淳一 (@JunichiIto77) さんの話。


伊藤さんは、人前で話すのは今回が初めてとのこと。
セッション直前には、午前中に岡山で用事を終えられて飛んで来られた ソニックガーデン代表の倉貫さんが、伊藤さんの隣に立って気合いを入れており、猪木ばりの張り手が飛び出しているかのようなオーラを放っていました。
伊藤さんの話も『「5年後の自分に不安を抱いている技術者」に情熱をもって行動することの大切さを伝えたい』というテーマどおり、倉貫さんに負けないぐらいの熱を帯びており、聴いている側も熱くなるようでした。


講演スライドにあげられているブログ『 give IT a try http://junichiito.hateblo.jp/ 』(id:junichiito)のエントリーはいずれも、はてなブックマークのホットエントリーとして多くのブックマーク数を集めています。私も全部読んだ記憶があり、Vim や 残酷物語 や FizzBuzz問題 って伊藤さんが書いていたんだと驚きました。


以下に今回の講演内容に絡んだエントリーを集めてみましたが、いずれも一読をおすすめします。

印象に残った話
  • 伊藤さんが転身できた5つの理由
    1. 危機感を持って継続的に勉強していたから
      • また、どの職場でも力を尽くして現場の改善に取り組み、それなりに認められていた
    2. ブログや自分の作品をアウトプットしていたから
    3. 何が自分の情熱なのかを意識していたから(美しいコードを書くこと)
    4. 自分の情熱を活かせる方法を見つけたから(ソニックガーデンに入社すること)
    5. 目的を実現するために全力で行動したから
  • 「Webサイトではその会社の本当の姿は見えない。実際に足を運んで自分の目で確かめないとわからない」と、Skype面接を断り、ソニックガーデンの東京本社に乗り込む。面接の代わりに、実際にいっしょに働いてみた。
    • ※メディアやSNS上でも良さそうに見えるけど、実状は異なるとかよくあります。また、自分の働き方とあっているかというのは、実際にいっしょに働いてみないと分からない面もあります。そういった意味で「バーチャル職場体験」というのは双方にとっていい手段だなと思いました。
  • 転職活動は、在職中から行っていた。ソニックガーデンのコーディング課題をやる時間を捻出するために、残業しないようにしていた。また、遊んで欲しがる子供と21時に寝て、朝4時5時に起きてコーディング。家族の協力を得て土日にコーディングしていた。
    • ※今年、息子が誕生して生活リズムが全く変わってしまい、自分の時間をどう捻出するかに悩んでいるところなので、参考になりました。伊藤さんの 子育てエンジニア advent calendar 2012( http://atnd.org/events/34177 ) の記事(12/11予定)にも期待しています。

A-4:ふつうの受託開発チームのつくりかた 〜手塚モデル実践編〜

大手SIerであるTISさんの中で、川島義隆(@kawasima)さんが実践されている『ふつう』の受託開発チームのつくりかたの話。

このスライドの前段にあたるスライドを以下に貼り付けておきます。


手塚モデルとは、手塚治虫のプロダクションをモデルとしているそうです。

  • 同時並行で仕事をする。
  • 徒弟制度を取って弟子を育成するが、重要なところは師匠が行う。
  • クオリティを下げない記号表現/パターンで生産性をあげる。
  • キャラクタを流用する/コードを再利用する。

※ 近年、よく知られるようになったブラック手塚( http://iwainohondana.blog85.fc2.com/blog-entry-191.html )の話かなと思っていたけど違ってました。

今回は、手塚モデルを使ったチームづくりについて聞けました。

  • 他チームが引き受けたがらない1人月分の成果を出せない駆け出しの若手をチームに引き込んで、先入観がないうちに洗脳する。
  • プロダクトマネージャという役割を置き、ソフトウェアの設計品質に責任を持たせ、プロジェクトマネージャの責務を減らす。
  • 開発プロセスは「スクラム」、アーキテクチャは「王道のSAStrus MVC」と固定化し、案件毎に変えない。
  • トラブルプロジェクトを渡り歩いた*19りや、自分の仕事が終わっても他人の仕事がまわってくる「べんりや」を脱するために「仕組みを作る側」に回る。
  • コードを書いて精進する。(高い生産性はだいたいの問題を解決する)
  • 練度の低いメンバがいるので、必然的にペアプログラミングを行う。
  • ふりかえりを行うことでチーム力を強化する。(FIVE WHYS = なぜなぜ分析)
  • スキルバッジという独自の評価方法。(スキルの具体的な行動で、他者からバッジをもらえる。)
  • 若手が成長すれば、引き抜きが起こる。引き抜きを防ぐため、個別案件の開発ではなく、「ソリューション」の開発をやっているように外部に見せる。
  • 個別案件にライセンス譲渡をさせないため、オープンソースとする。
  • まずは「業務外」で作成し、チームメンバにもGitHubを使わせる。


なんだか、すごい話を聞きました。
SIerを、受託開発を終わらせないために、川島さんがされていることは生半可な努力ではできません。
独自の「仕組み」で、チームをつくり守っている。そして、結果を出している。
セッション / スピーカー - DevLOVE 2012では、何を発表されるのか、現地には行けませんが、参加者のみなさんのリポートを楽しみにしています。

クロージング

実は、オープニングでは参加者に課題が出されていました。
壁に貼られた「技術/ファシリテーション」、「受託開発/内製」の4象限マトリクスが書かれた模造紙に、付箋紙で各自が「やりたい事、困っている事」を書くという課題が出されていました。

クロージングでは、各マトリクス内で6人で1組となり、6人の中で最も深刻な問題を選択し、みんなで話し合いを行いました。
そこで、選択されたのは、私の課題。
私は、心を悩ましている『早く帰りたい』(ファシリテーション/受託開発)と書いていました。

前職までに体験した家に帰れずに椅子を3つ並べて、その上で仮眠を取るということはなく、遅くとも22時までには帰れる状況です。
しかし、帰宅が遅いと、夜の子どもの世話が妻に任せきりになってしまう、自分の勉強時間がなくなってしまうという問題にぶち当たります。
どうやったら、効率的に仕事を終え、帰宅することができるのか?


6人で話あい、私は『チームで仕事ができるように、チーム力をあげていく』ことをやっていくことになりました。
※現在、社内勉強会の準備中です。


次に、各マトリクスで4つのグループとなり、各組での話し合った内容の発表と、各自の課題に対するアクションを今後どうするかということを行いました。
ファシリテーション/受託開発では、ハッシュタグ #DevKan で各自のアクションをつぶやく(そして、それを私がまとめていく)ことになりました。

※現在、不定期的に更新中

DevLOVE関西の帰り道




DevLOVE四国のお手伝いをさせていただくことにしました。
現在、何も決まってません。
四国の皆さん、四国を郷土とする皆さん、どうかお力をお貸し下さい。


私は、ひとまず、懸田(@kkd)さんに会いに、12/8(土)に #agile459 が松山で行う Coderetreat に参加することとしました。

Global Day of Coderetreat in Matsuyama - Agile459/アジャイルプロセス協議会四国支部 | Doorkeeper


松山でのCoderetreatは、絶賛、参加者募集中なので、近県の方で興味のある方は一緒にやりましょう。
※ 私自身、あまりペアプロ初めて*20だし、コーディングも自信がないですが。

*1:私が勝手にまとめた

*2:翔泳社が出していたDB Magazineの愛読者だったので、デブサミのことは知っていました。そのデブサミが復興支援のために東北で開催されると知って、ハッシュタグを眺めていました。

*3:私が勝手にまとめた

*4:講演内容がチャリティ企画としてオンデマンド配信されたので、その感想として書きました

*5: 特に しんや id:absj31 さん、いつもありがとうございます

*6: 初期の飛行機乗り達が各自の体験をハンガー(格納庫)で共有していたように、開発現場に役立つ経験をDevLOVEという場で共有しよう

*7: DevLOVE100回の回数に、DevLOVE関西の回数はカウントされていないらしいから、関西で何回やろうが本家の回数には影響ない

*8: モチベーションの源泉:何のために働くのか、転職か起業か - Social Change! http://kuranuki.sonicgarden.jp/2011/07/post-17.html

*9: ネタがかぶっている

*10: 初参加なのでよく知らないのですが、DevLOVEでは毎回かもしれない

*11: また、セッションの内容を聞かれて「どういうセッション聞きたいですか?」と返して再び笑いを読んでいました

*12: 女性が主人公で、イケメンとキャッ、キャッ、ウフフするゲーム

*13: フリュー

*14: デブサミ関西のLTで、京アジャの方がケプトというまではケーピーティーと読んでいた

*15: 知り合いがいなくても安心なシステム

*16: 「こうなった原因は何ですか?」「何が理由でこうなったのですか?」

*17: 責めても得るものはないため

*18: さっそく、奥さんと試したいと言ってた人がいたような…

*19: 火消し

*20: ペアプロの勉強のために行く