そんな『ソーシャルコーディング』について、とある開発事例をもとに発注側/受注側それぞれの視点から講演+ディスカッションを行うセッションが、Developers Summit(通称、デブサミ) 2013初日の最終時間帯に行われました。
本稿では、その内容についてレポートしていきたいと思います。
(編注:編集部都合で掲載が遅くなってしまいましたが、デブサミ2013の特別企画として実施された「公募レポーター」の記事を掲載させていただきます)
講演の部
本セッションの司会は、タワーズ・クエスト株式会社取締役社長であり、TDD(Test Driven Development:テスト駆動開発)の伝道師、そしてイベントに先立って2013年1月に発売された書籍『SQLアンチパターン』(※この書籍、初の“父:和田省二氏との共同監訳”でもあります)も好評な和田卓人氏によって行われました。
まず始めに講演の部。こちらについては、アイティメディア株式会社 @IT統括部 @IT副編集長、西村賢氏がその発表を行いました。
1.はじめに
西村氏は@IT(アットマーク・アイティ)で編集記者の仕事を行う傍らで、趣味と実益を兼ねて技術を勉強していくうちに、より興味関心を抱くようになり、「サービスを作らせてくれ!」と会社に上申したそうです。
諸々の経緯があり、株式会社永和システムマネジメントに開発を委託。そしてリリースされたサービスがITエンジニア向け質問・回答コミュニティ、『QA@IT』です。
海外には同様のサービスとして『Stack Overflow』がありますが、西村氏はまさにこの「Stack Overflowの日本語版を作りたい!」という思いを抱いていました。
さらにはそれを「今のモダンな方法で作りなおすべきだ。エンジニアの皆さんの生産性向上に貢献したい。質問に対しズバリの回答が出てくるように。それを日本語で実現させ、ノウハウを蓄積させたい」と考え、先の行動に移した、という形です。
永和システムマネジメントの技術者により、動くプロトタイプがまずは作られはじめ(※結果としてこのプロトタイプは破棄されることになるのですが、その辺りについては後述)、賛成ムードかつ期待も高まる中、『ツールに関係者を呼び込む』『アジャイル、クラウドについて繰り返し説明をする』『プロジェクト関係者を減らす』などの施策と共に無事にシステムローンチを完了。
QA@ITのローンチ後は、同様の手法で『イベントカレンダー+ログ』なるシステムのリリースも果たします。
ここで気になるのは、『なぜメディア企業がサービスを?』という点。西村氏は、『重要なポイントです』と前置きし、自らが携わってきた情報メディアとプラットフォームの変遷を交え、『メディアとサービスの接点に価値が生まれてくるだろう』と力説。
マーク・アンドリーセンの『ソフトウェアが世界を飲み込む』という言葉を引用し、『いろいろな産業で、ソフトウェアによる革新が起こっている』と指摘しました。
また西村氏は、ソフトウェアの得意な人達が既存産業に乗り込んで行ったり、未知の領域を切り開いていくには、アジャイルが適しているともコメントしています。
2.QA@IT、開発プロジェクトの道のり
プロジェクト開始にあたり、開発言語はRuby一択ですんなり決まりました。これは、『担当者(西村氏)が分かる言語が良い』との和田さんの助言もあったとのこと。
永和システムマネジメントに任せよう、と決まるまでは、西村氏は各コミュニティで評判や実力、実績を聞き、各エンジニアのGithubのリポジトリや、技術ブログを見るなどしていろいろ探していたそうです。
最終的に、永和さんで提案しよう、と話を持ち掛けたところ、永和システムマネジメントの角谷信太郎氏は「西村さんがやるなら全然ありじゃないですか!」と快諾。
「決め手としては本当、"知ってたから"に尽きる。元々人間関係があったし、Rubyのコミュニティでも『いつか皆さんの所に、"一緒に作りませんか?"というかもしれません』と言っていました。属人性上等! だってソーシャルですもの。by Nameです」と当時を振り返ります。
まずはスプリントはなし、マイルストーンに向けてスコープを調整していく形でプロジェクトは始動します。
環境としては以下のようなツールを取り揃えておりました。
- Github(private)
- Travis CI
- Pivotal Tracker
- Yammer
- Facebookメッセージ、メール、IRC
GithubやCI(継続的インテグレーション)環境が整った状況で、西村氏は開発現場のいろいろなトピックを目の当たりにします。
- GithubにPull Request、Travis CIでテスト。コードの周りに人が集まり、他チームのメンバーも時々状況を覗きに来たり、コメントを残すことも。
- Pivotal TrackerでのAcceptアクションを検収扱いにして、検収完了後にデプロイ作業を実施。
- Github上で仕様の議論がなされ、承認されたらマージ。
このプロセスは西村氏自身も「素晴らしい!」と思ったそうです。Githubでは実装過程の透明性が非常に高く、開発中にメンバーがハマったり迷ったりする姿を見ることもでき、そして、圧倒的な『餅は餅屋』感を感じたとのこと。
- ノリノリで開発してもらえているなぁと感じることもよくあった。メンバー間で絵文字を使うなんてことも普通に。
- 西村氏自身もGithubを使いこなすようになり、時には悪乗り的なPull Requestをしてみたり…。(ライフゲームを404ページに取り込んじゃえ!→すんなり承認、取り込まれた)
開発現場でGithubに習熟してきた西村氏、今度はOSSにPull Requestを試みます。本来なら順序が逆?(OSS→開発現場)のような気もしますが、この過程は特に問題となることもなく、すんなり成功。
この経験を踏まえて、西村氏は『ソーシャルコーディングは陸続きなんだなぁ、使っている環境も同じだ』と実感。タイミングを併せて表示された『Githubで何がforkされているか』を示すグラフを見ても、確かに陸続き、繋がっている感じが非常に強く感じられるデータと見て取れます。
そんな印象的な場面を見てきた西村氏、中でも特に印象的な場面だったと振り返るのが以下のシーンでした。
時は、システムのローンチ日。ところがその日、プチ炎上な状況が発生してしまいます。
「今から謝罪文を書きます。深夜ですが、即デプロイは可能でしょうか?」と申し訳なさそうにメンバーに申し入れる西村氏。「そうは言っても、契約だから厳しいよなぁ…」
すると、返ってきた答はなんと、「We are Team!!」。ものすごいスピードでトラブル対応が進み始めます。
一瞬でタスクが出来、一瞬で処理が実装され、一瞬でタスクが消化された。
「その際の"チカチカ"(通知アラートが光る様)は、忘れられないですね」と西村氏は当時を振り返り、感慨深そうに語りました。
西村氏は、気付いたら「僕らがやります」とチームを代弁する発言が多くなっていたそうです。実際は西村氏1人しかその場にいなかったとしても、上記のような連携を経ていくことで、自然とチーム意識が芽生えてきたのだと思われます。
西村氏はまとめとして、「これから先、ソーシャルコーディングは企業にも浸透していく。ユーザー企業の内製アプリケーションなどにもそういう流れは来るのではないか」と述べました。また自身のActionとして、「Gitで皆さんご一緒に。結局のところ、人類は昔からソーシャルしてきた。それをサポートするツールがあるのなら、どんどん使おう。Everyone git on board!」とコメントし、事例発表講演を締めました。