# AtCoder Next

AtCoder Nextは、AtCoderでの競技プログラミングを支援するコマンドラインツールです。
プロジェクトの初期化、テストケースのダウンロード、テスト実行、コード提出、およびコンパイラ環境の診断・インストールなどをローカル環境で自動化します。

![AtCoder Next Demo](media/vhs/ja.gif)

---

## 主な機能

- **ローカルでのテスト実行**: esbuildを用いたインプロセスビルドや、ダウンロードしたテスト実行制限時間のキャッシュ、指数バックオフを導入したポーリングによるジャッジ状況取得などを備えています。
- **コードのバンドル**: 依存ファイル（C++, Python, Rust, JavaScript, TypeScript）を提出用に単一のファイルへマージします。セキュリティ上の対策として、ワークスペース外のファイルを読み込まないパス検証機能を備えています。
- **環境診断と自動セットアップ (`doctor` / `setup`)**: ローカル環境のコンパイラとAtCoderの公式ジャッジ環境のバージョン差分を検出し、必要に応じて自動インストールを行います。
- **セッションの保護**: セッションCookieや暗号キーをAES-256-CBCで暗号化し、パーミッション `0o600` でローカルに保存します。

---

## インストール

Node.js (v18以上) がインストールされた環境で以下を実行してください。

```bash
npm install -g atcoder-next
```

---

## はじめかた

1. ワークスペースの初期化:
   ```bash
   atc init
   ```
2. AtCoder へのログイン:
   ```bash
   atc login
   ```
3. 問題セットアップ:
   ```bash
   atc new abc300
   ```
4. テストと提出:
   ```bash
   atc test
   atc submit
   ```

---

## ドキュメント

左側のサイドバーメニュー、または以下のリンクから詳細な使い方を参照してください。

- [クイックスタート](ja/quickstart.md)
- [基本的な使い方 (ログイン・テスト・提出)](ja/usage.md)
- [表示言語とプログラミング言語の設定](ja/languages.md)
- [テンプレートのカスタマイズ](ja/templates.md)
- [環境診断・自動セットアップ・コードのバンドル](ja/tools.md)
- [設定ファイルの解説 (settings.json & 環境変数)](ja/configuration.md)
- [トラブルシューティング](ja/troubleshooting.md)
- [システム内部仕様](ja/internals.md)
