Qodana はすべての開発者が経験に関係なく可能な限り最高水準のコードを記述するのに役立っていると感じています。Qodana のおかげでジュニア開発者はシニアレベルのコードを書けていますし、シニア開発者はそのレベルに期待されるコード品質を維持できています。各種のインスペクションが提供されているため、Qodana が自社製品のコード品質標準を維持するのに役立つだけでなく、開発者のコーチとして機能することも期待しています。
— Daniel Larson、Zynex Monitoring Solutions ソフトウェアアーキテクト
私は主に Microsoft サーバーと .NET を使用して約 25 年間ソフトウェア開発者を務めてきました。チームメンバーとして約 10 年ほど Azure でソフトウェアを開発してきましたが、拡張性とグローバル展開を重視してオンプレミスデプロイからクラウドに移行しました。
Zynex Monitoring Solutions では非侵襲的に患者をモニタリングする医用デバイスを開発しています。クラウドチームが自社のデバイスをケアプロバイダーとヘルスシステムに連携する相互運用性プラットフォームを開発しています。
クラウドファーストの相互運用性プラットフォームは当社のソフトウェアとヘルスケア団体にまったく新しい可能性の世界を切り開いています。プライベートデータセンターを使用する古いエンタープライズソフトウェアの運用方式に比べると、より多くの顧客と連携し、システムを迅速にスケーリングし、顧客のニーズに応じたカスタムサービスを素早く提供することができます。
Zynex Monitoring Solutions クラウドサービスについては Linux コンテナー上で動作する .NET を使用しており、ほぼ C# で書かれています。最新の本番バージョンの .NET を使用しており、ほとんどのサービスで .NET 7 を使用しています。.NET 8 の使用も始めています。
開発は Visual Studio と ReSharper の組み合わせを使用して行われていますが、中には Rider IDE を使用している開発者もいます。継続的インテグレーション(CI)とデプロイの実行には主に GitHub Actions を使っており、クラウドインフラストラクチャにデプロイしています。
本番ワークロードでは Kubernetes 上で動作する最新のクラウドスタックを使ってアプリケーションとサービスをホストし、データストレージ用の NoSQL とクラウドネイティブのメッセージングを組み合わせています。当社はデータサイエンスや人口知能(AI)など、自社のニーズを解決できる新しいクラウドテクノロジーを常に探しています。
開発者チームの全員が提案やリファクタリングでコーディングを支援する JetBrains ReSharper のファンです。そのコード解析は潜在的なコード品質の問題を検出するのに役立っています。そのため、コード解析ツールを探した際に JetBrains がコード解析ツールを制作していることを知ったとき、それはコード解析を単純化し、コードの品質を改善し、その上開発者が楽しく使用できるツールになるだろうと思ったのです。
我々は JetBrains のツールを使えば苦労せず作業できるようになることを理解していますし、Qodana でもそうであることが証明されました。今ではすべての .NET アプリケーションに Qodana を使用しています。
非常に簡単でした。Qodana Cloud ウェブアプリのおかげで簡単に GitHub ワークフローに追加できました。リポジトリを作成するときに Qodana を導入し、すぐにすべての問題を解決してゼロトレランスポリシーを設定するように運用を切り替えることで、非常にクリーンなコードを維持できるようになりました。
通常は Qodana を使って GitHub Actions ワークフローのコードベースを検証した後に Qodana が検出した問題を ReSharper か JetBrains Rider で解決しています。現時点では Qodana レポートを IDE で直接調査できるようになる Qodana IDE 統合機能は使用していません。Qodana インスペクションの機能が ReSharper と JetBrains Rider で提供されているものと同じであり、それらでコードの問題を素早く検索して解決できるからです。
Sonarqube と Qodana を併用しています。Sonarqube は既知の脆弱性をスキャンしてコードの複雑度を追跡するのに非常に最適です。ビルドワークフローに非常に追加しやすく、チーム全体で確実に高品質なコードを得られるためです。Qodana により多くの機能が追加されるのに合わせて自社のコード解析ツールセットを単純化していきたいと思っています。
当社にはジュニアレベル、ミドルレベル、およびシニアレベルの開発者が混在していますが、開発者全員に同じプロのコーディング標準を守らせています。Qodana はすべての開発者が経験に関係なく可能な限り最高水準のコードを記述するのに役立っていると感じています。Qodana のおかげでジュニア開発者はシニアレベルのコードを書けていますし、シニア開発者はそのレベルに期待されるコード品質を維持できています。各種のインスペクションが提供されているため、Qodana が自社製品のコード品質標準を維持するのに役立つだけでなく、開発者のコーチとして機能することも期待しています。
Qodana は新しいプロジェクトで使用し始めるのが最適です。あらゆる違反によってビルドが阻止され、開発者にコードをクリーンアップするチャンスを与えられるよう、最も厳しいコード解析ルールを使用すること、GitHub に統合すること、失敗しきい値を `0` にすることをお勧めします。また、JetBrains.Annotations を使ったコードアノテーションの重要性についても強調しておきたいと思います。このアノテーションにより、公開ライブラリを作成する際にコードの意図を他の開発者に示し、ReSharper、JetBrains Rider、Qodana などのツールでより関連性の高いコード解析を実行できるためです。