コンピュータプログラムのほとんどが何らかの情報をユーザーに提示する。提示の仕方はいろいろあるが、多くの場合、数値を表示することが少なくない。もちろん、大量の数値をグラフにする、3次元グラフィックスで表現するといったこともあるが、大半のプログラムでは、それほど多くない情報を表示するのが普通だ。
こうした情報の大半が数値なのだが、数値は、大きくなれば桁数が増え、表示に必要な領域が大きくなる。そこで昔からプログラミング言語には、数値の最大桁数や表示形式などを制御するための「書式指定」機能が用意されていた。そもそも、最初の高級言語と言われているFORTRANにも数値などの書式指定機能があった。
8 bit CPU時代の「マイコン」に搭載されていたBASICも機能が向上してくると「Print Using」文といった書式指定を行う機能が入った。Print Usingは、数値の表示形式を「#」や「$」といった文字の並びで表現する。文字それぞれに意味があり、後続する数値や文字列の書式設定を行った。このPrint Usingステートメントは、Microsoft BASICが手本としたDECのBASIC-PLUSに由来する。
BASICのPrint Usingステートメントは、ダートマス大学のBASIC 6th Edition(1969年)に搭載されたのが最初と思われる。
Unixでは、printfと呼ばれる関数が使われていた。printfは、C言語の標準ライブラリルーチンとして1973年に実装された。これは、ALGOL 68やC言語の前身にあたるBCPLに、FORTRANのFORMAT文由来の書式設定機能が搭載されたことを受けたもの。表示形式を表すアルファベット文字と桁数などを示す数字を組み合わせた。
Windowsでは、.NETが数値や日付などの書式設定機能を持っている。.NETの書式設定機能は、printfに似たアルファベット1文字の表示パターンと、桁数などを示す数値の組合せ「標準の書式指定文字」と、「#」などの文字による表示形式表現「カスタム書式指定文字」の2種類が用意されている。前者は、FORTRAN由来のもの、後者は、ダートマスBASIC由来のものにあたる。
(表01)は、.NETの書式設定文字のリストである。標準の数値書式設定文字は、1文字で表示形式を表すFORTRAN由来のもの。カスタム数値書式指定文字は、BASIC由来の書式指定方法である。.NETの書式設定には、このほかに「日付(DateTime)」、「TimeSpan」、「列挙型(enum)」などの型を対象としたものがあるが、ここでは割愛させていただいた。書式設定文字に関する情報は、Microsoftのサイトの「概要: .NET の数値、日付、列挙、その他の型の書式を設定する方法」にある。
基本的には、言語の中で使うものだが、PowerShellには、書式演算子(Format演算子)があり、コマンドラインで簡単に書式設定を使うことができる。具体的には、以下の記法で利用する(写真01)。「-f」がPowerShellの書式演算子である。
"……{<複合書式指定文字列0>}……{<複合書式指定文字列1>}……" -f <書式設定対象0>,<書式設定対象1>
<複合書式指定文字列>=<インデックス>["," <幅>][":" <書式指定文字列>]}
書式設定を使うことで、数値や日付データを表示する際の幅を指定できるため、データをきれいに並べやすい。数値の表示がガタガタしているのが気になるのであれば、使い方を覚えておくといいだろう。
今回のタイトルネタは、1963年の米国テレビドラマ「Burke's Law」(邦題バーグにまかせろ)である。億万長者で刑事であるエイモス・バーグを主人公としたドラマで、大富豪が似つかわしくない職業につくという、パターンを確立させた作品。推理ドラマとしてもできがよく、日本でも放送された。