オンラインで Web アプリの開発・共有ができる Replit についてまとめています。

旧称は Repl.it、ドメインも repl.it を採用していましたが、
2021年3月よりサービス名称が代わり、ドメイン名も replit.com になっています。

従って Repl.it と表記しているブログなどは情報が古い可能性があります。

目次


公式サイト


特徴

Replit の Repl(REPL)は Read Eval Print Loop で
入力・評価・出力を繰り返し行う環境の事です。

様々なプログラミング言語を Repl として
Web ブラウザ上で編集し、実行できます。
Web ブラウザ出力ができる環境ではホスティングとして公開でき、
独自ドメインも設定できます。

2021年5月現在で、次のプログラミング言語に対応しています。

  • APL
  •  Bash
  •  BASIC
  • Bloop
  • BrainF
  • C
  • C++
  • C#
  • Clojure
  • CoffeeScript
  • Crystal
  • Dart
  • Deno
  • Elixir
  • Emacs Lisp (Elisp)
  • Erlang
  • Emoticon
  • F#
  • Forth
  • Go
  • Haskell
  •  HTML, CSS, JS
  • Java
  • JavaScript
  • JavaSwing
  • Jutia
  • Kaboom
  • Kotlin
  • LOLCODE
  • Love2D
  • Lua
  • Nim
  • Node.js
  • PHP CLI
  •  PHP Web Server
  • Roy
  • Pygame
  • Python
  • Python (with Turtle)
  • Pyxel
  • QBasic
  • R
  • Raku
  • Reason Node.js
  • Ruby
  • Rust
  • Scala
  • Scheme
  • SQLite
  • Swift
  • Tcl
  • TypeScript
  • Unlambda

 Pricing | Replit

無料で使用できます。無料プラン Starter は次の割り当てです。

  • ストレージ容量: 500MB(0.5GB)
  • メモリ容量: 500MB(0.5GB)
  • 仮想CPU: 0.2~0.5 相当
  • 複数人で共同作業が可能

ストレージ容量が少なく、読み込みに時間を要するので、
直接動作に関係ない画像などは外部サービスを用いた方が良いでしょう。

個人向けだと有料プラン Hacker があります。(月 $7)
上記容量・CPU 割り当てが増加し、動的 Repl の常時動作が可能です。


認証連携

次の認証連携に対応しています。

  • GitHub
  • Google
  • Facebook

Repl と GitHub プロジェクトとの連携機能もあるので、
GitHub を使っているなら GitHub の連携が良いでしょう。


プログラミング言語

Repl を作成した時に最初から存在しているファイルは
通常 Run で読み込まれるファイルになります。

Bash

Run で最初から存在する main.sh を実行します。
ファイルを整えた上で、特定のコマンドを実行する前提の場合は便利に使えます。

curl や git が使用可能です。コンソールとシェルがあるので、
バリナリーファイルをダウンロードしての実行も可能ですし、
http サーバをダウンロードして起動すれば、URL 参照できるようになります。

BASIC

 amasad/pg-basic | GitHub

pg-basic です。Replit 上で動作する専用の BASIC 環境と考えて良いでしょう。
昔ながらの行番号付き BASIC を入力・実行できます。(行番号省略も可能)

テキスト出力を行うコンソール以外に
50✕50 ピクセル(ドット)の専用グラフィック領域があります。
このグラフィック領域は pg-basic 独自の表示です。

 Classic Basic on Replit | Replit Docs

独特の仕様が存在します。BASIC の経験がない人が作った感じがします。

日本語は表示できますが、コマンドによって意図しない動作をするでしょう。

 https://github.com/amasad/pg-basic/commit/5774f8e43079e3013559035c167256e590cb3941

2021年5月現在、FOR・NEXT の終了値(TO の後)が一致した場合の
処理が行われない不具合があります。
FOR I=1 TO 5 とした場合、ループする I の値は 1 2 3 4 となり、
5 が行われません。回避手段は例えば小数を付与します。FOR I=1 TO 5.1
ソースレベルでは修正済みなので、Replit への反映待ち状態です。

HTML, CSS, JS

Run のデフォルトは index.html が読み込まれます。
それ以外に空の style.css と script.js が生成されていますが、
不要な場合は削除できます。

Not Found の任意ファイル表示は考慮されていません。
Not Found は必ず Replit 用意の固定表示になります。
他のプログラミング言語で対応する必要があります。

Run は公開 URL の表示を更新します。
完全な静的ファイルなので、Repl がある限りは公開されたままになります。

PHP Web Server

 ビルトインウェブサーバー | PHP
🎈 PHP ビルドイン Web サーバー | ふうせん🎈 FU-SEN

デフォルトでは次のコマンドを用いて
PHP ビルトイン Web サーバー で動作します。

php -S 0.0.0.0:8000 -t .

したがって、ファイルが存在しない場合(Not Found)も
最初から生成されている index.php が参照される仕様です。
Not Found の考慮なども index.php で処理する必要があります。

PHP は OS パッケージがそのまま動作しています。そのためバージョンは古いです。
2021年5月現在 PHP 7.2 となっています。
ただし OS パッケージなので、セキュリティメンテナンスは行われていますが、
OS そのものの期限が発生した時はその後更新されない点で注意を要します。

特に PHP を探索している参照は絶えず、悪用される可能性が高いです。
意図しない参照があっても拒否できるようにしたり、
不要ならば Repl を削除して、少しでも動作しないように考慮すると良いでしょう。

一方 PHP は最初から拡張モジュールが存在しているため、
他の言語のようにパッケージのダウンロードが発生する事がなく、
起動がはやいメリットがあります。

`mysqli や mbstring など、拡張モジュールとして入っていないものが多いので、
動作しない場合コードも比較的多くなる可能性がある事にご注意下さい。

Python

python3 pip3 など、Python 3 の実行ファイルは 3 付になっています。

サイドバーの Package からインストールできますが、時間を要しまので、
.replit ファイルや Bash 環境の main.sh を用いて
Run した時に pip install しても良さそうです。


データベース

 Replit Database | Replit Docs

KVS(Key-Value Store)型のデータベースです。
Repl 毎にデータベースアクセス用の URL が存在し、
URL 参照手段を用いて追加・更新、リスト表示、削除が行えます。

URL は定期的に変更されるので、環境変数 REPLIT_DB_URL で得て下さい。

データベース固有の制限は Repl 毎に次のとおりです。

  • データベース容量: 50MB
  • キーの数: 5000 キー
  • キーの長さ: 1000 バイト
  • 値の長さ: 5MB

Repl の公開

Web ブラウザ上に出力できるプログラミング環境は、
次のアドレスが割り当てられ、共有できます。
無料プラン Starter では必ず Public で公開状態になります
他の誰かから参照・実行される前提で Repl を作成して下さい。

https://REPL名.ユーザー名.repl.co

Repl 名が ユーザー名 と同じ場合は、ユーザーの Web 扱いになり、
次のアドレスで公開されます。

https://ユーザー名.repl.co

また、出力結果とソースの表示は次の URL で共有できます。
この URL もログインせずに参照ができます。(専用表示になります)

https://replit.com/@ユーザー名/REPL名

公開 URL は 🎈 Let’s Encrypt を発行し、常時 SSL 化されます。
http では参照できません。

Repl 名は変更ができます。(編集画面の ユーザー名 / Repl 名 部分をクリック)
ただし URL への反映は時間を要します。共通する場合は注意を要します。

編集画面右上の Web ブラウザ表示で、URL の右にある から
独自ドメインを設定する事ができます。
ドメイン名を入力すると 🎈 CNAME レコード の値が表示されるので、
対象ドメインの 🎈 ネームサーバ にこの CNAME レコードを設定して下さい。


Q&A

公開時の http サーバを起動するポート番号は?

3000 8000 8080 を使用できます。
環境変数 PORT には入っていないようなので、直接ポート番号で起動します。

これは Repl を起動した段階で Web 参照が発生しない環境でも有効で、
http サーバが動作したところで、右上に Web ブラウザ表示が出るようになります。

パッケージをイントールしても起動できません。

Run の段階や Repl を起動した段階でなくなっています。
そのため、Run した段階でインストールして実行する前提で構築する必要があります。

PATH も Run 段階でリセットされます。
必要な場合は実行コマンドに export PATH=~:PATH で追加して下さい。

ユーザー名は変更できますか?

プロフィール画面から edit user profile で一度だけ変更が許可されています。
一度変更すると変更できなくなるので、ユーザー名は慎重に検討して下さい。
ユーザー名は英数のみで、- _ も使用できません。

アカウント変更により .repl.co の公開 URL が変更されますが、
SSL 証明書を発行しなおすため、数時間は表示できなくなります。正常な動作です。

動作コマンドを変更できますか?

 Configuring the “Run” Button | Replit Docs

.replit ファイルを生成し、実行コマンドを指定できます。
起動時のコマンド指定など、細かく設定が可能です。
複数コマンドを実行する必要がある場合は bash main.sh として
main.sh へ実行コマンドを並べるのも良いでしょう。

なお Run でコマンドを実行する前提であれば、
言語を Bash にすると main.sh 実行前提になるので、便利に使えます。