Rubyプログラマが始めるAtCoderの初期設定

# 【概要】
本記事では、Ruby プログラマが atcoder-cli をインストール後に行った設定を記載しています。

今まで、Web ページのコードテスト方法を見て AtCoder を敬遠していましたが、よく考えたら誰かしら便利ツールを作っているだろうと思い調べてみると、期待通り素晴らしいツールがあったので、簡単に設定しました。
今後、インタラクティブな入力とか、その他色々追加したいこともあるかもなので、思いついたら追記します。

- 参考 URL
  - [コマンドラインツールatcoder\-cliを公開しました \| わたしろぐ](http://tatamo.81.la/blog/2018/12/07/atcoder-cli/)
  - [Introduction to online\-judge\-tools \(Japanese\) — online\-judge\-tools documentation](https://online-judge-tools.readthedocs.io/en/master/introduction.ja.html)
- Star をあげたいリポジトリ
  - [Tatamo/atcoder\-cli: AtCoder command line tools](https://github.com/Tatamo/atcoder-cli)
  - [kmyk/online\-judge\-tools: Tools for online judge services\. Downloading sample cases, Testing/Submitting your code, and various utilities\.](https://github.com/kmyk/online-judge-tools)
- その他: 個人資料
  - [atcoder初心者こそ環境構築しよう！\(atcoder\-cli,online\-judge\-toolsのインストール、使い方） \- Qiita](https://qiita.com/Adaachill/items/3d4ddad56c5c2cc372cd)
  - [AtCoder 用語集 \- AtCoder Beginner Contest 074](https://atcoder.jp/contests/abc074/glossary?lang=ja)
  - [Rubyで競プロするときのTips \- ARMERIA](https://betrue12.hateblo.jp/entry/2018/12/01/224748)
  - [\[Atcoder\] Rubyでよく使う記法](https://koh-eng.com/atcoder-ruby/)
  - [AtCoderで見かけたRubyショートコーディング術 \- Qiita](https://qiita.com/syumai/items/7eb91d673ed371378a4a)




# 【本文】
## □ atcoder-cli と online-judge-tools のインストール

- atcoder-cli 配布元の Web サイトが一番わかりやすいです。
- python の使用経験がない場合、pip3 関連で困るかもしれませんが、頑張って調べてください（対処法は忘れた...!）。

- 参考 URL
  - [atcoder\-cli インストールガイド \| わたしろぐ](http://tatamo.81.la/blog/2018/12/07/atcoder-cli-installation-guide/)
  - [atcoder\-cli チュートリアル \| わたしろぐ](http://tatamo.81.la/blog/2018/12/07/atcoder-cli-tutorial/)
  - [AtCoder：競技プログラミングコンテストを開催する国内最大のサイト](https://atcoder.jp/?lang=ja)

## □ ディレクトリ作成

```bash:bash
$ mkdir atcoder
$ cd atcoder
```

## □ rbenv の設定

- AtCoder の Ruby バージョンに合わせましょう。
- 怠惰にしてると思わぬ失敗が襲い掛かります。

```bash:bash
# pwd => __/atcoder
$ rbenv install 2.7.1
$ rbenv local 2.7.1
```

## □ 設定の調整
### ■ 基本設定の変更

```bash:bash
# 設定ディレクトリへ移動
$ cd `acc config-dir`
```

- 以下の通り既存の設定を変更

```json:config.json
{
        "oj-path": "/usr/local/bin/oj",
        "default-contest-dirname-format": "{ContestID}",
        "default-task-dirname-format": "{tasklabel}",
        "default-test-dirname-format": "tests",
        "default-task-choice": "all",
        "default-template": "ruby"
}
```

### ■ テンプレートの設定

```bash:bash
$ mkdir ruby
$ cd ruby

# ~/Library/Preferences/atcoder-cli-nodejs/ruby/template.json
$ vim template.json

# ~/Library/Preferences/atcoder-cli-nodejs/ruby/main.rb
$ vim main.rb
```

```json:template.json
{
  "task":{
    "program": ["main.rb"],
    "submit": "main.rb"
  }
}
```

```rb:main.rb
#!/usr/bin/env ruby
input = gets.chomp.split("")
```


## □ コンテスト情報の確認

```bash:bash
# pwd => __/atcoder
$ acc contest abc100
=> AtCoder Beginner Contest 100  https://beta.atcoder.jp/contests/abc100

$ acc tasks abc100
=> A  Happy Birthday!           https://beta.atcoder.jp/contests/abc100/tasks/abc100_a
=> B  Ringo\'s Favorite Numbers  https://beta.atcoder.jp/contests/abc100/tasks/abc100_b
=> C  *3 or /2                  https://beta.atcoder.jp/contests/abc100/tasks/abc100_c
=> D  Patisserie ABC            https://beta.atcoder.jp/contests/abc100/tasks/abc100_d
```

## □ コンテスト情報をダウンロード

- 次の URL でコンテスト情報が確認しやすいです。
- [AtCoder Problems](https://kenkoooo.com/atcoder/#/table/)

```bash:bash
# pwd => __/atcoder
$ acc new abc100
```

## □ 提出コード作成

- 上記で設定した通り main.rb が提出コードとなります。
- テンプレートとして、main.rb が各問題のディレクトリに作成されているはずです。

```ruby:main.rb
# MEMO: pwd => __/atcoder/abc101/a/main.rb
# MEMO: 提出コードを記入

#!/usr/bin/env ruby
input = gets.chomp.split("")

result = 0
input.each do |n|
  if n == "+"
    result += 1
  else
    result -= 1
  end
end

puts result
```

## □ 事前テスト

- tests ディレクトリのファイルを元に main.rb のコードを提出前にテストできます。
- Dash 使えばもっと楽にできるらしい。
- 参考 URL
  - [Dash for macOS \- API Documentation Browser, Snippet Manager \- Kapeli](https://kapeli.com/dash)

```bash:bash
# pwd => __/atcoder/abc101/a の場合
$ oj t -c " ruby main.rb" -d tests
```

## □ 提出

```bash:bash
# 方法１
# pwd => __/atcoder/abc101/
$ acc submit -t abc101_a ./a/main.rb

# 方法２
# pwd => __/atcoder/abc101/a
$ acc submit main.rb

# 方法３( 方法２の省略 )
$ acc s
```