コードレビューとはソフトウェア開発プロセスの一部で、ソースコードをテストしてバグを早期に検出することが目的です。コードレビュープロセスは通常、コードベースにマージする前に実施されます。
コードレビューを効果的に行うことで、ソフトウェア開発の早い段階でコードの品質を高め、バグやエラーが混入するのを防ぐことができます。
今回はコードレビューとは何かをご説明し、コードレビュープロセスを支えてくれるおすすめのコードレビューツールをご紹介します。
コードレビューとは
コードレビューの主な目的は、書いたコードにバグやエラーがないか、自社で定めている品質基準を満たしているかを評価すること。コードレビューのプロセスは、偏ったフィードバックだけで構成されないことが重要です。言い換えれば、単なる品質評価だけでなく、開発チーム全体のスキル向上にもつながる大切な工程になります。
コードレビュープロセスを開始するには、まずコードのレビューを行う担当者を決定します。少人数のチームであれば、すべてのコードを確認するチームリードを選び、大規模なチームであれば、経験豊富な開発者が仕事量に応じて分担するのが得策です。
続いて、コードレビュー依頼を提出するためのタイムライン、ラウンド数、最小要件を検討します。
最後に、フィードバックの方法を確認します。コードの良い面を強調しながら、要改善点は代替案とともに提案するとスムーズです。
フィードバックは開発者が要点を理解し、必要に応じてディスカッションを行うことができるよう、建設的に作成します。
コードレビューに行き詰まり、プロセスが停滞してしまうのはよくあること。プロジェクト全体の効率が下がり、逆効果になってしまう可能性もあります。
コードレビューの重要性
重要な点として、コードレビューは「教科書」には載っていないプロセスです。プログラミング言語のニュアンスやプロジェクト管理については学校やオンラインコースなどで学ぶことができても、コードレビューは企業やプロジェクトが成熟するにつれて進化していくものです。
以下のような理由から、コードレビューは非常に重要です。
- コードにバグがないことを確認できる
- 問題が発生する可能性を最小限に抑えることができる
- 新たなコードがガイドラインに準拠しているかどうかを確認できる
- 新たなコードの効率を高めることができる
加えて、チーム全体の知識向上にもつながります。通常、上級開発者がコードのレビューを行うため、若手開発者はより経験値の高いメンバーからのフィードバックを活かし、自分のコードを改善することができます。
コードレビューの実施方法
コードをレビューするには、以下4つの方法があります。
Over-the-shoulder
Over-the-shoulder(日本語に訳すと「肩越し」)コードレビューは、経験豊富な開発者がコードを書いた開発者のワークステーションに立ち、つまりデスクに座る開発者の「肩越し」にコードを確認するという非公式とも言える方法で、会話を通じて指摘や提案を行います。日本では「Over-the-shoulder」という言葉は浸透していませんが、最も手軽なコードレビューで、事前に定義された構造を必要としません。
このようなレビューは、構造化した正式なコードレビュープロセスとともに、開発者間で個人的によく行われています。チームがリモートで働いている場合は、コラボレーションツールで画面を共有したりすることで実現できます。
パスアラウンド(回覧レビュー)
Over-the-shoulderは、新しく書いたコードをレビューする効率的な方法ですが、リモートでの共同作業においては、長年メールを通じてコードレビューを行うのが一般的でした。
パスアラウンドでは、通知を自動化するバージョン管理システムを通じて、変更点の差分を開発チーム全体にメールで共有します。このメールをベースに、他のチームメンバーがさらに変更の依頼や、ミスの指摘、説明の要求などを行います。
技術が今日のような進化を遂げる以前は、メールがオープンソース企業の主なコミュニケーション手段であり、公開メーリングリストを設け、コードに関するディスカッションやフィードバックを提供する媒体としても機能させていました。
メーリングリストは、コードレビューツールの登場以降、主に情報共有やディスカッションのために使用されています。
ペアプログラミング
ペアプログラミングも、長期的なコードレビューに分類されます。2名の開発者が1つのワークステーションに座り、一方が中心となってコードを書き、もう一方がリアルタイムにフィードバックを提供します。
新人開発者のトレーニングという意味では効果的な方法ですが、時間を要するという性質上、効率性に欠けることがあります。フィードバックを提供する開発者(レビュアー)は、その他の業務を行うことができません。
ツールによるレビュー
そして、コードレビューのプロセスを促進する専用ツールを導入する方法もあります。ツールには主に以下のような機能があります。
- 更新されたファイルを変更箇所で整理して表示
- レビュアーと開発者間の会話を促進
- 指標を使ってコードレビュープロセスの有効性を評価
最新ツールには、他にもさまざまな機能が組み込まれています。後ほど、おすすめのコードレビューツールを詳しく見ていきます。
コードレビューツールを導入する利点
コードレビュープロセスの目的は、効率性を上げることにあります。上で挙げたような方法も以前は効果的でしたが、最近では、コードレビューツールなしでは、業務効率化を上げることができません。コードレビュープロセスが自動化されることで、レビュアーがコードの確認だけに集中することができます。
コードレビューツールは開発サイクルに統合され、新たなコードがメインのコードベースにマージされる前にコードレビューを開始します。自社の技術スタックと互換性のあるものを選べば、ワークフローにシームレスに統合可能です。
例えば、コード管理にGit、継続的インテグレーションにTravisCIを使用している場合、開発プロセスに適合できるように、これらの技術をサポートするツールを選択してください。
ソフトウェア開発におけるコードテストには、動的と静的の2種類があります。
動的テストでは、コードが一連のルールに従っているかどうかをチェックし、単体テストを実行します(通常は事前に定義したスクリプトで実行)。静的テストは、現在のコードにマージする新たなコードを書いた直後に行います。
おすすめのコードレビューツール12選
それでは、以下おすすめのコードレビューツールをご紹介していきます。
1. Review Board
Review Boardは、ウェブベースでオープンソースのコードレビューツールです。ウェブサイトでデモを見るか、ソフトウェアをダウンロードしサーバーに設定して試すことができます。
Review Boardをサーバー上で実行するには、Pythontとそのインストーラー、データベースとしてMySQLまたはPostgreSQL、そしてウェブサーバーが必要になります。
Review BoardはGit、Mercurial、CVS、Subversion、Perforceといった様々なバージョン管理システムと連携可能です。また、スクリーンショットを直接保存するために、Amazon S3に接続することもできます。
要件に応じて、コミット前とコミット後の両方のコードレビューを行うことができます。バージョン管理システムを統合しない場合は、差分ファイルを使って、レビュー用のコードの変更をアップロードします。
コードの変更点を視覚的に比較したり、コードレビューだけでなく、ドキュメントレビューを実施したりできるのもReview Boardの特徴です。
Review Boardの最初のバージョンは、10年以上前にリリースされましたが、現在も積極的に開発が行われています。コミュニティも長年にわたって成長しており、使用中に何か問題が発生しても、リソースを見つけたりヘルプを求めたりすることができます。
コードレビュー用のシンプルなツールで、自社のサーバーでホスト可能です。公開サイトでコードをホストしたくないという場合には、ぜひ利用してみてください。
2. Crucible
Crucibleは、Atlassianによる共同コードレビューツールです。商用ツールで、コードをレビューしたり、変更計画について議論したり、バージョン管理システムのホスト間でバグを特定したりすることができます。
小規模チーム向けと企業向けの2つの料金プランがあります。前者は5ユーザーと無制限のリポジトリに対して10ドルの1回払い、後者は10ユーザーと無制限リポジトリで1100ドルから。
いずれのプランにも、クレジットカード不要の30日間の無料トライアルがあります。
Review Boardと同じように、SVN、Git、Mercurial、CVS、Perforceなど、多くのバージョン管理システムをサポート。コード上の全体的なコメントに加え、差分ビュー内でインラインコメントを書くこともできるため、何を指しているのかを正確に特定することができます。
Crucibleは、ConfluenceやBitBucketのようなアトラシアンのエンタープライズ製品とも互換性があります。特にJira、アトラシアンのIssue、Project Trackerと統合すると、大きな恩恵を受けることができます。マージしたコードに対してコミット前のレビューや監査を行うことができる優れたツールです。
3. GitHub
GitHubでクラウド上でGitリポジトリを管理している場合、フォークやプルリクエストを使ってコードレビューを行ったことがあるかもしれません(GitHubの概要、そしてGitとHubの違いはこちら)。
GitHubには、プルリクエストにコードレビューツールが組み込まれています。GitHubのコアサービスにバンドルされていて、開発者向けの無料プランがあります。無料プランはプライベートリポジトリのユーザー数が3名に制限されおり、有料プランは月額7ドルから利用可能です。
GitHubでは、コードリポジトリにアクセスできるレビュアーが、プルリクエストに自分自身を割り当て、レビューを完了させることができます。また、プルリクエストを送信し、管理者にレビューを依頼することも可能です。
プルリクエスト全体に関するディスカッションに加え、差分の分析、インラインコメント、変更履歴の確認も。コードレビューツールを使用して、ウェブインターフェース上で簡単なGitのコンフリクトを解決することもできます。マーケットプレイスを通じて追加のコードレビューツールと統合し、より堅牢なプロセスを構築することも可能です。
すでにGitHubを利用している場合は、インストールや設定を行う必要がないため、非常に便利な選択肢です。ただし注意点として、GitHubでホストしているGitリポジトリしか対応していません。ダウンロードしてサーバーでホスト可能なコードレビューツールをお探しの場合は、GitLabがおすすめです。
4. Axolo
Axoloには、コードレビューツールという印象はあまりありませんが、コミュニケーションに特化したソリューションで、GitHubやGitLabでのやり取りをすべてSlackに取り込むことができます。
コードレビューごとにSlackでチャンネルを作成し、関係者(コード作成者、担当者、レビュアー)のみを招待して、必要な通知(コードコメント、CI/CDなど)だけをエフェメラルメッセージで送信。ブランチのマージ後は、チャンネルをアーカイブします。
毎日のリマインダー、スタンドアップミーティング用のプルリクエストの再確認通知、コードレビュー専用の時間枠があれば、プルリクエストが古くなる前に、シームレスにコードをレビューすることができます。
5. Collaborator
SmartBear社によるCollaboratorは、ペアレビューおよびドキュメントレビューツールです。ソースコードレビューはもちろん、設計ドキュメントのレビューも可能です。5ユーザーまで利用できるパッケージは年間535ドル。ビジネス要件に応じて、無料トライアルもあります。
Subversion、Git、CVS、Mercurial、Perforce、TFSのような多数のバージョン管理システムをサポートしており、Jira、Eclipse、Visual Studioなどの主要なプロジェクト管理ツールやIDEとの統合も可能です。
また、コードレビュープロセスに関連する主要な指標のレポートや分析機能もあり、監査管理やバグ追跡にも役立ちます。技術スタックにエンタープライズソフトウェアが含まれ、コードレビュープロセスの設定にサポートが必要な場合は、Collaboratorが有力候補になるかもしれません。
6. CodeScene
CodeSceneは、従来の静的コードレビュー以上のことを実現できるツールです。コードベースの進化を分析するために、時間的な次元を含む行動コード分析を実行可能です。クラウドベースとオンプレミスソリューションの2種類があります。
クラウドベースのプランは、GitHubでホストする公開リポジトリに対しては無料で利用可能です。最大10のプライベートリポジトリと10ユーザーのプランは月額99ユーロ。オンプレミス版は、1ユーザーにつき月額15ユーロです。
CodeSceneでは、バージョン管理履歴を処理してコードを可視化することができます。また、機械学習アルゴリズムを利用し、コード内の社会的パターンや隠れたリスクを特定。
バージョン管理履歴を通して、チームメンバーのプロファイリングを行い、それぞれの知識ベースをマッピングし、チーム間の依存関係を作成することも可能です。また、開発が最も活発に行われているファイル(ホットスポット)を特定してくれます。このポットスポットは、重点的な対応が必要になる領域です。
一般的な会話型のコードレビューツールを超えるツールをお探しなら、まずはCodeSceneの無料トライアルを利用してみてください。CodeSceneの行動コード分析の背後にある基本的なロジックに関しては、CodeSceneの使用例と役割に関するホワイトペーパーをご覧ください。
7. Visual Expert
Visual Expertは、データベースコードに特化したコードレビュー用エンタープライズソリューションです。PowerBuilder、SQL Server、Oracle PL/SQLの3つのプラットフォームに対応しています。その他のDBMSを使用している場合は、他のツールを検討してください。
無料トライアルがありますが、料金の確認には見積もりの依頼が必要になります。
従来のコードレビューに加え、コードの各変更を分析し、変更によるパフォーマンスの問題を予測してくれます。また、コードからアプリケーションの完全なドキュメントも自動生成することができます。
PowerBuilder、SQL Server、またはOracle PL/SQLを使用していて、要件に特化したコードレビューツールをお探しの場合、Visual Expertの使用を検討してみてください(効率的なWordPressクエリの構築方法はこちら)。
8. Gerrit
Gerritは、無料かつオープンソースで、ウェブベースのGitリポジトリ向けコードレビューツールです。Javaで書かれているため、使用するにはソースコードをダウンロードし、Javaで実行する必要があります。スタンドアロン型のGerritをインストールする方法はこちらをご覧ください。
Gerritは、バグトラッカーとレビューツールの機能を組み合わせたソリューションで、レビュー中に変更点が統合された差分として整列され、コード1行ごとに会話を始めることができます。開発者と中央リポジトリの仲介役として機能し、さらに投票システムも組み込まれています。
Gerritをインストールして設定する知識があり、無料で使用できるツールをお探しなら、理想的なソリューションになります。
9. Rhodecode
Rhodecodeは、ウェブベースのコードレビューツールで、Mercurial、Git、Subversionの3つのバージョン管理システムをサポートしています。クラウド版は1ユーザーにつき月額8ドルからで、オンプレミス版は1ユーザーにつき年間75ドルです。Rhodecodeは企業向けのソフトウェアですが、オープンソースのコミュニティ版は、無料でダウンロードしてコンパイルすることができます。
Rhodecodeは、反復的な会話型のコードレビューを通じて共同作業を効率化し、コード品質を高めることができます。さらに安全な開発を考慮した権限管理レイヤーも組み込まれています。
また、視覚的な変更履歴は、複数のブランチにまたがるプロジェクトの履歴をナビゲートするのに有用です。ウェブインターフェースを通じてちょっとした変更を行うためのオンラインコードエディターも搭載されています。
既存のプロジェクトとシームレスに統合できるため、ウェブベースのコードレビューツールを求めている会社にぴったりです。コミュニティ版は、無料かつ信頼性の高いツールを探している開発者におすすめの選択肢です。
10. Veracode
Veracodeは、テストを自動化して開発を加速し、修正プロセスを統合して、プロジェクトの効率を高めるツールです。以下のコードレビューツール群が、システムの脆弱性を検出するセキュリティソリューションとして販売されています。
- 静的解析:コードのセキュリティ上の欠陥を特定して修正する
- ソフトウェア構成分析:コードの問題を修正・軽減するプロセスを管理する
コードレビューはソフトウェア構成分析の一部です。利用を開始する前に、Veracodeのデモを確認してみてください。料金の見積もり依頼はこちらから可能です。
11. Reviewable
Reviewableは、GitHubのプルリクエスト用コードレビューツールです。オープンソースリポジトリの場合は無料で、プライベートリポジトリの場合は10ユーザーで月額39ドルから。GitHubと統合されているため、GitHubアカウントでログインすればすぐに使用することができます。
Reviewableのデモ版はこちらで確認できます。
Reviewableの興味深い点として、GitHubのプルリクエスト機能におけるコードレビューのいくつかの欠点に対応しています。例えば、GitHubでは、コードの特定の行にコメントがある場合、その行に変更が加えられると、自動的に非表示になることがありますが、Reviewableでは非表示になることがありません。
また、ファイルの差分を表示する行数の制限が比較的小さいという点にも対処しています。
GitHubと連携可能なツールを探していて、プルリクエスト以上の機能が欲しいという場合には、Reviewableを利用してみる価値ありです。
12. Peer Review Plugin for Trac
Subversionを使用している場合は、無料でオープンソースのPeer Review Plugin for Tracでコードレビューを行うことができます。このプラグインは、Tracオープンソースプロジェクトに統合されており、開発プロジェクト向けのwikiと課題追跡システムをレビューと統合したエンドツーエンドのソリューションを提供してくれます。
変更点と会話を比較する基本的な機能は利用可能ですが、プラグインを利用することで、プロジェクト用にカスタマイズされたワークフローを設計することができます。
例えば、コードレビューにおける変更の提出や承認のようなトリガーに対して実行するタスクを設定可能です。また、プロジェクトに関する独自のレポートを作成することもできます。
ドキュメント用のwikiやプロジェクトのロードマップを管理するための課題追跡システムをお探しなら、このプラグインが良い選択肢になるはずです。
まとめ
コードレビューは、プロジェクトの効率を上げるのに重要な役割を果たします。そして適切なコードレビューツールを導入することで、開発サイクルの冗長性を取り除くことができます。
今回は、優れたコードレビューツールを厳選してご紹介しました。以下、最後におすすめツールを一言でまとめてみます。
- 小規模なチームでコードレビューを始めるなら─Review Board
- オープンソースのコードレビューツールなら─Gerrit、Peer Review for Trac、コミュニティ版のRhodocode
- サポート付きの使いやすいコードレビューツールなら─Rhodecode
- GitやGitHubでコードベースを管理しているなら─GitHubのコードレビューエディター
- プルリクエストの機能を拡張したいなら─Reviewable
- データベースのコード管理にOracle、SQL Server、またはPowerBuilderを使用しているなら─Visual Expert
- エンタープライズ向けのソリューションなら─AtlassianのCrucible、SmartBearのCollaborator、またはVeracode
- コードレビューだけでなくMLやAIで行動分析も行いたいなら─CodeScene
おすすめのコードレビューツールはありますか?以下のコメント欄でぜひお聞かせください。
おすすめの関連記事
コメントを残す