C++はたくさん勉強すればするほど高速なプログラムをより高い生産性で開発できるようになります。その全てを把握してなくても問題ありません。理解できた部分を使いこなせば良いのです。C++は普通に使っても高速ですし、その一部を使うだけでも随分生産性は上がります。2.主な対象読者C++の特長を活かすために、大きく貢献するC++の機能については難易度の高いことも含めて解説します。そのための最大の課題はメモリ操作周りですので、C++で取り扱うメモリについてはかなり丁寧に解説します。意外に種類が多いことにびっくりすると思います。できるだけ初心に返って初心者の方にも分かり易い解説を心がけますが限界はあると思います。プログラミング経験のある方でC++を学びたい人をメイン・ターゲットとさせて頂きます。パソコンを使い慣れていること、テキスト・エディタ(メモ帳でもOK)を使ってテキスト・ファイルを作成できること、コマンド・プロンプトの基本操作ができることは前提とさせて下さい。コメントでご質問やご意見頂ければできるだけ善処します。当講座固有ではなくC++一般の質問でしたら、teratailやstackoverflowで質問されても良いと思います。私自身はteratailに出没してますので可能な時はそちらでも回答致します。当サイトのコメント機能についてコメントは現在、承認制としています。スパム・コメントが多数入るためです。書き込み後、反映されるまでしばらくお待ち下さい。内容によっては公開しない場合があることをご了承下さい。14882にて標準規格として制定されています。X3014でも制定されてますが、新しい規格に追従していないようです。14882:2011)でコア言語仕様が大きく拡張され、その後2014年に制定されたC++14が2016年現在の最新です。C++14以降の変更は応用的な機能に関する変更がほとんどですので、当講座ではC++11を主な対象とします。(私自身が現在開発中のTheolizer®もC++11をターゲットにしているので、C++11に慣れていると言う事情もあります。)規格書そのものは有償でないと入手できませんが、C++11制定後の次のドラフトN3337が発行されています。これはC++11とほぼ同じであり、無償で入手できます。そこで、疑義がある場合はN3337を参照しつつ解説致します。ところで、本の虫の江添亮氏がC++11の言語仕様を解説されています。C++14で追加された言語仕様についても解説されています。規格書よりの正確な記述のため、ちょっと難しいですがリファレンスとしてたいへん有用です。私もありがたく参照させて頂いてます。遠いところからで申し訳ないのですが、ここからも感謝させて頂きます。筆者について高校生の頃に当時出始めたワンボード・マイコンH68/TRを購入し、アセンブラでこの世界にハマりました。当時はメモリが1KBytesくらい(メガではないです。キロです)しかなく、パソコンなんてありませんでした。あまりに楽しかったので情報工学系の大学に入りました。当時は人工知能全盛で、私もC言語で開発したオセロで卒論を書きました。最近、また人工知能の春が訪れているようで歴史は繰り返すことをシミジミと感じてます。あり得ないぞ」とか思っていたのは懐かしい思い出です。(笑)その後、幾つかの会社を経て電子部品メーカに入りファームウェア開発を長らく専門としてました。当初はアセンブラでしたが、複数のメーカのCPU向けにC言語で同じ機能のファームウェアを開発し、私としては初めてのマルチプラットフォームを成功できたのは嬉しかったです。並行して長らくWindowsバソコン側のプログラムを開発してましたが、ずっとベターCとしてC++を使っていました。2年前に独立起業してからはC++を精力的に勉強し今に至ってます。C++の深い部分の勘所を掴むのに1年くらいかかりました。Theolizer®はテンプレート・メタ・プログラミングをバリバリ使って開発してますので高速です。使用する開発ツール最後に当講座で使用する開発ツールについて説明します。C++を学ぶ時たくさんある開発ツールのどれを用いても良いのですが、当講座ではC++の特長を活かせるようにするために低レベルな部分も解説します。その時、多くの開発ツールに適合するような解説は現実的ではないため、開発ツールを限定致します。(使っている人が多いこと優先で選びました。)特殊な操作はしない予定ですので、ご自身がお使いの開発ツールで同様な操作をできるスキルをお持ちの方は、そのまま既にお使いのものを使って頂ければ十分です。CMakeこれは、当講座一押しの開発ツールです。講座の中でCMakeを使っていきますので、追々その便利さに気づいて頂けると思いますが、簡単にメリットを説明します。マルチプラットフォーム対応なプロジェクトを開発する時たいへん強力です。ビルド・プロジェクト設定ファイル(CMakeLists.txt)を書けば、基本的には多数のプラットフォーム用にビルド・プロジェクトを生成出来ます。これは一種のスクリプト・エンジンです。ビルド・プロジェクトのジェネレータだけでなくスクリプト・エンジン機能も内蔵していますので、これ1つで複数のプラットフォームに対応できます。スクリプト・エンジンはperl、pythonなど多数ありますが、多数の実装に分岐しているものもあり、どれを使うべきかの調査だけでも時間を要します。CMakeは分岐しておらず、最新版を使って於けば概ね間違いありません。(個人的に、これはたいへんありがたいと感じました。Studio向けのプロジェクトを手軽に生成できます。Studio上であっちクリックこっちクリックしなくて済み、設定し忘れも発生し難いです。サンプル・ソースにはCMake用の(最小限の)CMakeLists.txtを添付するように致します。そこで用いたCMakeLists.txtについても簡単な説明を行う予定です。CMakeは非常に強力で膨大なソフトウェアですので、その使い方解説を始めるとキリがありません。CMake専用で講座1つ開ける程のものです。当講座はC++用ですので詳しい解説は省略致します。CMakeは結構特殊な概念を含んでいます。Studioとそれ以外で全く異なるので解りにくいです。Studioが特殊なのですがシェアが大きいため無視できないことが原因と思います。この概念について解説しているサイトを見たことがありません。これについては当講座内で解説したいと思います。C++が最大でしょう。次にはlinux上でgccが多く使われています。そこで、この講座ではこの2大処理系を使って解説していきます。必要な方はお好みの方を選択下さい。次に、効率的なデバッグのためには統合開発環境(IDE)も使えた方が好ましいです。デバッグ時にブレーク停止やステップ実行、変数の値の観察ができるとデバッグが捗りますので。そこで、当講座でサンプル・プログラムの解説で用いる統合開発環境を選択しました。Studio一択ですが、gccは選択肢が多数ありどれを使うべきか悩ましく、本家stackoverflowのタグで調べてみました。そのタグが付けられた質問やそのタグのフォロワーが多い程メジャーと考えました。17(2016/12/22調べ。Studioも載せたのは参考のためです。StudioとNetBeansはC++専用ではないのでユーザ数が多いのだと思います。NetBeansは主にJava用のIDEです。JavaプログラマはC/C++プログラマよりかなり多いですし、この内C/C++で使っている人の割合も読めません。候補の1つとし他も検討します。CLion以下は質問もフォロワーも少なくシェアは低いので候補から外しました。CDTについて評判を調べてみました。CDTは使い勝手が酷いと言う評価が多く、またCMakeとの連携もやり難いようでしたので外しました。Code::Blocksが良いと評価している人をちらほら見かけました。NetBeansは起動が遅いようです。QtCreatorは以前使っていたのですがCMakeプロジェクトの生成手順が多く、CMakeとの連携は不便でした。(それ以外の部分は優れていると思います。Studio並に連携が便利そうですのでCode::Blocksを選択しました。結論:以上の検討の結果、当講座ではコンパイラ(処理系)と統合開発環境は下記を用いて解説します。Windows本体を除き、個人利用であれば全て無料で使えます。これら以外のものを使われても何ら問題はありません。gcc(*1)linux用に専用PCを用意しないで済むようVirtualBox上のubuntuを用います。ubuntuがインストールされたPCをお持ちの方はVirtualBoxを使う必要はありません。開発環境の準備についてそこそこ長い手順ですので別記事とします。必要な記事を参考にして下さい。Communityを準備するでは、次回をお楽しみに。06:00CodeLiteなんてのもなかなか良かったりする。確かにCodeLiteの良い評判もちょっと見かけました。CMakeとの相性はどうでしょう?IDEの数が多すぎて全部はお試しできなかったのですよ。21:07素晴らしいです。ありがとうございます。こんなに褒められるとちょっと気恥ずかしいものですね。C++は本当に良い言語と思いますので、お互い頑張りましょう。11:39良い記事をありがとうございます。いつもC++で分からないことがあれば参考にしています。これからも見に来るのでよろしくお願いします〜。11:59ありがとうございます!最近業務が忙しくて少し滞っていますが、近い内にCMake編を立ち上げますので、今後共よろしくです。コメントをキャンセルメールアドレスが公開されることはありません。テクノロジーの登録商標です。technology.。