60以上の言語が使用可能なブラウザ実行型IDE - Repl.it

ブラウザ実行型の環境、便利ですよね。
フロントエンドに特化したものだとCodePenなんかが有名ですが、 その他の言語でも同様にブラウザ実行できる実行環境があると教育用や共有の際に便利かと思います。

今回紹介するRepl.itは、リアルタイム編集機能が付いたブラウザ実行可能なIDEとなっています。
まずはこちらの動画を見て頂くのがよいでしょう。

Repl.itのREPLという名前は、「Read-Eval-Print-Loop」を表す頭字語REPLに由来しています。
Codecademyの創設エンジニア(AmjadMasad氏)がCEOだそうで、Google Cloud for Startupsと提携して開発されています。月間100万人のアクティブユーザーがいるとかなんとか。

VSCodeに使用されているMonaco Editorがベースとなっており、使用する際はコードを実行できる仮想マシン上のコンテナが提供されます。どのReplにも、エディターとコンソールの2つのセクションがあります。

特徴

主な特徴としては下記になるかと思います。
特に3番目のGitHub連携が強力だと感じました。連携と一言にいってもその使いやすさはピンキリですが、Repl.itはかなりストレスなく連携されているように感じました。

  1. ブラウザ上で動作する統合開発環境(IDE)
  2. リアルタイム編集機能
  3. GitHubとの連携機能
  4. 60言語以上のプログラミング言語をサポート
  5. 作成したスクリプトをサーバ上でホスト可能

使ってみたい

公式ドキュメント上でQuick Start Guideが公開されているのでザーッと読んでみてください。
Repl.itであれこれするためのチュートリアルも大量に公開されています。

良さげな機能たち

個人的にグッときた機能たちを紹介していきます。

ブログに貼れる

repl.it

これがめちゃ良い。
ブラウザ実行型なので、貼っても実行可能です。

ただ現状iframe化した際に表示するスクリプトは選べず、main.py > アルファベット順で若い順に並べた際に最も手前となるファイルが表示となってしまうようです。

参考:How to choose which file displays when embedding?

Repl.itからGitHubレポジトリが作成可能

Repl.itからGitHub上にレポジトリが作成できます。
わざわざレポジトリ作成しにGitHubに行かなくて済みます。

Githubレポジトリからclone可能

逆にGitHub上のレポジトリからRepl.it上にcloneしてくることもできます。

ダークモード・Vimキーバインディングが使える

ダークモードだったり、Vim、Emacsのキーバインドをサポートしています。
嬉しい。

パッケージのインストール

PythonまたはJavaScriptではパッケージ管理ツールが導入されており、GUIベースでパッケージの管理が可能となっています。 Pythonの場合はPoetryが使われていました。

テンプレートの作成

コードの構成などを揃えたテンプレートを作成することができます。
GitHubでもできますが、何かと便利な機能です。

デフォルトでもDjangoReactでhttpサーバをホストするためのテンプレートが使用できます。
このテンプレートから構築することで、一般的なディレクトリ構成を抑えたうえでWEB開発が行えるわけですね。

Tutrials

Kaggleのnotebooksに近い書かれっぷりで各言語の主中級者向けのコンテンツが公開されています。
もはや有料の書籍など購入する必要はなくなってきてますね。

良さげだったチュートリアルたち。

どんな用途にオススメか

やはり教育用に使用するのが最適かと思いました。面倒な環境構築が必要なく、何しても問題ないコンテナ型実行環境が提供できることは教える側としても教えられる側としてもメリットが大きいでしょう。
もはやVSCodeのインストールなんかも講義で扱う必要がなくなるわけですね。

日本の大学でもRepl.itを取り入れている講座もあるようです(参考:慶應義塾大学理工学部生命情報学科「バイオプログラミング第1」

また、ブログなどでコードスニペットを共有する際にも大変有用なのではないでしょうか。
自分はブログにコードの実行例を記載する際に使用させて頂こうと思いました。

逆に本格的なWEBアプリをここでにホストして運用、とかはさすがに難しいかと。

若干動作が遅いこと、細かい設定が効かないところが難点ですが、概ね大満足です。今後の発展に期待します!

参考