Upgrade to Pro — share decks privately, control downloads, hide ads and more …

非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜

非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜

リファクタリングのためのトークン節約術 Night のLT資料です
https://findy.connpass.com/event/399033/

Avatar for subroh_0508

subroh_0508

July 16, 2026

More Decks by subroh_0508

Other Decks in Technology

Transcript

  1. 坂上 晴信 Harunobu Sakaue 経歴 1995年生まれ。東京の離島・伊豆大島出身。 エンジニア → DevHR(= 開発組織専任の人事)→

    エンジニア 2016年 3月 東京高専 情報工学科卒 2016年 4月 株式会社TOKIUM 入社 Android/Webエンジニア 2023年 1月 DevHRにロールチェンジ 育成・組織づくり・採用広報 2025年12月 再びエンジニアにロールチェンジ Webエンジニア NOW! 自己紹介 / リアルのすがた ⚫︎ ⚫︎ ⚫︎ ⚫︎ ⚫︎ 2
  2. にしこりさぶろ〜 @subroh_0508 好きなもの Kotlin / アイドルマスター / ラブライブ! Kotlin本体へのContribute経験、Kotlin Festへの複数回の

    登壇経験アリ。DevHR時代も趣味でKotlinを書き続け、 "200名収容の会場で技術登壇をした人事"になった。 プライベートでは、アイマスPとライブライバーを兼任。 『シャニマス』三峰結華と『蓮ノ空』村野さやかが 人生のロールモデル。 自己紹介 / インターネットのすがた 3
  3. しばらくイイ感じに運用できていたが、次第に課題も顕在化 実コードとの整合性 仕様書に サンプルコードを直接記述 していた → 実装との整合性維持 に工数がかかる → Lintやテストを通らないコードが蓄積

    仕様の網羅性 要件定義書と設計書の 役割分担が不明瞭 → どこに何を書くべきか が定まらない → 結果として、仕様の漏れが多発 前提: 仕様駆動(Spec Driven)ライクな開発 6
  4. しばらくイイ感じに運用できていたが、次第に課題も顕在化 実コードとの整合性 仕様書に サンプルコードを直接記述 していた → 実装との整合性維持 に工数がかかる → Lintやテストを通らないコードが蓄積

    仕様の網羅性 要件定義書と設計書の 役割分担が不明瞭 → どこに何を書くべきか が定まらない → 結果として、仕様の漏れが多発 これを解決すべく、仕様ドキュメントのフォーマットを刷新! 実際に AIレビューの指摘数を減らせた! 仕様ドキュメントには、具体のコードを一切書かないこととした(= 言語非依存の原則) 2段構成(要件 / 設計)→ 3段構成(要件 / 基本設計 / 詳細設計)に変え、セクションごとの記載内容を きっちり定めた 前提: 仕様駆動(Spec Driven)ライクな開発 6
  5. 「リファクタリング」の定義に沿って、やることを絞る martinfowler.com - Definition Of Refactoring やることを 「旧 → 新へ、情報を欠落なく再配置する」

    ことだけに絞った Pull Requestでは 「リファクタ前後で情報が欠けていない」 ことだけを検証すると決めた やることを絞る Refactoring (verb): to restructure software by applying a series of refactorings without changing its observable behavior. リファクタリング(動詞): ソフトウェアの外部から観察可能な動作を変更することなく、 一連のリファクタリングを適用してソフトウェアの構造を再構築すること。 “ 10
  6. 「リファクタリング」の定義に沿って、やることを絞る martinfowler.com - Definition Of Refactoring やることを 「旧 → 新へ、情報を欠落なく再配置する」

    ことだけに絞った Pull Requestでは 「リファクタ前後で情報が欠けていない」 ことだけを検証すると決めた やることを絞る Refactoring (verb): to restructure software by applying a series of refactorings without changing its observable behavior. リファクタリング(動詞): ソフトウェアの外部から観察可能な動作を変更することなく、 一連のリファクタリングを適用してソフトウェアの構造を再構築すること。 “ コード生成の品質向上は要らないんですね! 再配置だけなら、 40人日超 → 10人日 くらいに減りますね! (心の声)適当こきやがって… 10
  7. 静的検証 パターンマッチ :具体のコードが新フォーマットに書かれていないか、機械的に検証 AIによる内容検証 :旧 → 新で内容が保全されているか、セクションごとに検証 動的検証 旧仕様書 /

    新仕様書、それぞれから 実装計画とコードを生成 して比較 実装計画の受け入れ条件、条件分岐や状態遷移、異常系、境界値 etc. の差分をチェック セクション・ファイルを跨いで内容が保全されているか、検証 検証をシンプルに作る 12