Ruby の魅力の 1 つは表現の自由度であり、同じ処理を実現するコードをいろいろな方法で書くことができます。しかし裏を返すと、チームで規模の大きな開発をする場合などは個々人の好みがコードに色濃く出てしまい、メンテナンス性や可読性が落ちてしまうという問題も引き起こします。
解決策のひとつは「コーディング規約を作成し、それに従ってプログラムを書く」というものですが、いくらきっちり規約を決めても人間の作業にはミスや抜けが発生しますし、規約を意識しながらコードを修正するのも注意力の無駄です。
このようなケースで、今回紹介する Rubocop が役に立ちます。Rubocop は静的コード解析ツールで、Ruby コードがあらかじめ定義したコーディング規約に従っているかどうかをチェックしてくれます。
Rubocop のインストールと実行
それでは実際にインストールしてみましょう。Gemfile に rubocop gem を記述して bundle install
を実行します。
すると 'rubocop' コマンドが使えるようになるので、適当なファイルを作成して、
これをテストしてみます。
実行する面では問題なく動きますが、rubocop コマンドをかけてみると 2 件警告が出ています。詳しく見てみると、1 件目は
Prefer {...} over do...end for single-line blocks.
とあるように「1 行のブロックは do...end じゃなくて{...}で書いたほうが良いよ」という警告のようです。また、2 件目は
Space around operator ** detected.
と出ていることから、**
演算子の前後にはスペースを開けないというコーディング規約に則った警告のようです。これら 2 件の警告に従ってコードを修正してみます。
再度実行してみると、no offenses detected
となり無事コーディング規約を満たしていることが確認できます。
Rubocop の役割と基本的な使い方は以上のとおりです。次のページでは、コーディング規約をチームの方針に従ってカスタマイズする方法を紹介します。