インタビュー
ピーター・マッキー、ソナーの開発者リレーションズ責任者 – インタビュー・シリーズ

ピーター・マッキーは、ソナーの開発者リレーションズ責任者です。ソナーは、悪いコードの問題に対処するためのプラットフォームです。ソナーは、開発者と組織が、きれいなコードの状態を達成することを支援します。ソナーの「きれいなコードとして書く」アプローチを適用することで、組織はリスクを最小限に抑え、技術的負債を削減し、ソフトウェアから予測可能かつ持続可能な方法で価値を生み出します。
コンピューター・サイエンスに最初に惹かれたのは何ですか?
私は子供の頃からコンピューターに興味がありました。別のキャリアパスを追求していたときでも、コンピューターとプログラミングに引き寄せられていました。ある時点で、父親がバージニアで鋼鉄会社を運営していましたが、コンサルタントグループを失いました。私は若い頃にプログラミングを学んでいたので、父親は私を雇用してシステムを構築するように頼みました。私は最初、100%理解していなかったですが、本を読んで仕事をしながら学び、完全に独学で習得しました。これが私のコンピューター・サイエンスへの興味をさらに高めました。
きれいなコードとは何ですか?それが重要な理由は何ですか?
「ソフトウェアは世界を食べる」という言葉が言われてきましたが、現在はその言葉が現実になったと言えるでしょう。すべての会社は基本的にソフトウェア会社です。よいソフトウェアの基盤は、高品質のコードです。コードはすべてのソフトウェアの核心であり、その動作とパフォーマンスを決定します。したがって、きれいなコード — 一貫性があり、意図的で、適応性があり、責任があります — が重要です。きれいなコードは理解しやすく、変更しやすく、実行時にスムーズに動作し、技術的負債がないため、目的を達成するために適しています。きれいなコードは、組織がソフトウェアを資産として持続的に保つために採用すべき標準です。
きれいなコードは、すべてのサイズと成熟度のチームや組織に利益をもたらします。ソフトウェアの価値も増加します。具体的な利益は以下のとおりです:
- 開発スキルの向上 — 開発者は、問題を検出して理解し、解決することができ、ベストプラクティスも学べます
- 効率性と生産性の向上 — 継続的な再作業と長いフィードバック・サイクルを削減し、生産性を高める
- 評判とビジネスリスクの軽減 — きれいなコードは、セキュリティリスクを軽減し、チームが問題を事前に解決できるようにします
- コードレベルの技術的負債の削減 — きれいなコードは、コードベースの負債を逐渐に解決し、大規模なアプリケーションのオーバーホールや中断を必要としません
- ソフトウェア開発の速度の向上 — きれいなコードの標準とストリームライン化されたフローは、DevOpsの速度を高め、市場への導入を迅速化します
コードの整合性と構造の重要性について説明してください。また、整合性ときれいなコードの例をいくつか示してください。
コードの品質の整合性は、すべてのマネージャーや技術ディレクターが維持しようとするものです。整合性は、コードの品質において非常に重要です。整合性は予測可能性につながります。コードは一貫した方法で書かれ、規則的なパターンに従います。整合性のあるコードは、フォーマットされ、規則的で、識別可能です。整合性のあるコード基準を採用すると、開発者は効率性を高め、速度と精度で期待を満たすことができます。
予期せぬ条件に対処するコードの重要性について説明してください。また、予期せぬ条件が発生する可能性についても説明してください。
開発者は、設計と開発のプロセスで予期せぬ事態に備えようとしますが、すべての事態を予測することは不可能です。予期せぬ状態は、意図しない誤用や意図的な攻撃によって発生する可能性があります。予期せぬ状態は、セキュリティ上の脆弱性をもたらす可能性があり、攻撃者がそれを利用する可能性があります。したがって、開発者はコードの品質と安定性を高めるよう努め、予期せぬ条件に対してテストする必要があります。ソナーの「きれいなコードとして書く」アプローチに従うと、チームは新しい機能を迅速に実装し、不要な再作業のコストを避け、才能の成長と維持を促進することができます。きれいなコードは、セキュリティ、メンテナンス、信頼性を促進し、開発者が予期せぬ状態に対してより効果的に対処し、ソフトウェアを迅速に復旧できるようにします。
コード生成におけるジェネレーティブAIの利点について説明してください。
ソフトウェア開発ライフサイクルにAIを組み込むと、開発者の効率性を高めることができます。実際、GitHubの研究によると、開発者はAIを使用するとタスクを50%以上短縮できます。ジェネレーティブAIはコードを迅速に生成でき、冗長なタスクを自動化し、開発者がより複雑な問題に集中できるようにします。ただし、生成されたコードがきれいなコードの基準を満たしていることを確認することは非常に重要です。
生成されたコードの潜在的な落とし穴とリスクについて説明してください。
AIは開発者の時間を解放し、生産性を高めることができますが、リスクも伴います。ジェネレーティブAIツールは迅速に大量のコードを生成できますが、エラーの可能性もあります。以下はいくつかの具体的な落とし穴です:
- 説明責任 — AI生成のコードでは、コードの作成者を特定することが困難になり、問題の解決が困難になる可能性があります
- 脆弱性 — クラウドソーシングされた情報を使用するため、生成されたコードが安全であることを保証することはできません。バグやセキュリティ上の問題が存在する可能性があり、ビジネスにリスクをもたらす可能性があります
- 品質 — AIは品質を二重に確認しないため、生成されたコードが効率的または高品質であることを保証することはできません
- コンテキストの喪失 — 人間の要素を失うと、問題やプロジェクトのコンテキストも失われます。AI生成のコードは、完全に機能することを確認するためにレビューする必要があります
開発者が「きれいなコードとして書く」アプローチを採用すると、コードが開発とプロダクションに適していることを保証できます。
生成されたコードの品質を確保するために考慮すべき他の要素について説明してください。
きれいなコードの原則に従ってコードを書く開発者は、コードが開発とプロダクションに適していることを自信を持って言えるでしょう。コードは、以下の特性を持っている必要があります:
- 一貫性 — コードは一貫性があり、共通のスタイルに従う必要があります。複数の開発者が異なる時点でコードに貢献した場合でも、コードは同じ外観を持ち、既定のパターンに従う必要があります
- 意図的 — コードは意図的で、注意とケアを持って書かれ、目的を明確に伝える必要があります。コードには、1つの解釈しか存在しません
- 適応性 — コードは適応性があり、管理と進化が容易なようにセグメント化および組織化する必要があります
- 責任 — コードとその開発者は、データと社会規範への影響について倫理的な義務を負う必要があります。コードは、第三者に危害を加えるリスクをもたらさないようにする必要があります
ソナーのさまざまな提供について説明してください。また、ソナーは開発者が責任ある、セキュアで、高品質のコードを迅速に構築するのをどのように支援するかについても説明してください。
ソナーの業界をリードするアナライザーは、包括的な方法でコードの問題を特定し、短いフィードバック・ループで修正を提案し、開発者を教育することで、組織が責任ある、セキュアで、高品質のコードを迅速に構築できるようにします。ソナーのソリューションの核心要素は、SonarLint、SonarQube(セルフマネージド、オープンソース)、およびSonarCloud(SaaS)です。これらは、30以上のプログラミング言語、フレームワーク、インフラストラクチャ、11のIDE、5,000以上のコードと言語固有のルールをサポートしています。
SonarLintは、IDEの拡張機能で、コードが書かれた瞬間から問題を検出する最初のラインのチェックを提供します。SonarQubeとSonarCloudは、コードベースを継続的に検査および分析する静的コード分析ツールです。SonarLintの統合により、コードが定義された品質、セキュリティ、信頼性の基準を満たしているかどうかを判断する品質ゲートを使用します。SonarQubeとSonarCloudは、バグ、脆弱性、セキュリティ・ホットスポット、コードの悪いにおいを検査します。
ソナーのソリューションセットを「きれいなコードとして書く」アプローチと組み合わせることで、開発者と組織はきれいなコードを提供し、既存のコードを自然に改善することができます。そうすることで、新しい革新的なプロジェクトに集中し、ビジネス価値を生み出すことができます。
ソナーはコードがコンプライアンス基準を満たしていることを保証する方法について説明してください。
ソナーは、開発者がコードベース内で問題が発生している場所に即時のフィードバックを提供し、問題が発生する理由と迅速に解決する方法についての明確な説明を提供します。ソナーは、IDEからCI/CDまでのワークフロー全体に教育を組み込んでいます。たとえば、ソナーには、MISRA C++ 2023ルールがSonarLintに用意されており、チームがMISRAに準拠したコードを作成するのを支援します。ソナーは、問題の理由と解決方法についてのガイダンスを提供し、コードがMISRAに準拠していることを保証します。
将来、AIがコーディングをどのように変えるかについてのあなたのビジョンを説明してください。
私は、AIが開発者のバーンアウトに対処することで大きな価値をもたらすと考えています。AIは、開発者がより効率的に作業できるように支援するでしょう。現在、AIの使用方法は、Googleでの検索と同じくらいシンプルで一般的になるでしょう。AIの使用方法についてはまだ多くのことが調査されなければなりませんが、AIの欠点をチェックするために人間の要素を最優先に考慮する必要があります。ソフトウェア開発には変革的な潜在性がありますが、特にデジタルビジネスが基盤となるソフトウェアに依存している現在、AIをチェックせずに走らせることはできません。
素晴らしいインタビュー、詳しく知りたい読者はソナーを訪けてください。












