前にClojureScriptのREPL駆動開発について書いたけど、REPL駆動開発環境自体は別にClojureScriptじゃなくJavaScript向けにもあるんじゃないか、と思ったけどこれが案外見つからない。なのでちょっと試作した。
作るのは別に難しくなくて
webpack-dev-middlewareを使ったdev serverを立ててその横でWebSocketサーバを立てる
ブラウザ側のコードからWebSocketサーバに接続
dev server上からコードを入力、WebSocketでブラウザ側に送ってeval、結果もWebSocketで返す
エディタからコードをdev serverに送るのはSendToREPL VS Code extensionってのがあるのでこれでできる
とやった。
で、ここまで作っておいてなんだが、これってゲーム開発に役立つかしらん。REPLはデータの加工をいろんな関数を使って試していってうまく行ったパターンをソースコードに落とす、みたいな使い方が普通だと思う。けどゲームにおいては1/60秒ごとのフレームでどんどん更新されるデータが検証対象であって、この関数を適用すると次はどうなる、みたいな確認を単体で行ってもあまり意味が無いことが多い。
結局複数フレームでの更新を追う必要があるのであれば、REPLじゃなくて十分に速いライブリロードがあって、ソースコードを変更するたびにすぐにその動作を確認できれば十分じゃないか、という気がしている。これは関数型言語とかの他の言語を使ったとしてもあまり変わらないんじゃないかと。
なにかゲーム開発でREPLをこう活用していますというベストプラクティスがどこかに落ちてないかしらん。