2010年12月26日日曜日

C++に関する覚書


AN OLD ARTICLE, DATES BACK TO OCT 2010, SHOULD BE OBSOLETE.
ARCHIVED FOR MY OWN INFORMATION.

2010年2月24日水曜日

人間の視野とディスプレイ

人間の視野は横長にできているらしい。ある論文では、人間の視野について以下のように説明している。

人間の視野角は水平約200度,垂直約125度(下75度,上50度)に達する.しかし,視細胞の分布や眼球の構造上,中心ほど分解能が高く注意も向けやすいという性質があるため,人間の視野は注視点を中心とする幾つかのいびつな同心円状に分類される.情報受容能力に優れる有効視野は水平30度,垂直20度程度に過ぎず,注視点が迅速に安定して見える安定注視野は水平に60~90度,垂直に45度~70度程度である.

これらの値から、人間の視野にあったディスプレイのアスペクト比について、考察していきたい。以降において、アスペクト比はm:1の形で表現され、mの値でアスペクト比を代表させる。参考までに、4:3のときm=1.333、16:10のときm=1.6、16:9のときm=1.778である。さらに、黄金比ではm=1.618、白銀比ではm=1.414である。

まず、さきほどの引用における「有効視野」に対応するアスペクト比を計算してみる。人間の目のある平面から距離Rにある平行な平面を考え、それから有効視野に相当する分を切り出すと考える。このとき、その長方形の幅 x = 2R tan(30°) 、高さ y = 2R tan(20°) となるため、m = tan(30°) / tan(20°) = 1.586 となる。

以上の計算から、大まかにであるが、人間が「意味のある」視覚情報を手に入れられる視野は、16:10に近いアスペクト比を持つということがいえる。となると、最近流行しているらしい16:9のディスプレイは、横に長すぎるかもしれない。さらに、16:10の比率は黄金比にも近いため、多くの人にとって均整が取れているように感じられることだろう。

しかし、以上の考察には問題がある。必ずしも、視野を覆うようなディスプレイが望ましいわけではないのだ。Webブラウジングなどで文字を表示することを考えてほしい。試してみるとお分かりいただけると思うのだが、文字を読める視野は想像以上に狭い。ゆえに、視野は画面のごく一部をなぞることになるから、文字を表示するディスプレイのアスペクト比について、視野から考察することはあまり意味を成さないはずである。

コンピュータ上でよく用いられる、横組みの文字列について、望ましい表示方式を考察してみよう。まず、横方向に長い組み方は望ましくないと考えられる。なぜならば、ある行の終わりから次の行の始まりまで、視線の移動が大きくなるためである。雑誌やカタログなどで段組をみることがあるが、これは横幅を抑えるために有用である。逆に、縦方向の長さは問題にならない。次の行に移るためには、行の高さ分だけ視線を移せばいいからである。

したがって、横組みの文字列は、行の文字数は押さえながら、行数を増やした縦長の組み方が望ましいことになる。そのことを示すように、横組みが歴史的に用いられてきた欧米の印刷物では、縦長の紙を用いるのが一般的である。

コンピュータ上での表示を考えれば、横方向の表示は画面幅もしくはウィンドウ幅で制限して、縦方向はスクロールで対応させることになるだろうが、この場合、縦方向の表示範囲が狭すぎると、頻繁にスクロール操作が生じてしまい、利便性を損なうことになってしまう。

ゆえに私は、ディスプレイの縦方向の画素数が多いほうが望ましいと考えている。Webページとかテキストとか、ひとまとまりの情報をできるだけ少ないスクロール数で見ようとすれば、縦画素数は多くあってほしい。とはいえ、縦長ディスプレイを望むほどではなく、横方向は複数のウィンドウを並べるのに有用だから、ワイドディスプレイが嫌いというわけでもない。

しかし、ワイドディスプレイ、とくに16:9ディスプレイが多くなることで、縦方向の画素数が犠牲にされているように思えて、気になっている。私個人の好みでは、縦方向に1000px程度はほしいところなのだけど、16:9ディスプレイでそれを満たすのはFull HD しかなく、横方向は1920pxにもなってしまう。

デスクトップで使う限りでは、横に広いディスプレイでも問題ないのだが、ノートパソコンではそうもいかない。ディスプレイの大きさが本体サイズを決めてしまうので、縦解像度を維持したままワイドにすると、横方向に伸びて結構大柄になってしまう。見た目の美しさも気になるところで、4:3なら(ちょっと差が大きいが)白銀比に、16:10なら黄金比に近いのだけど、16:9ではだいぶ横長に見えてしまう。

…なんだか酒を飲みながら書いていたら長くなってしまった。図をつければ読みやすい記事になろうが、この酔っ払いはそれをあきらめた。というわけで、とりあえず投稿します。

2010年1月13日水曜日

リコリス菓子の話

ハリボー(Haribo)というドイツの会社がある。世界で初めてグミを売り出したところで、現在では世界一の生産量を誇っているようだ。同社のグミは、大学生協での取り扱いがあったせいか、私の友人たちの間ではよく知られた存在である。ドイツのものとはいえグミはグミなので、日本でよく見かける Goldbären とか Happy Cola なら、多くの日本人は違和感なく食べることだろう。しかし、Schnecken はそうはいかないようだ。

Schnecken (シュネッケン)とはドイツ語で「渦巻き」程度の意味だと思っていただければよい。その名のとおり、細長いグミを渦巻状にしたものなのだが、色が真っ黒い。このグミ、渦巻きを巻き戻しながら食べるものらしいのだが、私は1巻分をまとめて口に入れてしまったことがある。薬くさいというか、形容しがたい香りが口いっぱいに広がり、吐き出さざるを得なくなってしまった。

この独特の味は、リコリス(スペインカンゾウ)の根に由来する。ヨーロッパでは伝統的に、リコリスの根を菓子用の甘味料として用いており、そういう菓子をリコリス菓子と総称する。黒い外見もリコリス菓子に共通する特徴で、焦がした糖蜜で着色しているらしい。

Schnecken でも私には強烈だったが、北欧にはリコリスと塩化アンモニウムで作る、salmiakki (サルミアッキ)と呼ばれるキャンディがある。リコリスに塩化アンモニウムの塩味とアンモニア臭が加わった、非常に独特な風味を持つという。フィンランド語の名前の語源はそのまんま sal ammoniac (塩化アンモニウム[ラテン語])であり、英語では塩味に注目して salty liquorice と呼ぶ。北欧における伝統的菓子で、年齢を問わず食べるものらしいが、日本人の実食体験者には「世界一不味いキャンディ」として知られているとか、いないとか。

こんな記事を書いていたら、Schnecken をまた食べてみたくなってきた。どこで売ってるものやら。

そうそう、root beer (ルートビア) にもリコリスが含まれているらしい。この root beer、中国人の留学生さんに “ill tasted” な飲み物だと紹介して飲んでもらったら、納得した様子だった。似たような飲み物が台湾や東南アジアにあるようだ。

2009年9月13日日曜日

まめちしき~ (in English)

『あずまんが大王』のアニメに、大阪こと春日歩が「豆知識」を披露するシーンがある。実はダジャレなのだが、それに気づかれずに文句をいう、という話になっている。

大阪: 豆知識。なあ、ともちゃん…
とも: はぁ
大阪: 枝豆は大豆やねんで。
とも: へー。
大阪: あかんわ、ともちゃん。
とも: え?
大阪: 豆知識。なあなあ…
よみ: え?
大阪: 枝豆は大豆やねんで。
よみ: へぇー。
大阪: ちゃうねん。
よみ: は?
大阪: 「それは豆知識やのうて、豆の知識や」、言うて欲しかった。
よみ: ああ…ごめん。

日本語の言い回しにもとづいた表現なので、翻訳は簡単にはできないと思われる。

そこで、『あずまんが大王』の英語版を見てみると、以下のような話になっていた。

Osaka: I’ll bring you grains of truth. Hey, Tomo, listen it up.
Tomo: Huh?
Osaka: Did you know rice is the most popular grain in the world.
Tomo: Wow.
Osaka: You’re not good, Tomo.
Tomo: Uh?
Osaka: I’ll bring you grains of truth. Get this, Yomi.
Yomi: Huh?
Osaka: Rice is the most popular grain in the world.
Yomi: Really.
Osaka: You’ve got it all wrong.
Yomi: Uh?
Osaka: No, no, see, what you were supposed to say was, “that is not grains of truth, that’s truth about grain.”
Yomi: Oh. Sorry.

見事に訳されている。「豆知識」は日本語の言い回しだが、”grains of truth” としてやれば、「ちょっとした事実」としてふさわしい訳語になるわけだ。穀物(grain)の知識など簡単に見つかるから、ネタ全体の流れもほぼ原文に一致している。

ところで、大阪の「大阪さん弁」は、テキサス訛りとして表現されていた。日本語版で大阪を演じる松岡由貴さんは大阪市の出身で、英語版のKira-Vincent Davisさんはヒューストン出身である。ついでに、Kira-Vincent Davisさんは『うたわれるもの』のエルルゥ役、『機動戦艦ナデシコ』のホシノ・ルリ役を演じており、「しっかりした女の子」のイメージがあったので、大阪を演じるのはちょっと意外だった。しかし、『エルフェンリート』のルーシー/にゅう役も彼女だから、「にゅう」の方を演じたことを考えれば、さして無理はないのかもしれない。

2009年9月10日木曜日

アラル海 – 死にゆく大湖

カザフスタンとウズベキスタンにまたがる、アラル海(Аральское море)と呼ばれる湖がある。中央アジアの乾燥地帯を流れる大河であるアムダリヤ川(آمودریا‎ / Āmū Daryā)とシルダリヤ川(سیردریا / Sīr-Daryā)が流れ込んでいる。両河川はイラン地域や中央アジアの歴史に時折登場するから、名前を知っている人も多いことだろう。

乾燥地帯を流れる河川や湖沼にありがちなように、アラル海に流入する河川は頻繁に流れを変えたことから、この湖は過去数千年の間にも拡大・縮小や移動を繰り返していた。この変動の激しさにより、アラル海は流出河川を持たず、流入した水は濃縮されるしかないにもかかわらず、湖水の塩分濃度は低いレベルに抑えられていた。

アラル海の転機は1940年代に訪れる。スターリン政権下のソヴィエト連邦は、アムダリヤ川とシルダリヤ川を利用して灌漑を行い、さらにアムダリヤ川の上流には運河を建設した。灌漑は乾燥地帯を稲作と綿花栽培が行える農地に変えるが、両河川の流量を大きく減らした。

乾燥地帯での灌漑は、土壌の塩分集積を進行させ、農地は早くも塩害で放棄を余儀なくされてしまう。また、流入河川の流量の減少は、アラル海の推移を下げるのみならず、塩分濃度を上昇させ漁業を壊滅させた。

1853年に出版された、中世からの安定状態にあったアラル海の地図を示そう。

この150年後のアラル海の衛星写真は、痛ましいほどに縮小した湖の姿を示している。写真に描かれた黒い線は、1960年当時のアラル海の湖岸線を表している。かつての広大な湖は、北の小アラル海と南の大アラル海に分断され、大アラル海も東西に分裂する危機にある。南から流れ込んでいたアムダリヤ川は途中で消失しており、シルダリヤ川は小アラル海に流れ込んでいる。

その後、周辺諸国は、シルダリヤ川が流入していることから回復の見込みがある、小アラル海のみを救済することを決め、小アラル海を分断する堤防が2005年に建設された。同時期に大アラル海は東西に分裂している。2008年8月におけるアラル海の衛星写真を示す。干上がった部分は白くなっているが、おそらく塩分などのミネラルが析出しているのだろう。

今年の8月に、最新の衛星画像が撮影されている。東アラル海はほぼ消滅し、西アラル海もさらに細長い形状になっている。

参考資料(画像引用元)

2009年9月7日月曜日

不完全なZIPファイルの救出法

時々、壊れたZIP書庫ファイルを見つけることがある。中身を救出する手段を探していたら、DiskInternals ZIP Repair というソフトが有用らしいことがわかった。 教えて君.net の紹介記事によれば、破損ZIPファイルに強いLhaplusでさえ解凍できない書庫からでも、ファイルを回収できたという。

2009年7月16日木曜日

(Webページの)URLに含まれる大文字について

先日、講義のレポートを提出したのだが、提出はメールではなく担当教員のWebサイトにアップロードする方式だった。しかし、提出先ページを見に行こうとしても、404エラーが出てしまう。原因は、URLに含まれる大文字の部分を小文字で打ってしまっていることだった。世界で多数派を占めるであろう、UNIX系OSで動作している、ApacheやLighttpdと言ったWebサーバでは、URLの大文字と小文字を区別するのが普通である。

WebページのURLを部分に分解しながら、理解を深めていこう。以下のURLを考える。

http://norstrilia.com/hitton/kittons.html

このURLは、以下のように分解できる。

スキーム (scheme)http:
ホスト名 (host name)norstrilia.com
パス名 (path)/hitton/kittons.html

スキームは、これがWebページを表すURLであることを示している。ほかにもftpやらmailtoというスキームがあるので、興味がある向きは調べてみると良いだろう。

ホスト名は、目的のデータが保存されているコンピュータの名前を表す名前で、ドメイン名(~.comとか)かIPアドレス(130.34.~というやつ)を用いる。ドメイン名は、大文字と小文字を区別しない(RFC 4343)。適当なWebサイトを開いて、URLの何文字かを大文字に書き換えても、問題なくアクセスできてしまう(たとえば、http://www.7andy.jp/http://www.7andY.jp/)。

パス名は、ホスト名が指すコンピュータの内部における、データの位置を示す。スラッシュ(/)はディレクトリ(フォルダ)の区切りを表し、一番最後のスラッシュから末尾までがファイル名である。たとえば、/old/north/australia.txt は「oldディレクトリの中のnorthディレクトリの中にあるaustralia.txtと言うファイル」を表している。Windowsユーザにはなじみが無いかも知れないが、”/” は最上位のディレクトリを表し、「ルート (root)」と呼ぶ。

先に述べた「多数派」のWebサーバ、たとえばLinux上で動くApacheでは、パス名の大文字と小文字は区別される一方で、Windowsで動作するWebサーバは区別しない。これは、Webサーバが動作しているOSの「作法」に従っている。

Webサーバは基本的に、コンピュータの中にある特定のディレクトリに、外からのアクセスを提供する。たとえば、www.thinkblue.jp というWebサーバで /var/www/ を公開ディレクトリに設定し、http://www.thinkblue.jp/count/two.jpg を見ようとすると、/var/www/count/two.jpg の中身が見える。あるいは、alpharalpha.netC:\public_html\ を公開ディレクトリに設定すれば、http://alpharalpha.net/cats/cmell.htmlC:\public_html\cats\cmell.html を指し示す。ここで、もしファイル名/ディレクトリ名の大文字/小文字が区別されないと、当然URLのパス名でも区別しないことになる。具体例をあげれば、UNIX系では/drunkboat.log/DrunkBoat.log は完全に区別されるが、Windowsは C:\nothingatall.txtC:\NothingAtAll.txt を区別しない。Windowsについて厳密に言えば、ファイル名/ディレクトリ名では(NTFSを用いる限り)区別されているものの(thaladywhosailedthesoul.doc というファイル名を TheLadyWhoSailedTheSoul.doc に変更することが出来る)、アクセスするときには区別しないことになっている。

原理的な説明はここまでとしよう。「URLには大文字/小文字の区別があるか?」という質問に対する、正確な答えは「状況による」であるが、現実的な答えは「ある」、ちょっと細かく言えば「.comとか.netとか.jpよりも後ろにはある」ということになる(ドメイン名にわざと大文字を混ぜて書くことは、特にラテン文字を使う言語圏では多くあるから、ドメイン名に大文字/小文字の区別がないことを示すのは重要である)。

今回の講義レポートの提出では、提出先のURLはプロジェクタで映示され、聴講者はこれを手書きでメモしていた。こういう状況では、大文字/小文字の混乱が起こるのは避けられないだろう。さらに、UNIX系OSの通例で大文字ファイル名はあまり使わないから、URLに大文字が混ざっていることも少なく、「URLはたいてい小文字である」という意識を持っている人も多いだろうから、なおのこと間違いが増えそうだ。「大文字に注意せよ!」との注記が欲しいところである。