競プロ用のプログラミング環境(C++言語)

プログラミングコンテスト(競技プログラミング、略して競プロ)に参加するには、自身のパソコン上に、使用するプログラム言語の開発環境が必要です。この記事ではC++言語を使用する前提でパソコンの設定手順について説明します。C++言語の処理系は複数ありますが、競プロでは GCC(コマンド名は g++)が標準ですので GCC をインストールします。

 

ターミナル

コマンドを入力してパソコンを操作する形式のアプリを一般的に「ターミナル」とか「シェル」と呼びます。Windowsでは Powershell、コマンドプロンプト が標準でインストールされており、WSLを追加インストールしてLinux環境を使うことも出来ます。

  • WSL はWindows上で Linux OS を実行するための一種の仮想環境です。WSL をインストールすると、Microsoft Store から Ubuntu や Debian などの Linux ディストリビューションをダウンロードしてインストールできるようになります。Ubuntu や Debian を起動すると、そのウィンドウの中は Linux OS が動作するターミナルです。学生の皆さんには Linux に慣れるためにも WSL の使用をオススメします。
  • Powershell は Windows のターミナルです。Windows 上に開発環境を作るときはこちらを使いましょう。Windows上に C++ の処理系をインストールして、それを Powershell から操作するという流れになります。
  • コマンドプロンプト(CMD.EXE)は初期のWindowsから存在しているものですが、もう古いので使用は推奨しません。上記の Powershell はコマンドプロンプトの上位互換と言えるものなので、そちらを使いましょう。因みに、どのようなターミナルでもコマンド入力を促すために行頭に「$」とか「%」とかの記号が表示されますが、この記号のことも「コマンドプロンプト」と言います。ややこしいですね。

Mac には標準で「ターミナル」という名前のターミナルがありますのでこれを使います。標準のターミナルの代わりに iTerm などのアプリを追加して使っている人もいますが、このようなアプリは標準のターミナルの使い勝手を改良したものであり、ターミナルの中の動作を変更するものではありません。ですので、好みのアプリを使って構いません。

 

Windows/WSL への GCC のインストール

GCC はUNIX系OSで開発されたので Linux とは相性が良いです。WindowsでもWSLをインストールすればUbuntuやDebian等を利用できます。WSLを使ってLinuxに慣れておくのは良いことです。WSLのターミナルは UTF-8 で動作しますので日本語の文字化け問題もありません。WSLのインストール方法はここを参照してください。

WSLをインストールする
これは2022年6月の情報です。WSL周辺の環境は日々変化しています。この記事の中では環境に応じて手順を変更していますが、最新の情報はマイクロソフトの公式ページなどで確認してください。はじめにプログラミングやアプリ開発でLinux環境が必要...

WSLでUbuntuまたはDebianを使う場合、gcc をインストールするコマンドは下記の2行です。それぞれ、少し時間がかかります。

WSL にインストールした GCC は WSL の中でしか動作しません。親の環境である Windows とは別の世界で動作します。VSCode のターミナルを開くときも、WSL のターミナルを開いてください。

WSLの中ではファイルシステムもWindowsとは独立した形で見えます。cd ~ コマンドでWSLのホームディレクトリ /home/(ユーザー名) に移動しますが、ここはWindowsのホームではありません。Windowsのファイルシステムは、例えばC:ドライブなら /mnt/c にマウントされた状態で参照できます。WindowsでコーディングしたソースファイルをWSLから参照するには /mnc/c を経由してパス指定するか、cd コマンドでソースファイルを保存したディレクトリに移動してください。WSLのホームディレクトリに、Windowsの特定のフォルダーへのシンボリックリンクを作っておくと便利です。例えば C:\kpro にソースファイル(例えば hello.cpp)を作っている場合、次のようにするとアクセスが簡単になります。

なお、デバッグ機能も含めたより詳細な設定方法は次のページに開設があります。英語ですが十分理解できると思います。

Using C++ and WSL in VS Code

 

Windows/Powershell への GCC のインストール

GCC 内部では UTF-8 が文字コードとして使われていますが、多くの Windows アプリでは Shift-JIS が標準的に使われます。そのため、特別な配慮をせずに日本語を扱うプログラムを実行すると文字化けが発生してしまいます。Windows に GCC をインストールするには MinGW を使うのが一般的ですが、この方法では日本語の文字化け問題があることを認識しておいてください。

GCC のインストール手順はVSCodeの公式ページ Using GCC with MinGW に説明が書いてあります。英語なので以下に解説をしておきます。

まず MSYS2 のページ https://www.msys2.org/ にアクセスしてインストーラーをダウンロードします。2022年11月現在 msys2-x86_64-20221028.exe というファイル名ですがアップデートに伴って変わるかもしれません。これは64bit版なので、32bitのWindowsでは使えません。

ダウンロードしたファイルを実行するとウィザードが起動します。先ほどのダウンロードページに手順が説明されていますのでそれに従ってください。いくつか設定項目が表示されるので必要なら変更してください。デフォルトのままでも大丈夫です。ウィザードが終了したら MSYS2 のターミナルが開きます。もし閉じてしまったら Windows メニューから MSYS2 UCRT64 を起動してください。手順に従って pacman -S mingw-w64-ucrt-x86_64-gcc のコマンドを実行します。

MSYS2 ターミナル上で gcc –version を実行して、次のようにバージョンが表示されたら MSYS2 での手順は終了です。

次に、VSCodeの公式ページ Using GCC with MinGW の手順(5)に戻って Mingw-w64 toolchain をインストールします。先ほどの MSYS2 ターミナルで pacman -S –needed base-devel mingw-w64-x86_64-toolchain のコマンドを実行してください。

手順(6)に従って環境変数を設定します。Windowsメニューの検索(虫メガネアイコン)で “環境変数” を検索すると “システム環境変数の編集” というツールが見つかるので起動します。[環境変数] を押して上半分に表示される [ユーザー環境変数] の “Path” を選択するとそこが反転表示されます。[編集] ボタンに続いて [新規] ボタンを押すと新しい項目を追加できるので、そこに MSYS2 をインストールしたフォルダー名を入力します。デフォルトでインストールしたなら C:\msys64\mingw64\bin です。[OK] ボタンを何回か押して設定ツールを閉じます。

WindowsのコマンドプロンプトまたはPowershellを起動して gcc および g++ コマンドが動作することを確認してください。

 

Mac での GCC のインストール

Mac では Xcode がインストールされていれば g++ コマンドが動作しますが、その実態は clang++ コマンドのエイリアスなので本来の g++ とは異なる動きをする場面があります。もちろん clang++ を使って競プロに参加することも可能ですが、本物の(GCCの)g++ を使うには以下の手順に従ってください。

Homebrew がインストールされていることが前提となりますので、まだの人は下記を参考にインストールを済ませてください。Xcode と Homebrew に関する部分だけ手順を実行すればOKです。インストール済みの場合も、Xcode、Homebrew、コマンドラインツールはそれぞれ最新版に更新してから作業を始めてください。

Macの環境設定
Mac OSコンピュータの歴史を調べてみるとわかりますが、Linux は UNIX という OS から派生した無償 OS です。実は Mac OS も UNIX を元に作られており、Mac OS と Linuxは親戚筋と言えます。ターミナル...

以下の内容は Apple Silicon の Macbook(OSはVentura)を使って確認しています。OS等の条件が違うと実際にインストールされる場所も異なる可能性があるので適宜読み替えてください。Mac で GCC をインストールする場合、まずターミナルを開いて現在の g++ コマンドを調べてください。

もし上の例のように表示されたらそれは本当の(GCCの)g++ コマンドではなく clang++ のエイリアスです。GCC をインストールするには次のようにします。インストールした GCC と g++ コマンドがどこにあるかも確認しましょう。

上の例で g++-11: warning: could not understand version ‘13.00.00’ という警告が出ています。この警告は環境に依存します。筆者の場合はOS(Ventura、MacOS 13.0)に gcc 11 が対応していなかったことが原因で、コマンドラインツールをインストールし直して、さらに gcc 12 をバージョン指定してインストールしました。

これで gcc 12.2.0 がインストールされました。AtCoderでは GCC 9.2.1 が使われていますが、初級レベルの問題でコンパイラのバージョンが影響することは考えにくいので問題ありません。bin の中のコマンドは、ファイル名にバージョン名が “-12” のように付いているので注意してください。

このまま g++-12 という名前でコンパイラを使っても構いませんが、g++ という一般的なコマンド名を使いたければこうします。まず g++-12 がインストールされている場所を確認して、/usr/local/bin にそのシンボリックリンクを作ります。もし既に /usr/local/bin/g++ が存在するようであれば、必要に応じて違う名前にするなどの対処を行ってください。

gcc をインストールした後でも、Macに元々入っていたコマンドは clang++ で起動できます。

 

VSCode の設定

インストール

VSCode本体のインストールはここを参照してください。

Visual Studio Code(VSCode)
プログラミングにはテキストエディタが必須です。使いやすものを見つけてパソコンにインストールしておきましょう。Windowsに標準で入っている「ワードパッド」やビジネス文書用の「Microsoft Word」はプログラミングには使えません。「...

次に C/C++ 用の拡張機能をインストールしましょう。この拡張機能には好き嫌いがあるかもしれません。「むしろ邪魔だ」と感じたら後でアンインストールしても構いません。ただしデバッグ機能などを使いたい場合はこの拡張機能が必要になります。

C/C++ for Visual Studio Code

ついでに Code Runner も入れておきましょう。左側のメニューから [拡張機能] を選んで、”Code Runner” を検索すると見つかりますのでインストールしてください。

 

Code Runnerの設定

  • [拡張機能] の [Code Runner] の設定(歯車アイコン)から [拡張機能の設定] に入る。
  • Code-runner: Run In Terminal をチェックする。
  • Code-runner: Save File Before Run をチェックすると、プログラムの実行前に自動的にファイル保存してくれます。
  • (Windowsのみ)Code-runner: Terminal Root に /mnt/ と記入する。
  • (必要に応じて)コンパイルオプションの設定は、
    Code-runner: Executor Map の「settings.jsonで編集」で “cpp” を探して自編集する。下記は “-std=c++2a” を追加してC++20の機能を有効にしている例。
  • AtCoder Library (ACL) をインストールしている場合は、同じく settings.json の “C_Cpp.default.includePath” に ACL のパスを追記する。

 

Windowsの追加設定

Windowsの場合、[新しいターミナル] でターミナルを開くとコマンドプロンプトが開いてしまいます。いちいちターミナルをWSLに切り替えるのは面倒なので、デフォルトでWSLが開くようにしましょう。ターミナルの画面領域の右上にある「+と下向き三角のアイコン」の中から [規定のプロファイルの選択] があるので好きなもの(例えば Ubuntu-22.04 等)を選んでください。

 

基本的な使い方

プログラムのソースコードを格納したフォルダを開き、ターミナルを表示するのがシンプルで使いやすいと思います。

左上の赤丸で囲んだアイコンから [フォルダーを開く] でソースコードが保存されているフォルダーを指定し、ソースコードのファイルを開きます。[ターミナル]→[新しいターミナル] でターミナルを開きます。上の例では Powershell が開いていますが、右側の赤丸で囲んだ下向き三角アイコンからWSLのターミナルを開くこともできます。

 

Hello World!

VSCode で新しいファイルを作成してください。ファイル名は例えば “hello.cpp” のように拡張子を .cpp にしてください。そのファイルに次のように入力します。

ターミナルのウインドウを開くか、VSCode の [ターミナル]→[新しいターミナル] でターミナルを開きます。Windowsの場合は GCC をインストールしたターミナルを使うように注意してください。ターミナルペインの右側に下向きの矢印アイコンからターミナルの種類を変更できます。VSCode の設定でデフォルトで開くターミナルの種類を指定できます。設定の中で「ターミナル」を検索してみてください。

ターミナルの中で次のようにコマンドを実行します。

a.out または a.exe というファイルが出来ているはずなので、それを実行します。WIndows/WSL と Mac の場合は先頭に “./” を付けてください。これは「このディレクトリにある a.out を実行する」ということを意味します。

VSCode に Code Runner 拡張機能を入れた場合は、ターミナルでコマンドを実行する代わりに、VSCodeのウインドウ右上の三角アイコンの中の “Run Code” からワンタッチでプログラムを実行できます。この場合は実行ファイルの名前は a.out や a.exe ではなく、 hello や hello.exe のようにソースコードのファイル名を倣ったものになります。

こんどは日本語で「こんにちは!」と表示させてみましょう。

Windows/WSL または Mac では「こんにちは!」と表示されたはずです。Windows/Powershell の場合は文字化けしたと思います。これは GCC と Windows で標準とする文字コードが異なることが原因であり、正常な動作です。GCC 内部では UTF-8 が文字コードとして使われていますが、Windows アプリでは Shift-JIS が標準的に使われているためです。

 

コメント