エンジニアリング

レガシーソフトウェア改善ガイドを読んだ

僕がお仕事でやっているシステムも一般的には「レガシー」と呼ばれる部類に入るので参考になるかと思って読んでみた。

レガシーコード改善ガイド

レガシーなものはコードだけではない

この本が良かったのが、コードのリファクタリングのみに言及している本ではなかったこと。
どちらかというとレガシーシステムを扱う仕事をしていく際に発生していく

  • カルチャー
  • アーキテクチャー
  • リファクタリング

と言った部分にフォーカスをあてつつ、どのようにして改善をしていくことが出来るかが書かれている
いったん刺さった所とそのアクションを書いてみる

計測してみる

何事も計測してみる・・・

  • 1.ローカル開発環境の構築時間
  • 2.リリース、デプロイ時にかかる時間
  • 3.バグの平均修正時間
  • 4.よく使われるファイル

この辺で言うと、1,4あたりは実践対象な気がしている。1に関しては仕事でやっている環境はアプリの方はまぁまぁ簡単に構築できるがWebの方は肥大化したプロジェクトファイルと依存性がおかしくなっているmavenのpomファイルと戦うことを常に求められるのでそこらへんはなんとかしていきたい・・・この本ではVagrantとAnsibleを使って環境構築を自動化する方法が紹介されていた。
chefとかAnsibleとかここらの技術は今までいつかやりたいと思ってやっていなかったからそろそろやりたいなぁ。

ためしにこのコマンドやるだけで、どのファイルが1年間で触られていたかが一目瞭然!

[shell]
git log –since="365 days ago" –pretty=format:"" –name-only | \
grep "[^\+s]" | \
sort | uniq -c | \
sort -nr | head -50
[/shell]

こんな感じで分かる

スクリーンショット 2017-05-02 11.14.32

こいつらがよく触ると言う事は、変更が多い=変なコードが入っている可能性が高かったりするわけ

お仕事の今期のモチベーションにつながった

新しい技術をどんどんやってきたい、というモチベーションと裏腹にお仕事は1つ1つ枯れた技術の積み重ねだったりするわけで、そういう時のモチベーションを高める良い本だった