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

ときめく開発体験を~デッドコードをなくして ときめきをつくる~ / ginzarails_vol33_presentation

ときめく開発体験を~デッドコードをなくして ときめきをつくる~ / ginzarails_vol33_presentation

銀座Rails#33 登壇資料
#ginzarails

More Decks by リンクアンドモチベーション

Other Decks in Technology

Transcript

  1. ときめく開発体験を デッドコードをなくして ときめきをつくる 伊藤遼

  2. 自己紹介 伊藤 遼 • twitter, qiita: @haruka_odenkun (全然投稿していないですが...) • (株)

    リンクアンドモチベーションに新卒入社 3年目 • やってきたこと ◦ エンタープライズ向け性能改善 ◦ (現在) CREチームの立ち上げ
  3. 今日話すこと 1Qで2万行ものデッドコードを削除した話

  4. 今日話すこと 1Qで2万行ものデッドコードを削除した話 デッドコード削除が開発組織作りに繋がった話

  5. 今日話すこと • プロジェクトの背景 • 苦労したこと • 何をしたか • 結果 1Qで2万行ものデッドコードを削除した話

    デッドコード削除が開発組織作りに繋がった話
  6. 背景とPjtの発足 • 弊社サービスのニーズが高まり開発効率を加速したい ◦ 生産性 / 安定性 が下がっている ◦ 技術負債としてデッドコードが増えてきた

    生産性の向上に対して ROIが高いのがデッドコード削除だった
  7. なぜデッドコードが放置されるのか 1. どう進めていったらいいかわからない 2. 作業時間をまとめて確保できない 3. そもそもそういう文化がない

  8. じゃあ何をしたか? 1. どう進めていったらいいかわからない → 作業フローの整備: ユーザー側から削除 2. 作業時間をまとめて確保できない → 仕組み作り:

    定期タスクと合体 3. そもそもそういう文化がない → 文化作り: 「ときめき」の布教
  9. 参照先の参照先まで当たるのは骨が折れる ←↑ 実はデッドコードかも 1. 作業フローの整備: ユーザー側から削除 例: こんなデッドコードがありました

  10. 1. ディレクトリ構成やgrepで参照されないフロントコードの削除 2. リクエストログやapmツールを使用して不要なエンドポイントを削除 3. routes.rbとコントローラーの比較から不要なアクションの削除 4. model (service) 層の不要なメソッドにlogを仕込んで定期監視

    / 削除 5. 不要なテーブルの削除 フロントコ ード エンド ポイント コントローラー (サービス) モデル テーブル app/view/ etc. config/routes.rb app/controller/* (app/service/*) app/model/* (db/*) 1. 作業フローの整備: ユーザー側から削除
  11. フロントコ ード エンド ポイント コントローラー (サービス) モデル テーブル app/view/ etc.

    config/routes.rb app/controller/* (app/service/*) app/model/* (db/*) 1. 作業フローの整備: ユーザー側から削除 + 一時利用rake task、patchもノイズとなるため使用時期をもとに削除 + 上記コードに関連するテストコードも削除
  12. フロントコ ード エンド ポイント コントローラー (サービス) モデル テーブル app/view/ etc.

    config/routes.rb app/controller/* (app/service/*) app/model/* (db/*) 1. 作業フローの整備: ユーザー側から削除 参照順に棚卸しすることで効率よく削除できる
  13. • 1h / week の固定時間にPjtメンバーで雑談しながら作業 • 月次タスクに仕込んだログのチェックを追加 • リリース前チェックは月次のシナリオテストに混ぜ込む 2.

    仕組み作り:定期タスクにする/合体させる 「安全に」「継続的に」削除を進められるようにする
  14. 3. 文化作り: 「ときめき」の布教 引用: Netflix KonMari ~人生がときめく片づけの魔法~ コードに対しても「ときめくか?」を布教

  15. • slackのemojiの追加 • デッドコードを見つけて起票したらbotから感謝 • リリースしたらみんなで褒め称える ときめかないなら捨てるという文化が醸成された 3. 文化作り: 「ときめき」の布教

  16. 結果: 1Qで約2万行の削除!! • ビッグバンリリース + 小さいリリース

  17. もう一つの結果: 「ときめき」の広がり デッドコードに対してだけでなく... • 大規模機能開発時にも 「これもう消せる?」というやりとりが発生! • コードだけでなく ドキュメントやチケットの整理も進行中! or

  18. まとめ: 「ときめき」は技術的負債を減らす • 技術的負債返却の第一歩 ◦ デッドコードの削除は手をつけやすくコスパもいい • 効果はコード以外にも波及 ◦ 「ときめき」の浸透で開発者の主体性を後押し