2012年から業務にコードレビューを取り入れ始めたこともありタイムリーだったので、『コードレビュー実践入門』として特集が載っているWEB+DB PRESS Vol.72を購入して読みました。
読んでいて「おっ」と発見というか、自分の中で気付きがあったのが、特集の冒頭で触れられている古典的なコードレビューでした。
もともと古典的なコードレビューというものは、いわゆるウォーターフォールの開発手法の1ステップとして位置づけられてきました。要件定義、外部設計、内部設計といった開発工程の中にレビューが組み込まれる形式が多かったようです。
そして、開発メンバー全員であったり、顧客であったりが参加し、たいへんなコストのかかるレビュー会議が開かれることもありました。
これ、自分が考えている現代的なツールを利用したコードレビューと余りにもかけ離れているために全然意識していなかったのですが、言われてみると確かに「あっ、俺こういうコードレビューの会議に参加したことあったじゃん!」と目から鱗が落ちる思いでした。
私が新卒で就職した会社でC言語によるCGI(今考えると凄い)のシステムを作っていた時に、秀丸のような構文ハイライト機能を持ったエディタで開いたプログラムコードを人数分印刷して参加者に配って、レビュー会議をやっていました。どちらかというと、Cの中で組み立てて流すSQLが妥当か否かを判断するための会議だったように記憶しています。だから「この変数名は良くない」とか、「関数の引数設計をこうしたらどう?」みたいなレビューではありませんでした。
あの会議は最終的なジャッジを主任が行うために自由な発言が許される雰囲気じゃなかったし、何よりも、紙とにらめっこしながらのレビューであったために行ジャンプすら目grepに頼らざるを得ず、非常に消耗したことを良く憶えています。関係者を全員決まった時刻に招集してヨーイドンで読ませるなんて、何とまぁコストのかかる贅沢なことをやっていたものです。
他人の書いたコードに良い指摘を出来るかどうかは、主任や部長といったライン役職と一切関係が無いことが多いため、この特集で紹介されているようなツールを取り入れて、上下関係を取り除いてフラットかつ非同期的に行った方がずっと効果的ですね。GitHubのPull Request機能や、そのクローン製品(Gitorious、GITLAB)で使えるMerge Request機能がベストだし、それが難しければReview Boardのような専用ツールの導入がベターであると考えられます。行単位にコメントが残せないレビューは、余りにも非効率過ぎます。
紙と会議室であれこれ意見を出していた時代には戻れないなぁ……と気付いた特集記事なのでした。
この特集の他にも『Backlog/Cacoo開発ノウハウ大公開』『XP再入門』など、偶然か分かりませんが、チームビルディングにスポットの当たった記事が多かった印象で、読み応えのある号でした。
「リーン・スタートアップ」という用語は、私にとっては「ノマド・ワーキング」と同様に、「2012年現在、話題になっているけど余り近付きたくない」用語でした。似たような用語には、近年の「アジャイル」があります。実践している人の言葉には共感出来るけれど、その用語に群がってドヤ顔している人がどうしても目に付いてしまう、と言えば良いのでしょうか。バズワードというやつかも知れません。
とは言え、あのオライリーから「実践本」を謳って出た本なので、読めば何らかの発見があるだろうと、食わず嫌いせず手にとってみることにしました。
『Running Lean』は、以下のような人に最適です。
- ビジネスマネージャー
- CEO
- 成功する企業家になりたい開発者やプログラマ
- ブロガー・共同創業者・個人事業主・ライター・ミュージシャンなどのクリエイティブで新しいビジネスプロジェクトを始めようとしている人たち
- イノベーター
- スタートアップの創業者
イントロダクションでいきなり対象読者から外されてしまった感が強いのですが、「リーン・スタートアップ」というのは「構築―計測―学習」のサイクルを素早く繰り返してリスクを最小化かつ学習を最大化する行為のようです。本書はその実践事例集といった位置づけ。多分ですが。
この本そのものが、元々はブログとして執筆されていた何本かの記事を「リーン・スタートアップ」の原則に基づいて出版までこぎ付けたそうで、特に目次の公開からフィードバックを活用して慎重に進めて行く下りは、その最終成果物をいま手に取り読んでいることからも説得力がありますし非常に面白かったです。出版の話は最初に軽く触れた程度だったため、もう少し読みたかったです。
本の大半というか8割近くを占めるのが、著者が実際にローンチした「CloudFire」という写真・動画などのメディアファイルのP2P型有償共有サービスサービスの顧客ターゲットや売り文句を、見込み顧客へのインタビューを通してどのように明確化して来たかが語られています。
早過ぎる最適化やスケールアウトは製品が広まるまで考えず後に置いておけ等々、「なるほどな~」と思いながら読む部分もあったのですが、やはりと云うか、最後まで意味が掴めなかった難しい用語が幾つかありました。具体的には本書中に何度も登場する次のような用語が分かりませんでした。
掌の上で踊りながら読んでしまったと分かり笑ってしまったのですが、私が分からなくて困った用語は全て、最後の訳者あとがきで「敢えてカタカナで登場させた」とあります。他には「コンバージョン」「アクティベーション」が挙げられていました。TechCrunchのようなサイトを日常的に眺めていれば馴染みのある用語だそうです。
全部読み終わって考えたことは、この本で提唱されている「失敗を避けるためにアーリーアダプターを徹底的に利用してやろうぜ!」ってスタンスは、日本でいうとアイドルを育てる話と案外近しいのかな? と。AKBのファンに殴られそうですが。
最近のツッコミ
参号館 日記(ariyasacca)