C++

共有:

これらの質問は、3大主要プログラミング言語として C++ を選択した開発者にのみ提示されました。

どの C++ 標準を定期的に使用していますか?

8%

C++98 / C++03

31%

C++11

25%

C++14

41%

C++17

23%

C++20

14%

分からない

12%

C++98 / C++03

33%

C++11

24%

C++14

41%

C++17

23%

C++20

12%

分からない

9%

C++98 / C++03

31%

C++11

24%

C++14

45%

C++17

25%

C++20

12%

分からない

移行が安定して進められているのは素晴らしいことです。特に、ゲーム開発者が C++20 を受け入れていることを嬉しく思います。すべてのゲームプラットフォームをサポートできることを楽しみにしています。ベンダーにとっては実装が困難になるかもしれませんが、概念と範囲だけでも価値があると思います。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

C++20 の採用率には本当に驚かされました。物事は明らかに変化しているようです。新しい標準の採用速度は以前よりもはるかに大きくなっています。

Jason Turner

C++ トレーナー、講演者、著者YouTuber

大多数のユーザーが過去 5 年間のリリースを使用していることをとても嬉しく思っています。また、C++11 より前のリリースのユーザーが 10% 未満に減少したことも良い事です。後 2 年もすれば、こういったアンケートに含める必要もなくなるでしょう。

Titus Winters

Google 主任エンジニア

C++ 標準の移行

42%

いいえ。別の C++ 標準に移行する予定はない

15%

C++11 へ

11%

C++14 へ

18%

C++17 へ

16%

C++20 へ

45%

いいえ。別の C++ 標準に移行する予定はない

9%

C++14 へ

20%

C++17 へ

26%

C++20 へ

41%

いいえ。別の C++ 標準に移行する予定はない

30%

C++17 へ

29%

C++20 へ

47%

いいえ。別の C++ 標準に移行する予定はない

53%

C++20 へ

ユーザーは標準の履歴に沿ってまんべんなく散らばっていることを常に意識する必要があります。このようなアンケートは、最新の標準だけでなく、それ以外の標準でも動作するコードを書くべきことを思い出させてくれます。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

C++20 のトレーニングを依頼する企業はまだあまり多くないため、この結果には驚かされました。しかし、多くのユーザーは依然として C++17 に移行できることを幸運だと感じているようです。

Jason Turner

C++ トレーナー、講演者、著者YouTuber

あなたの現在のプロジェクトでは、今後 12 か月の間にいずれかの C++20 機能を使用する予定ですか?

48%

概念

43%

モジュール

32%

コルーチン

3%

その他

29%

なし

56%

概念

46%

モジュール

30%

コルーチン

2%

その他

28%

なし

53%

概念

53%

モジュール

42%

コルーチン

1%

その他

23%

なし

私は [Modules] 機能にはまだ追加の開発が必要だと感じていますが、それが間違っていることが証明されるのを期待しています。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

今後 12 か月の内にモジュールが使いやすくなるように、ツーリングが追い付けばいいなと思います。

Jason Turner

C++ トレーナー、講演者、著者YouTuber

どの IDE / エディターを C++ 開発に最もよく使用していますか?

28%

Visual Studio

28%

Visual Studio Code

24%

CLion

5%

Vi/Vim

3%

QtCreator

2%

Xcode

1%

Android Studio

23%

Visual Studio

33%

Visual Studio Code

25%

CLion

3%

Vi/Vim

3%

QtCreator

1%

Xcode

2%

Android Studio

43%

Visual Studio

17%

Visual Studio Code

18%

CLion

3%

Vi/Vim

2%

QtCreator

2%

Xcode

1%

Emacs

クロスプラットフォームと組み込み開発用の CLion、Visual Studio ユーザー向けの ReSharper C++、Unreal Engine と C++ ゲーム開発者向けの Rider など、JetBrains には C++ でのコーディングでありがちな典型的な落とし穴や頭の痛い問題を回避できる豊富な C++ IDE が揃っています。

どのユニットテストフレームワークを定期的に使用していますか?

35%

Google Test

26%

C++ のユニットテストは書いていない

17%

ユニットテストを書いているがフレームワークは使用していない

12%

Catch

9%

CppUnit

7%

Boost.Test

3%

CppUTest

3%

doctest

4%

その他

34%

Google Test

17%

C++ のユニットテストは書いていない

21%

ユニットテストを書いているがフレームワークは使用していない

14%

Catch

14%

CppUnit

7%

Boost.Test

5%

CppUTest

3%

doctest

4%

その他

21%

Google Test

27%

C++ のユニットテストは書いていない

21%

ユニットテストを書いているがフレームワークは使用していない

17%

Catch

11%

CppUnit

7%

Boost.Test

3%

CppUTest

4%

doctest

6%

その他

エンジニアはコードをテストするよりも書く方を好みますが、テストの作成に費やした時間は実際の長期的なメリットを上回る価値があります。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

4 分の 1 の開発者がユニットテストを書いていないという統計に驚きを隠せません。ユニットテストの書き方や使用するフレームワークについて特に強い意見を持っていませんが、テストを書く必要性は絶対にあります。

Titus Winters

Google 主任エンジニア

サードパーティの C++ ライブラリをどのように管理していますか?

25%

ライブラリのソースコードをビルドに組み込んでいる

24%

ライブラリを手順に従って別々にコンパイルしている

21%

システムパッケージマネージャーを使用している

18%

インターネットからビルド済みのライブラリをダウンロードしている

14%

上記のいずれにも該当しない。依存関係はない

8%

vcpkg

6%

Conan

6%

Nuget

1%

build2

1%

Hunter

5%

その他

28%

ライブラリのソースコードをビルドに組み込んでいる

26%

ライブラリを手順に従って別々にコンパイルしている

24%

システムパッケージマネージャーを使用している

21%

インターネットからビルド済みのライブラリをダウンロードしている

9%

上記のいずれにも該当しない。依存関係はない

4%

vcpkg

5%

Conan

7%

Nuget

1%

build2

7%

その他

34%

ライブラリのソースコードをビルドに組み込んでいる

25%

ライブラリを手順に従って別々にコンパイルしている

17%

システムパッケージマネージャーを使用している

27%

インターネットからビルド済みのライブラリをダウンロードしている

12%

上記のいずれにも該当しない。依存関係はない

8%

vcpkg

4%

Conan

7%

Nuget

2%

build2

5%

その他

この結果にはサードパーティが使用する C++ コードのパッケージ化についての現状が反映されています。この問題が解決されるのを待ち望んではいますが、私にはそうなるとは思えません。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

依存関係管理とパッケージ管理の現状を悲しく思っています。複製可能なビルドと明快な依存関係チェーンには非常に大きな価値があります。この領域には、「たまたま機能する」というのが非常に多くあります。

Titus Winters

Google 主任エンジニア

どのプロジェクトモデルまたはビルドシステムを定期的に使用していますか?

57%

CMake

33%

Makefile

33%

Visual Studio プロジェクト

11%

Ninja

9%

Gradle

7%

Xcode プロジェクト

6%

独自のビルドシステム

4%

Qmake

3%

Bazel

2%

Autotools

63%

CMake

43%

Makefile

29%

Visual Studio プロジェクト

15%

Ninja

12%

Gradle

4%

Xcode プロジェクト

4%

独自のビルドシステム

6%

Qmake

2%

Bazel

3%

Autotools

54%

CMake

33%

Makefile

49%

Visual Studio プロジェクト

8%

Ninja

10%

Gradle

9%

Xcode プロジェクト

8%

独自のビルドシステム

3%

Qmake

3%

Bazel

3%

Autotools

CMake を C++ エンジニアのストックホルム症候群に例えたことがあります。競合他社を明らかにリードしているのを見れば、CMake が良くも悪くも事実上の標準となっているのがわかります。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

どのコンパイラーを定期的に使用していますか?

67%

GCC

36%

Clang

32%

MSVC

12%

Clang-cl

11%

Intel

7%

マイクロコントローラー用のコンパイラー

6%

IntelLLVM

3%

カスタム

2%

その他

CLion では GCC ベース、Clang、MSVC、および IAR コンパイラーを使用できます。稀なケースや特定のケースでは、カスタムコンパイラー機能によって任意のコンパイラーを CLion で使用できます。

他にどのプログラミング言語を C++ と共にプロジェクトで使用していますか?

44%

Python

30%

C

19%

シェルスクリプト言語

15%

Java

12%

SQL

11%

JavaScript

11%

C#

9%

HTML / CSS

5%

アセンブリ

5%

Go

Python が AI と ML のプログラミング言語として広く普及しているわけですから、この結果に驚きはありません。NumPy や pandas などの品質ライブラリが存在するため、選択肢となるのは明らかでしょう。標準ライブラリに類似するものが求められているか、パッケージングの問題を解決する必要があるようです。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

あなたや所属チームがガイドラインの強制またはその他のコード品質 / 解析に使用しているツールはどれですか?

37%

使用中の IDE が提供するツール

24%

Clang-tidy

21%

ClangFormat

17%

Clang-analyzer / Clang Static Analyzer

10%

Cppcheck

7%

Cpplint

6%

SonarLint / SonarQube / SonarCloud

4%

Coverity

2%

PVS-Studio

2%

Parasoft C/C++test

30% の人だけが静的解析を避けているのであれば、オープンソースコードがますます安全でセキュアになると確信しています。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

あなたや所属チームはどのようにコード解析を実行していますか?

48%

必要なコンパイラーのチェックを有効にしてコンパイル時に実行している

26%

コード解析は CI/CD パイプラインに統合されている

24%

コード解析は実行していない

20%

動的解析を使用している

17%

開発者のマシンでサードパーティの静的コード解析ツールを実行している

1%

その他

C++ プロジェクトのビルド時間を最適化するために、どのツールまたは手法を使用していますか?

42%

ヘッダーのインクルードと依存関係の最適化

30%

プリコンパイル済みヘッダー

22%

ソースファイルのコンパイルの並列化

17%

コンパイラーのキャッシュ

15%

モジュール

12%

インクリメンタルリンク

5%

Unity ビルド

この場合は、小さい方が理想的です。来年あたりに、プリコンパイル済みのヘッダー、モジュール、Unity ビルドがどのように相互作用するようになるかに興味があります。

Guy Davidson

エンジニアリングプラクティス責任者、Creative Assembly

最後までご覧いただきありがとうございました!

レポートはお役に立ちましたか?
ぜひこのレポートを友人や同僚と共有してください。

ご質問やご提案がございましたら、surveys@jetbrains.comまでお問合わせください。