uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

なぜJVM上のスクリプト言語が必要か

理由を3つ上げてみます。

  • (1)Javaに欠けている、「実行時(運用時)に変化する部分の記述」機能のため。従来はXMLで実現されてきましたが、XMLは基本的に可読性も低劣だし、木構造以外を表現できないため表現力に劣ります。コンパイルレスでそこらへんの可変部部分を記述する仕組みが必要だからです。
  • (2)「高生産性」。言語の動的性質を利用して、動的ロードすることでターンアンドを減少させたり、記述量を減らしたり、トライアンドエラーをしやすくします。ここでの生産性は、「ある意味での生産性」であり、開発において総合的に勘案すべきさまざまなファクターの一つとしての「生産性」なので、一般的に常に有用だという意味ではありません。
  • (3)抽象度の異なる記述を異なる抽象度の言語で区別して記述するため。このようにしたい理由は、高レベルの範囲に閉じた改善やレビューや修正を適切なレベルに閉じた形で見通しよく行いためです。ワークフローエンジンの存在意義も同じ。UMLを使用するのもまさに同じ理由からです。

もちろん、これらのファクターが1つだったり複数同時に関係してくる例もあるでしょう。

これらの要求が、従来のJavaの開発で不足していて追加的に求められているからこそ、これらがJVM上で動くことに意味があるのです。従来のスタイルに欠けている点を補足的に利点を得るために、従来コードとの連動が死活的に重要だからです。

なお、一般には上の(2)あたりが着目されるようですが、(2)は状況に左右される面が大きくて、デメリットとの総合で考えると、説得力はさほど大きくないと言っていいでしょう。

正しさの質・量、汎用性から言って、また、世間から過小評価されているような気がして、この記事では「(3)が重要」だと強調しておきます。

なお、(1)は卑近過ぎて、自明すぎて、あんまり主張する甲斐も無いのですが、やっぱり重要です。