• moreの子供たち

Webブラウザでは、スペースキーでページをスクロールできるようになっている。なぜスペースキーなのか? 押しやすいキーだからというのも1つの答えだが、スペースキーでページを進めていくスタイルは、1978年に作られた“more”と呼ばれるプログラムに遡る。

当時、コンピュータは、端末(ターミナル)を介して利用していたが、プリンタを使った機械式からCRTを使った“グラスターミナル”へ移行していた。当時マイクロプロセッサは存在したが、多くの端末は、TTLなどのデジタルICを組み合わせて作られていたため、あまり多くの機能を持つことができなかった。高級なターミナルには、逆方向にスクロール可能なものもあったが、安価な製品には、そうした機能がなかった。

このため、大量のテキストを出力してしまうと、スクロールして上に消えた部分は、もう見ることができなかった。端末は、Ctrl+S、Ctrl+Qで表示を止めることができたが、印字速度の遅いプリンタはともかく、グラスターミナルでは職人技を必要とした。

このときに作られたのがmoreと呼ばれる初期の「Pager」プログラムである。moreは、端末の画面文字数、行数に基づいて、1画面を表示すると、そこで停止、スペースキー入力で次の画面を表示するものだった。

これにより、長いテキストを簡単に読むことが可能になった。moreは、1979年末に配布が開始されたバークレー版Unix 3BSDに搭載され、多くのユーザーがこれを利用することになった。その後、moreは改良されながらUnix系オペレーティングシステムでは標準的なコマンドになる。

moreは、more.comとして1983年のMS-DOS Ver.2.0に搭載された。このバージョンでは、Unixを参考に階層型ディレクトリなどが搭載され、moreもその関係でUnixから導入されたと思われる。

このmoreを皮切りに、多くのPagerプログラムが作られることになった。著名なのは、1983年頃に開発が始まったlessである。lessは、逆方向にスクロールさせることもでき、検索機能やページ間移動ができた。

Windows 11には、MS-DOS時代のものとほとんど変わらないmore.comコマンドがいまでも搭載されている。ただし、このmore.comは、日本語版では、Shift JISしか対応しないもので、いささか使いにくい。ここは、lessを入れておくべきだろう。

Lessはいまだに作者により開発が続けられている。Windows用のバイナリは、wingetで入手可能だ。これは、作者ホームページから自動的に作られるバイナリを公開しているものなので、lessそのものである。


winget install jftuga.less

なお、lessを独自に日本語対応させたものも流通しており、環境変数JLESSCHARSETや“-K 文字セット”などのオプションが追加されている。上記のlessは、これらを含まないオリジナルのlessである。Wingetのパッケージにはマニュアルが付属しないが、オリジナルそのままなので、Linuxのmanページなどが利用できる。WSLやインターネット検索で“man less”としてもマニュアルページが見つかる。Windowsでの使い方もMS-DOSの場合として記述がmanページにある。

manページをみるとわかるようにlessは、名前とは反対に機能が多い。とりあえずは、起動オプションの“--help”やless起動中の“h”キーでヘルプを表示できる。

なお、lessは、Shift JISにも対応しているが、文字セットの切り替えを環境変数LESSCHARSETで行う。Windows版では、LESSCHARSETは、デフォルトで“utf-8”になっているが、これを“dos”に書き換えることで、Shift JISを正しく表示できるようになる。bashなら、一時的に環境変数を切り替えて実行できるのだが、PowerShell(Ver.7.3)ではそういう芸当はできないので、Get-Contentコマンド(省略形はgc)でファイルの文字エンコードを変換させる。たとえば、


gc C:\temp\sjis.txt -Encoding oem | less

などとする(写真01)。

  • 写真01: ついついmoreを使ってしまうようならSet-Aliasでmoreのエイリアスとしてlessを指定しておく。環境変数LESSでデフォルトのオプションを指定しておくことができる。“-F”を指定すると1画面に収まる場合にキー入力待ちをせずにlessを終了させる

ファイルを表示するとき、ついついmoreと打ってしまうなら、「sal more less.exe」でエイリアスとして登録するといい。また、環境変数LESSでデフォルトのオプションを指定できる。たとえば「-M-F」を指定しておくと、最下行のプロンプトに表示位置をパーセンテージで表示(-Mオプション)でき、短いファイルのときには入力待ちせずに終了(同-F)する。

今回のタイトルネタは、E・E・スミスの「レンズの子供たち」(Children of the Lens,1947)で、レンズマンシリーズの最終章に当たる作品である。このシリーズは、1960年台には邦訳されており、国内でも多くの作品が影響を受けている。現在のものは21世紀になって出た新訳だが、まだ、古書籍で旧訳の入手も容易だ。今なら、影響を受けた作品を探しながら旧訳を読むのも、また一興だろう。