パイプとコンソール

私はプログラミング言語 SchemeWindows 10 の上でよく用い、日常的には GaucheSagittarius といった処理系を使うことが多い。 使っているエディタは Emacs なので、処理系を呼出すのも Emacs からだ。 ふと他の FomentOtus Lisp などといった処理系も Emacs から使ってみようと思い立ってやってみると暴走状態に陥った。

しかし、 Emacs ではなく VSCode からだと問題なく動作するのである。 この違いが生じる原因は Emacs は処理系とパイプで接続しているが、 VSCode はコンソール API を再現している (らしい) ことによるものと思われる。 実際、標準入出力の接続先を GetFileType API で確認してみると違いがあることがわかる。

Windows のコンソールの制御はコンソール制御系の API を使うことで可能になっている。 コンソールにはスクリーンバッファと呼ばれるオブジェクトが結び付けられていて、スクリーンバッファに対する操作をすれば表示に反映されるのだ。 ただ、日常的にはテキスト表示をするときは標準出力に対する操作としてプログラムを書くことが多いだろう。 これは Windows の C ランタイム (いわゆる MSVCRT) が仲立ちして上手いことやっている。

Foment や Otus Lisp の場合は、コンソールに繋がっていないにもかかわらず対話的な使い方をしようとすることに充分な配慮がない、あるいは配慮はしていても WindowsUnix と違う部分で上手くいってないのだろう。 具体的にどこで問題があるのかは突き止められなかった。

430b29f08f2eef8ec6086be263925a11

マウスの部品が剥がれる

私がパソコンに繋いで使っているマウスは iBUFFALO というブランドで出ている BSMOUK01WH だ。 値段が安く、軽いので気に入っている。 近頃は無線式のマウスもそんなに高価なものではないが、無線式だとどうしても電池の重さが避けられないので有線式のものを私は好んで使っている。

さて、そんなお気に入りのマウスなのだけれど、側面のゴムの部品が剥れやすいのだ。 接着剤が溢れてベタベタと手に付くと同時に、接着されている部品がずれてくる。 いっそ粘着力が無くなるのならば良いのだが、いつまでもベタベタ、ヌトヌトとするのだ。

そこで私は貼りなおすことにした。 元の接着剤を丁寧に除去した上で、木工用ボンドを接着面全体に塗り、ギュッと押し付けてから、溢れたボンドを拭き取って数時間も置くと完全に定着して、そう簡単には剥れそうもない。

元々の接着剤は、ある種の両面テープのようなものだったのでおそらく製造工程における作業性は良いのだろう。

Document ID: 64390a360ca2f0a54437351b24d44733

死語としての「シャッター」

「シャッターをきる」という用語は理解できる。 今ではデジタルカメラが主流なのでシャッターという機構を持っていないが、慣用句として写真を撮るという意味で使われるのはわかる。

だが、シャッターをきるボタンを遠隔操作する装置を「リモートシャッター」と呼んだりするのはさすがに回りくど過ぎないだろうか?

写真関連で言うところの「シャッター」は経緯を知らないと意味不明の用語のひとつだと思うのだ。

Document ID: 9342c682cbe306aa9a6f53350144c0c2

文化中立

近頃は Unicode にたくさんの絵文字がある。 原則としては文化中立である (例えば顔文字が特定の人種であったりするのは好ましくない) とされているが、各国からの提案には文化依存な要素があるものもある。

例えば日本からの提案で Unicode に入った門松(かどまつ)の絵文字だ。 Unicode の規格では門松の絵文字に Pine decoration という名前が付いている。

しかし、門松が表そうとするのは「正月の飾り」であり、そのために松を使うのは方法のひとつにすぎない。 かといって「正月の飾り」と言ってしまうと門松としての情報が消えてしまう。

なるべくそうするという指針としての文化中立という姿勢を否定はしないが、どうせ文化的文脈を抜きにしては意味がわからない絵文字はあるのだから、あまり気張って文化中立を目指しても仕方がないという気がしている。

Document ID: 3d40a363d0a3244f887007994227e822

左辺

プログラミング言語 SchemeLISP 系言語の一種である。 代入を行う構文も他の構文と同様に括弧を用いた形式である。 例えば (set! foo 1) といったように書く。

さて、 Scheme の規格である R6RS を読んでいて気づいたのだが、このときの foo の場所を left-hand side (日本語ではだいたい「左辺」と訳される) と呼んでいるのだ。

構文の名前である set! よりは右に現れるので左辺というのはいささか奇妙な印象を受ける。

この用語が出現するのは set! についてと let 系構文の束縛部についてだけのようなので、これらについてだけは特別扱いなのだろうか。 数学用語の延長なのかもしれない。

Document ID: 14b6d1f6c55c33723c60aa9c4a1bd08a

Wiki 記法

Wiki 記法は様々なものがあるが、書きたいものを短くマークアップできるようにするということが重要な目的であり、万能性を求めたあげくに複雑怪奇になってしまうようなら本末転倒だと思う。 充分に高い表現力が欲しいなら HTML で書けばよい。

とはいうものの、分野ごとに様々な記法が乱立するというのもそれはそれでつらいので、 Markdown (またはそれを基礎にして拡張した記法) が手頃なものとして重宝(ちょうほう)されるのもわかることではあるのだ。

だが、既存の Wiki 記法を見るかぎりどれもこれもパースしづらく、自分が作るプログラムでそれらの記法を採用するのは躊躇(ためら)う。

パースのしやすさと書き(やす)さを上手く両立できるような記法について考えている。

Document ID: 7de6730155b31b410f8b441850e51e48

こんな夢をみた「村上旅館」

こんな夢を見た。

子供の頃に遊び場にしていた廃墟の近くを通りかかると、廃墟に村上旅館という看板が付いていることに気づいた。

これだけの夢なのだが、私は実際にはそんな廃墟で遊んだことは無い。 夢の中で廃墟があった場所は、現実には、私の知る限りずっと田んぼである。