AtCoderで「戦う土俵に立つ」ための環境構築

# 前置き
Qiitaを閲覧されている方の中には競技プログラミング（以下 競プロ）
特に[AtCoder](https://atcoder.jp/?lang=ja)に参加してみたいor参加して間もない、という人も居ると思います。
そんな方々の一助になれば、というローカル環境構築の記事です。

# この記事で出来るようになること
![スクリーンショット 2020-12-02 10.02.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225823/d96ee23d-b32c-7934-0303-435537e4dcd6.png)
AtCoderの各種コンテストページにある「コードテスト」と同様のことが、
ローカル環境（＝手元のPC上）で実行できるようになります。

# 何故ローカルでコードテストしたいか
AtCoder上でコードテストをする、となった場合は下記の手順を踏むことになります。

1. ローカルで解法コードを記述
2. 「コードテスト」ページのソースコード欄に1.をコピペ
3. 標準入力欄に、問題で与えられた入力サンプルをコピペ
4. 「実行」を押して（ドキドキしながら）標準出力の結果を待つ

対してローカルでコードテストを実行した場合、

- 手順２が省略される
- (サーバー混雑などで)手順４で待たされる、ことが無くなる

というメリットがあります。
思考力や実装力とは関係ない部分で不利を背負うのは勿体ないですし、
コンテスト中に待たされるストレスを少しでも減らすことが出来ます。

# 本記事を読んでほしい対象読者
下記のいずれかに当てはまる方は、是非読み進めて頂きたいです。

- これから競プロを始めようとしている
- けんちょんさんの[過去問精選記事](https://qiita.com/drken/items/fd4e5e3630d0f5859067)を読んで、本格的に競プロを始めようとしている
- 最近までwindowsを使っていて、あまりMacの使い方に慣れていない

# 注意事項
- 計算量やアルゴリズムなどの話は出てきません
- あくまでスタートラインに立つための最低限の環境構築の話です

# エディタ
- 軽い
- コード補完が効く
- 競プロだけでなく実務に耐えうる
- 無料

といった理由からVisualStudioCode(以下VScode)がオススメです。
正直エディタは何でも良いのですが、この記事はほぼVScodeの使い方説明となります。

# 使用言語
Python3ユーザーを想定しています。

# 構築手順

## VScodeインストール
[Microsoft公式](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)からダウンロードしてインストールしてください。
（※慣れている人はhomebrewなどで入れても勿論OKです）

## VScodeの操作
### ターミナル起動
VScodeを起動したら `` Control+` ``と入力してください。
エディタの下半分にターミナル画面が出てきたはずです。
![スクリーンショット 2020-12-01 21.23.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225823/205f6733-511f-dc33-fcdb-96e4b82dd36b.png)

### 念の為python3が入っているかの確認
`python3 -V` と入力して、`Python 3.8.5`といった感じで`3.*.*`とバージョンが表示されていれば入っています。
もしpython3が入っていないようであれば `mac python3 インストール`といったキーワードで検索してください。
※qiitaの記事が多数ヒットしますので、本記事では割愛します。

### atcoderフォルダ作成
![スクリーンショット 2020-12-01 21.26.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225823/e8c5bd1b-f27d-87e9-5960-89d9211199c2.png)
ターミナルで上記スクショのように
`cd Desktop`
`mkdir atcoder`
と打ち込んでください。
この時点でデスクトップに`atcoder`というフォルダが出来ているはずです。

- `cd`はディレクトリを移動するコマンド
- `mkdir`はディレクトリ作成(windowsで言うところのフォルダ作成)のコマンド

### 必要なファイル作成
![スクリーンショット 2020-12-01 21.30.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225823/fd9ee769-6135-1902-84fb-a2b0062c7a6f.png)
ターミナルで上記スクショのように
`cd atcoder`
`touch answer.py input.txt command.txt knowledge.txt`
と打ち込んでください。

- `touch`はファイル作成のコマンド
- `answer.py`などのファイル名は適当なので、好みのファイル名に変えてもらってOKです。

### atcoderフォルダを開く
`code . -r`と打ってください。
先程作ったatcoderフォルダをVScodeで開いた状態になるはずです。

- `code`はVScode上でファイルやフォルダを操作するコマンド
- `code .`で現在居るフォルダ(つまりatcoderフォルダ)を開きます。
- `-r`はreuse-windowオプションで、ウィンドウを再利用するオプションです。

## 自動保存設定
![スクリーンショット 2020-12-01 21.42.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225823/6243db09-b357-3a3d-98f3-bdd285228fba.png)
画面左下の歯車からsettingを選択して、
AutoSaveの項目でafterDelayを選択して自動保存を有効にしておきましょう。
間違ってエディタを落として「書きかけのコードが全部消える」といった事故を防げます。

## ファイルの開き方
![スクリーンショット 2020-12-01 21.50.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225823/12fe0572-13bb-ce8f-c332-f1b270fe3d76.png)

画面左列のファイル名をダブルクリックすると、
対象のファイルが画面右側にタブ表示されます。

## 各ファイルの使い方
### command.txt
入力サンプルを提出用コードに渡してローカルでコードテストを実行するためのコマンドを記載しておきます。
`python3 answer.py < input.txt` と入力しておいてください。

### answer.py
提出用コードをこのファイルに書いていきます。

### input.txt
問題で与えられた入力サンプルをこのファイルにコピペします。

### knowledge.txt
コンテスト最中や前後に見返すためのメモ置き場です。

# 実際に使ってみる
環境構築は以上となりますので、実際にこれらのファイルを使ってBeginnersSelectionの[PracticeA](https://atcoder.jp/contests/abs/tasks/practice_1)を解いてみます。

## answer.py
下記コードを書きます。
```a = int(input())
b,c = map(int,input().split())
s = input()
print(a+b+c, s)```

## input.txt
入力例1のサンプルを打ち込みます。
```1
2 3
test
```

## answer.py実行
`` Control+` `` でターミナルを起動したら、
command.txtに書いておいた`python3 answer.py < input.txt`を実行します。
するとターミナルには`6 test`と出力されて、これは問題の出力例1の値と一致します。
このサンプルではanswer.pyは題意を満たしていそうです。
※実際のコンテストの前にはターミナル起動と`python3 answer.py < input.txt`を１度実行しておくと良いと思います。
(ターミナルで`↑`か`Control+p`で過去のコマンドが遡れます)

# 提出する
1. answer.pyの内容を`command+a` で全選択
2. `command+c` でコピー
3. `command+v` でAtCoder上のソースコード欄に貼り付け
4. 提出ボタンを押す
5. 無事AC！

環境構築・使い方の説明は以上となります。
ご精読ありがとうございました。良き競プロライフを〜