1分で分かる!C++
~ ジャバード先生とことりん君が原っぱでのんびりおはなし ~
A:ジャバード先生ってさ、しっかりしているけど弟とか妹でもいるの??
B:うん。弟も妹もいるよー。
A:あ、やっぱりそうなんだ。兄弟ってやっぱり似てるの?
B:そうだねぇ。結構似てるかなぁ。でも、弟も妹も小さい頃からボクの真似をして育ったから、なんでも要領よくこなしちゃうんだよねぇ…。あ、そういえばプログラミング言語にも兄弟姉妹の関係があるんだけど知ってた?
A:えっ!!プログラミング言語も、恋愛して結婚して出産するの!?
B:あー!そういう意味じゃないよ!もちろん、プログラミング言語は恋愛も結婚も出産もしないけど、関係が深いプログラミング言語ってのがあるんだ!
A:なんだー!!びっくりしたよ!でも、具体的にはどういうこと??
B:そうだなー。一例をあげるとC++っていうプログラミング言語があるんだけど、C++のお兄さんはC言語ってプログラミング言語なんだ。C言語はこの前ことりん君にも教えたよね。
A:うん!C言語は教えてもらったよ!じゃあ、C言語とC++は似てるんだね?
B:そうなんだ。そして、ボクの弟や妹と同じように、C++はC言語よりできることがたくさんあるんだよ!
A:Cのパワーアップ版がC++ってこと??
B:そういうイメージだね。でも、使い方によっては、C++よりもC言語がいいこともあるんだよ!ちなみにプログラミング言語の人気ランキングでも1位はC言語だから覚えておいて!
A:キャー!ステキ!!さすがお兄ちゃん!
C++とは?C++の基礎知識
C++とは、C言語から派生したプログラミング言語です。「シープラスプラス」「シープラ」「シープラプラ」などと呼ばれることが多いです。(ちなみに筆者はシープラ派です。)
派生元であるC言語は、手続き型といわれるタイプのプログラミング言語です。(※手続き型がどういうものかはここでは覚えなくても問題ありません。)一方、今回のテーマであるC++は、手続き型のほかに、オブジェクト指向オブジェクト指向とは、開発者がプログラミングしやすいように予め定義したものになります。定義をすることで仕様変更などに対応しやすくなります。 例えば、ある2台の車を動かすプログラムがあるとします。 <オブジェクト指向がない場合> ・A車は、ボタンを押すと走って、離すと止まる。 ・B車は、ボタンを押すと走って、離すと止まる。 <オブジェクト指向がある場合> ・A車、B車という車がある。 ・車の動作は、ボタンを押すと走って、離すと止まる。 ここで、ボタンを2回連続で押すとドリフトするという仕様変更が入ったら、オブジェクト指向なしのプログラムは2か所変更する必要がありますね。 例は2台だったからよいものの、これが100台、1000台だったら、、、考えただけでぞっとしますね。 このようにオブジェクト指向だと修正が入ったときや、大人数で開発する際に便利です Moreなどといったようなプログラミングに関する概念をたくさん盛り込んでいます。もちろん、C言語が得意としているハードウェアの制御などについても、C++で問題なく実装することができます。
つまり、C++はハードウェア関連の制御から、アプリケーション開発に至るまで、広範囲に渡った開発を「なんでもできる」プログラミング言語なのです。
C++を使うエンジニア
C++も、C言語同様にハードウェアの制御が可能であるため、組み込みソフトウェアを開発する際に使用されます。また、処理も大変高速であるため、パフォーマンスに対する要求が高い基幹システムなどを開発する際に採用されることもあります。
C++エンジニアの特徴と在籍業界
C++エンジニアは、組み込みソフトウェア業界、企業の基幹業務を開発するSIerなどに多く存在します。一方、Webアプリケーションなどの開発に用いられることは少ないため、Web業界にはほとんどいません。
C++は習得が難しく、PHP、Python、RubyなどといったWeb系のプログラミング言語と比較すると、積極的に学ぶ人も多くはありません。そのため、どちらかというとベテランエンジニアが多いという傾向があります。
採用する時に知っておくとよいこと
C++のフレームワーク
C++の代表的なフレームワークをご紹介しておきます。特定のフレームワークでの開発経験があれば、プロジェクト参画時の立ち上がりもスムーズとなります。そのため、候補者に確認するようにしましょう。
TreeFrog Framework は、C++用のWebアプリケーション開発フレームワークです。高パフォーマンス、クロスプラットフォームなどの特徴を持っており、C++でWebアプリケーションを高速に開発することができます。
・Qt
Qt(キュート)は、GUI(グラフィカルユーザインタフェース)という画面を開発するためのフレームワークです。C++での画面を開発するのは、かなりハードルが高いのですが、Qtを用いることにより簡単に開発できるようになります。
*フレームワークとは、必要となる機能を簡単に開発できるようにまとめたプログラム群です。
求人のポイント
求人を作成する時は、下記の内容を求人に入れるとよいです。
1.システム(サービス)の詳細
※特にそのシステム(サービス)をなぜ作っているのかを熱量をもって記載する。
2.開発環境
3.現在のエンジニア組織の体制
4.現行システムの課題と募集の背景
5.求められる業務と期待値
6.エンジニアとしてのスキルアップ支援制度の有無と詳細
7.エンジニアチーム内での相互成長のための仕組み(勉強会やLT会など)の有無と詳細
8.選考フロー
9.待遇
10.キャリアパス
C++の豆知識
C++の弟や妹たち
C++はC言語から派生した言語ですが、C++もまた様々なプログラミング言語に影響を与えています。Java、Python、Ruby、Perlなどがその例です。また、Microsoft社が開発したプログラミング言語であるC#は、「Java」と「C++」を元に開発したプログラミング言語だと言われています。
C++で開発されたアプリケーション
C++で開発されたアプリケーションには、Google社のWebブラウザであるChromeや、ゲームエンジンとして高い評価を受けているUnreal Engineなどがあります。
どちらも高速性や処理の正確性が求められるアプリケーションであることからも、C++の重要性がお分かりいただけるかとお思います。