Aikの技術日記

技術的な進捗とか成果とかを細々と投稿するブログです。時々雑記も。

paiza等をやるのにおすすめ環境まとめ

はじめに

こんにちは、筆者です。
最近になってpaizaやAIZU ONLINE JUDGEのコードを書くのにちょっとはまりだしています。

paiza.jp judge.u-aizu.ac.jp

筆者は基本的に「コードを書く」よりも「モノづくりをする」方が好きなのですが…。
モノづくりには非常に時間も労力もかかりますからね。
その点、paizaやAIZU ONLINE JUDGEは思いついたその日に書いて実行してオワリ!となれるのがとても気楽です。
個人的にはpaizaの方が、ランクも上がるしこなしていく上での達成感が出るので好きだったり…

ただ、意外と大変なのがデバッグ作業。
環境構築やコードの書きやすさから、筆者はRubyを使ってやっているのですが…。

「コードを保存→コンソールを開く→コンソールから該当ディレクトリへ→実行」という作業が非常に億劫で。
何とかこの作業が楽にできないかなと思い、色々調べてみました。

本記事は、その色々調べた内容をまとめたものになります。
それではいきましょう。

調査結果

調べてみた結果、楽に実行するには下記の2通りの方法が使えそうです:

順番に見ていきましょう。

WebIDEを使用

Web上で動作可能なIDEを使用する方法です。
無料で出来るサービスも多く、ブラウザからアクセスするだけで環境が整うので非常にお手軽です。

いろんなサービスがある中で、paiza等をやるにあたっては「paiza.io」が最もやりやすいなと感じました。
paiza.io

※製作ブログはこちら: 24のプログラミング言語がブラウザで即実行できる『paiza.IO』 - paiza開発日誌

対応言語が多い(下記参照)ことと、入力をさっと書ける&出力結果もすぐ見れるのが主要因ですね。

対応言語: C、C++C#JavaRuby、Python2系、Python3系、PHPPerlJavaScriptObjective-CScala、Go、HaskellCoffeeScriptBashErlang、R、COBOLVB、F#、MySQLClojure、Dの24言語に対応
参考記事: 24のプログラミング言語がブラウザで即実行できる『paiza.IO』 - paiza開発日誌

コードの実行のショートカット(Ctrl+Enter)も付いているため、ちょっと書いてさっと実行するサイクルも回しやすいです。
簡単なオートコンプリート機能もついており、サクサクとコードが書けます。

コードの共有機能もついており…。
ちょっとしたコードの共有にも利用できそうです。
((まぁコードの共有に関してなら、もっといいサービスはあるでしょうが…。

筆者もpaiza.ioを使用して問題を解いてみましたが、非常に課題をこなしやすかったです。
paizaの様なオンラインプログラミングコンテスト系のものを行うなら、とてもおすすめだなぁと。

ちょっと脱線しますが…。
paizaの様なコンテンツではなく「Githubリポジトリを直接触りたい!」とかでしたらGitpodがおすすめです。
www.gitpod.io qiita.com

他にも、JavaScriptの実行環境が欲しい場合は下記記事に載っているIDEも良さげです。
特にPLAYCODEはUIも綺麗でおすすめ。
【2017年版】ブラウザ上で使えるJavaScript開発&実行環境Webサービスの厳選まとめ - paiza開発日誌

ただ、今回みたいなさくっとした環境が欲しい程度なら上記のサービスは少し豪華すぎるので…。
やっぱりpaiza.ioの方がいいのかなと思う次第です。

WebIDEの欠点としては「WebIDE側が対応していない言語では出来ない」事でしょうか。
あとは「インターネット環境がないとできない」というのも挙げられるかも。

また「作成したコードがどこかに公開された状態になる」というのも問題かもですね。
例えば…paiza.ioだと、コードを作成した時点でランダムな文字列がくっついた独自のURLが生成されます。

これにより、例えばブラウザを間違えて閉じちゃっても、このURLに飛べば、コードが復元され続きが書ける様になっているっぽいです。
paizaやAIZU ONLINE JUDGEの課題の様な「個人の練習用プログラム」なら全く問題ないですが…。
表にばれちゃまずい内容(Secret KeyとかAccess Tokenとか)を不用意に書くのはよした方がいいかなぁと。

そうでなくとも「自分の書いたコードを誰かに見られる可能性は排除したい!」という場合であれば、後述するVS Code拡張機能を使うのもいいかなと。

VS Code拡張機能を使用

VS Codeで環境構築するなら、Code Runnerという「選択範囲のみを実行してくれる」ツールが便利かなと。
marketplace.visualstudio.com

対応言語は下記の通り。
非常に多くの言語に対応してくれてる上、カスタムコマンドを使えば下記に載っていない言語でも実行できる様になるとか。

C, C++, Java, JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, F# (.NET Core), C# Script, C# (.NET Core), VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, Scheme, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, Nim, D, Lisp, Kit, V, SCSS, Sass, CUDA, Less
参考記事: Code Runner - Visual Studio Marketplace

こちらの記事に使い方等が分かりやすく載っておりましたので載せておきます:
Visual Studio Codeにてコードを実行することができる拡張機能 | ぶろぐち

ただ、paiza.ioの様な入力処理については対応されていないため…。
入力処理を元に色々行っていく課題で行うには、ちょっと工夫が必要かもですね…。
((コード内部にダミーコードを仕込み、そこで疑似的に値を入れちゃうとか

VS Code拡張機能を使うことで、オフラインでの環境が手に入るので…インターネット環境外でもプログラミングができる様になるのが個人的な推しポイントです。
((拡張機能インストール時はインターネット環境が必要ですが

例えば外出中にふとやりたくなった時に、「スマホで問題を見ながら」PCを立ち上げて問題を解く…といった環境が構築できるかなと。
((まぁ今時はテザリングでなんとかなるのかな…。

もちろん、オフライン環境が整えられるものであればAtomでもSublime Textでも何でもいいですが…。
VS Codeの万能っぷりには負けちゃうかなと思う次第です。

もしVS Codeで実践するなら、併せて自分が使用したい言語のAutocompleteやIntelisense系の拡張機能を入れればもっと爆速にコードが書けるかなと。

欠点としては、VS Codeをはじめとした環境構築にちょっと手間がかかるくらいでしょうか。
とはいえ、VS Codeをインストールし拡張機能のインストール をすればいいだけですが…。
WebIDEはブラウザを開き所定のURLを叩けば完了してしまうので、そのレベルの気軽さと比べるとどうしても見劣りするかなぁと思います…。

おわりに

今回は、paizaやAIZU ONLINE JUDGE等のオンラインプログラミングコンテストをやるにあたっておすすめな環境をまとめてみました。

これら環境は、paizaやAIZU ONLINEJUDGEなどのプログラミングコンテスト系へ挑む時以外にも…。
「不具合対応時に使い捨てのコードを作ることになった時」や「小さな関数を作っている時」等に役に立つかなと思います。
((もし大事なデータを使う場合は、WebIDEはよしておいた方が良さそうですね

それでは|д゚*)