「いやいやいやいや、今さらかよ」と。「コピペばっかりだったら、LOCなんか簡単に増えるじゃん」と。ちなみにLOCっていうのは、編集コード行数のことですね。汚いコード書けば、LOCなんか増えるじゃんと。それは、わかるんですけど。LOCとして、Xパーセント削減しているのは事実ですよね。コード品質とか、コミュニケーションコストとか、案件難易度とか、運用上の都合とか、厳密に考え出したらキリがないですよね、と。「厳密な指標を出すことばかりを気にして、考え続けてたら、一生なにも変えられずに終わりませんか?」ということです。前提つきでも指標があればいいんです。「LOCベースで、Xパーセント効率化できます」。これだなと思いましたね、私は。logで、過去数年分のnumstatを抽出して、MySQLに入れて、それを集計しました。理論上、拡張子が、.jsp、.css、.jsであれば、それはマージに費やしたLOCです。フロントエンドは、HTMLではなく、JSPをコーディングするようになるので、マージLOCはゼロとなります。.jsp、.css、.jsの拡張子を、全拡張子で割ると、これがバックエンドのコスト削減率であるということが言えます。.jsp、.css、.jsのLOCが20,000行で、全体のLOCが100,000行だとしたら、だいたい20パーセントの削減率であるということが言えますよねと。いうことは、年間の開発費が1億だとした場合、年間2,000万の工数を新たに創出できるということになります。これで、ようやく「じゃあ、やってみるか」という言葉をいただいたので、フィジビリに移行することができました。フィジビリで結果が出たあとは、事業側も全面的にバックアップしてくれ、順調に対象案件を拡大していきました。開発工数を25パーセント削減1年後の現在なんですけど、今では、案件の90パーセント以上を「Viewを直接コーディングする」というフローで行っています。フロー改善前と比較すると、開発工数をだいたい25パーセント削減できています。これは、LOCじゃなくて、同規模案件の工数で比較しています。定量データ以外にも表れた定性の効果というのがあって。それは、例えば結合テストをせずとも、最終結果が見れるとか。似たような話なんですが、バックエンドが用意してくれているseedのデータがあるので、さまざまなパターンがすぐ見れるとか。あとは、影響範囲がわかるようになったので、リファクタを部分的に適用できるようになったとか。解決できていない問題もあります。相互成長できない問題というのがあって。バックエンド経験のあるフロントエンドの人は、CSS周りが弱いです。逆に、そうでないフロントエンドの人は、バックエンドが弱いです。お互いの弱い部分を教えあえばチーム力の底上げができるのではないか、という仮説でした。バックエンド経験のあるフロントエンドの人は、期待通りCSS周りに強くなっていきました。バックエンド経験がまったくないフロントエンドの人は、やはりハードルが高くて、思ったように習得が進んでいません。Viewをコーディングできる人材が思うように増えていっていません。これは、けっこう自分の中での反省で、バックエンド入門みたいな、最初の一歩を踏み出せるような学習コンテンツをきちんと用意すべきだったなと、今にして思います。壁の突破法は3つあって、Win-Winの関係作り、バックエンド経験のあるフロントエンドエンジニアの採用、それとフィジビリ。あとは、定量でLOC効率化の指標を出したと。フィジビリで改善見立てが出たあとは、ちょっとした投資とか、いろいろ全面的にバックアップしてくれました。今回は、けっこう正攻法で攻めたんですけど、いろいろなやり方があると思っています。いいアイデアがあったら、やってしまって、怒られたら、あとで謝る。これは便利な言葉だなと。「俺たちの闘いは続く」。ご静聴ありがとうございました。NIGHTに関する記事をまとめています。NIGHTに関する新着記事が公開された際に、通知を受け取ることができます。