技術部の遠藤(mame)です。ヶ月くらい風邪が直らず、苦しみながらこれを書いています。今日と明日は、その中でクックパッドのフルタイムRubyコミッタが主に担当したところを少し詳しく紹介します。アプリケーションとして実現されていました。このやり方ではメンテナンスが限界になってきたので、「お台場プロジェクト」という大整理プロジェクトが行われてきました。つの記事が詳しいです。アプリケーションをなんとかしよう。計測と可視化からはじめよう。知られざる「お台場プロジェクト」の裏側お台場プロジェクトの活動のひとつに、「不要になったコードを削除する」というものがあります。クックパッドに入るまで考えたことがなかったのですが、この「不要コードを発見・削除する」が、なかなかむずかしいのでした。他人の書いたコードが不要になったかどうかの判定はむずかしいですし、不要と思って消したら予想外のところで使われていたということもあります。インタプリタ言語なのでコンパイルによるチェックがなく*1、その上リフレクションが多用される文化なので、検証がとてもむずかしいです。本体にパッチを入れて、各コード断片が初めて実行されたときに記録をつけながら本番運用をしています。これにより、長期間運用していても全く使われていないコード断片を効率的に発見できます。実際に使われていないコードなので、わりと安心して削除できます。この詳細は次の記事をご覧ください。コードカバレッジとはコードカバレッジを知っている人はこの節をスキップしてください。コードカバレッジとは、どのコード断片が実行されたかを記録したものです。foo(2)左端の数字がコードカバレッジです。各行が何回実行されたかを表しています。度も実行されなかったことを意味しています。行)を探すために使われます。ライブラリを使うことでコードカバレッジを計測できます。1]}}配列の数字が各行の実行回数に対応しています。遠藤の発表資料をご覧ください。library"このコードカバレッジ測定を本番環境で使えば、いつまでたっても実行されない行を発見することができます。通常のコードカバレッジ測定では、各行を実行するたびにカウントアップのフックを実行することになり、オーバーヘッドが問題になります。全ソースファイル行数の長さの配列を作るので、こちらもオーバーヘッドが気になるところです。回でも実行されたかどうかを計測するコードカバレッジです。行)を探すというのがふつうです。実行回数が取れなくなることにデメリットはほとんどないと思います。回だけカウントアップのフックを実行します。度実行されたら、その行のフックのフラグを消し去るので、あとはカバレッジ計測のない状態と同じになります。*2以下、具体的な使い方を説明していきます。いうように呼び出します。返り値が「実行された行番号」の列に変わりました。呼んで測定結果を記録していきたくなると思われます。無引数で呼ぶと、カバレッジの測定を停止してしまいます*3。いうキーワード引数を追加しました。行目が追加で実行されたことがわかります。度見た行をクリアできます。呼ぶたびに全ソースファイル行数分の配列ができるのを避けることができます。