レガシーコード生産ガイド

私に教えられることなら

ブラウザ上で完結する動的Lisp環境を作っている

最近やってることで書いた、ブラウザ上で完結する動的Lisp環境の制作記録。

とりあえずできた。

f:id:phaendal:20170624233133p:plain

方言の名前はDenLisp。

作ってるうちに名前空間の量が大変なことになったので、先に気合入れてIDEを整備した。便利になった。

今のところ

  • 自作Lisp方言(Clojure/wisp風)→JavaScriptへのコンパイラ(トランスレータ)
  • ブラウザ上で全てのソースを閲覧・変更できて、全体をビルドしてJavaScriptに書き出せる。自己増殖するイメージ。
  • ある程度LateBindingできている。例えばコンパイラのある関数にバグがあったとき、その関数だけを修正・コンパイルして動作を変更できる。修正はそのまま保存できる。
  • node.jsとExpressを使って簡単に保存できるサーバを書いた。
  • Vue.jsを使って、単一ファイルコンポーネント的なやつを書ける(上の画面はそれで作った)
  • main関数が定義されているモジュールを指定すれば、それに必要なモジュールと併せて最小限のコードを書き出せる。
  • LispLisp環境を操作できる。モジュールやコードを動いているオブジェクトとして自動生成したり。マクロとは別方向のメタプログラミング

などなど達成した。もう完全にブラウザ上のみで開発してます。

で、できたできた言うだけじゃ悲しいので公開したいんだけど、現状では内部構造を知ってないと殆ど使えないので躊躇している。例えば上で環境を操作できると書いたけど、逆に言えばモジュールを作るのにもコードを実行する必要がある。IDEを整備しなければ。

それとace editorの挙動がいまいち気に食わないのと、ライセンス周りがよくわからない。面倒なので調べる気もない。まあエディタも自分で作ります。

さらに全てのソースコードが閲覧・変更できてその場で試せることは絶対に貫きたいこと、LateBindingとイマイチ相性が悪いこと、などからVue.jsも置き換えたい。JSのエコシステムと混ぜる気は一切ない。

よって今後は 仕事で使いまくっていろいろ良くする→vdomと簡単なデータバインディングライブラリ作る→エディタ作る→IDE整備する→ローグライクを作って自分で遊びまくる→ドキュメント書きまくる→公開 となるでしょう。10年後ぐらいかな?物好きな人のためにpreview版をちょくちょく公開しようとは思う、暇があれば……。あとは友人知人に無理やり使わせたい。

広告を非表示にする