LoginSignup
11
8

WSL2+Ubuntuを使ってatcoderをC++で始める方法 2023年春

Last updated at Posted at 2023-02-22

初めに(執筆理由)

これまで、若干面倒な手段を踏むことでしか使えなかったWSLが、アップデートによって簡単にインストールできるようになったので、やり方についてまとめます。

若干面倒な手段-> BIOS(OSを入れる前の段階とかに必要なやつ)を触ったり、Windowsの古くさい設定画面を触らないといけなかったりしていました。

また、これから作る環境は競技プログラミング専用なので、開発などには向かない可能性があります。あくまで競プロ用のものとして読んでください。
著者
[KujiraBox](KujiraBox - AtCoder)
情報系の高専生
atcoder algo緑 [twitter🐤](kujira(@Kujira_Box)さん / Twitter)


対象読者

  • windows10,11ユーザ
  • 競技プログラミングを始めたいが手の付け方が分からない人
  • 他の環境、言語から移行しようとしている人

環境

  • windows11
    windows10でもいいですが何かと便利なので
  • Ubuntu
    たぶん一番使われているLinuxの派生
    日本語入力なども簡単にできて優しい
  • VSCode
    microsoft社謹製のエディタ 拡張機能が非常に多く、特別な拘りがないならこれ一択
    WSLへの接続をまじで簡単にやってくれます。

早速やっていきます。

1.microsoftストアからWSLの入手

WSL picture
https://www.microsoft.com/store/productId/9P9TQF7MRM4R
インストールをするだけです。
これでwindows上でLinux系のOSを動かすことができるようになりました。

一応正しくインストールできているかの確認方法を載せます。必須ではないです
windowsキー+Rを押して出てきた小さなウィンドウにcmdと入力
黒い画面、コマンドプロンプトが出てきます。
そこにwsl --versionと入力すると以下のような情報が返ってくるはずです。(英語の可能性もあります)

C:\Users\ここはユーザネーム>wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
MSRDC バージョン: 1.2.3575
Direct3D バージョン: 1.606.4
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.22621.1265

2.Ubuntuの入手

Ubuntu picture
https://www.microsoft.com/store/productId/9PDXGNCFSCZV
同じくインストールするだけです。

インストールが終わったらどこからでも開いてください。

Installing, this may take a few minutes...

訳:インストール中です。数分待ってください 待ちましょう

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:

このページ、非常に重要です。
使うユーザネーム、パスワードは短くすることをおすすめします。割と高頻度に使うので
パスワードの設定は入力しても見えなくなっていることに注意しましょう
入力自体はできているはずです。今回、私はKujiraという名前を使いました。
初回起動時に0x80370114エラーと出る (BinomialSheepさんからの指摘 感謝します!)
PC内のアプリ検索から、
Windowsの機能の有効化または無効化 > 「仮想マシン プラットフォーム」にチェック(参考 https://zenn.dev/ohno/articles/1cb49d190af1f4

間違えてタブを落としたり文字入力できなかった場合
自分の名前が

root@なんちゃら:~#

になってしまっていると思います
これは恐らくrootユーザというものです。正しい解決法もあると思うんですが面倒なので
Ubuntu アプリをアンインストールして入れ直しましょう。


C++のインストール (ここからは基本Ubuntuでの操作です。windowsのコマンドプロンプトは使いません。)

ようやくここまで来ました。
ですがそのまえに、環境をアップデートしておきましょう。

kujira@laptop:~$ sudo apt update
kujira@laptop:~$ sudo apt upgrade

先ほど決めたパスワードの入力が必要です。
また、実行途中に[Y/n]?と書かれた一文が出来てきますが y を打って進めてください。
これはユーザに、環境を変えるようなプログラムの実行の許可を聞いています。
Linuxがセキュリティにおいて堅牢といわれる理由です。

次はC++関連のインストールです。以下を実行してください。

kujira@laptop:~$ sudo apt install build-essential -y

開発向けのパッケージがいろいろ詰まったものをインストールしています。
また、末尾に -y と付いていますが、これは[Y/n]をすべてyesで通すというオプションです。インストールがめちゃくちゃ長いときは、いちいち押していられないので使いましょう。

バージョン確認を行います。(必須ではないです)以下を入力して近い値だったらokです
gccは簡単にいえばC,C++のコンパイラで、ファイルの拡張子が.cならC言語として,.cppならC++としてコンパイルします。全部C++でコンパイルするg++もあります

kujira@laptop:~$ gcc --version
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

デバッグ用のツールもインストールします。あって損することはないので入れときましょう

kujira@laptop:~$ sudo apt install gdb -y

VSCodeについて

インストールについては、めちゃめちゃ記事出てると思うので割愛します。VSCodeで調べてインストールしましょう

拡張機能のはなし
VSCodeは、windows側とUbuntu側、それぞれ別に拡張機能を入れます。
今、普通にVSCodeを開くとwindows側で立ち上がります。

Windows側で入れた方がいい拡張機能は以下三つです

WSLのプラグインを入れると画面左下に
mark pic
このマークが出ると思います。ここをクリックして、新しいWSLウィンドウを選択します。
window pic
これで、Ubuntu側のVSCodeが立ち上がりました。ここから先はWindows側のVSCodeは使わないので閉じてもらって構いません。

Ubuntu側で入れた方がいい拡張機能は以下三つです

Code Runnerの説明

Shell(黒い画面に近いもの)にC++ファイルのコンパイルと実行を書き込む際、Ctrl+alt+N ですべて一発でやってくれる便利機能です。必ずcppファイルを開いているときに使いましょう。初期設定が少し必要で、設定から

code-runner.runInTerminal

を調べ、チェックを入れましょう。
check pic
これをしないとなぜか入力をうまく与えられないんですよね。

ちょっと便利な説明(必須ではないです)
CodeRunnerだと.outファイル(実行ファイル)が(cppファイル名).outとなり嵩張って邪魔なので私は下のように変更しています これですべてa.outで出てきます

"cpp": "cd $dir && g++ $fileName -I ACLのパス && ./a.out",

ACLとは?
C++用の、よく使うアルゴリズムやデータ構造をまとめたライブラリですACLのリンク
Atcoder社が作っているので,そのままAtcoder側でも使えます。
導入も少し面倒なので最初は無視してもいいかも?

プログラミングするディレクトリを作る

A - 積雪深差 (atcoder.jp)
この問題を解きながら環境を作りましょう
1.ディレクトリ作成
普段通りエクスプローラーを開くと下のような場所にUbuntuが追加されているのが確認できます
exp pic
Windowsでファイルを作成するのと同じ要領で、
home/ユーザ名/
の位置に移り、ここの先にフォルダを作っていきます。
自分の場合は

/home/ユーザ名/.pg/atcoder

としています

VSCode側で開きます。
folder pic
こうしてさきほど作ったatcoderフォルダまで移ります

この画面、最初に開いたときどうやってキャンセルするのか分からなくて凄く焦りました。
escキー(キーボード左上)で閉じる

↓↓↓の画面のようになっていれば大丈夫です
dir pic

CPPファイルの作成

cppfile
①でフォルダ"ABC001"の作成
"ABC001"をクリックして開いた状態にして、
②でファイル"A.cpp"の作成
です

皆さんの環境には無いフォルダや謎のUマークが私の例には付いていますが、こちらの環境の話なので無視して大丈夫です。

プログラムを書こう

#include <bits/stdc++.h>
using namespace std;
int main(void)
{
    int H1, H2;
    cin >> H1 >> H2;
    cout << H1 - H2 << endl;
    return 0;
}

これをA.cppに書き込んで、 Ctrl+S (保存)してください。

プログラムを実行しよう

A.cppを開いた状態で、Ctrl+alt+N を入力してください。
すると、勝手にターミナルが立ち上がるはずです。
ターミナルにテストケース1、

15
10

を張り付けてEnterを押しましょう

5

と出力されれば成功です。

terminal pic


付録 [デバッグしてみよう]

左端にある、虫マークを押すと、デバッグができます。VSCode側がデバッグオプションのテンプレートをいくつか用意してくれているのでgccを使っているものを選んで動かしてみましょう
debug pic
値をリアルタイムに見せてくれて便利です。複雑な問題を解く際や、DP(アルゴリズム)の遷移を見たいときなんかに使えます。
以下のサイトが詳しく書いていて参考になります。
【初心者向けに解説】Visual Studio CodeでC言語/C++のデバッグ方法 | Inno-Tech-Life


最後に

これを読んで始めた人が、僕より強くなって競プロを教えてくれる日が来ることを切に願います。

11
8
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8