初心者向け?実践プログラミング環境

最近知り合いにプログラミングを教える機会がちょいちょいあるので適当にまとめておく。
僕自身が趣味プログラマーなのでなんとなくって感じ。
あとは個人的にプログラミングの勉強でお金を使ったことがない人なのでとりあえず無料な範囲でまとめてます。

# 学習サイトなど
まずはここから
## [Progate](https://prog-8.com/)
動作環境: ブラウザ/スマートフォン
対応言語: Go, HTML&CSS, Java, JavaScript, PHP, Python(3), Ruby, SQL, Swift

スマホっていう媒体の上で最大限に入力しやすい環境を備えた実践型練習環境。
PC上でも動作を確認しながら実践練習できるのでかなり有用。
「スライド」を使ったレッスン内容の再確認も容易。
その代わり、無料で勉強できる範囲はかなり狭め。
例えば、スマホ版JavaScriptではif文、switch文までしか勉強できず、ループ処理や配列などの内容は勉強できない(PC版でもループ構文まで)。
なんとなくの雰囲気を掴むには最も効果的な気がする。

## [paizaラーニング](https://paiza.jp/works/)
動作環境: ブラウザ
対応言語: C, C#, HTML, Java, JavaScript, SQL, PHP, Python(3), Ruby

Progateに近い感じの実践型練習環境。
レッスン内容の解説は動画で行ってくれる。
人のよっては動画のノリが苦手な人もいるかもしれない。
無料でできる範囲は言語ごとにムラがあり、
C、C#、Python3では全編完全無料で学べる(2019/6/27現在)。
JavaScriptの例ではループ(whileのみ、forは配列処理と同時に学ぶっぽい)とNode.jsの標準入力、配列初歩の初歩までが無料の範囲となっている。
ちなみに、スマホでは開くのに狭すぎて辛いと思う。

## [CODEPREP](https://codeprep.jp/)
動作環境: ブラウザ
対応言語: Bootstrap, CSS, HTML, Java, JavaScript, PHP, Python(3), Ruby, Rust, Scala, jQuery

虫食いのプログラムを自分で補完して実践練習する。
用意されている全部のレッスンが無料で利用できることが一番の目玉。
スマホ上でも少し狭いけどギリギリ動かせる…かな。
ちなみにProgateのスライドやpaizaの動画といったような学習資料がなく、資料は薄めなので他と合わせたり検索で情報を探したりって必要は出るかもしれない。

## [ドットインストール](https://dotinstall.com/)
動作環境: ブラウザ
対応言語: いろいろ

講義っぽい感じで淡々と動画で学習する。
プログラムの動作環境は自分で用意する必要があり。

## [魔法言語 リリカル☆Lisp](http://lyrical.bugyo.tk/)
動作環境: Windows
対応言語: Scheme?

概念を勉強する形のツールなのでこの中に混ぜた。
文章を読んだ後にツール上で実践という形でLISPとは何か、を勉強する。
[マンガで分かるLisp](http://lambda.bugyo.tk/cdr/mwl/)も合わせてなんとなくLISPを知るにはいいかも。

# オンラインコンパイラ
動作をたしかめる
## [Dcoder](https://dcoder.tech/)
動作環境: スマートフォン
対応言語: Brainf*ck, C, C#, C++, CSS, Clojure, Common Lisp, D, Elixir, Erlang, F#, Go, Groovy, HTML, Haskell, Java, JavaScript(Node.js), Kotlin, Lua, NASM, Objective-C, Pascal, Perl, Prolog, Python(2,3) PHP, R, Ruby, Rust, Scala, Scheme, Swift, Tcl, VB.Net

スマホで使えるオンラインコンパイラ。
どこでも気軽にスマホで試せる環境として優秀。
対応言語の豊富さが凄まじい。
このラインナップならCOBOLとかFortranとかBASICがいてもいいのではと思わないでもない。
あとはVB.Netはvbncという古い実装が使われているので[他のコンパイラ](https://play.google.com/store/apps/details?id=com.krazeapps.vbnetprogrammingcompiler)を使った方が良い。
ちなみに競技プログラミングを行うこともできるようだ(ただし全部英語)。

## [paiza.IO](https://paiza.io/)
動作環境: ブラウザ
対応言語: Bash, C, C++, C#, Clojure, Cobol, CoffeeScript, D, Elixir, Erlang, F#, Go, Haskell, Java, JavaScript(Node.js), Kotlin, MySQL, Objective-C, Perl, PHP, Python(2, 3), R, Ruby, Rust, Scala, Scheme, Swift, VB.Net

paizaが運用している日本製オンラインコンパイラ。
アカウント作っていれば勝手にサクサクプログラムが保存されるのが魅力。
(ゴミプログラムが溜まっていることも…)
VBはvbncなので他のオンラインコンパイラを使うことを推奨。

## [.NET Fiddle](https://dotnetfiddle.net/)
動作環境: ブラウザ
対応言語: C#, VB.Net, F#

.Net言語に絞って運用されるオンラインコンパイラ。
オンラインコンパイラでは珍しく、Windows機がサーバーになっている模様。
VBがスクリプト風に入力できたり、(あまり知らないけど)ASP.Net MVCってやつも動かせる。

## [Rextester](https://rextester.com/)
動作環境: ブラウザ
対応言語: Ada, Bash, C++, C, Common Lisp, D, Elixir, Erlang, F#, Fortran, Go, Haskell, Java, Javascript(Node.js, SpiderMonkey), Kotlin, Lua, NASM, Objective-C, Ocaml, Octave, Pascal, Perl, PHP, Prolog, Python(2, 3), R, Ruby, Scala, Scheme, Swift, Tcl

多数言語で動作するオンラインコンパイラ。
元々は.Net用サービスとして立ち上げた経緯があるようでVC++, C#, VBはWindows機で動作する(F#はLinux)。
.NetのWindows環境は.NET Fiddleがあるけど、VC++があるのは珍しいのではないだろうか。
C++は他にもGCCとClangも対応する。

## [codeground](http://www.tutorialspoint.com/codingground.htm)
動作環境: ブラウザ
対応言語: AWK, Ada, Algol, BASIC, Bash, Befunge, Brainf*ck, C, C#, C++, Clojure, COBOL, ColdFusion, D, Dart, Elixir, Embedded C, Erlang, F#, Factor, Falcon, Fantom, Forth, Fortran, Free Basic, GO, Groovy, Haskell, Haxe, ICON, ILAsm, INTERCAL, Java, JavaScript(Node.js), Julia, Jython, Kotlin, Ksh, LOLCODE, Lisp, Lua, Malbolge, Octave, Mozart/OZ, NASM, Nimrod, OCaml, Objective-C, PARI/GP, PHP, Pascal, Pawn, Perl, Pike, Prolog, Python(2, 3), R, Rexx, Ruby, Rust, Standard ML, SQL, Scala, Scheme, Simula, Smalltalk, Swift, Tcl, Unlambda, VB.Net, Verilog, Whitespace, Yasm, 

なんかすごい多くの言語を対応しているオンラインコンパイラ。
Algolみたいな歴史上でしか語られない珍しい言語もある。
VBはvbncなので他のオンラインコンパイラを使うことを推奨。

## [ideone.com](https://ideone.com/)
動作環境: ブラウザ
対応言語: AWK, AWK, Ada95, Assembler 64bit, BC, Bash, Brainf**k, C, C#, C++, C99, Clips, Clojure, COBOL, CoffeeScript, Common Lisp, D, Dart, Elixir, Erlang, F#, Fantom, Forth, Fortran, GNU アセンブラ, Go, Gosu, Groovy, Haskell, Icon, Java, JavaScript(Node.js, SpiderMonkey), Kotlin, Lua, NASM, Nemerle, Nice, Nim, Node.js, Objective-C, Ocaml, Octave, PHP, Pascal, Perl(5, 6), Pico Lisp, Pike, Prolog, Python(2, 3), R, Racket, Ruby, Rust, SQLite, Scala, Scheme, Smalltalk, Swift, TCL, Text, Unlambda, VB.net, Whitespace

codeground程じゃないにしてもかなり多くの言語を対応したオンラインコンパイラ。
1つの言語でも処理系を選択できる言語が多い。
例えばCommon LispでもCLISPだけでなくSBCLが選択できるようになっている。

## [TypeScript playground](https://www.typescriptlang.org/play/)
動作環境: ブラウザ
対応言語: TypeScript

オンライントランスパイラ。
TypeScriptをオンライン上でJavaScriptに変換できる。

## [HSP部屋](http://hsproom.me/)
動作環境: ブラウザ
対応言語: HSP3(HSP3Dish)

ブラウザ上でHSP3を書いて投稿できるサイト。
HSP3のソースコードをオンライン上でコンパイルして動作させることができる。

# ローカル環境
本格的にべんきょうするとき
## [Visual Studio 2019](https://visualstudio.microsoft.com/ja/vs/)
動作環境: Windows, Mac
対応言語: C++, C#, VB.Net, F#, JavaScript(Node.js), TypeScript, Python(3)

天下のMicrosoftによる統合開発環境。
Windowsならとりあえず入れといて問題ないのじゃないでしょうか。
これ一つで多数の言語を扱うための環境が整う。
エディションはCommunity、Professional、Enterpriseの3種類があるが、
個人開発および中小企業であれば無料で使用できる。

## [HSP3](http://hsp.tv/)
動作環境: Windows(, Linux)
対応言語: HSP3

ホビー言語、HSPで開発する。
エディタに充実したヘルプとファイルを1つインストールするだけで開発に必要な環境が整う。
初めてのプログラミングならHSPという選択も有りなののでは?と僕は思う。
ただ、ホビー言語だけあって仕事で使える機会は相当限られる。
(本職プログラマには逆にマイナーな感じもありそう)

## [Mery](https://www.haijin-boys.com/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8)
動作環境: Windows
対応言語: なんでも

僕の愛用する軽快なタブ式テキストエディタ。
プログラミングやるなら何でもいいのでしっかりしたテキストエディタは持つべき。
シンタックスハイライトを手軽に追加したりできるのも魅力。
宣伝っぽくなるけどマクロの[拡張子からコンソール実行](https://www.haijin-boys.com/wiki/%E6%8B%A1%E5%BC%B5%E5%AD%90%E3%81%8B%E3%82%89%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E5%AE%9F%E8%A1%8C)とか使うとエディタだけでプログラムのコンパイルとか実行ができてすごく捗る。

## [Gerny](https://www.geany.org/)
動作環境: Linux[, macOS, Windows]
対応言語: いろいろ

クロスプラットフォームで動く軽量統合開発環境。
ほぼテキストエディタ。
かなり多くの言語での開発を網羅している。
Linux日本語環境だと[Preedit Tweak](https://github.com/chu-hai/preedit_tweak)っていうのを入れておくと結構よさげ。

## [Nodist](https://github.com/nullivex/nodist/releases)
動作環境: Windows
対応言語: JavaScript(Node.js)

Node.jsのバージョン管理ツール。
Node.jsをアップデートするのがとても楽なので公式のインストーラーを落としてくるよりもよさげ。
なお、Windows 32bit環境だと0.9.0以降は動かないので注意。
0.8.8を落とすこと。

## [Anaconda](https://www.anaconda.com/distribution/#download-section)
動作環境: Windows
対応言語: Python(2, 3)

Pythonでよく使うライブラリをPython環境と一緒にインストールしてくれるパッケージ管理ツール。
ただインストール量が多いので気になる人は[Miniconda](https://docs.conda.io/en/latest/miniconda.html)の方がいいかも。
(各ライブラリは手動で入れる必要がある)

# モバイル環境(ローカル)
おまけ　モバイルならDcoderあればじゅうぶん
## [モバイル C](https://play.google.com/store/apps/details?id=com.dztall.ccr.android.admob)
動作環境: Android
対応言語: C, C++

C, C++のモバイル環境。
日本語キーボードが封じられるため日本語の入力はできない。

## [C# Shell](https://play.google.com/store/apps/details?id=com.radinc.csharpshell)
動作環境: Android
対応言語: C#

C#のモバイル環境。
日本語は変換できない。

## [JS Run](https://play.google.com/store/apps/details?id=com.mia.jsrun)
動作環境: Android
対応言語: JavaScript

JavaScriptののモバイル環境。

## [Dory](https://play.google.com/store/apps/details?id=io.tempage.dorynode)
動作環境: Android
対応言語: JavaScript(Node.js)

Node.jsのモバイル環境。
REPLも使える。
文字が小さい。

## [QPython3](https://play.google.com/store/apps/details?id=org.qpython.qpy3)
動作環境: Android
対応言語: Python(3)

Pythonのモバイル環境。
REPLも使える。

## [CL REPL](https://play.google.com/store/apps/details?id=org.eql5.android.repl)
動作環境: Android
対応言語: Common Lisp

Common Lispのモバイル環境。
REPLとコーディングが両方できる。
括弧がたまに狂う。
日本語の変換はできない。

## [Schemoid](https://play.google.com/store/apps/details?id=magicgoose.schemoid&hl=ja)
動作環境: Android
対応言語: Scheme

Schemeのモバイル環境。
REPLのみ。
日本語の変換はできない。

## [Replete](https://play.google.com/store/apps/details?id=com.fikesfarm.Replete)
動作環境: Android
対応言語: Clojure(ClojureScript)

Clojureのモバイル環境。
REPLのみ。
日本語の変換はできない。

# あとがき
文章作っていると内容無駄に盛りがちなのが悪い癖。
まとめだからいいのか。