第1章: C++の世界へようこそ

C++プログラミングの全体像を掴む章へようこそ! 🎉 この章では、あなたがこれまでに培ってきたプログラミングの知識を土台に、C++ならではの特徴や文化に触れていきます。他の言語との違いを意識しながら、まずは「ソースコードを書き、コンパイルして実行する」というC++の基本的な開発フローを体験しましょう。

C++とは?

C++は、C言語を拡張して作られた、非常にパワフルで汎用性の高いプログラミング言語です。その歴史は古く、1983年にBjarne Stroustrupによって開発が始まりました。

特徴

他の言語と比較したC++の特徴は以下の通りです。

  • パフォーマンス 🚀: C++は、OSやハードウェアに近い低レベルな操作が可能で、実行速度が非常に高速です。このため、パフォーマンスが最重要視される場面で絶大な信頼を得ています。
  • 静的型付け: 変数の型はコンパイル時に決定されます。これにより、実行前に多くのエラーを発見でき、大規模な開発でもコードの安全性を保ちやすくなります。
  • マルチパラダイム: 手続き型プログラミング、オブジェクト指向プログラミング、ジェネリックプログラミングなど、様々なプログラミングスタイルをサポートしています。これにより、問題の性質に合わせて最適なアプローチを選択できます。
  • C言語との互換性: C言語のコードの多くは、ほとんどそのままC++のコードとしてコンパイルできます。C言語で書かれた膨大なソフトウェア資産を活用できるのは大きな利点です。

C++が使われる分野

その高いパフォーマンスと柔軟性から、C++は以下のような幅広い分野の第一線で活躍しています。

  • ゲーム開発: Unreal EngineやUnity(一部)など、多くの有名ゲームエンジンがC++で開発されています。キャラクターの物理演算やリアルタイムグラフィックス描画など、速度が求められる処理に不可欠です。
  • OS開発: Windows, macOS, Linuxといった主要なオペレーティングシステムのカーネルやシステムコンポーネントの多くがC++で記述されています。
  • 金融システム: 1ミリ秒を争う高頻度取引(HFT)システムなど、超低遅延が求められる金融アプリケーションで使用されています。
  • 組み込みシステム・IoT: 自動車のエンジン制御ユニット(ECU)や家電、産業用ロボットなど、リソースが限られた環境でも高速に動作する必要があります。

開発環境のセットアップ

C++プログラムを実行するには、コンパイラが必要です。コンパイラは、人間が書いたC++のソースコードを、コンピュータが理解できる機械語に翻訳するツールです。

このウェブサイト上ではブラウザ上でコードを編集し実行できる環境を提供しており、特別なセットアップは不要です。しかし、ローカル環境でC++を学びたい場合は、以下のようなコンパイラとIDE(統合開発環境)をインストールすることをお勧めします。

コンパイラとIDE

  • コンパイラ:
    • GCC (GNU Compiler Collection): Linuxで標準的に使われるコンパイラ。Windows (MinGW/MSYS2) やmacOSでも利用可能です。
    • Clang: AppleのXcodeで標準的に使われているコンパイラ。エラーメッセージが分かりやすいと評判です。
    • MSVC (Microsoft Visual C++): MicrosoftのVisual Studioに付属するコンパイラ。Windows開発の標準です。
  • IDE (統合開発環境) / エディタ:
    • Visual Studio (Windows): コンパイラ、エディタ、デバッガなど、C++開発に必要な全てが詰まった強力なIDEです。初心者には特におすすめです。
    • Visual Studio Code (Windows/macOS/Linux): 軽量なエディタですが、拡張機能を入れることで強力なC++開発環境を構築できます。

おすすめのセットアップ

  • Windows: Visual Studio Community をインストールするのが最も簡単です。インストーラーで「C++によるデスクトップ開発」ワークロードを選択すれば、必要なものがすべて揃います。
    • macOS: ターミナルで xcode-select --install を実行し、Xcode Command Line Tools をインストールします。これにはClangコンパイラが含まれます。エディタは Visual Studio Code がおすすめです。
    • Linux (Ubuntu/Debian系): ターミナルで sudo apt update && sudo apt install build-essential g++ を実行してGCCコンパイラをインストールします。エディタは Visual Studio Code がおすすめです。

最初のプログラム

環境が整ったら、さっそく定番の "Hello, World!" プログラムを作成し、C++開発の流れを掴みましょう。

main.cpp という名前でファイルを作成し、以下のコードを記述してください。

main.cpp

コンパイルと実行

このコードを実行するには、まずコンパイルして実行可能ファイルを生成する必要があります。ターミナル(Windowsの場合はコマンドプロンプトやPowerShell)で以下のコマンドを実行します。

# g++ (GCC) または clang++ (Clang) を使ってコンパイル # -o main は出力ファイル名を main にするという意味 g++ main.cpp -o main # 生成された実行可能ファイルを実行 ./main
# Visual C++ (MSVC) を使う場合 cl main.cpp /Fe:main.exe # 生成された実行可能ファイルを実行 main.exe

このウェブサイト上の実行環境で動かす場合は、以下の実行ボタンをクリックしてください。 実行すると、ターミナルに以下のように表示されるはずです。

PythonやJavaScriptのようなインタプリタ言語とは異なり、C++では「コンパイル」という一手間が必要です。このステップにより、実行前にコード全体がチェックされ、高速なネイティブコードが生成されます。

C++の基本構造

先ほどの "Hello, World!" プログラムには、C++の基本的な要素が詰まっています。一つずつ見ていきましょう。

`#include <iostream>` - ヘッダファイルのインクルード

#include は、他のファイルに書かれた機能を利用するためのプリプロセッサ命令です。ここでは、コンソールへの入出力機能を提供する iostream という標準ライブラリのヘッダファイルを読み込んでいます。これにより、std::cout などが使えるようになります。

  • < > で囲む: 標準ライブラリのヘッダファイルをインクルードする場合
  • " " で囲む: 自分で作成したヘッダファイルをインクルードする場合 (後の章で学びます)

`int main()` - main関数

main関数は、C++プログラムのエントリーポイント(実行開始点)です。OSはプログラムを実行するとき、まずこのmain関数を呼び出します。

  • int: main関数が整数 (integer) の値を返すことを示します。この戻り値はプログラムの終了ステータスとしてOSに渡され、0正常終了を意味するのが慣例です。
  • (): 関数が引数を取らないことを示しています。(引数を取ることも可能です)

`std::cout` と `std::endl` - 名前空間 (namespace)

  • std::cout: "character output stream" の略で、コンソールへの標準出力を担当します。
    • <<: ストリーム挿入演算子と呼ばれ、右側のデータを左側のストリーム(ここでは std::cout)に流し込むイメージです。
    • std::endl: "end line" の略で、改行を出力し、出力バッファをフラッシュ(強制的に出力)します。
    • std::: coutendlstd という名前空間 (namespace) に属していることを示します。名前空間は、大規模なプログラムで関数や変数の名前が衝突するのを防ぐための仕組みです。std はC++の標準ライブラリが定義されている名前空間です。

この章のまとめ

  • C++は、パフォーマンス多機能性を両立した強力なプログラミング言語です。
    • C++の開発フローは、「ソースコード作成 → コンパイル → 実行」が基本です。
    • すべてのC++プログラムは main 関数から実行が始まります。
    • #include で外部ライブラリの機能を読み込み、namespace で名前の衝突を避けます。

これであなたもC++プログラマの仲間入りです!次の章では、C++の根幹をなす型システムとメモリの仕組みについて学んでいきましょう。