git grepで仕事してる

私はコードを書く時に頻繁にgit grepを使っていて、一日に何回くらいgit grepを使っているのか気になったのでログを取ってみました。

2016 10/24 月: 61
2016 10/25 火: 36
2016 10/26 水: 19
2016 10/27 木: 80
2016 10/28 金: 51
2016 10/31 月: 96
2016 11/ 1 火: 47
2016 11/ 2 水: 53
2016 11/ 4 金: 84
2016 11/ 7 月: 56
2016 11/ 8 火: 33
2016 11/ 9 水: 19
2016 11/10 木: 71

これは私が会社のPCでエディタの中でgit grepしたログを集計したものです。 結構ばらつきはありますが、40〜50回くらい、多い日で100回近くgit grepしているということが分かりました。 仕事の時間を割って平均したら大体5〜10分に一回はgit grepしていることになります。 もちろんコンスタントに使っているわけではなく、コードを書く時は増えますしミーティングがあれば減ります。 ですから、会議の多い日や設計段階を考えている日などは少なくなります。

私はVimScala・TypeScript・Goなどを書いています。 例えば、サーバーサイドを触る時にはコードとテンプレートを行き来するためにgit grepしますし、フロントエンドのコードも大体サーバーサイドと似たような変数名でモデリングしているため、git grepで関連ファイルを開いています。 JSONのフィールド名でもgit grepしますし、サイトのこの部分を変更したいという時は、クラス名を拾ってgit grepしてhtmlファイルを開きます。 ファクタリングや変数名関数名の変更も、まず最初にgit grepし、全て変更してからコンパイルします (手元で継続的にコンパイルするのはつらい)。 昔はcexprを使ってquickfixに流していましたが、今はlexprでlocation listに流してファイルを開いています。

他の人のコードのレビューする時は、動作確認したあとに、変更箇所の関数が使われている場所を必ず見るようにします。 関数に限らず、オブジェクト名でも、CSSのクラス名でも、サイトのパスの一部でも、なんでもgit grepします。

ある一つのプロジェクトのコードを長いこと触っていると、大体のコードの見た目が頭に入ってしまいいます。 DBでgroup byして引くときのORMのコードパターンはこんな感じなので…みたいな曖昧な記憶でも、git grepで目的のコードを開けたりします。 他のケースとして、エラーメッセージが出た時には、そのメッセージでgrepしてメッセージIDを見つけて、さらにそのメッセージIDでgrepするという二段git grepが発動します。

外部ライブラリも大体手元に落としてきてgrepするようにしています。 自分たちのコードからctagsで外部ライブラリに飛び、さらにそのリポジトリの中でgit grepするということがよくあります。

とにかくgit grepに頼っているので、たぶん自分はgit grepで仕事しているんだと思います。

コードを書いたり読んだりすることばかりが仕事ではないので、単純には仕事量の尺度にはなりませんが、しばらくログを取ってみて集計してみるとおもしろいことが分かったりするかもしれません。ぜひログを仕込んで回数を調べてみて下さい。あなたは一日に何回くらいgit grepしていますか?