ユアマイスター株式会社エンジニアブログ

ユアマイスター株式会社のエンジニアが日々徒然。

ユアマイスター第一回お掃除王選手権開催しました。

f:id:yourmystar_engineer:20191116165530j:plain

どうも。ユアマイスター星(@inase17000)です。

1週間くらい前から企画していた、不要コードをまとめてみんなで削除しようというイベントを開催したのでレポートがわりにブログを書いておこうと思います。

背景

ユアマイスターが運営するあなたのマイスターもリリースされて3年が経ちました。これまで色々な機能、ページが実装され、毎日のようにメンテされる箇所もあれば、たまにgrepした時に「あ!こんなファイルあったな!」と久しぶりの再会を果たす箇所も出てきました。

全てが適切に最新化されるよう管理されていれば良いのですが、少しずつ不要コードというのが溜まっていくのは世の常で、時折各個人がボーイスカウト的に綺麗にしてきたものの、全員がこの意識を持たなければチームとしての成長はないなと感じていました。そこで、定期的にみんなでまとめた時間を取ろうと提案したところ、ポイント制にして競った方が楽しめるという意見が出てきました。

時間も1日はやりすぎで、半日くらいが良いだろうということで、全員が出社するタイミングを見計らって開催する運びとなりました。

僕としては、不要コードを放置すると、影響範囲調査に時間がかかり開発速度が遅くなっていきますし、最悪の場合は多額の損失をもたらすきっかけになり得るということをエンジニア一人一人が意識しなければなりません。自分たちのDXは自分たちで守っていく、そういうメッセージを持っていました。

ルール

  • ポイント
    • -5点
      • 削除漏れがあった場合
      • 影響の考慮漏れがあり、影響がでた場合
    • 1点
      • imageファイル, cssファイル
    • 2点
      • ctpファイル, configファイル
    • 3点
      • 未使用メソッド・アクション丸ごと(Component、Controllerなど)
      • 未使用contain/join
    • 4点
      • 未使用Class丸ごと(Component、Controllerなど)
    • 5点
      • 未使用カラム
    • 10点
      • テーブル削除

配点はもう完全に僕の独断と偏見ですw

イベント中の様子

10時前に少し全員に注意事項を共有し、スタートです。

時間に追われた作業になるため、確実にローカルで動作確認をして影響がないことを確認するように促しました。

作業中は、一つのブランチに対してcommit、pushしていくことになっていたので、誰かがpushする度に声を掛け合いpullをして差分を取り込むことで無駄な重複作業を防ぐこととしました。オフィスで同席しながらの作業だったので、適度に声を掛け合いながらやっていたので、無意味なコンフリクトを発生させずに進められていました。

f:id:yourmystar_engineer:20191116165127j:plain なんとなく、みんないつもより集中して作業していた気がする...

途中で昼ごはんとかも挟みながら、時間経過とともに削除することに喜びを感じ始めていました。

結果

プルリクエストを確認すると、合計で800弱のファイルを削除することになりました。コードレビューがてら中身を確認していくと、

  • リニューアルになり、使わなくなったViewファイルをそのまま残置していた
  • 画像差し替えにより画面から呼び出しのなくなった古い画像をそのまま残置していた

など、改修時に「不要ファイルを削除する」ことをしていないことが原因のものがほとんどでした。

ただ、中にはいつか使うだろうと思い実装していたが、結局使われていないYAGNI("You ain't gonna need it")なクラスも存在しましたので、これを機に消したものもあります。

期限の14時が来て、各自ローカルでの動作確認を終え、ルールに則ったポイント数の集計を行いました。

🎉結果発表🎉

  1. 古澤 404P
  2. 入山 194P
  3. 原 153P
  4. 村上 114P
  5. 星 46P
  6. 滝本 30P
  7. 増井 7P

f:id:yourmystar_engineer:20191116164828j:plain 優勝した古澤氏「僕が通った跡には、ひとつもゴミコードは残りませんよ!全部吸い込んでやります!」(靴履いてません)

感想と次回に向けて

ユアマイスター では、Fun/Done/Learnで1週間の振り返りを行なっているのですが、みんなの「Fun」にこのイベントが入っていたのがすごく嬉しかったです。それぞれが工夫をして楽しみながらみんなのコードベースを綺麗にできたことに喜びを覚えていました。

また、今後の自分たちが書くコードに対して少しだけ責任感が増したと感じる発言が見受けられました。今回単発の効果だけではなく未来のための意識向上ができたと思うと、かけた時間(コスト)に対しても十分見合う施策だったと思います。

そんなに頻繁にこれを開催する必要はないと感じていますが、次回やることになったとしたら次はパフォーマンスチューニングの観点も入れられるといいかもしれないなとやりながら感じました。

  • 冗長なコードを共通化する
  • クラス名、ディレクトリ名を整理し、コードの見通しをよくする
  • DBから取得するデータ、ControllerからViewに渡すデータにおいて無駄なものを省く

など、サイトスピード高速化に関わるような改修をテーマに実施できたら、お客様の体験も向上できてさらに良いイベントにできると感じています。

以上、イベントレポートでした。