2019の20日目として書かれました。競技プログラミング勢は、コーディングの際のツールを使いこなしている人とそうでない人の差が大きいイメージがあります。昔ICPCのチームメイトがメモ帳でプログラミングをしていた話を思い出し、そういった人の助けに少しでもなればいいなと思いこの記事を書きました。競プロには様々な向き合い方があり、こういうツールを必ず導入するべきだとはもちろん思っていません。強い人でも全く使っていない人もいるので自分の好きなスタイルでやっていくのが一番だと思います。ソースコードをペースト→提出の流れを毎回繰り返していて面倒くさいと思っている人です。Runnerのショートカットの設定まででもやれば効率が大きく上がると思います。使用言語はC++でMac環境を想定して書かれていますが、WindowsでもWSLを使えばほぼ同じことができるはずです。インストール公式サイトからインストールしましょう。Caskを使うとコマンドラインだけでインストールすることもできるので便利です)拡張機能・設定まず、拡張機能を2つインストールしてその設定をしていきましょう。C++のシンタックスハイライトなどをしてくれます。ソースコードがショートカットで実行できるようになります。Runnerの設定をします。Code->Preferences->Settingsを開いてsettings.jsonを編集しましょう。Runnerの設定ができました。次にショートカットの設定をします。Shortcutsからkeybindings.jsonを編集しましょう。Runnerでコードが実行されるようになりました。ここまで設定すれば競技プログラミングをするにあたって最低限の環境が構築できたと言っていいでしょう。あとは、自分で試行錯誤しながら他の拡張機能なども入れてみると良いかもしれません。自分はVimを入れています。その他の設定も使いながら自分の好きなように変えていくと良いと思います。参考までに、自分の設定の中で競プロ用に使っているものを載せておきます。true,}ちなみにVSCodeではグローバルの設定とプロジェクト内のみに反映されるローカルの設定をすることができ、今回設定したのはグローバルのものです。VSCodeはjsonファイルとGUIの両方で設定を変更することができます。設定をバージョン管理できたり新しく環境構築する際にラクといった点から、jsonファイルを使うのが良いと思います。true,}を設定すると保存時に自動でフォーマットしてくれるようになります。.clang-formatという設定ファイルをプロジェクト内に置いておくことでスタイルを変更することもできます。自分は以下の設定で使っています。false---コーディング中にフォーマットについて脳のリソースを割かなくて済むスタイルを変えたときにライブラリなどを一括で変更できる他人のライブラリなどを貼り付けるときにスタイルを自分のものに合わせられるなどがフォーマッタを使うメリットだと思います。競プロ界隈はフォーマッタを使用している人が少ないイメージがあるので、ぜひ皆さん使っていきましょう。スニペット作成VSCodeには、自分でkeyとして設定したワードをタイプしたときに、対応するコード片を貼り付けてくれるというスニペット機能があります。これを使うには独自のjsonファイルを作成しなければならず、ライブラリをこのように管理していると同期が取りづらいというデメリットがあります。そのためテキストファイルがたくさん入ったディレクトリからスニペットを作成するスクリプトを書きました。https://github.com/knshnb/vscode_snippet_generatorスニペット化したいファイルの入ったディレクトリに対して実行することで、cpp.jsonが出力されます。Snippetsから設定することで、自分が普段から管理しているライブラリなどのスニペットが使えるようになります。競プロ用ツールの導入AtCoderとCodeforcesでサンプルの自動テスト・提出ができるようにします。Toolsを導入します。atcoder-toolsでインストールして~/.atcodertools.tomlに設定を保存してください。これでatcoder-toolsのコマンドが使えるようになりました。submitのコマンドをtaskとして登録してショートカットで呼び出せるようにしましょう。.'などと書いておきましょう。id}のコマンドを呼んだときに自動でプロジェクト内でtaskが設定されるようになります。},]を追加しましょう。サンプルテストが成功したら自動提出が行われるようになります。CodeforcesCodeforces用にはこちらのツールを使います。バイナリをダウンロードするのが楽だと思います。]}が新しいプロジェクトごとにコピーされるようにしましょう。Toolsのexec_on_contest_dirのような機能がなかったので、自分は以下のようなシェルスクリプトを使っています。.これで、このシェルスクリプトで作成したプロジェクト内で、さきほどkeybindings.jsonで設定したショートカットが同じように使えるようになりました。submitの仕様が異なり、cf-toolでははsubmitの際にtestが行われないことに注意してください。以上で、ショートカットのみでサンプル自動テスト→提出ができるようになりました。競技プログラミングをやっていると何度も行う作業なので、1度設定すると捗ると思います。終わりにお疲れさまでした。自動テストツールなどを作ってくださっている方には感謝しています。便利になる方法などがあればtwitterで教えていただけると助かります。