atcatcはコマンドライン上でAtCoderへの回答の提出などを行うためのツールになります。https://github.com/DuGlaser/atc作ったきっかけ前まではcargo-atcoderというツールが非常に使いやすく、このツールのためにRustで競プロをしていたのですが、いろいろな理由によりC++で競プロをしたくなりました。今まで使っていたcargo-atcoderはもちろん使えなくなるので、他のコマンドラインツールを探して試してみたりしたのですが、ちょっと自分の求めているものと違かったりしてモヤモヤしたので自分で1から作ることにしました。して出来上がったのがatcです。文章だけだとイマイチイメージがつかないと思うのでまずは基本的なコマンドの紹介をします。newnewコマンドはコンテスト用のディレクトリを作成するためのコマンドになります。abc001のように実行することで指定したコンテスト用のディレクトリを作成します。上の例ではabc001コンテスト用のディレクトリを作成しています。コマンドを実行するとabc001という名前のディレクトリが作成され、以下のような構成になります。files私はC++を使いたいのでmain.cppを作成するようにしていますが、これはatcの設定で変えられるようにしています。作成されるmain.cppには予め設定で指定したテンプレートを書き込むようにしています。testtestコマンドは特定の問題のテストケースを実行し、期待している出力と同じかどうかを判定するコマンドになります。submitsubmitコマンドは特定の問題の回答を提出するコマンドになります。デフォルトではテストケースがすべて通ったときのみ提出するようにしています。他にもいくつかコマンドがあります。詳しくはhelpで確認できます。command.こだわりショートカットを用意してるいちいちコンテスト中にsubmitやtestと打つのがめんどくさいので、sやtなどのように頭文字をサブコマンドに割り当てていたりします。特定の言語に依存していないatcは.atc.tomlで設定を行うことができます。以下は私の設定になります。{}"""このようにruncmdやbuildcmdなどを設定できるようにしているため様々な言語で使うことができます。詳しくはREADMEをご覧ください。さいごに割とノリと勢いで作った割には便利で周りの友人も使ってくれていたりして結構嬉しい。