ubuntuにACL expressをインストールする

ACL express とは、Allegro Common Lisp の無料、評価用バージョンのことです。そもそも ACL には Windows 用、Linux 用、MacOS 用と大きく三種類あります。たてまえとして、すべて Common Lisp 準拠で、しかも同一のベンダーから提供されているものですから、仕上がりとしては同一のはずですが、実際の使い勝手には当然のことながら微妙な違いがありました。ここで過去形にしたのは、新バージョン v.11.0 でその違いがさらに小さくなったからですが、それでもまだまだのところは正直残っています。

ACL のもともとのネイティブ環境は Windows ですから、これを正とすると、v.10.1までは個人的な感想になりますが、IDE環境まで含めてWindows 用、Linux 用、MacOS 用のどれがお勧めですかと問われれば、ためらいなくWindows 用と答えました。ところがv.11.0ではLinux 用、MacOS 用でもいいかもしれません。特に商用版ではなく、評価用の expressについては、Windows 用 express では32nit版しか提供されないのに対して、Linux 用、MacOS 用では64bit版と、商用版と遜色ないのです。32bit版と64bit版での違いは Lisp のヒープ領域の大きさです。機能的にはなにも変わらないのですから、学習用には32bit版で十分なのですが、最近のライブラリーてんこ盛りのアプリや大規模言語モデルの研究用には32bit では不十分かもしれません。

そういうわけで、自然言語処理の記述を進めるにあたって、今後最適な express は Linux 用だろうと思うわけです。Windows 用、MacOS 用よりも Linux 用と思うわけにはそのほかの理由もあります。それは日本語処理の問題です。今ではACLも含めてほとんどすべての Lisp 処理系において、文字の内部実現はUNICODE です。つまり、今では日本語やアラビア語の Lisp シンボルで変数名や関数名を書くことができます。ところが、Windows 用では既定の外部表現(ファイルにおける表記)は、これまでの歴史的な理由から Shift-JIS なのです。Linux 用では既定の外部表現は当然のことながら、UTF-8です。自分のプログラムでファイル内容を読むときには、自由に :external-formatを指定できますが、プログラムファイルではそういうわけにはいかない。Web環境では、UNICODEとUTF-8が事実上の標準ですから、Web環境と日本語環境に最も相性がいいのは、Windows 用、MacOS 用よりも Linux 用となるわけです。

ここでMacファンに一言。なぜ MacOS 用を推薦しないのか。それはMacのファイル名はUNICODEでも、その正規化がNFDであるからです。以下の引用は、Bingの回答です。

こんにちは。MacOSにおけるファイル名の正規化についてお尋ねですね。正規化とは、同じ文字列でも異なる表現方法がある場合に、それを統一することです。MacOSでは、Unicodeの正規化形式であるNFD(Normalization Form D)が採用されています。NFDは、同じ文字列でも、濁点や半濁点などの結合文字が分解された状態で表現されます。例えば、「é」は、NFDでは「e」と「´」の2つの文字で表現されます。
ファイル名の正規化については、正規表現を使って変更する方法があります。Qiitaには、MacOSで正規表現を使ってファイル名を変更する方法が紹介されています。また、Automatorを使ってファイル名を一括変更する方法もあります。これらの方法を参考にして、ファイル名の正規化を行ってみてください。

Bing「MacOS ファイル名 正規化」質問

ところがセマンティックウェブでは、UNICODEの正規化はNFC(Normalization Form Canonical Composition)と決まっています。だからNFCで書かれた日本語ファイルの一部をコピペして、ファイル検索しても、Macでは引っかからない場合がある。Windows<->MacOSの文字化け問題はよく知られているようですが、これはそれとはまったく別の話です。

前置きが少々長すぎましたが、ubuntuにACL expressをインストールするには次のようにしてください。

1)ACL express ダウンロードページにアクセスする

任意のウェブブラウザーでアクセスすると以下のような画面になります。左カラムの Free Download を確認したら、中央の REQUIRED INFORMATION 欄にある I Agree to the ~~~ のチェックボックスにチェックを入れ、すぐ下の Email address にダウンロード情報を受け取る自分のメールアドレスを記入して、最後に Submit ボタンを押します。このとき、Please add me to your electronic mailing list のチェックはあってもいいし、外してもかまいません。また、その下のOPTIONAL INFO には記入してもいいし、記入しなくてもかまいません。

2)ダウンロード画面から、Linux x86-64 を選択する。

Submitするとポップアップが出る場合があるかもしれませんが今は無視してください。次のようなウェブ画面で、Linux x86-64を選択してダウンロードを実行します。

3)ダウンロードした圧縮ファイルを自分のホームディレクトリに展開

ubuntuのダウンロード・ディレクトリに移動して、圧縮ファイル acl11.0express-linux-x64.tbz2 を見つけてください。この圧縮ファイルを自分のホームディレクトリ直下に次のようにして展開します。

$ tar jxf acl11.0express-linux-x64.tbz2 -C ~

自分のホームディレクトリに移って、次のようにしてACL-express の画面がウェブページとして現れれば、インストール成功です。

$ acl11.0express.64/allegro-express

実はv.10.1までは、このIDE画面はTclTkで実装されていました。それがv.11.0では Common Window として、ウェブ画面になったのです。当然オーバーヘッドは大きいとおもわれますが、ウェブ画面になったおかげで、Windowsの WSL 上の ubuntu でデスクトップ ubuntu と同様にインストール実行で、expressを立ち上げれば、Windowsからローカルホストにアクセスして(port番号に注意)Linux 用 express が使えてしまうのです。これを読んで、じゃあリモートからもホストのACLが使えるんじゃないかと思ったあなた、残念ながらさすがにそれはガードがあるらしくNGでしたよ。

ウェブ版IDEでは終了するときには、いきなりウェブ画面を閉じるよりも、メニューから<File> => <exit> と選択してから、ウェブ画面を閉じたほうがいいようです。

4)パッチあてとリビルドの実行

最初のIDE画面では上記画面のように、パッチあてが要求されます。上記 Patch Reminder上の Lisi New Paches Now を押して、パッチリストを表示させ、通常はすべてのパッチをダウンロードして、Lisp イメージのリビルドを実行します。

通常はこのままDownload を押してパッチをローカルにダウンロードし、次のようにしてLispイメージのリビルドを実行します。

$ acl11.0express.64/update.sh

リビルドが無事終了すれば、再び express が利用可能になります。