主にPMとして管理業務を担当する、あきやまです。
人がいない時は、たまに開発もします。
最近、クレスコでSonarQubeを扱い始めたので、自己学習の目的も含めて紹介したいと思います。この記事では主に、SonarQubeを知らない方を対象に、SonarQubeがどういったソリューションで、どのように活用できるのかを紹介します。
特に管理者の目線で、自分の組織でもSonarQubeを活用できるかも、と興味をもって頂けたら幸いです。
目次
1. SonarQubeとは
2. SonarQubeが検出する問題
3. SonarQubeの活用
4. まとめ
1. SonarQubeとは
SonarQubeのサイトには、より良いソフトウェアをより早く構築し、コードの品質とセキュリティを継続的に向上させるのに役立つと書かれています。また、コードレビューの品質を向上させるための共通の基準や自動コード分析、管理チーム向けに設計されたガバナンス機能により、開発ワークフロー全体をカバーしている様です。
私自身はSonarQubeを、ソフトウェアの品質を保つためのツールだけではなく「コード品質を意識した開発組織を作れる」ソリューションでもあると解釈しています。
SonarQubeを活用することで、開発者や管理者個人にとどまらずプロジェクトに関わる全てのメンバーが、ソフトウェアの品質をリアルタイムに意識して改善に関われる環境を構築し、組織としてソフトウェアの信頼性・生産性の向上を実現することができると考えています。
類似のツールではユーザー数に依存するライセンス形態が多いですが、SonarQubeはユーザー数に依存しないライセンス形態となっています。この点からも、SonarQubeは個人ではなく、組織での利用を目的としていることが伺えます。
2. SonarQubeが検出する問題
SonarQubeのダッシュボード画面を見ると、以下の問題検出があります。
- セキュリティ、脆弱性の問題(Security)
脆弱性をついた悪意のある攻撃や、それに伴う情報の漏洩につながる恐れがあり、リリースまでに確実に対処する必要があります。 - リラビリティ、信頼性の問題(Reliability)
ソフトウェアが確実かつ適切に動作するために必要な処理が行われているかを検出します。例えば、エラーハンドリングやファイルの操作、複数スレッドでの処理が適切に行われているか、などを扱います。 - 保守性の問題(Maintainability)
継続してソフトウェアを更新/管理していくには、機能を実装するだけでなく、その実装の方法に注意を払う必要があります。これを疎かにすると、将来的に余計なコストが発生し、機能開発の速度が低下し、競争力の低下につながります。 - コードカバレッジの問題(Coverage)
昨今のソフトウェア開発では、アプリケーションの実装が正しく機能しているかをチェックする為の、テストコードを実装することが多くあります。この問題検出では、そのテストコードがアプリケーションを網羅的にチェックできているかを検出します。 - 重複コードの検出(Duplications)
重複コードは、ソフトウェアの理解を阻害し、保守性の問題と同様に、余計なコスト発生や開発速度の低下を招きます。また、機能追加やバグの修正時に、実装漏れや修正漏れを発生させる要因となります。 - セキュリティホットスポットの検出(Security Hotspots)
これは確実に脆弱性であるかは不明だが、脆弱性につながっている可能性がある、またはつながりやすい状況になっている箇所を問題として検出します。開発者や管理者は、この問題をチェックし、対応の要否を判断する必要があります。
- 拡大
- 図:ダッシュボード画面
これらの問題検出を軸として、ソフトウェアをクリーンな状態に保ちます。
SonarQubeは、内部的なテストや静的解析による品質向上の支援、AIによる迅速で効率的な修正支援などで、開発者にフィードバックします。コード作成の早い段階からスムーズな開発を支援することで、開発フェーズにおけるリスクを防ぐことができます。さらに、IDEやCI/CDと連携して、プルリクエストされたコードや開発ブランチ全体のコード品質管理を自動化します。効率的かつ厳格に品質を管理することで、問題を含んだソフトウェアが生産現場へ流出するリスクを防ぐことができます。
この他にも、管理者向けのポートフォリオ機能によるプロジェクトの健全性の把握や、AI生成されたコードの抽出など様々な機能で、SonarQubeはソフトウェア開発を支援します。
最新アップデートでは、KotlinへのSAST追加やRust、Java 22および23、PySparkのサポート拡充が行われています。注目すべきはAI CodeFixの導入で、コードの自動修正機能によって開発効率が向上し、コード品質とセキュリティが確保されています。また、Advanced Securityにより、SCAやSBOMを利用した高度なセキュリティチェックが可能となり、脆弱性やライセンスリスクの検出を支援しています。
*使用するエディションによっては、一部機能が使えませんのでご注意下さい。
*最新アップデートはSonarQubeの公式サイトを参照ください。
https://www.sonarsource.com/jp/products/sonarqube/whats-new/2025-3/
3. SonarQubeの活用
SonarQubeが検出する問題は、ほとんどのソフトウェア開発で意識されている内容だと思います。しかし、膨大なコードを網羅的に把握することは難しく、一見すると問題の無いコードと判断してしまい、リスクが見逃されることがあります。その結果、適切なワークフローに沿っているつもりでも、ソフトウェアのリリース後まで問題が発見されないことが多いのではないでしょうか。
リスクを正確に検知するにも、人手ではコストも時間もかかり、生産性を損なう結果になると想像できます。リスクや問題への対応は、開発ワークフローの後半になるほど、コストが膨れる傾向にあります。その為、開発の初期段階から統一したルールを定義し、迅速に問題を検出・対応していくことが重要と考えます。
SonarQubeを活用することで、早い段階で問題の検出、迅速な対応により、常にソフトウェアをクリーンな状態に保てます。その結果、リスクの低下や余計なコスト増加の防止、生産性の向上が見込めます。とはいえ、導入するにも準備が必要で、そんなに時間をかけていられない、といったこともあると思います。
ですが、SonarQubeには予め用意されたルールセットがあります。初期のルールセットでも高度な検出が可能で、誤検出も少ないと一般的に評されていますので、導入してすぐにこれらを活用することができます。また、必要に応じてカスタマイズやプラグインの導入ができるので、プロジェクトに合わせた拡張も可能です。
4. まとめ
問題の自動検出や、修正支援といった機能を持つツールは多くあり、私もプロジェクトで導入したことがあります。しかし、ルールの統一が難しく、結局は開発者次第になってしまうことが多くありました。また、開発者のコード作成のフェーズにしか適用できないものが多く、人手でレビューする為、リスクを見逃してしまうこともあります。
昨今はAI技術の発展著しく、今後AI活用が加速していくと、人手でレビューするリスクはさらに高まっていくと予想できます。その為にも、ルールベースでチェックを行えることは非常に重要な要素と考えます。
管理者の立場からみても、統一されたルールやレビュー支援はとても魅力的で、個人ではなくプロジェクトの生産性を上げる点が重要視されていることが見て取れます。
また、プロジェクトの知識量に左右されない環境を構築できる為、人員リソースの増減に柔軟に対応できるとも感じました。
SonarQubeを活用することは、単純な生産性の向上だけでなく、将来的な機能拡張も容易にし、イノベーションの加速に繋がると考えます。新規のプロジェクトへの導入はもちろんですが、既に本番稼働しているプロジェクトに導入することで、潜在的なリスク解消や保守性の向上により、将来的な生産性の向上を見込めると思います。
SonarQubeをご自身の組織でも活用できるかも、と気になった方はぜひSonarQubeの公式サイトをチェックしてみてください。
https://www.sonarsource.com/jp/products/sonarqube/
また、2025年6月25日、26日に行われるAWS Summit Japanの弊社展示の中でSonarQubeを紹介しております。
ご興味ある方は、ぜひご来場下さい。
「AWS Summit Japan 2025」に出展・講演いたします | ニュース | 株式会社クレスコ
皆さんの業務ができるだけ楽になる(かつ生産性もあがる)ことを祈っております。