VC++ことVisual C++とC++の違いは何か、と言われると意外に答えられない人は多いものです。
もちろん、実際に使っている方はご存じでしょうが、そうでない方には非常に勘違いしやすいネーミングです。
ですので、「これからC++を勉強しよう」と思っている方がVC++の説明書を買ってしまうということもあり得ます。
そこでVC++とC++の違いを説明し、それぞれの特徴やメリットについても解説しましょう。
この2つの違いは非常に重要であり、これからIT技術者を目指す方にとっては必須とも言える知識でもあるからです。
※この記事は2023年4月25日に公開されたものを、一部更新しています。
VC++とは
VC++はプログラム言語ではありません。Microsoft社が発売している「Visual Studio」というパッケージを買うと同梱されているプログラム言語C++の開発環境一式のことです。
-
Microsoft社が発売している「Visual Studio」というパッケージを買うと同梱されているプログラム言語C++の開発環境一式のこと
プログラムを作る、という作業には大きく分けて3つの物が必要です。
まずソースコードを入力するエディターが必要です。これが無いとプログラムを作ろうにも作れません。しかし、これはテキストでもOKですので、それほど困りません。
次にプログラムを作っていると必ず「良く出て来る処理」というのが出てきます。一例を上げますと「ソート」という並び替え作業があります。
もし、あなたが「適当に並べられた10個の整数を昇順(小さい順)にプログラムで並び替えてみろ」と言われた場合、どうしますか?これは案外に難しいのです。
しかし仕事としてプログラムを作る場合、こういった「良く出て来る処理」を毎回、1から作っていたら効率が悪すぎます。ですので、「昇順に並び替えてくれるプログラム部品」を使うのです。その方が確実で早いからです。
つまり、このようなプログラム部品も必要になってきます。またプログラムを実際に動かすには事前に「コンパイル」という作業が必要です。
プログラムを実行するCPUというコンピュターの中枢頭脳は「2進数の命令」(これを機械語と言います)しか受け付けません。ですので、作ったプログラムを「CPUが受け付けてくれる2進数の命令」に置換する必要があるのですが、これがコンパイルという作業です。
そして、このコンパイルをしてくれるのが「コンパイラ」です。つまりコンパイラが無いと、いくらプログラムを作っても実際に動かすことができないのです。
- エディター(テキストでも可)
- 昇順に並び替えてくれるプログラム部品
- コンパイラ
このようにプログラム言語C++を使ってプログラムを作って動かすには最低でも「エディター」、「各種プログラム部品」、「コンパイラ」が必要になるのです。そして、これらを提供してくれるのが「開発環境一式」なのです。
VC++はWindowsを使っている人向けの「開発環境一式」ですが、実際に作ったプログラムは、Windowsは当然ながら、iOS、Android、webアプリケーションやクラウドサービスに使うことも可能なので、Windowsパソコンで開発を行う場合には、欠かせないもの、と言ってよいでしょう。
なお、コンパイルして出来た物を「実行モジュール」、「ネイティブコード」と呼びますが、要は「実際に動くもの」です。
そして大規模プロジェクトでは非常に沢山のプログラマーが役割分担をしてプログラムを作っていますので、出来上がった「沢山の実行モジュール」を定められた順番に接続して全体として「一本の大きなプログラム」を作る、というケースもあり、この接続作業を「デプロイ」と呼びます。
-
出来上がった「沢山の実行モジュール」を定められた順番に接続して全体として「一本の大きなプログラム」を作る接続作業
ですが、それはプロジェクトの中に「デプロイ担当」というのがおり、その人が行うものなので、ここでは「そんなこともある」という程度に覚えて置いて下さい。
プログラマーを目指すならば、まずはコンパイルまで、出来れば良いのです。
「Visual Studio」のパッケージの中身とは?
Visual Studioを買ってくるとVC++の中には以下の3つが入っています。
- 標準C++(コンパイラ)
- C++/CX(コンパイラ)
- ライブラリ(各種プログラム部品を格納している場所)
標準C++とC++/CXの2つは先に申し上げたコンパイラです。つまりVisual Studioには2種類のコンパイラが入っているのです。
標準C++というのは最も標準的なC++のプログラム言語で、C++のプログラムソースを書いて、標準C++のコンパイラをかければ実行可能なプログラムが出来上がる訳です。
もう1つのC++/CXというのは、やはりC++のプログラム言語ですが標準C++にWindows ストアアプリケーションというWindows専用の機能を追加したものです。
ですので、最初は標準C++から始められたほうが良いでしょう。
ライブラリとは先に申し上げた「良く出て来る処理」を集めた場所のことです。例えば「Hello World!」と言う文字を画面に表示させるだけでもプログラム部品が必要となりますので絶対に必要なものとなります。
C++とVC++の違い
ここまでご説明すればC++とVC++の違いはお分かりかと思います。
C++というのはプログラム言語であり、VC++というのはMicrosoft社が発売している「プログラムを作るのに必要な環境一式」のことなのです。
C++とVC++の違い | |
---|---|
C++ | プログラム言語 |
VC++ | Microsoft社が発売している「プログラムを作るのに必要な環境一式」 |
この「プログラムを作るのに必要な環境一式」のことを英語ではIntegrated Development Environmentと呼び、イニシャルを取ってIDEと読んでいます。このIDEという呼び方は良く使われるので覚えて置くと理解が早くなります。
また「標準C++」「C++/CX」という2種類のC++が入っていることからC++にも色々な種類があるらしいこともお分かり頂けるかと思います。
C++というプログラム言語は、1972年に発表された「C言語」という汎用的なプログラム言語が元になっており「C言語」に色々な機能を追加したものなのです。C言語に機能を追加した、と言う意味でC++と名づけられている訳です。
C言語は色々なシステム構築が可能な数少ない汎用的な言語なので、色々な分野のシステムに使われることになりました。その結果、C++には「各分野のシステム開発に便利な機能」が追加された様々な種類があるのです。
VC++の中には「最も標準的なC++である「標準C++」と発売元のMicrosoft社の代表的なOSである「Windows用の機能を追加した「C++/CX」という2種類のC++が入っているのです。
VC++の特徴
VC++は発売元がwindowsの開発元であるMicrosoft社であることからも分ると思いますがWindows向けのシステム開発を行うのに、最も適したIDEである、と言えます。
VC++にはコードエディタというプログラムを入力する画面、そしてコンパイラが入っています。これで、プログラムを作って動かすことができるようになります。
そしてプログラムが動いている時に「本当に設計した通りに動いているか」を確認するためのデバッガーも入っています。デバッガーを通してプログラムを動かすとプログラムを1行づつ実行させることができ、途中でストップさせることも出来ます。
そして、その時の実行結果の内容も確認できるのです。プログラムを作ったら、必ずバグがないかを確認しますが、この作業をデバッグと言います。
-
バグがないかを確認する作業
そしてデバッガーはその作業を簡単にできるようにしてくれる、とても便利な機能なのです。
またWindows用に便利な機能を集めたMFC(Microsoft Foundation Class)というライブラリも入っていますのでWindows向けのシステムを作る時にVC++は最も最適な製品と言えるのです。
またVC++は、いわゆる「低水準システム」にも対応しています。「低水準システム」の低水準は一般的な意味としては「レベルが低い」という意味ですがIT業界における「低水準」とは「限りなく機械語に近い」という意味になります。
つまりIT業界では低水準とは「ハードウェアの知識も要求される制御系システム」のことを意味しているのです。業務システムに使うC++は中水準、ベーシック言語は高水準です。この呼び方は社会一般で使われる「水準」の意味と真逆なので注意が必要です。
C言語を「汎用的な言語」と書きましたが、この汎用的な、と言う意味は制御系でも使える、業務系でも使える、インターネットアプリにも使える、という意味なのです。これからC++を習得されようと言う方は現段階では「覚えて置くだけ」で良い内容ですが、制御系では「アセンブラ言語」という限りなく機械語に近い言語が開発に使われることが良くあります。
そしてVC++では「インラインアセンブラ」といってC++で作りながら、部分的にアセンブラ言語を入れることも出来るのです。また外部にある機械と直接に信号のやり取りをするデバイスドライバーというプログラムを作ることも可能です。
デバイスドライバーというプログラムは制御対象となる機械と信号の送受信を行い命令を出したり機械からの情報を受け取ったりするプログラムで制御系では最も重要な役割を担うプログラムですが、それも作ることが出来てしまう、というのがVC++の凄いところです。
VC++のメリット
グラフィカルな開発環境
VC++は実際に使って見ると分かりますが、非常にグラフィカルな画面になっており使いやすく、分かりやすいものになっています。
ですので、初心の方でも扱いやすく、環境も整備されているので簡単にプログラムを作れるようになっているのです。
例えばコンパイルをかけてエラーが発生した場合でも、どこが問題なのか、をグラフィカルに示してくれるので、直すべき場所を発見しやすいのです。
プログラムを覚え、段々と高度なプログラムになればなるほどプログラムの行数は増えていきます。1000行や2000行は当たり前となってくるのです。
そのプログラムでコンパイルエラーが出た場合、問題の場所を見つけるのは「それだけで時間がかかっていた」のです。
いかにVC++のグラフィカルな表現機能が優れているかを示す一例です。
ネイティブプログラミングができる
先に「コンパイルして出来た物を「実行モジュール」、「ネイティブコード」と呼ぶ」と書きましたが厳密には実行モジュールとネィテイブコードは似て非なるものです。
実行モジュールというのは実際に動作するもの全般を意味します。
一方、ネイティブコードというのは、その中でも「無駄な部分をカットして最小限にされたもの」を意味しているのです。
実行モジュール | 実際に動作するもの全般 |
ネイティブコード | 無駄な部分をカットして最小限にされたもの |
プログラムというのは実行前はディスク上にありますが、呼び出されるとRAMと呼ばれるメモリー上に読み込まれてから実行されます。
つまり小さければ小さいほど使うメモリーが少なく済むので動作を高速にすることが出来るのです。
よくパソコンで何かをしている時に「遅いなぁ」と感じる場合がありますが、呼びだしたプログラムをメモリー上に読み込むのに時間がかかっているということも多いのです
VC++にはランタイムという「無駄な部分を自動的にカットしてくれる機能」があるので、それをかければ「最小化」をしてくれる、という素晴らしい機能が搭載されているのです。
また制御系では最終的にはプログラムをROMと呼ばれるICの中に入れて動かします。しかしROMの容量には限界があるので「少しでもプログラムは小さくする」必要があるのです。
よく「容量オーバー」となりプログラマーが総出動して無駄な部分を探す、というハプニングが以前はありましたが、現在では昔話になりました。
ROMの進歩で容量が大きくなったこともありますが、VC++のランタイム機能による「ネイティブコード化」も大きな貢献を果たしてくれているのです。
VC++は有料?
このようにプログラム言語C++を使うのに非常に便利な環境を提供してくれるVC++ですがお値段はいくらか、と言う点も気になる所です。
VC++は価格という面から見ると3種類に分けることが出来ます。
Visual Studio Community
Communityは個人の学習や開発のために提供されているもので無償、つまりタダです。
あくまで個人の学習という目的のためのものですので一部の機能は制限を受けており使えませんが学習をするには十分なものです。
もし制限を受けている機能を使ってみたいという場合には拡張することが出来、必要な機能のみ追加可能です。但しCommunityの使用は30日間だけ、となっています。
しかしMicrosoft社のアカウントを持っていると30日後でも使用できますので詳細はMicrosoft社のHPを参照して下さい。
Communityは企業や団体でも使用できますが条件が付けられています。それも詳細はMicrosoft社のHPを参照して下さい。
Visual Studio Professional
Professionalは有料になります。
こちらは業務として行う開発作業を使われることを前提としていますので、各種のプロジェクト管理ツールや共同作業を行う上で便利な機能なども搭載されています。
Visual Studio Enterprise
Enterpriseも有料です。
こちらも開発業務に使われることを前提としたものですがProfessionalにテスト作業の計画や実行、監視などを自動化できる機能が追加されており、より高機能になっているものです。
VC++のダウンロード・インストール方法
まずMicrosoft社の公式サイトにあるVisual Studioのダウンロード画面にアクセスします。
こちらの画面から「コミュニテイ」「Professional」「Enterprise」の3つが選択できます。
これからC++を覚えようと言うのであれば、「コミュニティ」を選択して下さい。
すると次の画面で「Visual Studio IDE 入門」というのが表示されますので、それをクリックすればダウンロードが始まりインストール可能な状態になります。
もしC++の中でも「特に**について詳しく知りたい」と言う場合には、追加でカスタマイズ用のオプション機能も、この画面からダウンロードできますので欲しい機能を選択し追加でダウンロードしてインストールすれば使用可能となります。
VC++のアプリ開発の流れ
VC++を使ってC++のアプリプログラムを作る過程をご紹介しましょう。
-
STEP1
-
STEP2
-
STEP3
-
STEP4
-
STEP4
-
STEP4
プロジェクトの作成
まず、VC++では「プロジェクト」という名称でフォルダのような物を作成します。
Windowsでも目的別にデータを集めておきたい場合は、それぞれのフォルダを作成して分けておきますが、同じイメージです。
次に「ファイル」を開き、「新規作成」をクリックし「プロジェクト」(先に作ったもの)を選び「Visual C++」を選択するとアプリ開発が開始できるようになります。
画面デザインの作成
次はアプリ画面のデザインです。
フォームデザイナーという画面デザインツールがありますので、それを使えばメニュー・ボタンなど画面に必要なパーツ(部品)を簡単に設置できます。
プログラミング
次はいよいよプログラミングです。
コードエディターというプログラム入力用の画面がありますので、それを使いC++のプログラムを作っていきます。
コンパイラでコンパイル
プログラムを書いたらコンパイラでコンパイルをかけます。この作業を「ビルド」とも呼びますので覚えて置いて下さい。
もしプログラムに何等かの間違いがあった場合にはコンパイラがエラーで終了しますので、どこがエラーになったのかを確認しプログラムを修正してから再度、コンパイルをかけて下さい。
アプリを動かしてみる
コンパイラが正常終了したら実行可能なモジュールが作成されています。
そのモジュールを呼び出せば動き始めますので動作を確認して下さい。
デバッグ
実際に動かしてみて間違いや動きがおかしいところがあればデバッグをします。
VC++にはデバッガーというプログラムを1行づつ実行させてみたり、止めたいところでストップさせることが出来る便利な機能が搭載されていますので、それを使ってプログラムの動きを確認しましょう。
直したいところを見つけたら、再度、コードエディターを使いプログラムを修正してコンパイルをかけます。
つまりプログラミング→コンパイル→動かしてみる→デバッグという流れを繰り返して最後に問題が無ければ完成ということになるのです。
VC++の将来性
Visual Studioはおよそ2年ごとに新しいバージョンがリリースされています。つまり継続的な需要がある、ということです。
この状況は当分、続くものと考えられますのでVC++の将来性は十分にあるといって良いでしょう。またVC++で覚えたノウハウはVC++以外の開発作業でも「同じように行われている」ものですので、VC++での作業経験は決して無駄にはなりません。
またC++は1972年に発表された「C言語」という汎用的なプログラム言語が元になっていることを御説明致しましたが、C言語が発表されてから既に50年という月日が経っているのです。
にも拘わらず現在でも「C言語の発展版」であるC++が使用されています。これほど長い間、使用され続けている言語というのは他にはありません。いかにC言語というプログラム言語が優れているかの証明でもあります。
まだまだ「あらたな発展版」は出て来るでしょうが、C言語、そのものは今後も使われ続けるでしょう。
なんといっても「C言語に取って変われる言語が無い」のですから。
C言語の習得は他の言語より難易度が高いと一般的に言われます。それはC言語が「汎用性が高い言語」であるがゆえの宿命でもあります。
そのC++原語を習得出来れば他の言語の習得も容易になります。より難易度の高いプログラム言語の習得者にとって、難易度の低い原語の習得は簡単だからです。
現在、プログラム言語は「少しでも簡単に作れるように」と言う流れになってきていますのでC++を習得しておけば、今後、現れるであろう「新しい言語」の習得も簡単にできるようになるでしょう。
つまりC++を習得する、というのは、それだけで十分な将来性をもたらしてくれると考えて良いのです。
VC++を用いた仕事
業務システム開発
VC++を使った開発プロジェクトは業務系システムで盛んに用いられています。
業務系システムは企業が業務を行うのに便利なシステムを作るのが目的ですが、金融業界、医療業界を始め、様々な業界でVC++を使った業務システムの開発作業が行われています。
ですので、業務系システムに進みたい方にVC++はお勧めであると言えます。
「VC++での作業経験があります」というだけで面接では非常に有利です。VC++を使っているプロジェクトは多いので作業経験があれば、あらためて教える必要がなく即戦力となってくれる可能性もあるので企業側としても非常に助かるからです。
またVC++での作業経験は他の環境で作業する場合でも「理解が早くなる」ので有利なのです。
ですのでVC++を使っていない企業でも有利に働きます。
組み込みソフトウェア開発
制御系である「組み込みソフトウェアの開発現場」でもVC++はよく使われています。特に家電メーカーや電気機器メーカーでは現在、IoTや5G等のDX政策に乗っ取った技術が盛んになってきており、C++に対する需要が大きくなってきているからです。
現在の制御系システムの開発現場ではC言語とC++が主流であると言っても過言ではありません。それほどC言語は制御系エンジニアにとって便利な言語なのです。
ですが制御系エンジニアになるにはハードウェアの知識も必要になるので「機械好き」な方は、こちらの道を選ぶことをお勧めします。
制御系の仕事は大変ですが「覚えてしまえば大丈夫」です。それには勉強あるのみ、とお考え下さい。制御系開発においてC言語が使われなくなることは現状ではちょっと考えられない位なのです。
ちなみにゲームの開発も制御系になりますが、現在はUnityやPHP等も使われているものの、C言語、C++で作られていることも多いです。ですので、ゲームを作りたいという方はぜひ、C++も触れておくべきです。
先ほども触れましたがC++は他の言語よりも難易度が高いので「中には習得できない人」も出てきてしまいます。
会社としてはそれでは困るので、既にC++を取得済と言う方は、面接で圧倒的に有利となります。
まとめ
1979年に日本でPC-8000シリーズというパソコンが発売され、既に43年という月日が過ぎました。
その43年の間に実に沢山の言語が現われては消えていきました。Nベーシック、パスカル、フォートランなどと言う名前を聞くと「懐かしいなぁ」と思われる方も多いでしょう。
しかしC言語だけは「ずっと生き続け進化している」のです。そしてC言語を少しでも楽に扱えるようにVC++といった統合開発環境と呼ばれる物も、まだまだ進化をしています。
最も高度なテクニックと豊富な知識が要求される制御系システムでも、C言語はずっと生き続けています。
いかにC言語というものが優れた言語であるかがお分かり頂けるかと思います。
IT業界に進みたいのであればC言語(現在ではC++)を扱えるのは、もはや常識といっても過言では無いのです。
そして現代ではVC++といった「より簡単にC言語を習得できる環境」もあるのです。時代を超えて引き継がれていくC言語の世界は、まだまだ続くでしょう。
もしIT業界に興味がおありなら「まずはC++」であり「VC++」がその道を切り開いてくれるでしょう。