このページの本文へ

前へ 1 2 次へ

Windows Info 第439回

今更more.comを使うのか!? Windowsでのページングを考える

2024年07月10日 12時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 ページング(Paging)とは、コンソールなどで、画面の大きさに合わせて1画面分でスクロールを止め、キー入力などを使って、表示をさせるものだ。Windowsには、MS-DOS時代からのコマンドとしてmore.comがある。こうしたプログラムを「ページャー(Pager)」ともいう。

 しかし、このmore.comは、日本語表示はシフトJISしか対応しておらず、UTF-8エンコードやPowerShell標準のUnicodeエンコード(UTF-16 LE)にも対応していない。このため、渡される文字エンコードによっては文字化けしてしまう。2024年にもなって、文字化けとはなんとも情けない話だ。そこで、この問題を考えてみることにした。

ページャー

現在のWindowsにもmore.com自体は含まれているが、UTF-8の日本語テキストファイルを表示させると文字化けしてしまう

cmd.exeとmore.comの関係

 MS-DOS時代からあるmore.comは、「C:\Windows\System32\more.com」が実体である。拡張子がcomになっているが、中身は、EXE(PE)形式である。MS-DOSでは、ファイルサイズが64KB以下に限定されるが、簡易な実行ファイル形式があり、それがCOM形式と呼ばれていて、拡張子が.comだった。

 WindowsになりCOM実行ファイル形式はなくなり、そのうちCOMは、Component Object Modelのことを指すようになった。Microsoftはいつも略語を再利用する。その結果、古くからのユーザーほど混乱しやすくなるのは、なんとかしてほしいところだ。

 more.comは、そもそもcmd.exeで使うことを想定しており、日本語はシフトJISしか表示できない。しかし、cmd.exe用に作られたWindowsに付属する多くのコンソールコマンドは、大抵の場合、シフトJISしか出力しないので、これでも問題はなかったのだ。

 なお、Windowsのコンソールでは、実行ファイルの拡張子である「.exe」「.com」「.bat」は省略可能で、「more.com」は「more」で実行できる。

moreではなくlessを使う

 そんなmore.comだが、後戻りできないし、内部で検索することもできない。仕様としてはMS-DOS時代のままである。実際には、MS-DOS初期のmore.comは、ファイルパスを引数にすることができない純粋なフィルタコマンドだった。このため、typeコマンドなどと合わせてページングしていた。

 その点、現在のmore.comは、引数にファイルを指定することで、ファイル内容のページング表示ができる。この点では少しUnixのmoreに近づいた。

 UnixやLinuxでは、moreではなくlessを使うことが多い。個人の好みにもよるが、多くのユーザーがページャーにlessを指定するのが一般的だろう。

 lessは、moreという名前に「インスパイア」されて作られたコマンドである。多数のキー割当や設定項目があり、高性能なmoreとして動作する。現在Linuxで広く使われているのはGNUで開発されたlessである。

 GNU lessはオープンソースであり、Windowsにも移植されている。wingetコマンドで入手が可能だ。wingetなら安心というわけではないが、少なくともよく分からない「無料プログラム」サイトからダウンロードするよりはマシと思う。とはいえ、インストールをするのは素性を確認してからだ。Windows用のGNU lessに関しては、GitHubの「jftuga/less」(https://github.com/jftuga/less-Windows)にページがあり、リリースノートなどは「Less」(https://greenwoodsoftware.com/less/)にある。これは、

winget show jftuga.less

で得られる情報である。インストールは、

winget install jftuga.less

でできる。

 ただし、wingetで取得したパッケージには実行ファイル(less.exeとlesskey.exe)だけがある。前記のGitHubのreleaseからzipファイル(less-x64.zip)をダウンロードして、中にあるmanページ(*.manファイル)を取り出しておくといいだろう。拡張子はmanになっているが、整形されたテキストファイルになっている。

 より簡易に、WSLのmanコマンド(man less)を使う方法もある。GNU lessは、比較的アップデートが頻繁である。しかし、LinuxディとスリビューションのLTS(Long Term Support)版では、重大なバグがない限り、開発時点で選択されたバージョンのlessに止まり続ける。

 このため、WSLのUbuntuなどでもlessのバージョンが、wingetで導入したlessよりも古いバージョンになることがある。wingetでは、常に最新版のlessをインストールするからだ。

 Windowsでlessを使う場合に注意が必要なのは、文字エンコードだ。less.exeの文字エンコードは、環境変数LESSCHARSETで指定する。シフトJISの場合には、「DOS」を指定する。

 UTF-8がデフォルトの文字エンコードだが、LESSCHARSETに「utf-8」を指定することもできる。cmd.exeでも使うのであれば、環境変数の設定(「設定」→「システム」→「バージョン情報」→「システムの詳細設定」)で「DOS」を指定しておき、PowerShellのプロファイルで「utf-8」を指定する。

 lessは、設定や起動オプションでさまざまな機能を利用できる。「--help」で簡易なオプションを表示でき、「man less」をインターネット検索すると、日本語man pageなどが見つかる。

 行番号の表示(-Nオプション)や、表示対象が画面サイズ以下だった場合にページングしないで終了(-Fオプション)、UNIXのmoreのような詳しいプロンプト(-mオプション)などを指定すると便利。環境変数LESSで指定しておくことも可能だ。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン