• 株式会社クレイ
  • アジャイルコーチ/ プログラマ
  • 吉岡 ひろき

コード品質に共通理解を! エンジニアとビジネスサイドを繋ぐ「コードの点数化」とは

今回のソリューション:【Code Climate/コードクライメート】

コードをできるだけ綺麗に書きたいエンジニアと、そこに時間をかけてほしくないビジネスオーナー。一見、相容れないように見える両者。相互の共通理解は、どのように実現できるのだろうか?

受託開発からスタートし、現在では情報共有サービス「DocBase(ドックベース)」の運営も行う株式会社クレイ。エンジニア集団である同社であったとしても、コードの品質を巡る摩擦が少なからず起こっていたという。

そのような状況を変えるために導入したのが、コードの品質を自動でスコアリングするサービス「Code Climate(コードクライメート)」。

Code Climateを使うと、コードの「読みやすさ」が点数化されるので、実際にはコードを書くことができない非エンジニアにも客観的な品質の理解が可能になる。

「Code Climateは最終的にはエンジニアとビジネスサイド、両者にメリットがあるサービス」と語る同社の吉岡 ひろきさんに、詳しい活用法をお伺いした。

「読みやすいコードかどうか」をスコアリングするCode Climate

新卒で入社したのは、ハードウェアの計測器メーカーでした。そちらで組み込みのソフトウェアや、Linuxのドライバー、Windowsからデバイスを制御するソフトウェアなどを開発をしていました。

その後Webアプリケーションの開発を始めまして、RubyとRuby on Railsを習得したのがきっかけで、クレイに入社したという経緯です。クレイに入ってからはアプリケーション開発もしていますが、開発プロセスの改善という領域をメインに任されています。

弊社でCode Climateを使い始めたのは、2、3年前になります。Code Climateはコードの品質解析をしてくれるサービスで、簡単に言うとコードの「読みやすさ」を点数で評価してくれます。エンジニアって、読みやすいコードが大好きなわけで。コードを読みやすく書くことに時間を使いたいんです。

でも、いくらコードを綺麗に書いたところで直接的な収益にはつながらないので、ビジネスサイドのメンバーはあまりそこに時間を使ってほしくなかったりしますよね。

一方はコードを綺麗にしたい、もう一方はしたくない。しかも「コードが読みやすいかどうか」という判断ができるのは、コードを綺麗にしたい側のエンジニアだけです。そうすると調整がつかないので、ビジネスサイドの責任者でもコードの品質を定量的に判断できる、客観的な手段が必要になります。

そういった場合に役に立つのが、Code Climateなんです。エンジニアとビジネスサイドの間で生まれやすい摩擦を解決してくれるサービスなので、最終的には双方にメリットを生むサービスだと思います。

▼コード品質をスコアリングする「Code Climate」

GitHubと連携し、プロジェクト単位でコードを自動スコアリング

Code Climateの対応言語は増えてきていて、今はRuby、JavaScript、PHP、Pythonに対応しています。これらのフレームワークで開発しているチームであれば、Code Climateを使うことでプロジェクトのコードの品質を常にチェックすることができるようになります。

欲を言えば、CoffeeScriptとかスマホのネイティブ系の言語にも対応すると嬉しいのですが…。

Code ClimateはGitHubと連携できて、GitHubでブランチを作れば自動的にコードを解析してスコアを算出してくれます。スコアリングはプロジェクト単位になるのですが、MAXは4で、弊社のプロジェクトであれば3点代のものが多いですね。

ただ、スコアに固執しすぎるのも良くなくて。プロジェクトによってはそんなに時間を割けないこともありますし、別にスコアが2.5であってもエンジニアがメンテできる状態であれば、後に回しても問題ないと考えています。

▼コード品質を非エンジニアにも可視化するサービス

導入すると、特にビジネスオーナーがエンジニアではない場合には非常に効果を発揮すると思います。

スコアリングによって、ビジネス側とエンジニア側が共通理解を持って話ができるようになるからです。

例えば「2ヶ月前のスコアが3で、今は2.8まで下がっているから修正させて下さい」「それなら2ヶ月前までの数値までは戻そう」という風に、スコアをベースにやり取りをすることができます。

ファイル単位でも評価されるので、改修すべき箇所も明確

更にCode Climateは、ブランチのコードを修正してGitHubにプッシュすると、ファイル単位でも変更前と変更後のスコアをA〜Dで評価してくれるんです。

「このファイルをプッシュしたことでコードの品質がどうなったか」ということが明確にわかります。

「hotspot」という項目で悪いコードが集中しているファイルも分かるので、プロジェクト全体を良くするためにどこから改修にとりかかるべきなのかという優先順位付けもできます。

▼ファイル単位でもA〜Dで品質をスコアリング

実際に改修作業を行うかどうかの判断ですが、弊社の場合はスコアがB程度であればエンジニアの感覚で決める部分が大きいです。

「このコードおかしいな」と感じた時にCode Climateを見て、確かにここから悪くなっている、ということが分かったら、そこでビジネスオーナーにそのスコアの変化を見せて、この改修をやりましょうという提案をするイメージですね。

優れたUIで導入も簡単 セキュリティーホールの発見も可能

Code Climateは、UIもとても使いやすく、導入もびっくりするくらい簡単でした。

Rubyコミュニティには、その年最も活躍した人に贈られるRuby Heroというアワードがあるのですが、その受賞者がサービスを開発しているんです。Rubyコミュニティの人はやはり同じ感覚を持っているのか、非常に自然なつくりになっていると感じています。

他にも、セキュリティの診断も実施することができます。実は、最初はあまりその機能には期待していなかったんです。

でもある時、コードレビューしても気が付かなかったセキュリティホールがCode Climateの診断で見つかったことがあって。殆どのセキュリティホールはコードレビューで見つかるのですが、その時は改めて、入れておいてよかったと思いましたね。

導入によって得る成果を考えると、価格的にも妥当な投資

コードの品質が高いというのはつまり、後から変更を加えやすいということなんです。ビジネスオーナーが新しい機能を加えたいと言った時にも、すぐに実装することができます。

また、Code Climateを使うと、実際にはコードを書いてない企画側や受注先のお客様でもコードの品質が判断できるようになります。お客様にスコアを見せるケースはほとんどありませんが、でも実際に役に立ったこともありました。

あるお客様からの依頼で、弊社がプロジェクトを引き継ぐことになった時のことです。そのソフトウェアの、元のソースコードの品質がちょっとひどくて。とてもメンテナンスや拡張を出来るものではなかったんですよ。

そこで改修には非常にコストがかかるということを説明したのですが、お客様はエンジニアではないので、分からないわけです。そこで、一般的なコードとそのプロジェクトのコードのCode Climateのスコアをお見せしたところ、今の品質についてご納得いただくことができたんです。

Code Climateの値段は、レポジトリの数で決まります。弊社の場合だと1ヶ月あたり$199です。この金額は、会社のランニングコストから見ると本当に少額だと思います。この値段でお客様と交渉ができたり、セキュリティホールを見つけたりできるので、妥当な投資ではないかと。

Publicなレポジトリの場合は無料で使えるので、最初は試してみるといいですよ。(了)

;