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

私に教えられることなら

DenLispとDen供養

イメージベースっぽくブラウザ上で開発したいんじゃい、と今年6月ぐらいからLisp方言処理系の「DenLisp」を作り、更にSmalltalk風言語でイチから書きなおした「Den」を、ちょっとした仕事や日常のツールに便利に使っていた。

しかし段々と、この方針は上手く行かないのではという疑念が強まっていき、昨日パッと「アッもうだめだ」と悟ったので、理由などをここに簡単にメモして供養とする。

Denはgithubに置いている。多分この記事が消えるときに消すと思う。

github.com

(DenLispの方はもしかしたら最新版はこの世に存在しないかもしれない……)

たぶんWorse Is Better

編集→ビルド→実行・確認→編集 のループに時間がかかるとイライラするので、ブラウザで開発し、機能などの変更をその場で確認したいというのが最初の動機だった。

ある程度、色や遷移などを確認しながら同一画面でコードを編集していくことは達成できた。しかし、状態の管理場所を変更したり、URLなどページ毎に確認する必要があるものを変更すると、結局アプリケーションやIDE全体を更新することになった。マウスで操作する必要があるので、確認にかかるストレスは大して変わらなかった。

なんで最初の動機が生まれたかというと、もっと粘土をこねくり回すようにコードを書きたいと思ったから。目の前にあるものを、少しずつ形を整えていくのが自然なものづくりで、だから楽しいのだと思っていた。

でも冷静になって考えてみると、例えば紙飛行機を作って飛ばしてみるだとか、作曲して一回通して弾いてみるとか、編集→確認のループが必要な創作活動はいくらでもある。そして、それぞれの試行が独立だからこその便利さを痛感することが何度もあった。

それと、アンチフラジャイルに強く影響を受けてものごとの脆さ・反脆さを意識するようになったので、ファイルベースの反脆さに気づき、一周して好きになってしまった。Worse Is Betterに戻ってきた。好き嫌いでやってきたので、好き嫌いが変わったら行動も変えましょう。

などなど。言葉にできない部分も大きくて、それは言葉にする必要が無かったり、言葉にしようとしてしまうと不満が残りそうなので、ここでやめておく。

やってよかったこと・わかったこと

  • snabbdomを2つの言語で移植したのでかなりVirtualDOMの理解が深まった。もうソラで書けると思う。snabbdomベースのVueの動作もめちゃくちゃ良くわかった。
  • DenはSmalltalk風の方言だけど、St80のifTrue:とかは正直読みにくいしダサいと思ってたので、if文とloop文を導入した。結果的にものすごく読みやすくて大当たりだった。あとletも。
  • メソッド単位の編集はやっぱりかなり楽。インデントレベルが最低でも1減るから?
  • テンプレート文字列(ES6のやつ)と、それを直に書けるテンプレートメソッドの導入はものすごく便利だった。
  • とにかく異常な量のコードを書いたのでとても自信がついた

今後

なんかやる前とだいぶん価値観が変わってしまった(これはアンチフラジャイルのせい)。前はプログラミング言語を構成する概念や構文の、一貫性・シンプルさ・美しさをとても大事だと思ってたんだけど、180度変わって、そういったことが好きになれなくなった。人工的な、コンクリートの壁で囲まれた部屋みたいな印象を受ける。

手段にこだわらず、とにかくあったら便利だなと思うものをバリバリ書きたい。

ほな、また……。

広告を非表示にする