C++は世界で最も古くからあるオブジェクト指向のプログラミング言語の一つです。C言語との関連性から、公的機関の基幹システムや古くからあるデータベースのほとんどで利用されており、現在でも開発や発展は続いています。基幹システムを手がける大規模案件を手がけるエンジニアが抑えるべき言語の一つです。
C++でできることの前にC++とは何かを知ろう!
C++はシープラスプラスと読みます。この項ではC++の特徴についてここではご紹介します。
そもそもC++とは?
C++の前にはC言語がありました。現代まで実用が続いているプログラミング言語の中では最も古い言語の一つです。C++はC言語では対応できない規模のソフトウェアの開発をするための言語として開発されました。
開発自体は1979年に始まっており、1983年にC++という名称になります。その後1985年から現在に至るまで様々な分野で利用されています。現在最新のバージョンは2017年にリリースされたC++17です。
C++を使うメリット
C++を使うメリットはまずC言語との互換性があることです。C++自身がC言語から生まれているため、古くからC言語で運営されている公的機関や企業の基幹システムや各種データベースとは相性が非常によいです。
アップデートして機能を拡充したり、最近生まれた新たなシステムとの互換性をつけるためにはC++言語が最もコストがかかりません。
また基本的にはなんでもできる言語です。Webサイトやアプリケーションのような比較的最近生まれたコンピュータ分野のサービスでは優位性が低いのでそこまで積極的には使われませんが、80年代ごろからプロダクトが走っているゲームでは今でもC++は最もシェアのある言語です。とにかく古くから続いているサービスに優位性があります。
C++を使うデメリット
C++はC言語をもとに作られていますが、C言語は最も古いプログラミング言語の一つです。今のように簡単にプログラミング設計をできる時代ではなかった1970年代に開発されています。
つまり、パソコンを何で操作するかの概念が欠如しています。文法自体はシンプルなのですが、どうやってこれを動かすのかという前提が現代にそぐわないのです。そして、C言語の特徴を引き継いだC++も同じことが言えます。プログラミング言語の中ではハードルが高いです。
独学で身に付けるのは非常に時間がかかります。若い人の場合、時間をかけてC++を覚えるのであれば早く覚えられて案件数が多いPythonやRubyを選んだ方がいいと考える方も多いでしょう。
またC++はコンパイラを使わなければいけません。JavaのようにどんなプラットフォームでもOKというわけでもいかず、コンパイラで一旦翻訳するという工程が入ります。
C++でできる3つのこと
C++を活用して実際に活躍しているサービスにはどのようなものがあるのでしょうか。40年間に及ぶ事例はあまりに多いですが、ここでは最近走っている分野についてご紹介していきます。
できること1. OS開発
OSといえばPCを動かすためのシステムです。OSの基本的なシステムはC言語、C++で書かれている場合が非常に多いです。なぜかというとC++は基本中の基本であるためコンピューターと呼ばれる製品であれば大抵何にでも対応できるからです。
そして既存のOSをカスタマイズしたり、全く新しいOSを自作する際にもC++が使われます。なぜか。
新しいものを作るときは既存のプロダクトから流用できる部分をいただいてしまうのが一番早いからです。そういうわけでC++はOSを開発するには必須の言語です。なぜなら「多くのOSがC++で作られているから」というわけです。
できること2. Webアプリケーション開発
C++でwebアプリケーションの開発は可能です。しかしながら、C++でwebアプリケーションを開発されたという実例はあまり出てきません。少なくとも最近の事例はPythonやRuby on Rails、Javaなどの言語の方がメジャーです。
理由としてC++はコンパイルが必要なためです。プログラムをブラウザでそのまま走らせることができる最近のスクリプト言語に比べると手間がかかりますし、検証に時間がかかるというのがあります。
基幹システムのような大規模開発であればそれでもいいのですが、webアプリケーションは小規模なプロダクトが多いため安くて早いことにニーズが大きいです。そのためC++は分が悪い状況ではあります。
できること3. スマホアプリ開発
C++はDelphi/C++ builderというコンパイラを使用してiOS用のアプリを作ることが可能です。javaが非常に自由な条件でAndroidアプリを開発できるのに対して、iOS開発には制限がかなり多いです。
開発にはXcodeという開発環境が厳命されていますし、MACも必須です。
Apple社とのデベロッパー契約も必要です。
しかし、この辺りをクリアできればシェアが大きいiPhoneですので、C++でのiOSアプリ開発事業には期待できます。
C++を使用したアプリケーションを開発するには?
さて、それではC++を使用してiOSなどのアプリケーションを開発するにはどうすれば良いのでしょう。C++言語を即戦力として使いこなせる人材は比較的年齢層が高いです。
求人広告でC++エンジニアを募集する
C++言語は歴史が古い言語の割に未経験や初心者OKの求人が多いのが事実です。というのも若い人を募集しようと思うと多くのエンジニアが最近のwebサイトやwebアプリで使われることが多いpythonやRuby、Javaなどから入っており、C++は案件自体がなかったというケースが多いからです。
逆にC++の開発経験豊富な中高年のエンジニアはあまり求人市場にはおりてきませんし、いたとしてもiOSのような新しい分野の開発をするには感覚的に古いという場合があります。
ですので求人広告で募集する場合、C++の経験が浅くてもOKというような書き方をしている場合が多いのです。
人材紹介会社でC++エンジニアを紹介してもらう
人材紹介会社でC++エンジニアを紹介してもらう場合、プロジェクト管理者なら経験豊富な人材が見つけやすい可能性があります。
ただ、一般のエンジニアということになると、若くなれななるほどC++の経験が浅いエンジニアが増えます。ニーズにあった人材集めには苦労するかもしれません。
受託企業にC++開発を外注する
外部の受託会社にC++の開発を丸投げするという方法もあります。この方法であれば人を雇う必要はありませんし、何を作りたいかがはっきりしていれば手がかかりません。
ただし費用はかなり大きくなりますし、開発までに時間がかかる可能性があります。
クラウドソーシングでC++エンジニアとマッチングする
クラウドソーシングでフリーランスのC++エンジニアとマッチングするという方法もあります。年齢層が高いエンジニアは企業に管理者として残らずに、独立している場合も多いです。
彼らには案件ごとに開発を担当してもらえるので雇用ではありませんし、技術者と直接やり取りできることからコストも抑えられ、開発のスピード感も期待できます。