デブサミ1日目#羽生さんセッション

いや〜、面白かったです。レポートが上がってくれば、渋谷系セッションも聞きたかった、とは思うんでしょうが、とりあえず今日はこっち聞きにいっといてよかった。id:habuakihiroさんの日記に書かれている思いの実装をいろいろと聞かせていただいた感じ。いやなかなか、羽生さんの日記だけ見ると「そんなうまくいくの?」と思う人でも、実際にそれをやってる、というところを見せられると納得できるはず。そういう迫力のあるセッションだったかと。とにかくいろいろと刺激を受けました。アンケートに「刺激」と書こうとして字が思い出せなかったのは恥しい。以下、備忘録的レポ。

# 感想混じりですが、特に[*]で始まってる行は個人的な感想です。

  • 500 画面のシステムを作るののざっくり見積りは幾ら?、というツカミ
    • つい最近の事例を鑑みて 50〜100 人月に挙手。不確実性が高過ぎるのでバッファを見込みましたが、範囲の下の方(50 〜 60くらい?)でそう外れてないと思ってます。
    • スタロジでは 20 で黒になるとのこと。悔しいけど(まだ)自信を持ってその数字は出せないなぁ、と。
  • で本論。IT 業界というか SI 屋さんを外の業界から見るとどう見ても業務改善が必要です、ありがとうございました。という状態、と。
    • うちの(業界|会社|部署|課|グループ|チーム|俺の仕事)は他とは違うんだよ。。。という言い訳は必ず聞く。ほんとに違うの?
      • [*] いや、そりゃ違うんだけど、業務改善とかをスルーできる理由にはならんよね、と。
  • お客様は要件定義なんかにお金を払いたくない
    • 必要なのは解るけど、「お金を払って、システム屋に勉強させてやってる」状態
    • そこで DIY ですよ。マジカ。
      • 事例いろいろ
  • (適宜協力しつつ)お客様が要件定義〜 UI 定義をする。
    • 業務洗いだしをふくめ、ユーザがそれをできるための「やり方」を考える -> マジカ
    • [*] ユーザが要件を決められない、とか愚痴る前にやることはあるんだな、と。
      • [*] UI が決まれば見積りの制度が挙がる、というかコストの変動要因がだいぶん減少させられる、というのは最近読んでるマコネルの見積り本にもあることですね。
    • はじめに要件を確定させれば不確実性は減少させられる。
    • 仕様変更のほとんどは「使用が変わった」ではなく「ヒアリング漏れ」。
    • 実装力に自信がない -> 早く実装に入らないと不安 -> ヒアリングに抜け漏れ
      • 実装を瞬殺できればじっくりと要件定義に時間をかけられるぞ、と。
      • 要件定義と併行して、技術の仕込みも。そのプロジェクト用のフレームワークを作るとか。
      • [*] なんのための実装力か、ということですよね。実際、実装に自信がなきゃこの戦法はできないし。
  • 実装は瞬殺
    • アーキテクチャJava + Seaser ファミリに固定。
    • UI モックを HTML に。
    • DB 設計は長くて 1週間。ERDレッスン読むように。
    • UI モックと DDL からコードのほとんどを自動生成。
      • DI を使ってジェネレーションギャップパターン,というのは個人的にツボでした。
      • [*] scaffold じゃここまではできないですな。羽生さんが scaffold に関心を持ってたように感じたのはこのへんの事情かも。わたしが勉強不足なだけかもしれませんが、業務を含めた生成はなかなか scaffold だけじゃ難しいよな、と。
      • 仕様書から自動生成とか、仕様書の Excel ファイルを読み込んで動く、とか。DRY!!
    • 仕込んでおいたフレームワークも使う。
    • どうしてもコーディングしなきゃ、なとこはサクッと作る。
      • ふつう TDD ですよね?
      • 15ポイントルール。

このスタイルを作るために(羽生さんはまだまだ途中、とおっしゃってましたが)いろいろとやってる仕込みを惜しげもなく披露してくださった羽生さんに感謝。
しつつ、なかなかショッキングというか刺激をうけました。想いはやっぱり近いのかな、わたしゃ多くの部分は Java よりか Ruby でやりたいですが*1
なんかですね、確かに個々は「地味 & 地道」なんですよね。それがここまで衝撃的になる、というのはまさに「量は質に転化する」なわけで。

あと SQLドリル2nd.は 3 月位ということですので、出たら復習を兼ねて写経会をやりたいですね。場所は山手線と京浜東北線が並立するところで。仰々しくするつもりはあんまり無いんで、喫茶店やファミレスでやろうかと。

う〜ん、読み返してみると、話を聞いて感銘を受けたところが盛りこみきれてないなぁ。

*1:好き嫌いはもちろんとして、普通に作る箇所は Ruby ならケツを拭ける意思がある、というのが大きいです