2023-12-16

Haskellにパッケージ「System.Random」を追加

Haskell アクション 超入門」でHaskellの勉強を続けていたら、例題に出てくるパッケージ「System.Random」がありませんでした。Webを検索すると、パッケージ「random」を追加する必要があるようです。そのためにはコマンド「stack」を使う用なのですが、僕が利用しているFreeBSD上にはコマンドが入っていません。


Web上の記事「Haskellのパッケージ管理について調べてみた」によると、コマンド「cabal」を使うとパッケージを追加できるようです。ここで「stack」と「cabal」の関係が不明でしたが、またもやWeb上の記事「Haskellの環境構築2023」によると、どちらのコマンドでも構わないようです。FreeBSDにはパッケージ「hs-cabal-install」があったので追加したら、コマンド「cabal」が使えるようになりました。


さてHaskellのパッケージ「random」をコマンド「cabal」で追加しようと思ったのですが、これを実行するアカウントはどうするのか分かりませんでした。どうやらアカウントごとにパッケージを追加するもののようですが、当初はアカウント「root」で実行したものの、個人用アカウントから参照されず悩みました。


パッケージ「random」を追加するのは簡単でした。

  1. cabal update
  2. cabal install --lib random

名乗り朝臣

平家物語の有名な「祇園精舎」を読んでいたら、以下のような箇所が出てきました。

  1.  六波羅の入道前太政大臣平朝臣清盛公と申し人のありさま
  2. 刑部卿忠盛朝臣の嫡男なり

 

朝臣というのは藤原朝臣とか源朝臣のように姓につくと思っていたので、「忠盛朝臣」のように名前にもつくのかと意外に思いました。ウィキペディアで「朝臣」では、名前(諱)に朝臣をつける場合を「名乗り朝臣」と呼ぶと書かれていました。しかし平家物語は、歴史の教科書でも国文学の辞書でもないので、「忠盛朝臣」というのを「名乗り朝臣」のつもりで書いているのかどうかはわかりません。


名乗り朝臣については、資料を網羅的に調べている「「朝臣(あそん)」の位置について」という記事がWeb上にあるのを見つけました。それはともかく、朝臣というのは八色の姓で制定されたはずですが、真人など朝臣以外が消えていってしまったので、姓につくのか、諱につくのかという、制定された際の目的とは違う使われ方になってしまったという印象です。

2023-12-14

「Haskell超入門」が分かりやすい

以前からHaskellを学んでみたいと思っていて、いろいろと情報を集めていました。Pythonなど人気のある言語ほどではありませんが、書籍やオンラインの入門書が見つかります。

 

新しい言語を学ぶとしても、似ている言語を既に知っているなら、それほど難しくはないと思います。例えば、C言語を知っている場合にPASCALを学ぶとか、AWKを知っている場合にPerlやPythonを学ぶならば、もちろん別の言語なので違いが多々あるかもしれませんが、似ている面も少なくないので、勉強する閾は高くないと思います。


それに比べるとHaskellは、だいぶ雰囲気が違います。関数型言語に分類されていますので、LISPを知っていれば、概念自体は理解できるかもしれませんが、Haskellのプログラムが読めるかというと、そうでもないと思います。

 

Haskellを全く知らないところから入門するとして、オンラインで読めるものを探して見ると「Haskell超入門」が分かりやすいと思いました。入門書によっては、Haskellの構文を「こういうものがあります。ああいうものもあります」と淡々と列挙していくだけのものもあるのですが、それだけではHaskellとしての発想が学べないのです。それに比べると「Haskell超入門」はHaskellの発想が学べるので、とても理解が進みました。

2023-12-10

MOPDの実装:select()かpoll()か

DEC製ワークステーションをネットワークから起動するために必要となるMOPDの実装を調べています。調査をすすめているうちに、横道にそれるという言うか、派生する技術についても把握しておく必要に迫られます。しかも空き時間を見つけながら調査しているので、なかなか先に進みません。


ともかく、MOPDをデーモンとして動作させるための中心部分とおもわれる「Loop()」(mopd-2.5.3/common/loo-bsd.c)を調べてみました。そこではシステムコール「select()」 が使われているのですが、NetBSD版ではシステムコール「poll()」に置き換わっています。他の実装、OpenBSD版、Linux版、FreeBSD版では、select()のままです。


システムコール「select()」と「poll()」は歴史的に見れば成り立ちが異なるようですが、それは2000年以前のUNIX乱立時代の頃の話であって、21世紀に入って20年以上も過ぎた今日では、両システムコールが実装されていないOSの存在を気にする必要はない気がします。


そうであるならば、システムコール「select()」と「poll()」の何れを用いるのが望ましいのでしょうか。select()の方が制限が厳しいようで、よりましなpoll()を使っておく方が良いとも考えられます。しかしMOPDにおいて、その制限が問題になるようなネットワーク的な同時接続数があるのかと言うと、そんな事はないと思います。程度問題なのかもしれませんが、机上の空論のような究極の状況を考慮してロジックを組むのも、やりすぎではないかとも思います。

 

NetBSD版MOPDのようにシステムコール「poll()」に置き換えるのが悪いとは思いませんが、圧倒的なメリットがある訳でもなさそうです。ならば他の実装のようにシステムコール「select()」のままにしておくのも、ひとつの判断でしょう。どちらのシステムコールを採用するのか、判断の決め手のようなものが何かあれば良いのですが。

2023-12-02

プログラミング言語Iconは日本語で「アイコン」なのか「イコン」なのか

先日ふとしたきっかけでIconに再開したので、久しぶりに情報を集めています。公式サイトにはドキュメントなども置かれているようなので、勉強してみようと思っているところです。

 

ところで「Icon」は日本語で発音すると「アイコン」でしょうか、それとも「イコン」でしょうか。公式サイトにあるドキュメントは全て英語なので、日本語で何と発音すれば良いのかは当然ながら書いてありません。しかし『Icon Programming Language Handbook』の「About Icon」には以下のような記述があります。 

The name, Icon, was chosen a long time before graphical user interfaces became popular. It does not refer to “icons,” but probably to iconoclasm, as the developers were excited about how their language diverged from current practices in language design.


「Icon」という名前は、GUIで目にする「アイコン」というつもりではないようです。「iconoclasm」という単語を持ち出してくるのを考えると、日本語で言うところの「イコン」を意識しているのではないかという気がします。

2023-11-18

鉄道のホームにあるホームドアが閉まる途中で異常を検知した場合の挙動

最近は鉄道のホームにホームドアが設置されるようになってきました。しかも車両のドア位置の関係で、ドアといういうより、ロープが上下するような方式があります。JR西日本が大阪駅などで設置しているものです。ドアであっても、ロープであっても、閉めている最中に異常を検出したとしたら、例えば何かを挟み込んだとセンサーが検出したら、いったん開くように動くのが普通ではないかと思います。

 

しかし開くといっても、全て開く必要はないのではないでしょうか。異常を検出した所だけ開いて、後は閉じても構わないのではないでしょうか。もし異常が起きていいない箇所も開いてしまうと、駆け込み乗車をしようとしている人が突進する可能性があるのではないかと思います。

 

先日ホームで電車を待っていたら、異常を検出したらしく、閉まりかけているホームドアが途中で開きはじめたのを目撃しました。しかも異常がない(と思われる)ところも含めて全てが開きました。 どのような挙動が望ましいと言えるのか不明ですが、ホームドアの動作方式は現在進行中という印象です。

2023-11-16

「The BSD Packet Filer: A New Architecture for User-level Packet Capture」を読んでみました

MOPDを調べようとしたら、BPFが使われているので、横道にそれてしまうようですが、BPFを理解するのを先に済ませることにしました。マニュアル「BPF(4)」を読むことも必要かと思いますが、そもそもBPFって結局何なのかを知るには大元となる論文を読むのがよさそうです。それは、1993年のWinter USENIXにおける「The BSD Packet Filter: A New Architecture for User-level Packet Capture」(Steven McCanne and Van Jacobson)との事なので、読んでみました。

 

論文の中に次のような記述がありました。

 A packet filter is simply a boolean valued function on a packet. If the value of the function is true he kernel copies the packet for the application: if it is false the packet is ignored.


これを読んで、成程そういう事かと思いました。BPFについて調べはじめた当初、Webを検索すると、何かというと「仮想マシン」の話が出てきました。何故BPFと仮想マシンが結びつくのだろうと思いましたが、論文を読んで納得しました。

 

BPFについて何を理解したら「わかった」という事になるのかという点では、いろいろと意見が別れるところだと思います。しかしMOPDを理解するためのBPFという意味では、「わかった」という事にしても構わないと思います。

2023-11-14

「BPF(BSD packet Filter)」は「パケットをフィルタリングする」だけが目的ではないような気がする

MOPDを調査するために、BPFを調べる必要を感じたので、先にそちらを見ています。ウィキペディアの「Berkeley Packet Filter」には、概要として最初に以下のような事が書かれています。

 BPFはデータリンク層へのrawインターフェイスを提供し、生のリンク層パケットの送信と受信を可能にする。

 

BPFの「PF」は「Packet Filter」なんですから、上記した記述はもっともだと思います。しかしBPFの目的はそれだけではないような気がします。ウィキペディアの概要を読み進めると、次のような記述が現れます。

この機能を利用することで、オペレーティングシステムのカーネルからプロセスへの不要なパケットのコピーが回避され、パフォーマンスが大幅に向上する。


ネットワークのパケットを送受するのはカーネル内部ですが、それをユーザプログラム側が操作しようとすると、カーネルとユーザ側の遷移が数多く発生します。そのままでは性能に悪影響を及ぼしてしまうため、特別な仕組みが用意され、それが「BPF」なのでしょう。当初の目的がネットワークのパケットをフィルタリングして、必要なものだけをユーザプログラム側で操作したかったという事なのではないかと思いますが、その為の仕組みの有用性に注目が集まっているという事のように思います。


Linuxでは「eBPF」という拡張がなされており、ウィキペディアでは「eBPFプログラムをさまざまなTracepointにアタッチする用途など、ネットワーク以外の目的でも使用できる」と書かれているように、もはやネットワークに限った技術ではなくなっているようです。しかも旧来の「BPF」との互換性はないようなので、だったら名前を「eBPF」としないで、別の名前にしたら良かったのではないかと思いますが、そうもいかなかったのかもしれません。


2023-11-13

The Icon Programming Language

MOPDの構造を調べるには、BPFを知る必要があるようです。その原理は「The BSD Packet Filter: A New Architecture for User-level Packet Capture 」という1993年に発表された論文に遡るようなので、入手しました。その論文の最後にある参照文献には、次のような記述がありました。

 [3] GRISWOLD, R. E., AND GRISWOLD, M. T. The Icon Programming Language. Prentice Hall, Inc., Englewood Cliffs, NJ, 1983.

 

Iconという言語は、あまり知られていないかと思います。今日ではテキスト処理と言ったら、PythonやPerlなどが使われると思いますが、まだAWKくらいしか選択肢が無かった頃に、SNOBOLやIconという言語を耳にすることがありました(それでもメジャーとは言い難かったと思いますが)。

 

公式サイトはありますが、今でも活動が続いているのか否かはわかりません。『The Icon Programming Language Third Edition』という書籍があり、ずいぶん前に購入しました。今でも捨てずに持っています。寄附金を募っていたようなので、ほんの僅かな金額ですが送りました。そうしたら礼状が返ってきて、感激した記憶があります。


BPFがIconをどう使っているのか詳細は不明ですが、論文には以下のような記述がありました。

 A very different application of BPF has been its incorporation into a variant of the Icon Programming Language [3].

 

Iconの公式サイトにはFreeBSDやLinux用のバイナリも置いてあります。Pythonが大流行している今日において、Iconを使う必要性があるのか何とも言えませんが、ちょっと勉強してみるのも悪くないかなと考えています。

2023-11-10

VMware Workstation 17 PlayerでUbuntu 22.04 LTSをインストールしようとすると、とても遅い

Ubuntu 22.04 LTSの環境をVMware Workstation 17 Player 17.5.0 build-22583795で作ろうとしたら、インストールするのが酷く遅くて、途中で断念しました。同様の作業をVirtualBox 7.0.12 r159484 (Qt5.15.2)でも行いましたが、順調で、特に問題は起きませんでした。VMplayerを使うと、異常に遅いのは、何か設定の問題なのでしょうか。

 

Webを検索したら「Windows 10 VM Slow in Ubuntu 22.04 Host Workstation Pro 16.2.4 build-20089737」という記事を見つけました。同じような現象を抱えている人はいるようで、解決策もあるようなのですが、VMware Workstation Playerでは、同じ解決策が適用できないようです。

 

 リプライには「I don't see this option with VMware Player. Any hints?」という発言があり、私と同じ(と思われる)問題を抱えている人がいるようです。しかし解決策は提示されていません。


どうもVMware側に何か問題があるのではないかと思いますが、WMware Playerでの解決策が見つかりません。

2023-11-09

mopdの実装を調査するためにmopd/mopd.cを読んでみました。オリジナルのmopd-2.5.3が各OSの実装で変更されており、似たような変更を加えていますが、統一化が図られている訳ではないようです。 

  • mopd.cを見ると、MOPD(8)では説明されていないオプションが実装されています。ただしOpenBSD版のMOPD(8)では、そのオプションの説明が加えられています。またNetBSD版では、-sという新しいオプションが追加されています。
  • オリジナル版では、大域変数Programを用いて、argv[0]からプログラム名を得ています。ところが他の実装では、関数getprogname()や変数__prognameを利用するように変更が加えられています。
  • デーモンとして動作させるため、オリジナル版ではfork()を呼び出したりしていますが、他の実装ではdaemon()を利用するように変更が加えられています。

 

オリジナル版も他の実装にも、以下のような処理があります。このロジックならば、ForegroundFlagが指定されておらず、DebugFlagが指定されている場合に、このメッセージが出力されるという事です。しかしメッセージの「not running as daemon」と、ForegroudFlagが指定されていないという状態とが、整合していない気がします。

if ((!ForegroundFlag) && DebugFlag) {
    fprintf(stdout, "%s: not running as daemon, -d given.\n", Program);
}


MOPD(8)では、SEE ALSOにbpf(4)が記載されています。BPFというのはBerkeley Packet Filterの事だという事しか知らないので、勉強しておこうと思います。

2023-11-07

mopd/process.hのバリエーション

mopdの実装を学ぶため、mopdに置いてあるファイルを一つずつ見ていくことにしました。おそらく、ソースを読むために必要となる派生的な技術に手を出す必要が出てくると思いますが、それもこれも勉強だと思います。短期間に全力疾走して解析を終えることにはならないでしょうから、長期に亘ることを意識して、TW5で情報を整理しながら進めていこうと思います。


まず最初にmopd/process.hから見ていきます。このファイルは、コメントを除けば、10数行しかありません。

#ifndef _PROCESS_H_
#define _PROCESS_H_

#ifdef NO__P
void    mopProcessDL (/* FILE *, struct if_info *, u_char *, int *,
                         u_char *, u_char *, int, u_short */);
void    mopProcessRC (/* FILE *, struct if_info *, u_char *, int *,
                         u_char *, u_char *, int, u_short */);
#else
__BEGIN_DECLS
void    mopProcessDL __P((FILE *, struct if_info *, u_char *, int *,
                          u_char *, u_char *, int, u_short));
void    mopProcessRC __P((FILE *, struct if_info *, u_char *, int *,
                          u_char *, u_char *, int, u_short));
__END_DECLS
#endif

#endif _PROCESS_H_

ここで「__BEGIN_DECLS」と「__END_DECLS」のペア、「__P()」というマクロらしきもの、「NO__P」という定義が利用されています。これらが何かを調べるところから始めていきたいと思います。


まず「__BEGIN_DECLS」と「__END_DECLS」は、Web上にある記事「C言語系 / NetBSD1.6における setjmp(), longjmp() の実装(2) (v1)」で説明されていました。同様の説明は他にも見つかったので、それ自体は難しいことは何もありません。ただし調べても不明だったのは、なぜ「extern "C"」を直に記述しないで、これらを使うのかという事です。しかも「8.1 Writing C header files」では、「BEGIN_C_DECLS」と「END_C_DECLS」を使うことにしています。何か歴史的な事情があったのではないかと思うのですが、その経緯がわかりませんでした。


次に「__P()」というマクロは、初期のC言語とANSI Cとのプロトタイプ宣言の違いを吸収するために使うようです。mopd-2.5.3が何時から開発されていたのか、ChangeLogなどがないので、不明ですが、その当時はK&R CとANSI Cの違いを気にする必要があったのでしょう。しかし2023年の今となっては、あまり気にしなくても良さそうです。

 

最後に「NO__P」という定義は、otherOS/Makefileの中で定義されているのを見つけました。rs6000-aix3、sun3-sunos4、sun4-sunos5などの環境下では定義されるようです。多分それらでは「__P()」が存在しないのでしょう。


このファイルがどのように変更されているかを確認してみました。

  • NetBSDでは、「NO__P」の定義を確認している箇所が無くなっていますし、「__P()」も使っていません。
  • OpenBSDでは、NetBSDと同様の対応に加えて、「__BEGIN_DECLS」と「__END_DECLS」も消えています。
  • FreeBSDでは、portsのパッチが増え過ぎないようにしたかったのか、何の変更も加えられていません。
  • Linux版は、NetBSDの変更を取り込んでいるようですが、「NO__P」の定義を確認している箇所が無くなっているものの、「__P()」は残っています。

2023-11-04

mopd-2.5.3の派生

VAXstationなどDEC製品はネットワーク上に存在するマシンから情報を貰ってブートさせることが出来て、これをMOP(Maintenance Operation Protocol)と呼びます。OpenVMSなどDEC製OSであれば当然MOPサーバになれるのですが、NetBSDやLinuxであってもmopdを動かしておけば、MOPサーバとして機能させることが可能です。

 

調べてみると、以下のOSでmopdが動くようです。

 

これらは全て「mopd-2.5.3.tar.gz」という実装から派生していますが、現時点での実装は各々異なっているようです。

  1. NetBSDとOpenBSDは、OSのusr.sbinとして取り込まれており、OSのポリシーに合わせた変更が行われているように見えます。
  2. FreeBSDは、portsとして提供されているので、必要最小限の変更だけで済まされている印象です。
  3. Linuxは、READMEにも書かれていますが、NetBSD版を取り込み、OpenBSD版などの変更を参考にしているようです。
  4. 各OS版とも、オリジナルの「mopd-2.5.3」と構成がほぼ同じになっています。しかしNetBSD版は、mopa.outというコマンドが消えており、mopcopyというコマンドが追加されています。


手持ちのDEC製ワークステーションを生かすために、mopdを準備しようと思っています。どれを使っても構わないとは思いますが、MOPの理解を深めるために、それぞれの変更箇所を詳しく調べてみようと思います。

2023-10-29

北海道新幹線札幌延伸と並行在来線

北海道新幹線の札幌延伸は、令和17年度(2035年)開業の予定を5年前倒しし、令和12年度(2030年)を目指すことが平成27年1月に決定していたとのことです。開業時期が前倒しされても当初予定どおりであっても、並行在来線の扱いは議論されることになります。結局は2022年夏には長万部小樽間がバス転換されることが合意されました。


北海道新幹線札幌延伸が前倒しされた背景には、2030年の冬季五輪を札幌市が招致していたためと言われています。しか2023年10月に招致を断念することになり、併せて札幌延伸の開業時期も不透明になっています。さらに全国各地で運転手不足によるバスの減便や路線廃止が多発してきています。その中で、函館本線山線のバス転換も暗雲が立ち込めているようです。鉄道を廃止してバスに転換しても、そのバス路線が次第に消えていくという結果を招いているようです。

 

 バス転換されずに鉄路として残っても、JRから切り離されて第三セクターに転換されてしまうと、青春18きっぷのように、鉄道に乗車すること自体が目的のような旅は不便になります。乗客が少ないからという理由で路線廃止を繰り返していると、函館本線の函館長万部間のように、JR貨物の輸送に差し障るというような問題すら出てきてしまいます。

 

JRは地域ごとに分割されていますが、都市部が儲かっていて、それ以外が赤字になっているという構造だと思います。これは国鉄時代も同様だったでしょう。儲かっているところだけ残れば、それ以外は廃止しても構わないとなると、公共交通とは言い難い気がします。

2023-10-27

Leciono dek kvar 「講演が始まります」

先日からPodcastで「ゆる言語学ラジオ」を聴いています。第268回「緻密に設計された人工言語の文法は、あまりにも美しい【エスペラントの文法】」では、白水社から出版されている『ニューエクスプレスプラス エスペラント語』に収録されているダイアログが紹介されていました。


ある大学のキャンパスで、女性が通りかかった男性に「すみませんが、7番教室はどこにあるか教えて頂けませんか?」と声をかけるところからダイアログが始まります。こういうのは、他の言語の入門書でも良く登場する状況ですが、この入門書では、ブラックジョークとも言える展開を示します。

 

楽しくエスペラント語を学べるようにしたいという編集側の意図があるのかもしれません。しかし、このような展開のダイアログでなくても、「楽しく学べる」エスペラント語のダイアログは、いくらでも考えられるのではないかと思わなくもありません。

2023-10-19

Tidyverseのggplot2による複数系列の折れ線グラフ

以前よりRを利用してデータのグラフ化を行っていました。僕はMicrosoftのOffice製品を持っていないので、Excelがあれば簡単に作れてしまうようなグラフでも、何か他の方法で行わなければなりません。Microsoft Officeは持っていませんが、LibreOfficeなら利用しているので、Calcを使えばExcelと同様なグラフは描けそうです。しかしExcelやCalcのようなWYSIWYG的アプローチは、ちょっと試してみる程度なら簡単で便利ですが、定期的に同じような作業を繰り返す場合には、かえって手間がかかると思っています。

 

そこで、Rを利用してCSVからグラフを生成することにしています。ただしRの利用に慣れていないので、Webで事例を探しつつ手探りでスクリプトを組んでいるので、ロジックの見通しが悪いし、簡単に出来ることを、わざわざ複雑に処理しているようか感覚が抜けきれませんでした。一昨年に放送大学で「Rで学ぶ確率統計('21)」を受講しました。そこで「Tidyverse」というものの存在を知り、従来のRとは違いがあり、便利そうではあるものの、完璧に理解するには至りませんでした。

 

最近になって再びCSVからグラフを描く必要がでてきました。従来から慣れている方法でもグラフは描けそうですが、これを機会に改めてTidyverseを理解してみることにしました。特に、ggplot2を使えば、従来の方法よりもグラフが統一的な方法で描けそうです。


まずは、単純な折れ線グラフを描く練習をしてみて、Tidyverseやggplot2の使い方に慣れてみました。よく理解できたとは言えませんが、グラフを描くのに最低限必要な点は理解したと思います。


次に、同一グラフ内に複数の折れ線グラフを描く場合、ggplot2では如何に処理するのか調べました。ggplot2を使えば、同一グラフに折れ線グラフを追加していく事はできるようです。試してみたら、確かに出来ました。しかし折れ線グラフを追加するたびに関数「geom_line()」が増えていくので、ロジックがスッキリしません。しかも折れ線グラフを数本追加するくらいなら、力業でなんとかできるかもしれませんが、何十本も追加するとしたら(やれば出来るかもしれませんが)やっていられません。


僕が悩んでいるような事柄はFAQだろうと思ったのですが、Webを検索しても解決策が見つかりません。もしかすると検索キーワードが悪いのかもしれませんが、適切な検索キーワードが与えられるということは、ほぼ正解を知っているという事なので、何もわからない場合は検索キーワードすら思いつかないのです。そうこうしているうちに、次のようなWeb記事に辿りつきました。

 

ここで後者の記事の中に以下のような事が書かれていました。サラッと書いてありますが、これが僕の求めていた情報でした。

今のwide形式のデータだとグラフを作りづらいので、long形式に変換したいと思います。「tidyr」という便利パッケージの「gather」関数を使ってみました。

 

ここで言及されている関数「gather()」は、答えを求めて闇雲にWebで検索を繰り返していた際にも見かけたような気がしますが、その際には関係ないと思って、読み飛ばしていました。

 

試行錯誤を繰り返しましたが、これでCSVから複数系列の折れ線グラフを描くことが出来そうです。

2023-10-01

SMS認証の着信メールを振り分けたい

先月突然電源が入らなくなったスマホを、急遽機種変更し、利用環境を復旧してきました。壊れた機種と全く同じ環境ではありませんが、設定の見直しも含めて、ほぼ落ち着いてきました。もし何か方法があるなら、なんとかしたいと思っているのが、SMS認証の着信メールを振り分けることです。

 

新しいスマホではプラスメッセージでメールを受信することにしました。SMS認証のメールもこれで受けます。それは「受信フォルダ」に入ります。もし移動したいなら、手動で移動されることは可能ですが、自動的に移動させる方法はないのでしょうか。Googleの「連絡帳」にSMS認証の送り元を登録して、振り分けルールを設定するということになるのかもしれません。

 

もうちょっと簡単な方法があれば助かるのですが、なさそうな気もします。

2023-09-30

Gmailからキャリアメールへの転送

スマホを機種変更したことで利用環境の見直しをしています。これまでGoogleのアカウントは持っていましたが、Gmailのアカウントを持たずにきました。Gmailアカウントを持たずにGoogleを利用できるのかと思われるかもしれません。既にサービスを終了したGoogle+でアカウントを作ったので、その時には普段利用しているメールアドレスで登録しました。それ以来Gmailを使うこともなかったのですが、今回はじめてGmailアカウントを持つことにしました。

 

これまではサービス側の設定可能状況にも依るのですが、基本的に普段利用しているメールアドレスを登録し、サブアドレスを登録できる場合にはキャリアメールアドレスを登録するようにしていました。別にこれでも問題ありませんが、今回機種変更をすることになった原因のように、突然スマホの電源が入らなくなったときにキャリアメールだと参照できなくなってしまうので、Gmailに切り替えていく事にしました。

 

キャリアメールを指定していたものとしては、固定電話に着信があった時のお知らせメールとか、Yahoo!路線情報にある運行情報メールなどでした。これらのあて先をGmailに変更して、さらにキャリアメールに転送することにしました。


最初は全メールを自動転送することにしたのですが、何故か一部のメールが転送されません。何が悪いのか分からないし、よく考えると全メールを自動転送してもしょうがないので、一部のメールだけをフィルタ設定で転送させることにしました。ところがそれでも転送されないものがあります。それが運行情報メールでした。

 

当初は、どこに問題があるのか見当つかないけど、転送されないことは明らかだという状況でした。Gmail側としては、フィルタでラベルで振り分けしていて、それは動いているのでGmail側の問題ではなさそうです。また固定電話の着信お知らせメールも同様の設定をしていて、こちらはキャリアメールに転送できているので、Gmailのフィルタ設定とか、スマホの+メッセージの問題ではなさそうです。というか、そう思っていました。

 

「Gmail側がラベルで振り分けできているなら、Gmailは問題ないのだろう」→「Gmailからキャリアメールに転送されたメールが拒否されているのかもしれない」→「キャリアメール側で何か設定しておこう」という風に考えました。そこで運行情報メールのアドレスが拒否されないように設定してみました。すると、メールがスマホの+メッセージに届くようになりました。やはりそういう事だったのかと思いました。

 

このような設定をしなくてもGmailからスマホに転送されてくるものもあるのに、運行情報メールは何が違うのかとは思います。

2023-09-24

『毎日のスヌーピー』を買ってみた

2023年9月初旬にAERAdot.で「中学英語しか使っていないのに、日本人がスヌーピーたちが使う英語を理解できない理由」という記事を目にしました。英語を理解するには、「文化背景の知識」と「セットフレーズの知識」を学ぶ必要があるという趣旨でした。この主張は同意するところがあります。英語の勉強というと、一生に一度も目にしないような難しい英単語を覚えたり、とても稀にしか使われないような英文法を頭に詰め込むことが必要だという風潮が何故かあるような気がします。その反動なのか、英語は基本単語だけで十分だというような主張も出てくるのですが、それはそれでちょっと違うのではないかと思います。

 

その記事が訴える「文化背景の知識」というのは、僕自身も必要だろうと思っていました。英語に限らず、日本語も含めたすべての言語がそうだと思いますが、伝えたいことがあった際に全てを明示的に表現するわけではなくて、自明と了解している文化的背景は「言うまでもないこと」として表に出てきません。日本人が英語を学ぶ際に、単語とか文法ばかり気にしますが、文化的背景がわからないままでは、簡単な英単語と簡単な英文法しか使われていないのに、結局何なのか「わからない」という状況に陥りがちだと思います。

 

毎日のスヌーピー』は、このような問題意識を踏まえた書籍で、こういう本を僕は求めていました。

 

ちょっと飛躍するかもしれませんが、「文化背景」と「セットフレーズ」の知識ということから、清少納言が枕草子に書いたことを思い浮かべました。中宮定子が「香炉峰の雪は」と問いかけると、清少納言が「簾を撥げて看る」と応えたという逸話です。言葉と言うものは、表に出てくるものの背景にあるものを踏まえているため、それが分からないと、とても簡単な単語が並んでいるだけなのに、知らなければ全く理解できないものです。

 

この本を読めば英語の文化背景は完璧だなどと言うつもりは毛頭ありませんが、よい入り口になってくれるだろうと思います。

2023-09-23

OpenVMS Community LicenseのPAKは、メール配布ではなかった

VSIが提供するOpenVMS Community LicenseのPAKが2023年9月下旬に有効期限になります。去年までは時期がくると勝手にメールで新しいPAKが送られてきたので、今年もそうだと思っていました。ところが何時まで待っても送られてこないので、VSIのメールを再確認しました。


2023年9月11日付の「OpenVMS on x86 Community Update」というメールの中に次のような記述がありました。

To download the updated PAKs for your systems, find the email that you received from us upon approval of your application for the community license and click on the link for the appropriate architecture. The archive containing the license script will be automatically downloaded to your PC.

 

過去のメールを探してみると、2020年8月頃に「Your Community License Request」というメールを受け取っていて、その中にPAKダウンロード用のリンクが記載されていました。これをブラウザで参照すると、Windows PCのダウンロードフォルダにPAKが落ちてきました。


今年もメールがくると思っていたので戸惑いましたが、これからはこのような方式にするのでしょう。PAKの有効期限が切れそうなので焦っていましたが、これで今後もOpenVMS/alphaが利用できそうです。

2023-09-21

XIAOMI Redmi Note 10T

先週末突然壊れたHUAWEI nova lite2に代わって、実店舗でXIAOMIのRedmi Note 10Tに機種変更してきました。普通の機種変更であれば、元の端末から情報を移行できるところですが、今回は元端末の電源が入らないので、記憶を頼りに復旧作業をおこないました。

 

元の端末はAndoroid 9でしたが、今度の端末はAndoroid 12です。似ているようでもあり、ずいぶん違うようでもあり、いずれにしても新しい端末の操作に慣れていくことになるでしょう。

2023-09-18

オンライン機種変更には二段階認証が必要

スマホが壊れたので機種変更をするつもりです。これは実店舗に行く方法とオンラインで完結する方法がありますが、操作に不安がなければオンラインでおこなうのが手っ取り早いようです。僕自身はオンライン機種変更はやったことがありませんが、Webで体験記事を読む限りでは、なんとかなりそうです。


スマホが壊れているので、スマホでは機種変更手続きをおこなえないので、PC上のWebで機種変更手続きをおこなうつもりでした。ところが、手続きの途中で二段階認証が必要となり、その認証番号の送信先はスマホなのです。そのスマホが壊れていて電源が入らないから機種変更しようとしているのに、これでは手続きが先に進みません。


どうやらオンラインで機種変更するのは行き止まりのようです。実店舗に出向いて手続きするしかないようです。

2023-09-17

The Great Gatsby

NHKラジオ第2で放送されている「Enjoy Simple English」では金曜日に「Masterpieces From Around the World」として世界の名作が取り上げられていますが、2023年9月は「The Great Gatsby」でした。この作品は、以前から耳にしたことはあるのですが、どんな内容なのかは全く知りません。

 

またthe Japan Times Alphaで連載されている「英語で味わう世界の名作」 では2023年9月8日号から「The Great Gatsby」が取り上げられています。偶然なのかもしれませんが、奇遇だなと思います。

 

原著を読んでみれば英語の勉強になるとは思いますが、それよりも和訳で読んでみようかと思います。

スマホが壊れた

2019年10月にガラケーからスマホに移行しました。それ以来使っているHUAWEI nova lite2が壊れたようで、電源が入りません。壊れる直前にはネットを閲覧していて、画面が固まったので、電源ボタンを長押しして強制的に電源を落としました。そうしたら、それから電源が入りません。

 

ネットを検索してみると、充電が減っているかもしれないので充電ケーブルを繋いで30分~1時間ほど充電してみて、それから電源を入れてみたらどうかとか、(メーカーによって異なるようですが)強制的に電源を入れる方法を試してみたらどうかなどの方法があるようです。いろいろ試してみましたが、電源が入りません。

 

サポートセンターと連絡をとって修理してもらう方法が考えられますが、修理可能とは限らないと思いますし、修理期間や修理料金が気になります。ヘビーなスマホユーザではないので、スマホ本体には無くなって困るような情報は(あまり)ありません。それよりもスマホを利用できない期間が長引くのは避けたいところです。

 

故障修理よりも手っ取り早いのは機種変更かもしれません。販売店に出向くよりもオンラインで済ませる方法もあるようですので、挑戦してみようかと思います。

2023-09-11

TOEIC受験

2023年9月10日(日)午前に行われた第332回のTOEICを受験しました。これまでもそうだったし、今回もそうでしたが、PART7は最後まで解答できませんでした。それでも前回よりは解答できなかった問題が少なかったので、勉強してきた成果なのだろうかと都合よく考えています。

 

一年後にもTOEICを受験するつもりなので、それを目指して勉強していこうと思います。ですが、さて何をしていけば良いのだろうかとも考えます。多くの出版社からは様々なTOEIC対策本が出ていて、玉石混交かもしれませんが、評価の高い書籍も少なくありません。さらにTOEICの公式問題集を勧めるひともよくいます。

 

どんな対策本や問題集でもそうですが、問題を解いて、解説を読んで、納得したとしても、それでTOEICの対策として十分なのか確信がありません。ごく稀に問題集と全く同一の問題が出ることがあるかもしれませんが、その一問に正答したとしても、他の問題ができなければ、結局はよい結果を残すことはできないでしょう。どの問題集を使って勉強するかが重要なのではなく、極端な話としては、どんな問題集を使って勉強しても構わないので、問題を解き、解答を読んだ後に何をしていくのかが大切なのではないかと思います。

2023-09-05

『ローマ教皇は、なぜ特別な存在なのか』を読みました

今年春にNHK出版から「世界史のリテラシー」というシリーズが登場し、2023年8月には『ローマ教皇は、なぜ特別な存在なのか』が出たので読んでみました。中世ヨーロッパの歴史ではローマ教皇が大きな役割を果たしていますが、世界史を学んでも、ローマ教皇が特別な存在であることが前提として歴史を説明しているので、何故そのような存在となっているのかは今まで分かりませんでした。

 

本書のタイトルのような問い「ローマ教皇は、なぜ特別な存在なのか」の答えが、「それは○○だからです」というような一言で答えられる訳ではないでしょう。本書全体を通して、ローマ教皇にかかわる歴史的な経緯を詳述していくことで、ローマ教皇が「特別な存在」になっていく経緯を説明して本書タイトルの答えとしたのだと思います。

 

21世紀の今日にも続いているローマ教皇は、もちろんのことながら初期キリスト教の頃からそうだったわけではなく、歴史的に成立した存在だと思います。ローマ教皇が特別なのは、カトリックが世の中に大きな位置を占めていた中世では自明だったのかもしれせんが、ローマ教皇の側があえて特別な存在になろうと動いてきた結果なのでしょう。ふと思うに、日本において尾張・紀伊・水戸の徳川家が「御三家」と呼ばれますが、江戸時代初期には、駿河甲府舘林の徳川家も存在してので、徳川分家が三家しか存在しなかった訳ではありません。それが御三家として常識となっていくのは、自然にそうなったわけではなく、あえてそうなるような活動の結果であったようです。そこにローマ教皇が特別な存在となったこととの類似性を感じます。


2023-09-02

2023年夏の平均気温は平年より1.76℃高かったらしい

報道「この夏の平均気温 平年比1.76度高く125年間で最高に」によると、2023年夏の平均気温は過去125年で最高を記録し、平年に比べて1.76℃高かったそうです。これは平均なので、北日本では平年よりも3℃高かったようです。

 

地球温暖化は20世紀後半から世界的に問題となっていて、1997年に京都議定書でCO2削減など対策が呼びかけられています。しかし2001年の911であるとか、2008年のリーマンショック、2011年の東日本大震災など、数々の世界的な大事件の陰に地球温暖化問題は追いやられてしまい、実効ある対策は後回しにされてきました。


当時から気温上昇を1.5℃以下に抑えるべきだという意見がありました。しかし世間一般の感覚としては、気温が1.5℃上昇するとどうなるのかが身体感覚として理解できなかったのではないかと思います。単純に考えると、気温が1.5℃違うというのは、一年を通じて日常的な変化の幅にすぎないので、たいしたことはないと考えているのかもしれません。しかし「平均気温」が1.5℃上昇するというのは、まさに2023年夏のような状況が当たり前の世界になるということです。

 

2023年夏は猛暑でしたが、もしかすると2024年夏は平年並みかもしれませんし、将来的には冷夏の年もあるかもしれません。しかし地球温暖化というものは、上がったり下がったりを繰り返しながら、長いスパンでは気温が上昇していくことを予測しています。

 

さらに恐ろしいことに「県内気温 2100年までに4.4度上昇の場合も 県報告書」というような報道もあります。IPCCの予測シナリオでは、平均気温が4℃以上も上昇する可能性があることを示しています。「平均気温」が4℃以上も高いというのが、どのような世界になるのか想像できません。

 

地球温暖化問題は、人間の一生に比べると、とても長いスパン考えなければならない問題なので、個人的な感覚で議論するわけにはいかないところがあります。よくある反応として、将来気温があがるかもしれないが自分はもう生きていないから云々と言って、対策に後ろ向きだったりします。それはそうなのでしょうが、今の自分に関係なければ、それで良いのかという事を問う必要があるでしょう。

2023-08-29

サイコロを振って出る目はランダムなのか

コンピュータ登場以前に存在した双六のようなボードゲームでは、サイコロを振って、出た目だけ進んでゴールを目指します。サイコロを振って出る目は理論的は各々1/6の確率になる筈ですが、それは無限回数を試行した場合であって、少ない試行回数では出る目に偏りがあるかもしれません。しかし確率が各々1/6であることは期待しています。そうでなければ、そのサイコロはイカサマかと疑ってしまうでしょう。

 

テレビの時代劇などでは、仕掛けをしたサイコロが賭場でバレて大騒ぎになるシーンを目にします。ネット上にも「丁半博打のサイコロについて 質問があります。」のような質問があがっています。僕が気になっているのは、賭場でイカサマをするかどうかではなく、サイコロの出る目の確率は均等に1/6であるべきだという点です。

 

話は変わりますが、ポイントカードを利用する上で、Web上のサポートサイトには双六のようなミニゲームが提供されている場合があります。サイコロを振って出た目だけ進むと、止まったところで、「何歩すすむ」とか「何歩もどる」のようなイベントが発生します。Web上で提供されているゲームなので、現実にサイコロを振っている訳ではないと思いますが、そのサイコロは「本当にランダムなのか」という点で疑念があります。

 

例えば、2マス先に「もどる」のマスがあった時にサイコロを振ると、なぜか「2」の目がでることが多いような気がしています。「1」~「6」の目がランダムに出ているのではなく、「2」の目が出やすくなるようなロジックになっているんじゃないかという疑念があります。まるで「吸い寄せられる」ように、「もどる」のマスにコマが引き寄せられているように感じるのです。Web上で提供しているミニゲームが何のプログラミング言語で組まれているのかは知りませんが、コマの現在位置や、その先にあるマスのイベントが何であるのか、ロジック的に取得することはできるでしょう。それを踏まえてサイコロを振って目を出すことも出来るのかもしれませんが、それは禁じ手かと思います。ミニゲームのロジックを知りたい訳ではありませんが、ランダムに目が出るサイコロになっていることを期待しています。

8月が終わろうとしていても、猛暑が続く

今夏は気象観測上で記録的な猛暑だと報道されています。梅雨の頃から既に気温が高く、7月から8月の盛夏も猛暑でした。ニュースなどでは8月8日の立秋の頃には「暦の上では秋」と毎年同じような事を言っています。「暦の上で秋」かもしれませんが、現実の天候では「夏真っ盛り」なので、「残暑」とか「(暦の上では)すでに秋」とか言われても、だからどうしたとしか思えません。


2023年は9月になっても平年よりも気温が高い状況が続くようです。早く涼しくなって欲しいと思います。何時になったら秋らしい気候になるのか分かりませんが、それでも秋は一歩ずつ近づいている気がします。8月初め頃は蝉の鳴き声が喧しく響いていましたが、 8月が終わりに近づいてきて、蝉の鳴き声は聞こえなくなってきました。その一方で、夜になると耳をすませば虫の声が聞こえてくるようになってきました。


気休めかもしれませんが、「暑さ寒さも彼岸まで」という言葉があります。猛暑の日々が続いているとは言え、終わりが近づいていると思います。

2023-08-28

BeautifulSoupでHTMLファイルから情報を取り出す

HTMLファイルの中でTABLEを使っている箇所から情報を取り出そうと思って調べていると「BeautifulSoup」というものを見つけました。これが全体として何が出来るのかは分かっていませんが、HTMLのTABLEで組まれている箇所から情報を抜き出すことは出来ました。最終的にはCSVにして情報を蓄積していこうと考えていますが、そのあたりをどのようにするかは考えているところです。

 

Webを検索すればBeautifulSoupを使った事例が見つかります。汎用的にしていくにはロジックが複雑になると思いますが、情報を抜き出すところだけなら、簡単でした。

#!/usr/bin/python3

import sys

f = open(sys.argv[1], "r", encoding="shift_jis")
data = f.read()
f.close()

import csv
from bs4 import BeautifulSoup

soup = BeautifulSoup(data, "html.parser")
for tab in soup.find_all("table"):
    with open("monex.csv", "w") as file:
        writer = csv.writer(file)
        for row in tab.find_all("tr"):
            csvRow = []
            for cell in row.findAll(["td", "th"]):
                s = cell.get_text().strip()
                if len(s) != 0:
                    csvRow.append(s)
            writer.writerow(csvRow)
# [EOF]


HTMLから特定の情報を抜き出すにはXSLTも使えそうです。XSLTは勉強中なので、どのようにしたら良いのか分かりませんが、きっと簡潔にできるのでしょう。またはsed、awkなどで文字列を解釈するロジックを書くことも出来るのかもしれません。それほど長々としてスクリプトにはならないと思いますが、BeautilfulSoupやXSLTほど簡潔にはならない気がします。

2023-08-26

fetchmailでメールを取得できなくなった

個人宛のメールは、自宅で使っているFreeBSD上のfetchmailを使って、プロバイダから手元に一括してダウンロードしています。プロバイダが提供するWebメールを利用することもありますが、ちょっと参照するだけです。

 

いつものようにfetchmailでメールを取得しようとしたら、EXIT CODE=2というエラーになってしまいました。FETCHMAIL(1)にあるEXIT CODEの説明を読んでみましたが、それでは問題の原因がわかりません。そこで詳しい情報を得るために-vオプションをつけてfetchmailを実行してみました。そのログには、次のような出力がありました。

SMTP< 451 4.1.8 Domain of sender address ******* does not resolve

 

DNSの問題のように見えます。こういう時には、以前であればnslookupを使っていたところですが、最近はdrillを使うようです。「解決できない」と出ているドメインを指定してみると、応答が得られずタイムアウトしてしまいます。しかし正常終了するドメインもあるので、僕のところのネットワークが切れている訳ではなさそうです。しかも問題発生しているドメインは、同じところから数日前にもメールが来ていて、その時には問題ありませんでした。

 

一時的なトラブルなのか、DNSの世界で何か問題が発生しているのか、よくわかりません。僕が参照しているDNSサーバの問題なのか、世界中の全DNSサーバで問題となっているドメインの情報が消えているのか、根本的な原因がどこにあるのか不明です。問題の原因が何であれ、長引かずに解決して欲しいところです。

 


2023-08-24

MarineTrafficでPACIFIC WORLD号の位置がわかる

2023年8月23日にピースボートの第115回船旅が神戸から出航しました(「2023年8月23日(水)、Voyage115が出航しました」)。このあと北米や欧州を廻って、12月に日本に戻ってきます。

 

今頃どこを航海しているんだろうかと思いをはせるのも愉しいものですが、ネットを調べてみたら「MarineTraffic」を見つけました。どういう仕組みなのかは詳しくありませんが、指定した船舶の現在位置を地図上に示してくれます。アカウントを作れば出来ることが増えるようですが、作らなくても、その船の位置や、周辺の他の船の情報は得られます。

 

パシフィック・ワールド号の現在位置を追いかけながら、旅先の様子を想像するのも愉しいですが、いつかは実際に乗船して、自分の目で体験したいと思います。

2023-08-23

船室のテレビ

先週「ピースボート40周年記念イベント」に参加した際、「ピースボート地球一周の船旅 総合カタログ 2024-2025年」を貰いました。これを眺めているだけでも、再び乗船したい気持ちになってきます。

 

以前に乗船したOLVIAもそうでしたが、いろいろな種類の船室が提供されています。もっとも安いのは「フレンドリーエコノミー/バジェット」というグレードだと思います。一人で参加すると相部屋になりますが、そういう人は多いので、これも何かのご縁ということです。


船室備え付けの設備を確認すると、シャワーとかトイレというのはOLVIAと同じですが、どうやら各船室にはテレビが置いてあるようです。テレビがあって、どうするんだろう?船内放送があるのでしょうか。それともDVDなどを視聴するためにつかうんでしょうか。日本近海ならまだしも、日本から遠く離れてしまったら日本のテレビは映らないでしょう。寄港先で現地のテレビ放送が映るのであれば、それはそれで面白いとは思います。

2023-08-20

猛暑と水分補給と塩分補給

2023年の夏は、気象観測史上稀に見る猛暑のようです。今年ほど酷くないとしても、夏には水分補給が大切です。よく言われるのは、喉が渇いたと自分で思った時には手遅れなので、喉が渇いたと思わなくても定期的に水分補給をするのが良いということです。個人差もあるとは思いますが、僕の場合には炎天下を歩くだけで汗がどんどん流れてきます。ちょっと休憩がてら食堂に入ったら、コップの水を2~3杯くらいは、あっという間に飲んでしまいます(本当はもっと飲みたい)。

 

とにかく水はいくらでも飲める気がするのですが、ここで気になるのが、こんなに水ばかり飲んでいても問題ないのだろうかということです。これまでに水を飲みすぎて体調を崩した経験はありませんし、考えすぎかもしれませんが、「水中毒」になってしまうのは避けたいところです。 


水ばかり飲むのではなく、塩分補給もした方が良いという情報を見かけます。しかし反対に、塩分は普段の食事から得ている分だけで十分だし、むしろ高血圧にならないためには減塩を意識すべきで、あえて塩分補給をする必要は無いという情報もあるようです。

 

水分補給はともかく、塩分補給は賛否が分かれるので、どうしたらよいのか迷います。僕自身は高血圧ではありませんが、だからと言って塩分摂取量に無頓着でよいわけではありません。当面は食事から摂取するだけに留めておこうかと思います。

2023-08-19

1人の100歩より100人の1歩

ピースボートの40周年を記念するイベントが開催されたので、参加してきました。第40回クルーズに乗船した時の船はOLIVIAでしたが、今回のパシフィック・ワールド号は、雲泥の差でした。こんな立派な船でクルーズできるのは羨ましい限りです。トーク・セッションの中で「1人の100歩より100人の1歩」という言葉が紹介されました。誰か一人だけが頑張るのではなくて、みんなで力を合わせる事の意義を訴えるという意味で、深く共感しました。


立食形式の軽食が提供されましたが、レストランが開放されていたので座って食べることも可能でした。そのあとでラテン音楽とダンスのパーティーが開かれて、ピースボートに乗船していた頃の記憶が蘇りました。


何時になるか分かりませんが、またピースボートのクルーズに参加したいと思います。

2023-08-13

冴返る田んぼの中の集会所

本を読んでいたら「ゆる言語学ラジオ」というものがあるのを知りました。YouTubepodcastなど様々なメディアで視聴できるようです。面白いのでpodcastで聴いているのですが、先日「 俳句は一切詠まないのに、季語が収録された辞典を通読しました【歳時記1】#253」の中でタイトルの句が詠まれました。


私は俳句も短歌も全く素養がないので、俳句を目にしても表面的な情景以上のものは何も浮かびません。しかしその裏にある事情を知ると、季語「冴返る」と相まって、これが俳句というものかと感動をおぼえました。


ゆる言語学ラジオ以外にも「ゆる~ラジオ」というのが他にも数多く存在していることも知りました。それぞれに面白いとは思いますが、全部聴いていると、それだけで他の事が何もできなくなってしまいそうなので、ほどほどにしておこうと思います。

2023-08-08

Ubuntu 22.04でGanglia Webが動かない

サーバの情報をモニタする「Ganglia」というパッケージがあります。これをUbuntu 22.04環境にインストールしようとしたら、gmondやgmetadなどのデーモンは動いたのですが、Webフロントエンドが動きませんでした。原因は、Ubuntu 22.04でインストールされるPHP8.1にGanglila-webfrontendが対応していないためです。

 

Webを検索すると、PHP7やPHP8でGanglia-webfrontendが動作しないという訴えが見つかりますし、部分的なパッチも見つかります。しかしPHP8の下でGangalia-webfrontendが動作しているという報告は見つかりませんでした。PHP8は過去バージョンとの互換性がないところがあるようです。そこを手作業で修正して動くのであれば良いのですが、どうも手強そうです。

 

ならばUbuntu 22.04にPHP5をインストールすれば良いかもしれません。Webには「UbuntuでPHP5と7を共存(同居)させてみた」のような情報がありますから、なんとかなりそうです。Ubuntuの公式リポジトリにはPHP8.1しかありませんが、PHPの過去バージョンを持っているPPAリポジトリを使えるようにすれば、PHP5.6をインストールできました。

 

Apacheから参照されるモジュールが、PHP8.1用とPHP5.6用がインストールされることになるので、PHP5.6用を有効にしておきます。もちろんPHP8.1用は無効にします。そしてApacheを再起動させると、無事にGanglia-webfrontendが動きました。

猛暑と体調

報道によると、2023年7月の平均気温は観測史上最高だったそうです(7月の気温、125年で最も高く 温暖化の影響で45年ぶり記録更新)。8月に入って、台風接近の影響があるのか、若干最高気温が下がっているようです。それでも30℃以上あって、暑い日々が続いています。

 

最高気温が体温を超すような日々に比べれたら、幾分気温がさがっているのに、全然涼しくなった気がしません。体調も夏バテ気味です。気温と体調が比例関係にあるわけではないと思います。また暑さ指数(WBGT)の数値を確認しても実感とは合っていない気がします。 


体調と何らかの気象測定値が相関関係にあるとは思いませんが、天気予報で翌日の予想最高気温を確認して、低いと、暑さが緩和されていると期待します。しかし翌日になってみると、気温が高くても低くても、体調が芳しくないのは変わらずです。

 

今年は、夏らしい夏で、結構なことですが、暑さにうんざりしているのも確かです。

2023-08-07

/etc/cron.dに置くファイルは、どんなファイル名でもよいわけじゃない

Ubuntu 22.04(に限らないとおもいますが)を使っていて、これまで/etc/crontabに入れていた内容を、/etc/cron.dの下に移すことにしました。cronを使う場合に、昔から/etc/crontabを編集していましたが、今ではcrontabを編集するのではなく、/etc/cron.dの下に置くのがお勧めなようです。

 

それでファイルを/etc/cron.dの下に置いたのですが、動いているような気がしません。Webを検索してみると、動かない場合の対処方法などの情報が見つかるのですが、そこに書いてあることを確認しても、どうも違うようです。そして調べているうちに「Debian系のcronで気をつけること」という情報が見つかりました。それによると、ファイル名は何でも良い訳ではなく、英数字とアンダーバーとハイフンしか使えないようです。自分が置いたファイル名を確認すると、ピリオドを使っていました。これが動かなかった原因で、ファイル名を修正したら動くようになりました。 


ファイル名が不適切だった場合、syslogに何かメッセージが残っていれば失敗に気付けたと思いますが、何も出ていなかったので苦労しました。

2023-08-01

EV時代の電動自転車

完全に切り替わるのが何時になるかは見通せませんが、世間の潮流としては、ガソリンエンジンを採用した自動車は消えていき、EVが主流になる方向です。このような傾向にあるのは、地球温暖化のために化石燃料を使わないようにしているからだと思います。そうなると、自動車だけではなくオートバイも同様なんじゃないでしょうか。


原動機付自転車」にも内燃エンジンだけではなく電動機のものがあるようです。そうなると「電動自転車」との違いが、よくわからなくなってきます。現状では、免許証の要否とか、ペダルの有無など、違いがありますが、これらは歴史的な事情に過ぎない気がします。

 

地球温暖化対策として、ヨーロッパなどでは2030年代にEV以外の新車販売を禁止しようという方向性を出しています。これは新車販売の話であって、ガソリン車が禁止される訳ではないと思いますが、もっと先の未来には、いつになるかわかりませんが、ガソリン車自体が禁止される日がくるでしょう。そうなると街中のガソリンスタンドは無くなってしまうと思います。その時、「原動機付自転車」と「電動自転車」は、いったいどうなっているのでしょうか。

2023-07-17

デカフェとノンアルコールビール、そして納豆

珈琲は嗜好品で、何のために飲むのかという質問がナンセンスかもしれません。珈琲にはカフェインが入っているので、朝飲むとシャッキリするとか、夜寝る前に飲まない方が良いとか言われます。しかしカフェインを抜いた「デカフェ」というものがあり、カフェインを接種せずに珈琲が飲めるそうです。


デカフェの製法には何種類かあるようです。いずれの方法を用いるとしても、珈琲豆専門店で取り扱っている全ての珈琲豆に対して「デカフェ」が用意されている訳ではありません。デカフェとして飲める珈琲の選択肢は限られています。

 

デカフェの事情は、ノンアルコールビールの事情に似ているような気がします。車を運転しているとアルコール厳禁ですが、それでも飲みたいからノンアルコールビールを選択するという意見を聞いたことがあります。車の運転中くらいビールを我慢すれば良いのではないかと思わなくもありませんが、それでも飲みたいという需要があるのでしょう。また、そのノンアルコールビールは、世界中のビールと同じ種類が用意されている訳でもないという点も、デカフェに似ています。


カフェイン抜きの「デカフェ」とか、アルコールが入っていない「ノンアルコールビール」が存在するのであれば、納豆菌が入っていない「納豆」なんていうのはどうでしょうか。納豆は好き嫌いがはっきり分かれる食品です。しかし健康食品として扱われることがあり、食べると健康上のメリットがある(本当かどうか知りませんが)と喧伝されています。

 

納豆が嫌いな人であっても、健康上のメリットがあるなら食べてみたいと考えるかもしれません(そんな事は考えないかもしれませんが)。そうであれば、デカフェやノンアルコールビールのように、納豆菌が入っていない納豆を売り出せば、人気が出るかもしれません。


けっこう良いアイディアではないかと思ったのですが、納豆菌が入っていないと健康上のメリットも得られないかもしれないと思いました。やっぱり駄目かもしれませんね。

ブラタモリ

NHKで放送されている「ブラタモリ」は、2009年10月からレギュラー化して以来、14年ほどになります。見ていて楽しい番組で、話題に取り上げられた土地に行ってみようかという気にさせてくれます。今後も続いて欲しいと思いますが、タモリさんは不死身ではないので、番組終了となる時がくるのはやむを得ないでしょう。


これが大岡越前であったりバス旅番組などであれば、主役を交代させて長寿番組になることも可能かとは思います。しかしブラタモリは、タイトルからしても特定の芸能人を全面に押し出しています。もしもタモリさんとは別の芸能人を使って、「ブラタモリ」のような番組を作ったとしても、まさか「ブラタモリ」とは名乗れないでしょう(「ブラタモリ シーズン2」とか「新ブラタモリ」なども論外でしょう)。

2023-07-11

店舗入り口の自動ドア

最近は見かけなくなった気がしますが、ずいぶん前には店舗入り口の自動ドアは、床に敷かれているマットがスイッチになっていたと思います。Webには「あの頃から何が変わった?自動ドア」という情報がありました。それが、いつの頃から、ドアの上部に設けられたセンサーでドアが開閉するようになりました。

 

一方で、センサーではなく、扉に設置された押しボタンで開閉するものもあり、これは本来の意味での「自動ドア」ではないような気がします(ボタンを押すのは「手動」なので、「自動的」に開くドアとは言えないでしょう)。ここで、何故センサー方式と押しボタン方式が存在するのか疑問でしたが、センサーの誤動作でドアが勝手に開いてしまう現象が問題となっている対策との情報を得ました。特に人通りの多い繁華街などで問題になっているようです。例えばコンビニがあったとして、店に入るつもりがなくても、店の前を人が通れば勝手に扉が開いてしまうのは困るようです。その対策として、ドアに押しボタンを設置して開閉させる方式に切り替えているようです。

 

何もアクションを起こさなくても「自動的」にドアが開閉してくれれば助かるとは言え、センサーの誤動作で、勝手に開いたり、運が悪いと開かなかったりするのは、不便です。

 

将来的には、もっと優れた方式が考案されるのかもしれません。

2023-07-05

xsltproc greeting.xsl greeting.xml

O'REILLYの『XSLT』(Doug Tidwell)の第2章では、『プログラミング言語C』以来定番の「Hello World」の例題が掲載されています。そこでは、以下のようなXMLファイル(greeting.xml)と、

<?xml version="1.0"?>
<greeting>
  Hello, World!
</greeting>

以下のようなスタイルシート(greeting.xsl)を使用して、HTMLファイルに変換します。

<xsl:stylesheet
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        version="1.0">
<xsl:output method="html"/>

<xsl:template match="/">
  <xsl:apply-templates select="greeting"/>
</xsl:template>

<xsl:template match="greeting">
  <html>
    <body>
      <h1>
        <xsl:value-of select="."/>
      </h1>
    </body>
  </html>
</xsl:template>
</xsl:stylesheet>

 

この本ではXalanというXSLTプロセッサを使っていますが、僕はlibxsltに入っているxsltprocを使ってみました。

$ xsltproc greeting.xsl greeting.xml
<html><body><h1>
  Hello, World!
</h1></body></html>

XMLファイルが、スタイルシートの定義に基づいて、HTMLファイルに変換できました。まだXSLTファイルの書き方はわかりませんが、この本を読み進めていけば理解できるのだろうと思います。

2023-06-27

XSLTの基礎

XMLに関連する技術のひとつに「XSLT」があります。XML文書の構造を変更するために使わるという概念は、難しくないのですが、具体的に、何をどうするのか分かりません。W3Cのサイトには「XSL Transformations (XSLT) Version 1.0」がありますが、規格書を読んでも、深みにはまるだけではないかという恐れを抱いていました。

 

手っ取り早い参考書として、O'REILLYの『XSLT』(Doug Tidwell)を買ってみました。2001年に出た初版本ですし、Abebooks経由の古本ですが、XSLTを勉強し始めた初心者には十分です。

 

まだ読み始めたばかりですが、第2章の「The Obligatory Hello World Example」が参考になりそうです。以下のようなシンプルなXML文書をXSLTで変換する例が示されています。

 <?xml version="1.0"?>

<greeting>

    Hello, World!

</greeting>

 

このような例は、本書以外でも登場しそうですが、僕が気に入ったのは以下の点です。

  1. XSLTで変換するのが、HTMLだけではなく、PDF、Javaプログラムなどもある。
  2. XSLTの例示が複数あって、いろいろな書き方が考えられることを例示している。

 

XML文書をXSLTを用いてHTMLに変換する例は、よくありますが、Javaプログラムにも変換できるとは知りませんでした。Javaに出来るなら、PythonやAWK(!)にだってできるでしょう。

 

新刊としては約$40だったようですが、古本なので$4くらいでした。さらに送料が$6ちょっと必要で、今は円安なので、最終的に日本円としては千五百円ほどです。激安という訳ではありません。

2023-06-13

Schemeの「継続」という概念

近所の図書館で『プログラミング言語SCHEME』を借り、これを読みながらSchemeを勉強しています。SCHEMEはLISPから派生した言語ですから、LISP独特のS式であるとか、ドット対のような、他のプログラミング言語には見られないような特徴があります。これらは独特ですが、理解するのが難しいというものではないと思います。


SCHEMEにおける難しい概念のひとつは、「継続」(「コンティニュエーション」と表現している場合もあるようです)だと思います。前述した書籍の「第3章 続Scheme」の「3.3.継続」では次のように説明されています。

call/ccには1引数のプロシージャpを渡す必要があります。するとまず、call/ccは現在の継続を獲得し、それをpに引き渡します。この時の継続自身は、kというプロシージャの形で表現されています。そしてkに値を引き渡して適用する毎に、その値がcall/ccを適用した際の継続に返されるのです。そしてこの値が、call/ccの適用における実質上の値となります。

また、kを起動せずにpが完了した場合、そのプロシージャが返す値がcall/ccの適用における値となります。

 

Schemeに慣れたら何でもないことなのでしょうが、まだ学び始めたばかりの段階の者にとっては、何を言っているか見当もつきません。「継続」でSchemeに躓くひとは少なくないようで、Webを調べていたら「Appendix 3. 継続についてもう少し」という記事を見つけました。これ以外にも「継続」について解説した記事がWeb上にはあるようですから、いろいろと読んでみたり、MIT Schemeで動作を確認してみたりして、概念を理解しようと思います。


前述した書籍には「以下は、再帰からの非局所的な脱出を行う、call/ccの使い方を示したサンプルです。」というような記述もありました。まだSchemeの「継続」が何なのか理解していませんが、C言語のライブラリにある「setjmpとlongjmp はどのように実現されているのか」のようなものかとも感じました。

2023-06-12

MIT SCHEMEを学ぶ

有名な教科書である『計算機プログラムの構造と解釈』を学ぶ下準備としてSCHEMEを調べています。SCHEMEは仕様がコンパクトにまとまっていると言われていて、確かにそういう感じです。ただし、多くの実装が存在するので、どれを選んだら良いのか混乱します。また現実問題として、コンパクトな仕様の範囲では済まないことが多いようで、「Scheme requests for implementation」というものがあるようです。

 

ひとまずMIT SCHEMEを使ってみることにしました。SCHEMEはLISPの一種なので、入門書の最初はS式の話題から始まることが多いです。次第にSCHEME独特の機能の説明がなされますが、仕様がコンパクトなので、一通り全体像をつかむのは、それほど難しくはないんじゃないかと思います。

 

基本を学んだら、何か応用的なプログラムを組んでみたいところですが、そうなると基本機能だけでは済まなくなってきます。MIT SCHEMEの公式サイトでは「MIT/GNU Scheme Reference」が置いてあるので、これに目を通しておくほうがよいのではないかという気がしてきました。使用可能なSRFIについても書いてありますが、かなり膨大です。それを使わなくても、自分で実装することは可能かもしれませんが、既に存在するものを独自に作るのは「車輪の再発明」とも言われており、あまり推奨されません。またSCHEMEらしさを知るには、さきほどのドキュメントにあるものを使っていくほうが良いと思います。 

 

PDF版では500頁弱もあるドキュメントなので、簡単に読める量ではありませんが、どんなものがあるのか、ざっと目を通しておこうと思っています。

2023-06-09

SICPのEmacs Infoファイル

Webで「SICP and Emacs」という記事を見かけました。計算機科学の教科書として著名な「Structure and Interpretation of Computer Programs」(略称:SICP、日本語訳:計算機プログラムの構造と解釈)が、EmacsのInfoファイルで読めるのだそうです。ただし、日本語訳が読めるわけではなく、読めるのは原文(英文)です。

 

実際にファイルが置いてあるのは「SICP in Texinfo Format」です。ここには既にInfoファイルとしてコンパイル済のファイルが置いてあるので、ダウンロードするだけでした。

 

ホームディレクトリに「~/info」を作って、そこにダウンロードしたファイルと「dir」を置きました。またemacsの初期化ファイルに、以下の行を追加しました。

(setq Info-default-directory-list
      (append Info-default-directory-list (list (expand-file-name "~/info"))))


2023-06-06

When can you get a copy of the contract?

TOEICの勉強のため『 極めろ! リスニング解答力 TOEIC® L&R TEST 』で勉強しています。TOEIC PART 2の問題として、以下のような例文がありました。

A: When can you get a copy of the contract?

B: Right after it's signed.

 

この訳は以下のようになっています。

A:いつ契約書の写しをもらえるんですか?

B:署名後すぐにです。

 

訳文を見ると、Aの発言では、隠れた主語が「私は」であるように思います。しかし英文の方では主語が「you」になっていますから、主語だけを見たら、「(あなたは)いつ契約書の写しを(私に)提供するつもりなのか?」という意味のように受け取れます。しかし動詞が「get」なので、そのような訳文として理解するのは変だとも思います。


ニュアンスで理解するなら「いつ契約書の写しをもらえるんですか?」でも「いつ契約書の写しを提供するつもりなのか?」でも、似たようなものかもしれません。しかし英文と訳文の関係が腑に落ちません。考え方によっては、英文ではそのように言うのだから、愚図愚図理屈をこねまわさずに、そのまま覚えたら良いんだと言われそうです。


語学では理屈通りにはならない事もあるのは仕方ないことだとは考えます。しかし、そればかりだと、とにかく丸暗記という安易な方向に流れてしまいそうです。できるだけ、背後にある理由に納得できるようにしておきたいと、思っています。


河川賊

NHK出版から「世界史のリテラシー」というシリーズの刊行が始まり、『少女は、なぜフランスを救えたのか―ジャンヌ・ダルクのオルレアン解放』と『「ロシア」は、いかにして生まれたか—タタールのくびき』が出版されました。漠然とは知っていたものの、深く理解していたわけではないテーマで、どちらも興味深く読みました。

 

後者を読んでいたら、次のような記述がありました。 

北方からヴォルガを下ってきた河川賊「ウシクイニク」により首都サライが襲われ、多くの物資が奪われたのです。


ここで「河川賊「ウシクイニク」」には注が付けられていて、「河川を利用する略奪者集団。(後略)」と説明されています。これまで「海賊」とか「山賊」というのは聞いたことがありましたが、「河川賊」というのは初めて知りました。とは言え、海や山に「賊」がいるなら、河川にも「賊」が居てもおかしくはないし、それが「河川賊」というものなのだろうとは思います。

 

日本では、国土の構造から仕方ないのかもしれませんが、大陸に流れるような大河がありません。そうなると河川専門(?)の「河川賊」の出番は無さそうで、結局「山賊」になってしまうような気がします。それにくらべるとロシアのボルガ川などは3,700kmほどもあり、日本の信濃川や利根川は300kmほどしかありませんから、比べものになりません。中国の黄河も5,500kmほどありますし、南米のアマゾン川は約5,600kmもありますから、歴史を遡ると河川賊が存在していたのではないかと思います。

2023-06-04

これじゃ数独にならない

 The Japan Times Weekendを購読しています。クロスワードとか漫画などが集まった頁があるのですが、そこには数独も掲載されています。ところがMay 20-21, 2023号の数独は、全てのマスが最初から埋まっていました。これじゃ数独にならない。



2023-05-06

水戸黄門のパラレルワールド的解釈

大ヒットした映画「踊る大捜査線 THE MOVIE」の中で織田裕二演じる青島俊作巡査部長が叫ぶ「事件は会議室で起きてんじゃない!現場で起きてんだ!」というセリフはとても有名です。この「踊る大捜査線」という作品は、シリーズの他の作品の設定内容を仄めかす演出が多く見られます。次の映画作品「踊る大捜査線 THE MOVIE 2 レインボーブリッジを封鎖せよ!」では真矢ミキ演じる沖田仁美警視正が「事件は現場で起きてるんじゃないのよ。事件は会議室で起きてるの。勘違いしないで」と語るのは、前作品のあのセリフを踏まえています。この映画だけではなく、TVドラマやスピンオフ作品なども、隅から隅まで何度も視ている愛好家にとっては、よく知っているエピソードばかりなのだと思いますが、よく知らないままに映画を視た観客にとっては、何のことか分からないのではないかと思います。

 

ところで、長寿のTVドラマシリーズとなった「水戸黄門」は、1969年に東野英治郎が水戸黄門を演じてから、2011年に里見浩太朗でシリーズを終えるまで、40年以上も水戸黄門一行は日本各地を旅してまわりました。この作品はパターンが固定しており、「水戸黄門で印籠を出す時間は決まっていますか?」という質問が出るくらい、よく言えば「安心できる」作品でした。あるシリーズの展開もパターンが決まっていて、水戸で穏やかな(?)日々を過ごす光圀のもとに、お家騒動をおこした藩からの隠密とか脱藩した藩士とかが助けを求めてきて、それに応じた黄門一行が旅に出発し、目的地の藩主の面前で「〇×殿、久しいのう」とか声をかけると、その藩主が「こッ、これは水戸の御老公」とか言いながら平伏するというのが定番です。

 

さて、ここで「水戸黄門」には「踊る大捜査線」的な演出はなかったのか考えてみたいと思います。(水戸黄門漫遊記は、史実とは全く関係のないお伽噺だというのは百も承知の上で)なにしろ水戸黄門一行は、40回以上も日本各地を旅してきたのですが、行ったことのない土地は無いだろうと思います。しかし考えてみると、作品の中で黄門一行の中の誰かが、例えば、「なぁ助三郎。この前〇×藩に旅したとき、△△ではお主の働きは際立っていたのう」のように、別作品のエピソードを参照するような場面は無かったような気がします。


これは一体どういうことなのでしょうか。水戸黄門一行は、まるで「博士の愛した数式」のように、ひとつの旅が終わると過去の記憶を失ってしまうのでしょうか。毎回旅立つときは、過去の記憶は一切なく、新たな気持ちで出発していたのでしょうか。

 

ここで「パラレルワールド」的な世界観を持ち込めば、上述した疑問はスッキリと(!)解決するのではないかと思います。水戸黄門一行が、水戸を出発し、目的地で事件を解決し、水戸に戻ってきて平穏な日常に返るという旅路を、40何回も繰り返したのではなく、それぞれが並行時空の出来事であったとSF的な解釈ができそうです。だから仮に東野黄門がA藩に旅したり、B藩に旅した(ように見えたとしても)、それは別次元の世界の物語であって、東野黄門自身は、「旅したのは一度だけだった」という世界しか見えていないのです。

2023-05-04

放送大学附属図書館の電子ブック・電子ジャーナルなどを活用したい

放送大学教養学部全科履修生として在籍しているので放送大学附属図書館を利用する事ができます。放送大学の本部は千葉県にあるので、附属図書館も千葉県にありますが、全国のある学習センターには図書室が併設されています。ただし、千葉県にある附属図書館と比べれば、各地にある図書室は小規模です。それは仕方ありません。閲覧したい際に、すぐに手に取ることはできませんが、リクエストを出せば取り寄せることができるので、サービスが劣るということはありません。


放送大学に限らず、国公立大学や私立大学にも附属図書館があるはずです。それらの図書館では、学生に対して電子ブックや電子ジャーナル、さらにはデータベースなどをアクセスできるようになっていると思います。放送大学附属図書館では「 電子ブック・電子ジャーナル」にあるようなサービスが利用できることになっています。このようなサービスが利用できるのであれば、是非とも活用したいと思うのですが、どう利用したら良いのか、よくわかりません。

 

放送大学附属図書館では「リブナビ」、「リブナビプラス」と「電子ブックの使い方」というガイドブックを提供しています。それぞれの対称読者が若干異なるようですし、記載されている情報が重なるところもあり、また発行時と現時点とでは画面イメージなどが合っていない箇所も見受けられます。そういう問題はありますが、サービスを利用するための手掛かりとしては役に立ちます。特に「リブナビプラス」を一通り読んでおくことが良いのではないかと感じました。

 

閲覧したい書籍や論文の全てが「電子ブック・電子ジャーナル」の中に見つかる訳ではありません。そうだとしても、このような環境が提供されているのは有り難いことで、ならば十分に活用したいと思うのです。

Windows上VMware Workstation 17 PlayerにUbuntu Server 22.04 LTSをインストールしようとしたら、遅すぎて諦めた

Ubuntu Server 22.04 LTSについて調べてみたい事があったので、自宅で使用しているWindows10を使って、VirtualBox上にインストールしてみました。もう10年ほど前のハードウェアでWindowsを動かしていますので、そもそも速いマシンではありません。しかも仮想環境上にインストールするわけですから、遅くてもやむを得ないと思っていました。しかし気になるほど遅い訳でもなく、インストールできました。

 

ついでにVMware Workstation 17 Playerにもインストールしてみようと思い立ちました。VirtualBox上の環境があるので、別にVMware上にも環境を作らなくても良いのですが、 やってみました。ところが、最初は問題なかったのですが、最終段階あたりになると何故かインストール速度が遅くなりました。遅くてもインストールが完了すれば良いのですが、1時間以上待ってみましたがインストールが終わりそうにもないので、途中で中断してしまいました。

 

 Webを検索してみたところ、VMware上にUbuntu Serverをインストールしようとしたという情報は見つかりましたが、遅くて困ったという情報は見つかりませんでした。速いマシンではないので、超高速でインストールできなくても構わないのですが、VirtualBoxでは問題ないのに、VMwareでは失敗するというのが納得できません。

国立国会図書館サーチ用Firefoxプラグイン

常用しているWebブラウザはFirefoxです。検索する際に利用できるエンジンがデフォルトでいろいろ入っていますが、ここには追加することも出来るようです。なんと「国立国会図書館サーチ用プラグイン」というものを国立国会図書館が提供していることを知りました。インストールするのは簡単です。

 

 Firefoxの検索機能から「国立国会図書館サーチ」が使えるのは便利です。他の図書館のOPACも同様に検索できれば便利だろうと思うのですが、提供している図書館てあるのでしょうか。検索したい図書館のWebサイトに行ってから検索すれば良い事ではあるのですが、そうしなくても直接検索できると良いと考えています。

2023-04-30

石炭のお香とベーコンの香水

鉄道を扱った月刊誌の中に「SL石炭香」というお香の広告を見つけました。お香というと香道という芸道があるほどなのに、石炭の臭いがするお香とは、なんとも趣味に走ったものが出てきたものだと感じました。SLが運転しているのを見かけた際に、石炭の臭いがするとノスタルジックな思いがします。そういう点では、石炭の臭いが嫌という気持ちはありませんが、お香になるとすれば話は別です。


しかしながら同じような発想の商品は、世界中にあるようです。アメリカ人は(全員ではないと思いますが)、カリカリのベーコンが好きらしいです。それが高じて、ベーコンの匂いがする香水まで作ってしまったという話題が「どこまでもベーコンを愛するアメリカ人が作った「ベーコン・バズーカ」そして香水まで!!」に掲載されていました。

 

洋の東西を問わず、発想は同じのようです。

2023-04-21

最近Firefoxがよく落ちる

以前からFirefoxを利用しています。更新が出たらすぐにアップデートしていて、現在利用しているバージョンはFirefox 112.0.1です。


困ったことに、1~2ヵ月前からFirefoxが頻繁に落ちるようになりました。タブを多く開くなど負荷がかかるような操作をすると落ちてしまいます。以前は同じ操作をしても落ちなかったので、明らかに最近調子が悪いです。


負荷がかからないように、腫れものを触るように操作すれば落ちないのかもしれませんが、落ちない保障があるわけでもありません。前にも同様の現象が繰り返された事がありましたら、アップデートで直りました。今回もそうなることを願っているのですが、今のところアップデートしても解決していません。

2023-04-20

Praise in public, criticize in private.

The Japan Times Alphaで連載されている「英語でお仕事101」の2023年4月14日号のテーマは「仕事の愚痴が多く、チームワークをそぐような態度のチームメンバーに注意するには?」でした。その最後で紹介されていた言葉が「Praise in public, criticize in private.」です。それは「称賛は人前で伝え、指摘や批判は1対1のときに、他の人がいないところで言う」という意味だと書かれています。


英語表現は知りませんでしたが、このような意味の言葉は以前から知っていました。私自身が部下を持った経験はないので、そのような事を実践する機会はありませんでした。しかし、そのような対応を受ける立場にあったことは、何度もあります。しかし自分の経験では、「Criticize in public, praise in private.」だった事の方が多かったような気もします。もしかすると、心理学的に言うところの、「過去の記憶を書き換えている」なのかもしれません。

2023-04-15

GNU BISONのNEWSファイルをTW5に取り込んでみる

BISON(とFLEX)を使いこなすようになるため、情報を収集しています。まだ学び始めたばかりなので、バージョンに拘る必要はないと思いますが、機能追加とかバグ修正の情報は押さえておきたいところです。また以前は利用できた機能が、新しいバージョンでは推奨されなくなることもあるかもしれません。そこでバージョンごとの情報をまとめた「リリースノート」のようなものを読んでみようと考えました。


GNUが提供しているソフトウェアは「NEWS」というファイルにリリースされたバージョンごとの情報が書かれており、BISONにもあります。かなり大きなファイルですので、読むには工夫が必要だと思いました。これまでも情報の整理にはTW5を利用しているので、これで何とかしてみます。

 

方向性としては、NEWSファイルをバージョン毎に分割して、それぞれをTW5のTiddlerに入れようと思います。ただし手作業でやっていたら、間違いも起こしますし、それ以前に、単純ではあるのですが、膨大な作業量を前にして、やる気を失ってしまうでしょう。そこでTW5にインポートできるJSON形式ファイルを生成して、一気に取り込もうと思います。

 

まずNEWSファイルは、次のような形式で書かれています。

 * Noteworthy changes in release 3.8.2 (2021-09-25) [stable]

  Fixed portability issues of bison on Cygwin.

  Improvements in glr2.cc: add support for custom error messages (`%define
  parse.error custom`), allow linking several parsers together.
 

UNIXのコマンド「csplit」を使えば、「Noteworthy changes in release」のような行を目印にファイルを分割できます。次に、分割した個々のファイルをJSON形式にします。TW5にインポート出来るJSON形式ファイルの構成は、何か適当なTiddlerをエクスポートしたファイルを覗いてみれば見当がつきます。少なくとも「title」、「tags」、「text」があれば良さそうです。また「type」は「text/plain」としておきます。

 

分割されたファイルをJSON形式に変換するスクリプトはAWKを使いました。あまり複雑ではありませんが、エスケープ文字の扱いなどに工夫が必要でした。最終的には、以下のようなスクリプトになりました。

#!/usr/bin/awk -f
BEGIN {
    tags = "\"NEWS BISON\"";
    type = "\"text/plain\"";
    text = "\"";
}
{
    gsub("\\\\", "\\\\");
    gsub("\"", "\\\"");
    gsub("\f", "");
    text = text $0 "\\n";
}
NR == 1 {
    sub("^.*Noteworthy changes in *", "");
    sub(" *\\[.*$", "");
    n = split($0, x, "[()]");
    if (n == 1) x[2] = "YYYY-MM-DD";
    title = "\"" x[2] " " x[1] "\"";
}
END {
    text = text "\"";

    printf("{\"title\":%s,", title);
    printf("\"tags\":%s,",   tags);
    printf("\"type\":%s,",   type);
    printf("\"text\":%s},\n", text);
}
#[EOF]

こうして作成したJSON形式ファイルを、ひとつのファイルに結合し、微調整を加えてからTW5にインポートしました。

 

スクリプト作成に若干手間取りましたが、NEWSをTW5に取り込めたので、次は一つずつ読んでいくことになります。これは地道に読んでいくしかないでしょう。

2023-04-14

YACCやLEXの活用方法

UNIXでは伝統的にYACCやLEX(もしくはBISONやFLEX)が入っていますので、使いたければ、いつでも使えます。しかしながら、何に使うのかというと、コンパイラ作成というのが標準的な答えかもしれません。しかし独自に言語を開発する必要性がある状況というのが、ちょっと思いつきません。またよくあるのが、電卓を作るという例です。言語を開発するのに比べれば電卓を作るのは簡単だと思いますが、電卓ならUNIXにはbcが入っているはずだし、なんならawkなどを使っても計算機代わりにはなると思います。そういう訳でYACCやLEXを活用するための良い事例が思いつきません。


事例が思いつかないならYACCやLEXを使わなければ良いだけではないのかと言われれば、まぁその通りです。そうではあるのですが、YACCやLEXにはポテンシャルを感じるので、なにか上手い使いみちがあるのではないかという考えが捨てきれません。

 

「上手い使いみちを発見する」→「YACCやLEXで開発する」→「良かった良かった」という展開になれば最高ですが、第1段階から躓いてしまっているのが現実です。そうなら逆に「上手い使いみちを発見」できていなくても、ひとまず「YACCやLEX」を使いこなせるようにしておくのも一つの手かと思います。YACCやLEXが使いこなせていないから、上手い使いみちも見つからないのかもしれません。

 

「上手い使いみち」が云々とか言っていないで、例題としての電卓でも構わないので、まず最初にYACCとLEXを自由自在に使いこなせる状態を目指そうかと思います。

2023-04-13

図表

LaTeX2ε美文書作成入門』には、以下のような記述があります。

LaTeXには自動で図・表を配置するfigure環境,table環境があります。

 

つまり図には「figure環境」を、表には「table環境」を使うという事です。さらに同書では「表の場合はキャプションを上に書くというルールがあります」という記述もあります。このように図と表は、同じようなものではありますが、ルール上の違いもあります。ただし似たような使われ方をすることもあり、一般に「図表」のように呼ばれていると思います。

 

図表は、似ているとは言っても、別物ですので、「図」は図として、「表」は表として、別々に番号を振っていくものだと思っています。ところが先日読んだ書籍では、「図表」として文字通り同一視されていたので驚きました。図も表も区別することなく、「図表1では」とか「図表4には」とか、まとめて一連の番号を振っていたので、不思議でした。これは日本語で書かれている訳ですが、もし英訳しようとしてたら「図表1では」をどのように訳すのでしょうか。「Fig. 1」としたら「図1」となってしまいますし、「Table 1」としたら「表1」となってしまいますから、「図表1」に対応する英語表現は無いと思います。

 

仮に執筆者が勘違いをしていたとしても、書籍として出版されるまでの間に出版社の校正部門のチェックを受けるはずですので、その段階で指摘されるのではないかと思います。ところが「図表」のまま出版されてしまった事は、どのように理解すればよいのかわかりません。

2023-04-12

FLEXはGNUの一部だと今まで思っていた

古くからUNIXに含まれているツールの中にYACCLEXがあります。これらに関する記事では、実際に使用しているのは、YACCとLEXではなく、GNU BISONFLEXになっていることがよくあります。これらのツールは同時に使われることが多いので、オライリーの書籍などでも『Lex & Yacc』や『flex & bison』が出ています。

 

これまで私は、YACCとLEXをGNUが拡張したのがBISONとFLEXだと思っていました。ところがGNUのWebサイトにはBISONの情報はありますが、FLEXが見当たりません。不思議だと思っていたら、「Lexical Analysis With Flex, for Flex 2.6.2」のFAQに「Is flex GNU or not?」とあるのを発見しました。そこでは以下のように書かれています。

Well, strictly speaking flex isn't part of the GNU project.

 

なんと、そうだったのか。ずっとGNUのひとつだと思っていました。BISONがGNUの一員なんですから、FLEXもそうであっても良いと思いますが、そうなっていないのは、権利関係か何かで折り合わなかったということなのでしょうか。

2023-04-10

脳年齢

自宅で使っているWindows10には「Soliteaire & Casual Games」というトランプゲームが入っています。無料で遊べているので何も困っていませんが、有料版に変更することもできるようです。無料版は広告が入るので、ちょっと邪魔だとは思いますが、有料版にすれば広告が消えるのかもしれません。ですが、それだけのために有料版にするのは二の足を踏んでしまいます。

 

ともかく無料版なので広告が入ります。いろいろなゲームがあるようですが、脳年齢を測定してくれるようなパズルゲームもあるようです。広告を見ているだけなので、実際に遊んでみた訳ではありませんが、パスルを解いていくと「脳年齢」と称する数値が若くなっていくようです。広告では、途中で解くのに失敗して「残念でした」みたいなところまでしか見せてくれないので、最終的にどうなるのかは知りません。

 

さて「脳年齢」というものは、「100歳」よりは「50歳」の方が、「50歳」よりは「30歳」の方が、「脳年齢が若い」ということで「望ましい」と思われます。しかし若ければ若いほど良いのでしょうか?「30歳」よりは「20歳」の方が、「20歳」よりは「5歳」の方が、「脳年齢が若い」から素晴らしいというような、単純な話しなのでしょうか?とにかく「若ければ」良いのだということなら、「脳年齢」が「1歳」もしくは「0歳」が最強ということになります。もしゲームをクリアした時に「あなたの脳年齢は1歳でした!おめでとうございます」とかメッセージが出たら、馬鹿にされているような気がしなくもありません。 


ゲーム終了時に「あなたの脳年齢は94歳でした」とか出るよりは、「あなたの脳年齢は27歳です」のように出た方が、喜ぶ人は多いと思います。しかし「あなたの脳年齢は8歳でした」と出て喜ぶ人は、あまりいないんじゃないかと思います。ゲームというものは、高得点を出せば出すほど評価が高い(と一般に思われている)のを前提にしているので、「脳年齢」は必ずしもそうではない点で、あまり適切な指標にはならない気がします。

 

現実にそのゲームで遊んだ人たちがどう思うのかは別にして、そのゲームを製作した側は、どのように考えていたのでしょうか。ちょっと興味があります。

自転車用ヘルメット着用の義務化

2023年4月1日から自転車利用者のヘルメット着用が努力義務化されました。「自転車に乗る時はヘルメットを着用しましょう」のようなお知らせが政府、自治体、警察などからおこなわれています。今のところ着用している人は少ないようです。これから徐々に増えていくのか、相変わらずなのか分かりませんが、転倒時の頭部保護のためには、着用する習慣をつけた方が良いだろうとは思います。


ところで、ふと思ったのですが、各地のレンタサイクルではヘルメットの貸し出しをおこなってくれるのでしょうか。貸してくれるところもあるようですが、貸出用を準備していないところもあるようですし、そもそも他人が被ったヘルメットの利用を嫌がる人もいるようです。

2023-03-19

のれん

旧聞になりますが「「ローカル路線バスの旅 陣取り合戦」第9弾 三島~甲府」の中で、ある店舗を訪れたら、のれんが出ているのに営業していなかったというシーンがありました。店の外からは、どう見ても営業しているようには見えないのに、のれんは出ています。だから「のれんが出ていれば、営業しているんだよ」という発言もありました。しかし店は閉まっていて、太川チームが意気消沈する場面でした。

 

僕自身の感覚としても、のれんが出ていれば、その店は営業中である、と「基本的」には判断します。ところが最近は、営業していなくても、のれんが出ている店が少なくないようです。ネットでは「「のれん」について教えてください。」という質問も見つけました。

 

のれんを使っている店は和風系だと思います。洋菓子店とか洋食屋などでは、のれんで営業中を示すことができないので、「ただいま営業中」のような札を掲げることで、営業中と営業外を明らかにしています。このような習慣が和風系のお店にも導入されてしまったように思います。営業中と営業時間外を、のれんで示すのではなく、札で示しているのです。だから、のれんは昼も夜も一年中出しっぱなしです。

 

「のれんが出ている」から「営業中」で、「のれんが出ていない」から「今日はお休み」といった、判断が通じるお店も残っていますが、もしかすると、次第に淘汰されてしまうかもしれません。

ジュリ扇

ネットで「「笑いすぎて涙が」「最高です」 子供5人の家に飾られた『雛人形』 ついに男雛が転職する」という記事を見つけました。内裏雛の扇を「ジュリ扇」に換えるというのは思いつきませんでした。秀逸です。

五月人形

3月3日の桃の節句が過ぎ、次は5月5日の端午の節句です。ふと気がついてみると、3月3日の桃の節句には「雛人形」を飾りますが、5月5日の端午の節句には「五月人形」を飾ります。なぜ雛人形は「三月人形」と呼ばないのでしょうか?

 

ネットで「三月人形」を検索すると、まれに「三月人形」という表記も見つかりますが、圧倒的に「雛人形」です。しかしネットで「五月人形」を検索すると、完全に「五月人形」という表記ばかりです。「武者人形」という言い方もあるようですが、ネットで検索する限りでは、雛人形ほどの知名度を得ていないように見えます。

2023-03-04

『感性でよむ西洋美術』を読みました

NHK出版から出ている「学びのきほん」シリーズにある『感性でよむ西洋美術』を読みました。これまで美術館などで作品を鑑賞しても、作品を見るポイントがわからず、何かよいガイドが無いかと思っていました。過去に『まなざしのレッスン』の「西洋伝統絵画」と「西洋近現代絵画」を読んだことがあり、いろいろと学ぶところがありました。それに比べると、この本は100頁強ですから、内容が概略的なのはやむを得ないところです。


しかし、作品を鑑賞するための視点や、美術作品の歴史的変化の意義などが開設されていて、読んで良かったと思います。この本に限りませんが、美術作品の解説書を読むということは、美術作品を鑑賞することの代替ではないし、鑑賞するポイントが解説書に網羅されているわけでもありません。解説書は鑑賞のキッカケを与えてくれるに過ぎないとおもうので、この本を読んだことで、美術館で作品を鑑賞する際の視野が拡がったように思います。

自然科学の実験、社会科学の歴史

朝日新書から出ている『歴史の逆流 時代の分水嶺を読み解く』を読みました。鼎談を書き起こしており、このような形式の書籍は他にも多くありますが、他書に比べると大変充実した内容でした。いろいろと学ぶところが多い書籍でしたが、「第1章 説明しない政治」に以下のような箇所がありました。

 政治学を含め、社会科学の特徴は、自然科学と違って実験ができない点にあります。たとえば政治学の場合、こうなったら革命が起きるだろうと実験することは許されません。自然科学の中にも実験できないものはありますが、ほぼ実験で証明できる。そうした中で、歴史を学ぶというのは、いわば実験の代わりなんですね。過去の似たような事例、もちろん必ず違いはあるけれども、ある程度共通点があるような事例を見て調べて、こうなったら革命が起きるだろうといった具合に考察する。全ては一回ごとに違うからと歴史を調べなくなってしまえば、社会科学というか、社会について分析的に考えることは一切成り立たなくなってしまうわけです。

 

なるほど、と思いました。これまでにも「歴史に学ぶ」という言葉を耳にしてきましたが、「とにかく歴史に学ぶことが大切なんだ」と信仰しているだけで、その意義を深く考えたことはありませんでした。社会科学における歴史の意義が、自然科学における実験の意義と対象的に理解できるということに、間違いなく共通認識となっているか否か定かではありません。しかしこのような対比にはとても納得できます。

2023-02-05

骨折と筋力低下

今年は年始早々、旅先で凍結していた歩道で滑って転んでしまい、右側の肩甲骨を骨折してしまいました。当初は単なる打撲かと思っていたのですが、近所の整形外科で診てもらったら骨折しているとのことでした。ギプスを装着して可動範囲を制限し、折れている箇所の骨が修復してくるのを待ちましたが、一ヶ月ほど経ち、主治医からギプスを外しても良いという許可がでました。

 

骨折直後は、腕を動かす方向によっては激しく痛みましたが、骨折が修復してきているのか、そのような痛みはなくなりました。ところが、右肩付近の筋力が低下してしまったので、右腕を自力で挙げようとするのが困難です。左手で支えていれば可動範囲は問題ないのですが、腕を上げる筋力の低下には我ながら驚きました。

 

よくアスリートが数日練習を休むと筋力の低下を感じるとか発言していますし、高齢者が骨折してしまうと、治療後に筋力が低下して、そのまま寝たきりになってしまうとの話も耳にします。今まではそのような話しを聞いても実感がなく、大袈裟ではないかとも思っていたのですが、やはり筋力は低下するものなんだと、我が身が骨折を体験してみて、実感しました。


ギプス装着中に固まった筋肉を動かしていくことは、錆びついた機械を元通りにする作業に似ているような気がします。直ちに元には戻らないとは思いますが、徐々に回復していくだろうとは考えています。

2023-01-28

Manicって誰?

ネットで偶然知ったShakatakの曲を聴いています。Youtubeで「THE BEST OF SHAKATAK 2」などを聴いていて、とても気に入ったので、タワーレコードが出した「NIGHT INVITATIONS:The Best Tunes & Remixes」を買いました。どの曲も気に入っているのですが、別なところで疑問がわきました。


Mr Manic Sister Cool (Cool Mix)」という曲があります。また「Stop Manic Cool」という曲もあります。これらの曲のタイトルに出てくる「Manic」って誰?ひとつの曲のタイトルに出てくるだけなら、何か思い出に残る人物なのかなと思うだけですが、複数の曲でタイトルに出てくるとなると、よほど重要人物なのかと思います。

 

もっともManicが誰なのかが分かるところで、別に良い事が起きる訳でもないのですが。

登記所備付地図の電子データ

2023年1月20日に法務省が「地図データのG空間情報センターを介した一般公開について」を発表しました。続けて2023年1月23日にはデジタル庁が「登記所備付地図データ(地図XML形式)変換コンバータの公開について」を発表しています。ネットを検索すると、「デジタル庁の登記所備付地図データ変換コンバータmojxml2geojsonを使ってみる」のように、実際に使ってみた報告があがっています。そこで僕も、それらを参考にしながら、試してみました。

 

試行環境は、WSL2上のUbuntuです。Pythonが使える環境なら、他にもWindows10とかFreeBSDなどもありますが、普段使わないパッケージでディスクが占領されてしまうのは避けたいところです。WSL2上なら後腐れなくクリーンな状態に出来ますし、そういう意味ではVirtualBox上のUbuntuでも構わないかもしれません。

 

Ubuntuは「22.04.1 LTS」です。またPythonは「3.10.6」です。インストール手順は、上述した資料のとおりです。関連するパッケージが沢山インストールされましたが、特にエラーもなく順調でした。

 

地図データはG空間情報センターからダウンロードしました。無料で公開されているといっても、ダウンロードするにはアカウントを作る必要があります。アカウントを作成する際に、申請したメールアドレスに「確認番号」が送られてくるのですが、当初その番号をコピペしたら、「確認番号が違います」というエラーになりました。なんだ、そりゃ?入力ミスはないはずですが、再度入力しても同じエラーになります。仕方ないので「確認番号を再送信する」というボタンを押して、別の「確認番号」が届いたので、それを入力したら、今度は成功しました。なんだったんだろう。

 

試しにファイルをダウンロードしてみて、XMLをGEOJSONに変換してみました。問題なく変換できたのですが、そのコンバータがインストールされている場所が「~/.local/bin」だったので、当初は「そのようなコマンドはありません」と言われてしまいました。そこをパスに入れたら良いだけでしたが、ちょっと引っ掛かりました。

 

変換したファイルをQGISで確認してみましたが、問題ありませんでした。ただし標準的な座標系ではないようです。Googleグループでは「【情報共有】登記所備え付け地図データの公開」という情報もありました。

There are four basic choices:

The Japan Times Alphaで連載されているコラム「Odds & Ends」の2023年1月のテーマは「Japanese English」です。その第3回目のタイトルは「List」でした。コラムの月間テーマや今回のタイトルで取り上げられている話題についても、興味深いのですが、ちょっと別のことが気になりました。コラムでは、次のように書かれています。

 Let's take a look at the verbs you can use with "list."

There are four basic choices: make, write, draw up and compile.


ここで「There are four basic choices:」を和訳すると、どうなるでしょうか。Google翻訳にかけたら「次の4つの基本的な選択肢があります。」となりました。これは別に誤訳ではありませんし、何の問題もないと思います。しかし日本語では「基本的な選択肢が4つあります。」という訳し方もできるのではないでしょうか。


「There are four basic options.」という英文からは、次のように和訳できますが、どちらでも構わないと思います。

  1. 4つの基本的な選択肢があります。
  2. 基本的な選択肢が4つあります。

 

一方で「基本的な選択肢が4つあります。」 という日本語からは、次のように英訳できるかもしれませんが、後者は不自然ではないかという気がします。ネイティブに確認をとったわけではないのですが、ネイティブなら前者を発想するような気がします。後者は日本語の直訳のように見えます。

  1. There are four basic options.
  2. Basic options are four.

 

このような例に限らず、「何か」が「いくつか」あるという場合の表現は、日本語では「いくつかの何かがあります」とも「何かがいくつかあります」とも表現できます。しかし英語では(日本語で表記すれば)「いくつかの何かがあります」という表現の一択ではないかという気がしています。

2023-01-22

「Build Your Own Lisp」を読んでみたい

ずいぶん前にアスキー出版局から出ていた『Cプログラムブック III』は、「Will O'Lisp」というLISP処理系を作成するという内容でした。私は、これを読むことでC言語を学びましたし、LISPも学ぶことができました。以前は手元にあったのですが、いつ頃かに処分してしまいました。また手元に置こうかと思ったのですが、もちろん新刊では入手できませんし、古本でも相当高額て取引されているようです。所蔵している図書館もあるようですが、地元には無いようです。


国会図書館に行けば閲覧できるし、一部ならコピーも取れるかもしれませんが、一冊全部を複写することはできません。しかも、何が何でも『Cプログラムブック III』でなければ駄目なんだという訳でもありません。もしかしたら似たような本があるんじゃないかと思ってWebを検索してみたら、案の定「Build Your Own Lisp」を見つけました。これは書籍としても販売されているようですが、オンラインで全文公開されているみたいです。

 

ここで問題となるのが、こういものを読み進めるためのテクニックです。つまり、印刷された書籍であれば、ノートをとったり、書籍に書き込みをしたり、付箋を貼ったりするような、読書術です。オンライン文書の場合には、どのような方法があるのでしょうか。

 

例えばPDFファイルであれば、書き込みを入れたり、マーカーを引いたりするような事ができなくもないと思いますが、同じことをしたい訳でもありません。印刷された書籍でやっていたような読書術を、オンライン文書で再現したい訳ではありません。オンライン文書には、ネット時代の新しいやり方があるんじゃないかと思います。

 

とりあえず模索してみようと思います。

2023-01-14

PlantUML

Webを見ていたらPlantUMLというものがある事を知りました。UMLなどの図をテキストから生成することができるツールです。このようなツールを前々から探していました。UMLの図はInkscapeなどを使ってGUIで描くことは可能ですが、GUIベースのツールを使って描くと、綺麗に描くことに意識が集中してしまうのではないかという疑念を持っていました。例えて言えば、WordのようなWYSIWYGのツールは、直観的に分かりやすいとは思いますが、使えば使うほど壁に突き当たる感じです。それに対して、LaTeXのようなツールは、取っつきにくいかもしれませんが、些事に煩わされず、文章に意識を集中できると思います。

 

PlantUMLは、Java実行環境を必要とするようです。僕の個人的な希望として、LaTeXやRなどはFreeBSD上で使えるように環境を整えてきたので、PlantUMLもFreeBSD上で利用可能なようにしました。FreeBSDのpkgで利用できるJREは、幾つかあるようですが、openjdk17-jre-17.0.5+8.1_1をインストールすることにしました。PlantUML本体は、ダウンロードのページにファイルが幾つか置いてあるのですが、どれを選んだらよいのか分かりません。入門のページにもplantuml.jarへのリンクがあり、どういう関係になっているのか分からないのですが、ひとまず入門ページのリンクにあるplantuml.jarを使うことにします。

 

入門ページの説明のとおりに操作したら、あっさりと動いて、PNGファイルができました。素晴らしい。 


これから本格的に使っていこうとすると、出力がPNGなのは気になります。画像を拡大すると画質が劣化するのが気になります。調べてみるとSVGで出力することも出来るようなので、そちらを使おうと思います。また日本語も利用したいところです。試しに日本語を入れたサンプルで確認してみると、確かに日本語は出ているのですが、文字が重なってしまって、とても使い物になりません。

 

Webを調べてみると「PlantUML Server で生成した SVG が中華フォントになるときの日本語フォント指定」という情報を見つけました。この記事によると「skinparam defaultFontName メイリオ」という指定をして解決したようですが、これでは解決しませんでした。

 

何が悪いのか分からないのですが、なんとなく日本語フォントのメトリック情報がないから綺麗に出力されないのではないかと想像しました。そこでWebを検索すると「javaを使ったSVG→画像変換の際の日本語化など。」という情報がありました。この記事を参考に調べてみると、僕の使っているFreeBSDには日本語フォントが入っていませんでした。そこでpkgを使って、ja-font-ipaを入れました。そして先程の記事を参考に「skinparam defaultFontName IPAGothic」という指定を入れました。

 

ここで改めて日本語が使われているサンプルでSVGを生成してみると、ちゃんと日本語も出るし、表示も綺麗になりました。これなら今後も使っていけそうです。

2023-01-09

WSLgで日本語が出るように設定

昨日WSLをストア版に更新することで、Windows10でもWSLgを利用することができるようになりました。GUI版のemacsが使えるので感動したのですが、日本語フォントがないので、日本語を表示できません。


Webを検索すると「Win11のWSL2 (WSLg)を日本語化 & Mozcで日本語入力」という情報を見つけました。日本語を表示するだけではなく、日本語入力も行えるようにするようですが、僕の場合は日本語表示だけで良いので、その一部だけを設定しました。


Ubuntu内で「fc-list」すると見つかるフォントは20個だけで、もちろん日本語フォントはありません。そこで/etc/fonts/local.confを作成してみると、572個ものフォントが見つかるようになり、GUI版emacsでも日本語が出るようになりました。


/etc/fonts/local.confは、上述した記事にあるのと同様で、以下の内容です。

<?xml version="1.0"?>

<!DOCTYPE fontconfig SYSTEM "fonts.dtd">

<fontconfig>

        <dir>/mnt/c/Windows/Fonts</dir>

</fontconfig>

Docker Desktop for Windowsをインストールしたら、既存のWSL2が影響を受けた

機能はWSL2をストア版に更新したので、次に前々から気になっていたDockerを入れてみました。Dockerの概念的なことは理解できます。しかし一歩踏み込んだところがピンとこないので、使ってみて理解していこうと思っています。

 

まずはDocker Desktop for Windowsをインストールしました。インストール後に再起動し、Windowsが起動しましたが、何をしたら良いのか、まだわかりません。PowerShellのコマンドラインから「docker run hello-world」してみましたが、問題なく動いているようです。

 

 Dockerについて今後おいおい勉強していくことにして、ここでちょっとWSLgで試したいことがあったので、WSL2のUbuntuを起動しました。ところが何だか様子が変です。昨日インストールしたはずのXクライアントが見つからなくなっています。しかもアカウントが「wslg」になっており、こんなアカウントは作った覚えがありません。いったい何が起きたのか全く分からず、PowerShellのコマンドプロンプトで「wsl -l -v」としたら、次のような結果になりました。

PS C:\Users\FURUSAWA> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop-data    Running         2
  docker-desktop         Running         2


Docker関係が増えています。何か悪さをしているのかもしれません。よくわからないので、PowerShellのコマンドプロンプトで「wsl --shutdown」してみました。docker-desktopは停止状態になりませんでした。それから改めてUbuntuを起動したところ、Dockerインストール前の状態が復活しました。


何故このような現象が起きたのか理由は分かりませんが、元の状態に戻ったので、良しとします。

2023-01-08

Windows10のWSLをストア版に更新し、WSLgを試してみた

Microsoft Windowsで利用できるWSLがストア版に一本化されるようなので、更新作業をおこないました。更新はとても簡単で、10分もかからず完了しました。あわせて、これまでWindows11のWSLでしか利用できなかったWSLgが、Windows10のWSLでも利用できるので、試してみました。xeyesを動かしてみましたが、問題ありません。

更新作業は、コマンドプロンプトでおこないました。当初DOSコマンドラインを使おうとしたのですが、動作が思わしくないので、PowerShellコマンドラインで作業しました。

作業前のWSLは、こんな感じでした。

PS C:\Users\FURUSAWA> wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2
PS C:\Users\FURUSAWA> wsl --version
コマンド ライン オプションが無効です: --version
Copyright (c) Microsoft Corporation. All rights reserved.
(以下略)
PS C:\Users\FURUSAWA> wsl --status
既定の配布: Ubuntu
既定のバージョン: 2

Linux 用 Windows サブシステムの最終更新日: 2022/03/26
WSL の自動更新が有効になっています。

カーネル バージョン: 5.10.102.1

 

更新作業は、こんな感じです。数分で終わりました。

PS C:\Users\FURUSAWA> wsl --update
インストール中: Linux 用 Windows サブシステム
Linux 用 Windows サブシステム  はインストールされました。

 

更新後のWSLは、こんな感じになりました。

PS C:\Users\FURUSAWA> wsl -l -v
NAME      STATE           VERSION
* Ubuntu    Stopped         2
PS C:\Users\FURUSAWA> wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
MSRDC バージョン: 1.2.3575
Direct3D バージョン: 1.606.4
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windowsバージョン: 10.0.19045.2364
PS C:\Users\FURUSAWA> wsl --status
既定のディストリビューション: Ubuntu
既定のバージョン: 2


WSLgを試してみるには、Xクライアントをインストールしておく必要があります。

 

$ sudo apt install x11-apps


これでXクライアントがインストールされるので、xeyesやicoを試してみたところ、問題なく動作しました。

2023-01-06

シャーロック・ホームズと銭形平次

 NHKラジオで「Enjoy Simple English」という番組があります。金曜日は「シャーロック・ホームズの世界」として2週連続で一つの物語が放送されます。先日は「The Lonely Cyclist」でした。その物語は、次のように始まりました。

 One day, Ms. Violet Smith, came to us for help.

 

シャーロック・ホームズはコナン・ドイルが創り出した架空の人物で、探偵ということになっています。現実に生存していた訳ではありませんが、1900年前後のロンドンで活躍していました。ホームズは依頼人の相談を鮮やかに解決するという点が、シリーズの特徴です。当時のロンドンの世相がわからないのですが、相談事のある依頼人は、警察に相談するのではなく、ホームズのような探偵に相談事を持ち込むというのが、普通だったのでしょうか。言い方を変えれば、よくあることだったのでしょうか。当時のイギリスは階級社会ですから、社会的なクラスによっては、警察を頼らず、探偵をつかって解決させるような事情があったのでしょうか。


ふと日本における銭形平次を思い出しました。平次も野村胡堂が創り出した架空の人物で、江戸時代の御用聞きという設定になっています。当時の江戸の町々に起こるいざこざを解決するのですが、娯楽物語なので、どこまで当時の実像に即しているかはわかりません。少なくとも、水戸黄門、大岡越前、暴れん坊将軍のような雲の上の人物が出てくるよりは、現実感があります。


シャーロック・ホームズはロンドンで、銭形平次は江戸ですが、コナン・ドイルや野村胡堂が小説を書いたときに、読者が納得できる描写を意識したはずです。歴史的事実を忠実に再現する必要はありませんが、あまりにも荒唐無稽では、読者がついてこないでしょう。そう考えれば、ホームズや平次の物語の舞台は、当時の社会の姿を映しだしていると思います。

函館市電の運転席は中央にある

函館市電に乗車していて気がつきましたが、運転席が中央にありました。よく考えると、バスの運転席は右側にありますし、JRなどの車両の運転席は左側にあります。歴史を遡れば、馬車の時代には御者は中央に座っていたようですし、自動車が登場した直後は今日のように運転者の位置が定まっておらず中央だったこともあったようです。とは言っても、それは昔話であって、今日であれば、運転席が車体の一方の側に寄っているのが当たり前です。

 

運転席が中央にあるのが、函館市電に限らず日本各地の路面電車もそうなのか、また函館市電でも特定の電車に限るのか、詳しくは知りません。

 

運転席が中央に位置していた方が、運転しやすいのかもしれませんが、片方に寄っていたとしても慣れれば大丈夫と言う気がします(自動車がそうなのですから)。路面電車の運転席の位置を片方に寄せるべきか否かという議論が、かつて行われた事があったのか、また無かったなら、何故疑問を感じなかったのか、気になります。

函館市電の五稜郭公園前電停

函館市電の五稜郭公園前電停でふと路面を見ると、渡線が設置されているのに気付きました。何時から設置されているのか知りませんし、現時点で使用されているのかも分かりませんが、少なくとも必要性が認められた時期があったのでしょう。

 

不思議なのは、この渡線を使用する際にポイントを切り替えるには、どうしたら良いのでしょう。JRなどの鉄道ならば、遠隔操作かどうかは別にして、ポイントを切り替えるための設備も同時に設置されています。しかし見回したところ、それらしい設備は見つけられませんでした。