LYNCSブログ

慶應義塾大学公認団体 宇宙科学総合研究会(LYNCS)のブログです。

2020年版 C言語/C++ 入門者のための環境構築 (Windows編)

  • 初版:2018-03-11
  • 改訂:2019-12-07

対象となる読者

  • C言語/C++言語を始めたいが、環境が構築できていない
    • 大学の授業などでC言語を学習する必要がある人もこれに含みます
  • プログラミング自体経験がほとんどない
  • PCの基本操作は理解している

この記事を書いた理由

LYNCSでは、マイコンを用いたロボット等の制御にC++が使われることがあるため、プログラミング初心者でもC/C++から入る層が一定数居ます。 また、大学の一般教養科目として開講されるプログラミングの授業では、C言語を学ぶものもあります。 そういった状況を想定して、環境構築でつまづくことなく、言語の学習に集中できる一助となる記事を書きたいと思った次第です。

まず、本当にC/C++から入門して大丈夫?

あくまで筆者個人の考えですが、初心者が最初に学ぶ言語として安易にC/C++を選ぶのは良くありません。もちろん、理由や信念があってC/C++を学ぶのであれば全く問題はありません。

ここに辿り着いた方のうち、C/C++を学ぶ動機・理由が明確な方は次のセクションまですっ飛ばして環境構築を始めてください。逆に、プログラミングというものが何かはよく分からないけど触ってみたい方や、ゲームやスマホのアプリなど何か作りたいものがあるという方はこれからの文章を読むことをおすすめします。

C言語はOSの開発やプログラミング言語自体の開発などには欠かせない存在で、とても重要な言語であることは事実です。 しかし、ゲームやスマホアプリ、Webアプリ、人工知能(AI)などを開発したい場合には不向きな言語です。世の中には、それらに最適な言語が数多く存在しています。 そういった言語などがあるのにあえてC言語を使うのは、新幹線があることを知りながら自転車で東京-京都間を往復するようなものです。

さらに、作りたいものが作りづらいだけでなく、C/C++にはとても難解な概念が登場します。つまり「初心者殺し」でありながら、言語を習得したところで初心者にも作りやすいアプリを作れないという、プログラミング学習の挫折につながりやすい言語なので、特に理由がない限りはCを「最初に学ぶプログラミング言語」として選ぶことはおすすめしません。漠然とC/C++を最初の言語として選ぶと、殆どの人はプログラミングに対する苦手意識を持ってしまうだけだと思います。逆に、何かしらの言語を学んだあとにC/C++を学ぶと、あらゆるプログラミング言語に共通する一般的な事柄はスキップしてC/C++固有の難しい概念だけに集中できるので、スムーズに学習出来るようになると思います。 (そういう理由もあってか、近年はプログラミング学習スクールなどでも初心者向け講座としてはRubyJavaScriptPythonといった言語が選定されることが多いようです。)

また、よく言われる話として「C言語は様々な言語に影響を与えた存在だから、C言語をやっていれば応用が効く」「あらゆる言語はCで開発されているので、Cを理解すれば言語も深く理解できる」というものがあります。
これを外国語の学習に例えると「ラテン語ギリシャ語はヨーロッパのさまざまな言語に影響を与えているので、外国語を学びたければラテン語ギリシャ語から始めると深く理解できる」といった感じになると思います。確かにそれは事実かもしれませんが、メリットに比べてあまりにもデメリット(難易度や挫折のリスク)の方が大きすぎます。

英語圏で活躍したければ英語を、フランスに行きたければフランス語をまずは学べばいいのです。ラテン語ギリシャ語など、それらに影響を与えた言語を学んで文法や単語を詳しく理解するのは後回しでもいいはずです。 プログラミングでもそれは同じで、Webアプリを作りたければWeb向けの言語を、スマホアプリを開発したければスマホアプリ向けの言語を最初に学ぶのが一番なのではないでしょうか。それらを習得した後に、C/C++を学んでも遅くはありません。 (やりたいことに直結している方がモチベーションも続きますからね)

大学での初心者に対するプログラミング講義ではC言語を使うべきでない」といった記事でも解説されていますのでこちらも紹介しておきます。

C/C++が向いていないなら何の言語を選べばいいの?

やりたいことを最初に掲げて、それから言語を選んでいいと思います。

  • ゲーム開発/AR/VR - Unity (C#)
    • UnityはPCだけでなくスマホAndroid/iOS)でも動作するため、移植の度にハードに合わせてプログラムを書き直さないで済むのが強みです。最近は家庭用ゲーム機向けの開発にも利用されることがあるほか、VRなどでもよく利用されています。
  • スマホアプリ開発 - Java/Kotlin (Android)、Swift (iOS)
    • iOSアプリの開発にはMacが必要なのでご注意ください。
  • Webアプリ開発 - RubyJavaScript
  • 機械学習/深層学習/人工知能 - Python
    • 最近流行りのAIなどを触りたいならPython一択です。ライブラリはPython向けのものが圧倒的多数ですし、Jupyter Notebookを始め研究向きの環境も整っています。
  • 統計学 - R
    • 統計処理に最適化された言語です。統計を扱うならまずはRから始めて、より詳細な分析・処理を行うならPythonの学習に進んでもいいかもしれません。
  • 特にやりたいことがない - JavaScript
    • 言語としてめちゃくちゃ優れているというわけではなく、プログラマからは時々批判されることもある言語ではあります。しかし、Webページ、Webアプリ、ブラウザ拡張機能、簡易的なスマホアプリ、PC向けアプリ、IoT機器……などと、あらゆる場面で使用できる言語なので、やっておいて損はないと思います。言語自体も難解ではないため「積極的にエンジニアになりたいわけではないが、スキルとしてプログラミングを身に着けたい」という層にもマッチすると思います。
    • JavaScriptは歴史あるプログラミング言語なのですが、最近になって仕様が大きく変わっている言語なので、1990年代~2000年代に書かれたような古い参考書は基本的に役に立ちません。出来る限り新しい本やWebサイトで学ぶことをおすすめします。

逆にどういう人はC/C++から始めるといいの?

  • 機械工学を学ぶ人
    • ロボットなど各種機械の制御として利用される言語は今でもC/C++が中心です。
  • 競技プログラミングをしたい人
    • 多くの競技プログラミングにおいて言語の選定は自由ですが、実行速度の面で有利なC/C++が事実上の標準となっています。
  • プログラミング言語やOSを作りたい人
  • コンピュータの動作を詳しく理解・把握しながらプログラムを書きたい人
    • C/C++では、他の言語ではあまり意識しなくても済むような、メモリやCPUといったコンピュータの内部にある要素をほぼ常に意識してコードを書いていく必要があります。先ほど「C/C++を初心者には勧めない」と書いた理由の1つでもありますが、このあたりの動作に関心がある人にとってはむしろメリットになるかもしれません。
  • 大学の授業がC/C++の人
    • これはもうどうしようもないので頑張っていきましょう。

1. コンパイラのインストール

コンパイラとは、人間の書いたソースコードからコンピュータが実行可能なデータを生成するためのものです。

Windows向けならマイクロソフト製のVisual Studio(VS)を利用するという手もありますし、実際そのように解説しているサイトもあります。 しかし、VSは大規模な開発向けのソフトなので、入門レベルでは使わないような機能が多いため画面が難解で、さらには動作が重いなどプログラミング学習にはデメリットが目立つのでオススメしません。 料理に例えるなら、お茶漬けや卵かけご飯を作るために高級ホテルの本格的な厨房を使うようなものです。

ここではMinGW(ミン・ジー・ダブリュー)というソフトウェアを使って、gccというコンパイラをインストールしましょう。

(経験者の方向けへの注釈:筆者自身はWSLを用いているのですが、この記事ではWSLを推奨していません。というのも、2019年現在でWindowsを想定したプログラミング初心者向けに行われるC/C++の解説ではcmd.exe/PowerShellに依存しているものが多いからです。また、Linuxディレクトリ構造などに関する学習も必要になるため、少なくとも現時点では「入門者のため」としてWSLを採用するのはデメリットが大きいと筆者は考えております。)

まず、http://www.mingw.org にアクセスし、右上の「Downloads」をクリックします。 f:id:lyncs:20191221164639p:plain

MinGW - Minimalist GNU for Windows と書かれたページに遷移するはずです。
そのまま下にスクロールし、MinGW Installation Manager (mingw-get) というリンクをクリックしてください。 f:id:lyncs:20191221164132p:plain

MinGW-Get Version 0.x.x と書かれたリンクをクリックしてください。x.xのところには何らかの数字が入っています。 f:id:lyncs:20191221164111p:plain

mingw-get-setup.exe と書かれたリンクをクリックしてください。 f:id:lyncs:20191221164114p:plain

しばらくするとダウンロードが自動的に始まります。もしダウンロードが始まらない場合、mingw-get-setup.exeと書かれたリンクをクリックしてください。 f:id:lyncs:20191221164115p:plain

ダウンロードしたインストーラを実行すると以下のような表示になります。 「Install」をクリックしてください。 f:id:lyncs:20180310042921p:plain

特に変更せず、「Continue」をクリックしてください。 (なお、Cドライブの空き容量が少ないなどでインストール先を変更した場合はその後のパスを適宜読み替えてください) f:id:lyncs:20180310043031p:plain

必要なファイルのダウンロードが始まります。しばらくお待ちください。 f:id:lyncs:20180310043144p:plain

ダウンロードが完了すると「Continue」をクリックできるようになりますので、クリックしてください。 f:id:lyncs:20180310043407p:plain

スタートメニューやデスクトップに「MinGW Installation Manager」というショートカットが作成されるはずなので、これを起動しましょう。

MinGW Installation Managerが起動したら「mingw32-base」という項目をクリックし、現れるメニューの中から「Mark for Installation」をクリックしてください。 f:id:lyncs:20180310043908p:plain

「mingw32-gcc-g++」という項目にも同じ操作を行ってください。以下のような画面になるはずです。 f:id:lyncs:20180310044018p:plain

「Installation」メニューから「Apply Changes」をクリックしてください。 f:id:lyncs:20180310044100p:plain

「Apply」をクリックしてください。 f:id:lyncs:20180310044157p:plain

必要なファイルがダウンロードされます。そのままお待ちください。 f:id:lyncs:20180310044218p:plain

完了したら「Close」をクリックしてください。 f:id:lyncs:20180310044252p:plain

このような画面になれば、MinGW Installation Managerを閉じて構いません。 f:id:lyncs:20180310044322p:plain

2. パスを通す

インストールしたgccを開発環境から利用できるようにします。以下はWindows 10の場合です。

スタートメニューを右クリックし、コントロールパネルを開きます。 f:id:lyncs:20180310044545p:plain

検索欄に「環境変数」と入力すると現れる「環境変数を編集」をクリックします。 f:id:lyncs:20180310044611p:plain

上の欄で「Path」を選択し、「編集」をクリックします。 f:id:lyncs:20180310044625p:plain

「新規」をクリックします。 f:id:lyncs:20180310044804p:plain

「C:\MinGW\bin」と入力し、追加します。 以下のような画面になれば完了です。 f:id:lyncs:20180310044825p:plain

3. 拡張子の表示

プログラミングをする上で拡張子を表示していないと何かと困ることがあるので、Windowsの設定を変えて表示しておきます。

適当なフォルダを開いて上部の「表示」をクリックし、「拡張子の表示」にチェックを入れます。 f:id:lyncs:20180310045028p:plain

4. エディタのインストール

書籍やサイトによっては「メモ帳」でも出来ると書かれていることがありますが、きちんとしたプログラミング向けのエディタを使うことでより学習しやすくなります。 ここでは、2019年現在でよく使われている「Visual Studio Code」(VS Code)を利用しましょう。(「Visual Studio」と名前が似ていますが、「Code」の方は複雑な機能を外してソースコードの編集に特化した軽量・シンプルなソフトです。)

プログラミング用のエディタとしては2000年代までは「TeraPad」や「サクラエディタ」などが挙げられることもありました。2019年現在では残念ながらそれらは時代遅れなソフトウェアとなっていますので、VS Codeの使用を強くおすすめします。

https://code.visualstudio.com にアクセスし、「Download for Windows」をクリックします。 インストーラがダウンロードされるはずです。 f:id:lyncs:20191207154150p:plain

インストーラを実行したら、「次へ」をクリックします。 このあたりはインストーラの指示に従って進めてください。 f:id:lyncs:20191207132438p:plain f:id:lyncs:20191207132440p:plain f:id:lyncs:20191207132441p:plain

ここでは、全てにチェックを入れてください。 f:id:lyncs:20191207132509p:plain

インストールを進めてください。 f:id:lyncs:20191207132527p:plain f:id:lyncs:20191207132538p:plain

インストールが完了すると「Getting Started」といったWebページが開くことがありますが、読む必要がなければそのまま閉じてください。

VS Codeが開くと、右下に英語でメッセージが出ますが、閉じて構いません。 f:id:lyncs:20191207132611p:plain

また、初期状態では英語になっているため、英語に不慣れな方は日本語化パックをインストールしましょう。 左側の Extensions ボタンをクリックしてください。 f:id:lyncs:20191207132753p:plain

検索ボックスが現れるので Japanese と入力して、日本語化パック(Japanese Language Pack)をインストールしてください。おそらく一番上に表示されているはずです。 f:id:lyncs:20191207132801p:plain

インストールできたら右下に再起動を要求するメッセージが出るので、「Restart now」をクリックしてVS Codeを再起動しましょう。 f:id:lyncs:20191207132837p:plain

5. コードを書いて実行していく

一般的な参考書では、エディタでコードを書いてコマンドプロンプトなどから実行するように指示されていると思います。 VS Codeコマンドプロンプトをウィンドウ内に呼び出すことができるので、より効率的な学習ができると思います。

Ctrl + @ を入力してください。すると、統合ターミナルが開くはずです。(もう一度 Ctrl + @ を押すと閉じます) f:id:lyncs:20180311021702p:plain

また、プログラミングにおいては「フォルダ」(ディレクトリ)を1つの単位としてプロジェクトを進めていくことが多いです。とりあえず全部マイドキュメントに保存、といったことは行いません。
ですので、とりあえず何らかの作業用フォルダを作成しておきましょう。(日本語文字列が含まれないファイルパスが望ましいので、Cドライブ直下などに programming のようなフォルダを作ると無難だと思います。)
学習が進んでいったら、この作業用フォルダ内にサブフォルダを作成して細分化していっても良いと思います。

また、VS Codeもプログラミングしやすくするため、「フォルダごと」開くことが出来ます。 左側の「エクスプローラー」ボタンをクリックして「フォルダーを開く」をクリックするか、ファイル→フォルダーを開く をクリックしてください。 f:id:lyncs:20191207132709p:plain

フォルダを作成したら新規ファイルを作成しましょう。 「ファイル」→「新規ファイル」で新しいタブが開くはずです。(「ようこそ」タブは閉じてOKです)
Hello Worldでも書いてみましょう。 f:id:lyncs:20180311023521p:plain

ファイルを保存しましょう。hello.c あたりで、拡張子 .c を付けるのをお忘れなく。 f:id:lyncs:20180311023618p:plain

拡張子を付けたファイルは言語に応じて色付け(シンタックスハイライト)してくれます。プログラミング向けエディタの強みの1つです。 f:id:lyncs:20180311023641p:plain

Ctrl + @ を押して統合ターミナルを開くと、既に現在開いているフォルダに移動した状態のPowerShellがウィンドウ内で開いてくれます。 コンパイルするコマンド gcc hello.c を入力して Enter を押してください。 f:id:lyncs:20180311023916p:plain

コンパイルが完了すると同じフォルダに実行ファイルが出力されます。
今回はコンパイル時に出力ファイル名を指定しなかったので a.exe という名前になっているはずです。 f:id:lyncs:20180311024013p:plain

これを実行してみましょう。統合ターミナルに .\a.exe と入力してください。(a.exe の前に .\ ドットとバックスラッシュを入力することをお忘れなく。バックスラッシュはWindows環境では円マークと同じ文字列です。)
無事実行できれば以下のような表示になるはずです。 f:id:lyncs:20180311024130p:plain

環境構築とHello Worldの実行手順を把握するところでこの記事は終わりです。
ここから先はお手持ちの参考書や授業をベースにして進めていってください。それでは良き開発ライフを!

LYNCS とは?

慶應義塾大学文化団体連盟所属団体 宇宙科学総合研究会 LYNCS (Laboratory of sYNnthetic Cosmic Science, リンクス)はその名前の通り、宇宙について様々な面から研究、アプローチをするサークルです。
工学分野では電子工作やプログラミングを扱い、模擬人工衛星CanSat」の開発やドローンの開発などを行っています。プログラミング・電子工作の初心者でも興味がある方なら大歓迎です!先輩がサポートしていきます! (実際、プログラミング未経験だった1年生が、その年の終わりにはRaspberry Piなどを利用して自律走行ロボットやドローンを自作できるようになりました。)
慶應義塾大学に進学される方、在学中の方でご興味をお持ちの方は、公式Twitterメールなどでお気軽にお問い合わせください!