Linuxには自由に使える電卓や単位換算ツールが数えきれないほどあるが、特に興味深いのが Frink だ。このツールのねらいは、単位の使い方をチェックしたり、細かい数値を気にせずにちょっとした換算や実世界の計算を手早くこなせるようにすることにある。
|
|
openSUSE 11のユーザはFrinkを1-Clickでインストールできるが、Ubuntu IntrepidやFedora 9のリポジトリにはFrinkのパッケージが見当たらない。そこで今回は、パッケージではなくfrink.jarファイルを利用する。frink.jarファイルにはJavaのクラスファイルが含まれており、Java Runtime Environment(JRE)がインストールされているマシンなら、直接このファイルからFrinkを実行できる。
Frinkはコンソールアプリケーションとして動作するほか、AWTとSwingのどちらのJavaツールキットで作成されたGUIでも実行できる。GUIツールの大きな利点は、1つ前の計算式を表示する上矢印キーが使えることだ。コンソール版Frinkはそのままでは上矢印キーに対応していないが、これについてはrlwrap経由で実行するという対処法がある。readlineラッパーであるrlwrapを利用すれば、コンソール版Frinkでも上矢印キーによる履歴の表示など、多くのキー操作が可能になる。rlwrapのパッケージは、Ubuntu IntrepidおよびFedora 9の標準のリポジトリに用意されているほか、openSUSE 11の1-Click対応のものも存在する。Frinkのグラフィックプログラミング機能を使わないなら、次のようにターミナルからrlwrap経由でFrinkを実行することをお勧めする。
$ cat ~/bin/frink rlwrap java -cp /FromWeb/frink.jar frink.parser.Frink "$@" $ ~/bin/frink Frink - Copyright 2000-2008 Alan Eliasen, eliasen@mindspring.com. ...
FrinkのWebサイトには、Windows用バイナリはあるがLinuxのものはない。同サイトには、gcjによるネイティブ実行ファイルのコンパイルには1時間以上かかると記されているが、私の場合は、もっと短時間で済んだ。バイナリからデバッグ情報を取り除くと、実行ファイルのサイズは2.5MBほどになる。先ほど説明したjarファイルをOpenJDK Runtime Environment(build 1.6.0-b09)で実行した場合に比べると、gcj(4.3.0 20080428)でコンパイルしたバージョンはかなり起動時間が短くなった。同じように起動と簡単な計算を行うのにかかった時間は、それぞれ1.8秒、0.4秒だった。
$ gcj -O3 -fomit-frame-pointer --main=frink.parser.Frink -o frinkx.exe frink.jar $ ls -lh frinkx.exe -rwxrwxr-x 1 ben ben 3.4M 2008-11-04 11:52 frinkx.exe* $ strip frinkx.exe $ ls -lh frinkx.exe -rwxrwxr-x 1 ben ben 2.5M 2008-11-04 11:55 frinkx.exe $ ldd frinkx.exe linux-vdso.so.1 => (0x00007fff652e3000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003a52600000) libgcj.so.9 => /usr/lib64/libgcj.so.9 (0x00000035fcc00000) libm.so.6 => /lib64/libm.so.6 (0x000000000087a000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000000000aff000) librt.so.1 => /lib64/librt.so.1 (0x0000000000d1a000) libz.so.1 => /lib64/libz.so.1 (0x0000003a50600000) libdl.so.2 => /lib64/libdl.so.2 (0x0000000000f23000) libc.so.6 => /lib64/libc.so.6 (0x00000000059b6000) /lib64/ld-linux-x86-64.so.2 (0x0000000000110000)