🍑

【新入生向け】WindowsでWSLを用いたC++の環境構築

2024/04/15に公開

はじめに

こんにちは激動の情報系大学生活(主観)を送っているmatsushimumです。
今年、早いもので4年生になります。

弊学の情報系学科では入学してから半年経ったあたりでプログラミング初心者にとって大きな壁となる「C++」というプログラミング言語に苦しめられると思います。

そこで、C++プログラミング初心者に訪れる最初にして最大のボス「環境構築」についてLinuxの解説を少しはさみながら書いてみようと思います。

C++の特性

C++は「コンパイル言語」というプログラミング言語に分類されます。コンパイルとは、人間が書いたコード(プログラムのこと)をコンピュータが理解するために機械語という「0」と「1」を沢山並べたものに翻訳することを指します。その後、機械語に翻訳されたものを実行することによって例えば「Hello world!」のような文字列を表示することができるようになります。

C++における環境構築は他のプログラミング言語と比べて難しく、一般的にはコンパイラ(コンパイルを実行してくれるソフトウェア的なもの)をダウンロードし、環境変数を設定し、Pathを通す作業が必要であり、過去の私が大苦戦しました。

そこでWSLを使って簡単に環境構築していこうと思います。

WSLとは?

Windows Subsystem for Linuxの略であり、windows上でLinux環境を動かすことができます。
Linux?なにそれ美味しいの?という感じだと思いますが少し解説します。

まず、コンピュータを動かすにあたって必要になるのはOS(Operating System)です。OSがあるから私たちは便利にパソコンを使えています。

デスクトップにWordファイルを作ったり、壁紙を好きなものに変えたり、やりたいゲームをインストールしたり、これらはOSがあるから成り立っています。

OSにおいて代表的なものは「MacOS」と「Windows」です。MacOSはapple製のパソコンに搭載されているOSでWindowsはそれ以外の富士通やhpなどのよくあるパソコンを買った際に搭載されているOSです。

LinuxはそんなOSの一つで一般的には認知されていない日陰者のOSです。しかし、実際の開発環境ではよく使われるものであり、メリットは無料のOSなので導入費用が安い!拡張性が高い!などがあります。
ユニークなペンギンがトレードマークです。笑

ここで少し歴史の話になりますがLinuxは元々UnixというOSをベースに作られました。MacOSも同様にUnixをベースに作られておりお互いに兄弟関係にあります。

また、Linuxはその拡張性の高さから様々な改造されたOS、通称「ディストリビューション」があります。今回ではその中の一つ初心者向けである「Ubuntu」を使っていこうと思います。

なんとこのUbuntuにはC++のコンパイラがデフォルトで入っていて簡単に環境構築できちゃいます!

以下にマインドマップを掲載します。


まとめると
Windowsが搭載されたPC上でLinuxのディストリビューションであるUbuntuを動かしてC++の環境構築をします。

テキストエディタはVScode

まずは、プログラミングをするにあたって「テキストエディタ」を何にするかという問題があります。簡単に言うとプログラミングを書くアプリケーションを何にするかということです。

最悪、実は皆さんおなじみのメモ帳にコードを書いて実行することができますが、とんでもなく効率が悪いです。そこで、人気のテキストエディタを使えば、例えば間違っている部分に下線を引いてくれたり、見やすいように段落を整えてくれたり、プログラミングに必要な拡張機能を簡単に導入することができます。

そこでおすすめしたいのは「VScode」です。近年のエンジニアはほぼこれを使っているといっても過言ではありません。(過言だったらごめんなさい)弊学では「mobaXterm」というテキストエディタを使うことが推奨されますが、VScodeの方が幅広い人に使われ、困ったときでも解説記事が探しやすいという特徴があります。また、書いたコードをオンラインで保存、管理できるサービス「Github」との連携が容易であったり、沢山の拡張機能をすぐに導入することができます!

VScodeのインストール

まずはVScodeのダウンロードページにアクセスし、windows版のVScodeインストーラーをダウンロードしましょう。

次に「ダウンロードフォルダ」に保存されたVScodeをクリックすると以下の画面が表示されますが、「同意する」→「次へ」→「次へ」→「インストール」をおしてインストールしましょう!

そして以下の画面が表示されたらインストール完了です!

最後に「完了」を押すと自動的にVScodeが起動します。
万が一起動しなかった場合は下の検索バーから「VScode」と検索すればヒットするかと思います。

VScodeでファイル、フォルダ作成

まずは、通常のVScodeについてのファイル、フォルダ作成の手順まで解説します。
現在のVScodeの画面は以下のようになっていると思います。

まずはコードを保存する場所を作る必要があるため下のエクスプローラーからドキュメントをクリックしてその中で新しいフォルダを作ってみましょう。

名前はなんでもOKです。自分でも正解が分かりませんが仮に「code」とします。このフォルダ内で書いたプログラムを保存していこうと思います。

次にVScode左上のタブから「ファイル」→「フォルダを開く」を選択し、先ほど作った「ドキュメント」内の「code」フォルダを選択しましょう。下のようになっていたら成功です。

画面左上にある紙に+のマークが重ねられたアイコンをクリックすると、新しいファイルを作ることができ、その隣のフォルダに+マークが重ねられたアイコンをクリックすると新しいフォルダを作ることができま
逆にファイルやフォルダを選択したあと「deleteキー」を押すことで素早くゴミ箱に送ることができます。

以下は「prac」というフォルダを作った下に「test.txt」というテキストファイルを作った例になります。ファイルを作る際には「.txt」などの拡張子を忘れないでください!C++ファイルの場合は「test.cpp」、pythonファイルの場合は「test.py」のようになります。

現在はまだコンパイラがないために「test.cpp」をつくってもコンパイルできません。

WSLのインストール

次にWSLをインストールします。下の検索バーから「cmd」と検索し、開いてください。するとハッカーっぽい黒い画面が表示されると思います。
その画面内で以下のコマンドを入力し、Enterを押してください。

wsl --install


ここで次に「ユーザーネーム」とパスワードを設定してください
パスワードに関しては入力した場合でも画面に表示されません内部的には入力されているのでパスワードを入力し終えた段階でEnterキーを押すと次に進むことができます。
ここでの画面は以下の通りになります。

その後「Welcome to Ubuntu ~」のような文字列が見えたら完了です。
ここはWindowsの世界ではなくUbuntuの世界です!

その次にのコマンドを入力しましょう。

sudo apt update
sudo apt upgrade

1行目の意味はアップデート可能なパッケージのリストを更新するものであり、
2行目の意味は実際にインストールされているパッケージを更新します。
最後に以下のコマンドを入力しましょう。

sudo apt install build-essential

これはC++のコンパイラをインストールしています。
最後に以下のコマンドを入力しましょう。

g++ --version

このg++はc++におけるコンパイラの名前です。
バージョンを確認するコマンドです。

次に先程インストールしたVScodeを開いてください。
左下にある青いボタンをクリックすると
このようなタブが上部に出てくるので「WSLへの接続」をクリックしてください。

来ました!画面表示こそあまり変わりはないですが左下の青いボタンに「WSL:Ubuntu」と記載があったら成功です。VScode上の画面でUbuntuを開くことができました。

実際にC++を動かそう

今回はユーザー名フォルダの中に新しく「C++」というフォルダを作ってその中にコードを保存しようと思います。

まずは左上のタブから「ファイル」を選択し、/home/ユーザー名の表示でOKを押します。

この中で「C++」というフォルダを作ります。

再び「ファイル」を選択し、/home/ユーザー名/C++と選択した時点でOKを押します。

インストールが終わったら左タブの一番上にあるアイコン(エクスプローラー)をクリックして、元の画面に戻りましょう。
次に上の表示タブからターミナルをクリックしましょう。

下部にでてきたターミナルの画面で様々なコマンドを入力してコンパイルや実行を行うことができ、実行した際の出力結果もここに表示されます。

次に新しいファイルを作成し、「test.cpp」というような名前にしてください。
そのファイルに以下のコードを張り付けてください。

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello world!" << endl;
}

これは「Hello world!」という文字列をターミナルに表示させるプログラムです。
次にターミナルにおいて以下のようにコマンドを入力して下さい

g++ test.cpp

これは先ほど入力した「test.cpp」というファイルを機械語にコンパイルするコマンドです。
コンパイルが成功するとtest.cppがあるフォルダ内に「a.out」というファイルが生成されています。
最後に以下のコマンドを入力することにより「Hello world!」がターミナルに表示されます。
これはコンパイルしたもの(a.out)を実行するコマンドです。

./a.out

おわりに

ここでは単純な「Hello world!」を表示させるプログラムのみでしたがC++を勉強していけば様々なことができると思います。その一助となれていれば嬉しく思います。

この記事を書いた経緯は私が一年生の頃C++の環境構築が全くできず、さらにクラスメイトに一生メモ帳でプログラム書いてた子がいた経験からでした。環境構築さえできれば良いスタートダッシュが切れると思うので大学の難しいC++課題に負けないように頑張ってほしいです。

またここで構築したLinux環境はReact,Next.jsのフロントエンド開発など多種多様に役立つと思います。また気が向いたらそちらの環境構築も記事にしようかと思います。

さらに、よく使うLinuxコマンドやC++の初歩的な講座もどこかで書く構想があったりなかったりします。

ここまで読んでいただきありがとうございました。

Discussion