LinuxにRexxが必要な理由

RexxはIBMが何年も前に開発したスクリプト言語である。LinuxコミュニティはRexxをほとんど無視してきたが、私はLinuxがWindowsデスクトップに挑むうえで、Rexxが重要な役割を果たす可能性があると考えている。Linuxコミュニティの大半が聞いたこともないような言語が、Linuxのデスクトップへの進出にどのように役立つのだろうか。

いろいろな意味で、Rexxはオープンソースのスクリプト言語の先駆けといえる。Linuxで重要な役割を果たしている多くの言語と同様に、Rexxはフリーで、移植性があり、幅広く利用され、標準化されている。Rexxはハンドヘルドからデスクトップ、サーバからメインフレームに至るまで、どこでも動作する。しかも、有力な国際標準を採用しているので、スクリプトはこれらすべてのプラットフォーム上で動作する。

Rexxのユーザ・コミュニティは世界中に存在し、良質のサポート、何百ものフリーのツール、およびさまざまなプラットフォームと用途に合わせて最適化された9種類のRexxインタープリタを提供している。Rexx関連の書籍、リソース、およびフォーラムは、世界中のさまざまな言葉で提供されている。

だからどうしたと言われるかもしれない。たしかに結構な話だが、PerlやPythonなどの言語と何も変わらないではないかと。

Rexxの特徴は、使いやすさと強力な機能が多くの固有のテクニックを通じて融合されていることだ。RexxがAmiga OSおよびOS/2のスクリプト言語としてバンドルされたのは、習得しやすく使いやすい言語だったからにほかならない。何千人もの開発者やエンドユーザが、これらの往年のデスクトップでRexxを習得し、今でもRexxに愛着を感じている。Rexxには、主要なデスクトップシステムの駆動用言語としての実績がある。

Rexxが20年にわたってメインフレームで主要なスクリプト言語の地位を占めているのは、その強力な機能によるものである。今日に至るまで、メインフレームのオペレーティングシステムでRexxに匹敵するスクリプト言語は登場していない。

Linuxには、デスクトップ・ユーザや日曜プログラマ向けの、習得しやすく使いやすいスクリプト言語が必要である。この言語の要件は、ユーザがすぐに習得できるうえに、上級者になっても不自由しない強力な機能を備えていること。複雑な構文や込み入った言語仕様を使わない、記憶を頼りに記述できるスクリプト言語であること。ITへのLinuxの統合をサポートするために、異なるプラットフォームに幅広く対応し、システム間の互換性を備えた言語であること。そして、優れた国際的なサポートが用意されていることである。

Rexxはこれらの要件を満たしている。

Perlなどの言語は開発者には最適だが、これらのニーズに対応していない。さまざまな利点を持つ強力な言語ではあるが、デスクトップ・ユーザや日曜プログラマにとっての習得のしやすさ、使いやすさ、およびわかりやすさという利点が欠けている。

Pythonは習得が容易である。しかし、初心者や日曜プログラマはオブジェクト指向の考え方を身に付けていない。この考え方は、教えてもらわなければ身に付かない。高校でコンピュータ・サイエンスを教えている友人の話では、初心者はプログラミングの問題を述べた後、それを解決するための手順を思案するそうである。彼らは問題空間の対象(オブジェクト)を特定し、必要な方法(メソッド)を検討するようなことはしない。学期の終わりになると、少数の進んだ学生はオブジェクト指向プログラミングが大好きになり、Javaのコーディングに向かい始める。しかし大多数の学生は、一般的なプログラミングの問題を手続き型のスクリプトで解決する方法を学んだ方が有益だろうということだ。

Pythonを使えば誰でもプログラムを書くことができるし、使いやすさはPythonの大きな長所の1つだと主張する熱心なPython開発者には大いに敬意を払っている。しかし、素人のユーザもオブジェクト指向パラダイムを大いに気に入るに違いない(または気に入ってもらえるようにすべきだ)とする彼らの考え方は誤っていると思う。

Tcl/Tkも優れた言語の1つであり、習得しやすく使いやすい言語である。しかしTcl/TkはRexxのように、ハンドヘルドからメインフレームに至る他のシステムには幅広く対応していない(Tcl/Tkは多くのプラットフォームで動作するが、その範囲は主にWindowsおよびUnix指向のシステムと共通している)。また、Tcl/Tkには他のオペレーティングシステムのデフォルトのスクリプト言語としての実績がない。Tcl/Tkを管理用のスクリプトとして利用しているITサイトは数えるほどしかない。

「クラシック」Rexxは手続き型言語である。ただし、100%上位互換のオブジェクト指向バージョンも提供されている。Open Object Rexxは、クラス、メッセージ送信、単一継承と多重継承、多態性、カプセル化、オーバーロード、その他すべてを備えた完全なオブジェクト指向言語である。膨大なクラス・ライブラリも付属する。

Rexxの長所は、ユーザに選択肢があることだ。手続き型のスクリプトを書くこともできるし、完全なオブジェクト指向のコードを書くこともできる。Open Object RexxではクラシックRexxのスクリプトを実行できるので、ユーザは自分に合ったペースでオブジェクト指向スクリプトの世界に踏み出すことができる。あるいは、オブジェクト指向スクリプトを使わずに済ませることもできる。このような二重の、手続き型とOOPを組み合わせた手法が互換性をもたらし、プラットフォーム、履歴、および初心者のニーズにまたがる対応を可能にしている。これは日曜プログラマ向けの真に効果的な言語の要件である。

Perl、Python、Tcl/Tkなどの言語は、Linuxの大きな利点の1つである。しかしLinuxには、デスクトップ・ユーザ、エンドユーザ、事務系の専門職、および非専任の管理者の日常的なプログラミングのニーズに対応する言語が必要である。Rexxはこれらのニーズに応えることができる。

参照先

サンプル・スクリプト — Linux用またはWindows用のスクリプトと、Linux用のOpen Object Rexxスクリプトをダウンロードする。下記のインタープリタにもたくさんのサンプル・スクリプトが付属している。

書籍 — 『Rexx Programmers Reference』では、フリーのRexxとそのツールが690ページにわたって包括的に解説されており、価格は25ドル。ほかにもさまざまな言葉で書かれたRexxの書籍が市販されている。

Linux用のフリーのRexxインタープリタ

Regina:移植性が高く、本格的で、どこでも動作する。

Open Object Rexx:手続き型のクラシックRexxの完全なオブジェクト指向型スーパーセット。

BRexx:フットプリントが最も小さい最高速のRexx。

Rexx/imc:10年以上のサポート実績を誇る定評のあるインタープリタ。

NetRexx: Java環境用の「Rexxライクな」言語。Java互換のアプリケーション、アプレット、サーブレット、Beans、およびコンポーネントの開発に使用する。

他のプラットフォーム用のフリーのRexxインタープリタ

Reginald:WindowsのフックとすべてのDLLへのアクセスを使ったWindowsとの高度な統合を提供する。

r4:コマンドラインからWindowsプログラミング用のツールを追加する。

Rexx for Palm OS:Palm OS用の標準Rexx。

roo!:Windows専用の手続き型のクラシックRexxの完全なオブジェクト指向型スーパーセット。

ユーザ・グループRexx Language Association

フォーラム — 英語、 フランス語、 ドイツ語、 ロシア語、および 日本語。 Windowsユーザ向けおよび メインフレーム・ユーザ向け。

Howard Fosdickは独立コンサルタントで、多くの主要なスクリプト言語に取り組んできた。彼は『Rexx Programmers Reference』の著者である。

原文