近況片々

投稿日:
SOBA 満月

 先頃からすっかりファンになった新越谷駅前の蕎麦(みせ)、「SOBA 満月」。このところ毎土曜日昼の行きつけである。

 店主が体調を崩していて、先週、先々週の土曜日は閉まっていて残念であった。今日は本復されたようで、いつもどおりの営業だ。

 今日は季節メニューで「桜エビと新たまねぎのかきあげ」というのが出ていたからそれと、いつものように新潟県の銘酒「吉乃川」で蕎麦前をやって、生粉打ち十割の「もり」で〆。

 美味、至福と言う他なく、やめられぬ。

スライドショーには JavaScript が必要です。

 妻と近所の川べりの桜を見に行く。

 地元の隠れた名所で、美しい。

改元令奉祝

 (かしこ)きあたりにおかせられては、(かね)て改元の内意(あまね)く知ろしめられること(おそ)れ多く、去る4月1日、これを奉じた政府によりついに「令和」と布達されたことは誠にもって喜ばしいことである。

 (しづ)、このブログも早速改元に対応し、5月1日以降の日付に遺憾のないようにした。

 改めてテストしてみる。

2019/4/30 23時59分 → 平成31年(2019)04月30日(火)23時59分
2019/4/30 24時00分 → 令和元年(2019)05月01日(水)00時00分
2019/4/30 24時01分 → 令和元年(2019)05月01日(水)00時01分
2019/5/1 0時00分 → 令和元年(2019)05月01日(水)00時00分
2019/5/1 0時1分 → 令和元年(2019)05月01日(水)00時01分

……良く動く。いい感じだ。24時1分、なんぞというところも私の考えた動きである。

旧暦雛祭

 明日は旧暦三月三日、つまり旧雛祭(ひなまつり)。当然月は三日月。晴れれば日没後すぐ、針のような尖った月が日とともに沈むだろう。

自分のWordPressと改元対応

投稿日:

 いよいよ明日、畏きあたりにおかせられては、きたる5月1日からの新元号について聖旨(せいし)渙発(かんぱつ)あらせられ、政府をして達せしめられる運びとなった。

 誠にもって恐懼(きょうく)の至りである。

 さて、私のこのブログは、無理やり和暦表示になるよう改良してある。そのコードも新元号に対応しておかなければならない。

 やりかたは簡単で、以前書き足した子テーマの「functions.php」の該当箇所に、次のように書き足すだけだ。

・
・
・
} elseif ($Ymd >= "19890108" && $Ymd <= "20190430") {
	$gg = "平成";
	$yy = $Y - 1988;
} elseif ($Ymd >= "20190501") {
	$gg = "新元号";
	$yy = $Y - 2018;
} else {
・
・
・

 テストしてみると、次の通り、よく動く。

1800/06/06/01:00 → 皇紀2460年(1800)06月06日(金)01時00分
1989/01/07/00:00 → 昭和64年(1989)01月07日(土)00時00分
1989/01/08/00:00 → 平成元年(1989)01月08日(日)00時00分
2019/04/15/12:30 → 平成31年(2019)04月15日(月)12時30分
2019/04/30/12:30 → 平成31年(2019)04月30日(火)12時30分
2019/05/01/00:00 → 新元号元年(2019)05月01日(水)00時00分
2020/01/01/00:00 → 新元号2年(2020)01月01日(水)00時00分

 これで、明日、新元号が明らかになれば、「新元号」と書いたところを書き直せば対応終わりである。

IT技術者たるものダイバーシティブならざらんや

投稿日:

 昨今ダイバーシティという言葉は、まるで女権・性倒錯者権を指して言うようになってしまった感じがするが、これは違う。ダイバーシティとは多様な価値観、多様な方法を受容していこう、ということであり、性別や性癖のみではなく、例えば人種などの多様性を受け入れること、出身、門地、そういうことを乗り越えていこうという反差別の思想までもがこれに含まれていると解してよい。

 さておき、他方。来年、畏きあたりにおかせられては、御譲位の思し召しの既に定まったところ。国・政府もその方針で諸処置方に遺憾なきことを期しているところだ。

 そんな中、IT技術者から聞こえてくるのは不平・不満・愚痴である。大抵は「この国は」という例の「『この国』呼ばわり」の冠詞がついたうえで、

「元号などという日本にしか通用しないガラパゴス・ローカルに閉じこもっているから日本人はダメなんだ」

「元号なんて皇室観の押し付けであり、戦前の主義思潮への悪しき懐古趣味であり、軍国主義、全体主義への回帰願望がほの見えて危険だ」

「元号は日の丸・君が代と同じくアジアの人の感情を(さか)()でしている」

「我が国経済の長期間にわたる停滞はこのバカバカしい元号なるものこそが原因の一つだ」

「西暦が世界標準なんだ、これだから日本人はダメなんだ、すべて西暦にしろ」

「ITシステムの新元号対応にどれだけかかると思ってるんだこの糞どもが!!」

……などと叫んでいる。

 よくもこんなにロクでもない理屈ばかり考えつくものだ。自分こそが選ばれし正義の者、広い世界に目が開かれた開明な価値観、非差別的な価値観、多様な価値観を持ったグローバル人材だと言いたいのだろう。

 これは良くない。自分たちではそれと知らないまま、偏狭で、さまざまな人種や国の文化、言い分を頭ごなしに否定する危険な状態に陥っている。

 なんとなら、元号や紀元を持っている国は、日本だけではないからである。

 誰でもすぐに考えつくところでは、イスラム教の国々は「ヒジュラ暦」という西暦とは異なるものを使う。また、イスラム教の国々は太陽暦を採用しておらず、太陰暦(月暦)を用い、昔の日本や中国とは違って「うるう月」を置かない独特の暦法を用いる。言うまでもないことだが、アジアの国々のほとんどは中国文化の影響もあって、つい最近まで太陰暦を使っていた。

 紀元に話を戻すと、インドは「サカ紀元」を国定紀元として用いる。また、台湾などは建国紀元だし、中国は西暦をわざわざ「公元」と呼んで区別する。イスラエルではユダヤ教の人々が「ユダヤ紀元」というキリスト紀元とは別のものを大切にしている。北朝鮮などは言うまでもなく「大将軍様」にちなむ紀元である。

 他に、暦法は西暦に切り替えてはいても、例えば韓国のように人の年齢を「数え年」で数えるのを公式としているような、昔の紀元や暦法のなごりを色濃く残す国も多くある。

 私のような知識の貧弱な者が思いつくまま挙げるだけでも、こんなに多様な暦法や紀元があり、しかも現在、実際に使われているのだ。専門家が整理すればもっと多くの紀元や暦法を挙げることができるだろう。

 世界にはこのように、多様な暦法で年月日を表現する様々な国々や人々がおり、それぞれの多様な価値観のもとに日々を送り、暮らしている。

 科学的には、相対性理論的な微細なズレはこの際おくとして、「ある年、ある月日、ある瞬間」というのは全部同じ年月日時間である。単に、暦法によってその表現が異なるだけだ。

 かつて人力で暦を換算するのは非常に煩瑣であった。しかし、コンピュータは違う。現代の高性能なコンピュータは、本来はあらゆる暦の表現を瞬時に他の暦に換算するに足るだけの性能を持っている。オブジェクト指向的には上手に「暦クラス」を定義することで、暦法の差異を吸収し、あらゆる表現での入出力を許容するようにプログラムを作成することなど、理論的には造作もあるまい。

 であるにもかかわらず、「合理的でないから(=面倒臭いから)」などという理由で、IT技術者が「多様な価値観の受容から逃避する」のはいかがなものか。コンピュータがひとりでにそのようにできているのではない。ハードウェアもソフトウェアも、技術者が作っている。コンピュータを偏狭な価値観に偏らせ、世界の国々の多様な価値観から目を背け、ひいては反差別の高邁な理想から逃げようとしているのは、ほかならぬIT技術者その人々ではないか。

 そんなものしか作れないIT技術者がダイバーシティを云々するなど、片腹痛いというものである。

 今一度確認しておきたいが、西暦などと言うものは、「ナザレ地方にいたと伝わる伝説の宗教家、イエスの生誕日を紀元としたもの」である。はっきり言うと、伝説の人物の生誕日と言う点では、例えば伝説の人物が国を開いたとされる日、つまり「神武天皇が国を作った」と言われる「紀元節」と変わらない、ということである。もっと不愉快に言えば、金日成が抗日闘争に勝利して共和国を開いたと(うそぶ)く朝鮮紀元と同じなのである。

 これを言うと、偏った人々は「何を言うんだ、イエス・キリストはれっきとした実在の人物だ!神武天皇みたいなおとぎの人と違う!!」と叫び出すわけだが、あのね、実在の人物が処女から生まれますか?霊能力なんてもので食べ物を増やして信者に食わせたりできますか?復活かなんか知らないけれども、(はりつけ)になったあと腐乱死体から生き返って宙を飛んでいったりしますか?そんなの、神武天皇が神の直系だというのと変わらない、宗教的な伝説、おとぎ話のたぐいでしょ?伝説である以上、世界のいろいろな宗教と、ぜんぜん変わらないんですよ、キリスト教と、それを根拠にするさまざまな価値観なんて。

 そういう偏ったものに寄せていこうという動きが目に付いてくるのは、さまざまな国、さまざまな宗教、さまざまな習慣を受容しようというダイバーシティの根本精神から逸脱するものであり、ひいては女性差別、性倒錯者差別にまで一直線につながっていく危険な兆候だ。

 IT技術者は、ダイバーシティで働き方改革だなどと叫んでいる暇があるなら、元号に文句を言うのを今すぐやめ、西暦でもUNIX時間でもなんでもいいから、すぐにでも適当な基準暦と元号のマッピングテーブルを書き足し、とっとと仕事を終わらせるべきである。

 そして、ヒジュラ暦から台湾暦からユダヤ紀元や朝鮮将軍様紀元まで、いろいろ盛り込んだクラスやらマッピングテーブルを書き上げて荒い息をついたあと、余力があるなら、もっと別のすばらしい仕事を手掛けて金でも儲けてはどうか。

引用する日付をショートコードで定型化

投稿日:

 最近、(ジジィ)化してきて、時事などにケチをつけてはそれをブログに書いて楽しむようになってしまった。

 子供の頃、私の父はアニメや「8時だョ!全員集合」などの子供が見たがる番組など絶対つけてくれず、子供にとってはつまんないニュース番組などばかりつけていたもので、しかもそれを見て楽しんでいるというならまだしも、「なにがフェミニズムだ!!何が日教組だ!!」などと、どうでもいい他人のことに腹を立てはじめ、しまいには湯気を立てて激昂し、私にそこらの手近のものなど投げつけて八つ当たりするという、誠にもって迷惑な父であった。

 さすがに私はそこまではいかず、父のようにニュースを見て激昂するなどという人間にはならなかったが、どうでもいいニュースに勝手なコメントを加えてブツブツ言っているというところは、多少似ていると言えば言えるかもしれない。

 さて、時事にケチをつけるときは、だいたいニュースなどへのリンクを張っている。例えば、昨日の羽生結弦先生のニュースなら、

……というような書式で引用している。

 前から思っていたのだが、この引用するときの日付が気に入らない。上の例だと「2018年2月17日21時57分」という部分だ。これがマスコミ各社それぞれに、「年」「月」「日」が入ったり、「/」区切りだったり、「-」区切りだったり、時間が入ったり入らなかったりして、不統一である。

 それより何より最も気に入らないのが、年号が全部「西暦」であることだ。和暦を付記すべきだ。……いいや、違うッ!。和暦に西暦を付記すべきである。

 こんなこと、気にしなければいいだけの話なのだが、これをまた、「このブログは日付の書式が不統一だ」などと、私のブログを見てケチをつけてくる人がいるのである。

 これは手作業でひとつづつ書き直すようなことではない。こんな機械的なことは、機械がやるべきだ。

 何か、日付を正規化するプログラムでも書いて、そのAPIでも公開してやろうかい、などとも思ったが、「和暦に西暦付記でないと嫌だ」などという変な人は世の中私ぐらいだろうと思うし、何もAPIを世の中に提供まですることもあるまい。ここはひとつ、WordPressの機能の、「ショートコード」というのを活用して、記事を書くときにチョコッとおまじないを書き足せば、いろいろな日付が私の認める日付書式(俺様用日付)に書き換わって表示される、というふうにすることにした。

 WordPressはPHPで作られている。そのため、ショートコードを作るには、PHPでプログラムを書けばそれでよい。PHPは簡単で、誰でもがWordPressに機能追加することができる。

 具体的には、WordPressのインストールディレクトリの下の「wp-content/themes」の下にある、自分が使っているテーマの中の「functions.php」の末尾にPHPでプログラムを書いてやるのだ。「子テーマ」を作成して使用している場合は、その子テーマの下のfunctions.phpにプログラムを書き加える。

 私は子テーマを使用しているので、その下にあるfunctions.phpの末尾に、次のように書き足した。

/********************************************************************************
 * regdate();
 *   平成30年2月18日(日)11時00分~
 *   佐藤俊夫
 *   ネットのマスコミニュースの日付などをコピペする際、書式がばらばらであるので、
 *   これを私こと佐藤俊夫が認める日付書式に変換するショートコード 
 ********************************************************************************/
function regdate( $arg, $content = null ) {
	$content = mb_convert_kana($content, "n");	//  全角数字はすべて半角数字に
	$content = preg_replace("/$/", "/", $content);	//  処理の単純化のため、末尾に例外なく「/」を付加(日付のみで数字で終了する文字列に対応)
	$content = preg_replace("/^[^0-9][^0-9]*/", "", $content);	//  行頭の数字以外の文字はすべて削除
	$content = preg_replace("/[^0-9][^0-9]*/", "/", $content);	//  数字以外の文字を全て「/」に置換
	$content = preg_replace("/[^0-9]([0-9])[^0-9]/", "/0$1/", $content);	//  数字1文字のみの場合は「0」をパディング
	$content = preg_replace("/^([0-9])[^0-9]/", "0$1/", $content);
	$content = preg_replace("/^([0-9]{2}[^0-9])/", date("Y")."/$1", $content);	//  冒頭が2桁の数字のものは、今の西暦を強制付加する。
	$content = preg_replace("!^([0-9]{4}/[0-9]{2}/[0-9]{2})/$!", "$1/00/00/", $content);	//  年号と日付しかないと見られるものは、00時00分とし、末尾に付加する。
	$content = preg_replace("!/$!", "", $content);	//  末尾の「/」をサニタイズ
	$content = preg_replace("!/([0-9][0-9])/([0-9][0-9])$!", " $1:$2", $content);	//  末尾の数字4つは時間とみなして「 12:34」の形に。
	$unixtime_content = strtotime($content);	//  「strtotime」が高性能なので、一旦丸投げしてUNIXタイムスタンプにする。
	//  元号と和暦年を取得して付加
	$Y = date("Y", $unixtime_content);
	$Ymd = date("Ymd", $unixtime_content);
	if ($Ymd >="18680125" && $Ymd <= "19120729") {
		$gg = "明治";
		$yy = $Y - 1867;
	} elseif ($Ymd >= "19120730" && $Ymd <= "19261224") {
		$gg = "大正";
		$yy = $Y - 1911;
	} elseif ($Ymd >= "19261225" && $Ymd <= "19890107") {
		$gg = "昭和";
		$yy = $Y - 1925;
	} elseif ($Ymd >= "19890108") {
		$gg = "平成";
		$yy = $Y - 1988;
	} else {
		//  明治以前の場合は一律「皇紀」を用いることとする。
		$gg = "皇紀";
		$yy = $Y + 660;
	}
	if($yy == 1){
		$yy = "元";
	}
	$content = $gg.$yy."年".date("(Y)m月d日(", $unixtime_content);
	//  日本語曜日を取得して付加
	$sevendays = array("日","月","火","水","木","金","土");
	$content .= $sevendays[date("w", $unixtime_content)].")".date("H時i分", $unixtime_content);
	//
	return $content;
}
add_shortcode('date', 'regdate');

 「functions.php」に上のように書き加えたら、よく確認して保存する。

 さて、このショートコードの利用である。

 例えば最初のほうで例に述べた朝日新聞の記事の場合、そのまま日付をコピペすると次の赤字で記した部分のようになってしまい気に入らないことは、先述の通りである。

ショートコードを使わない場合の記事ソース
<ul><li> <a href=”https://www.asahi.com/articles/ASL2K52X2L2KULZU004.html” rel=”noopener” target=”_blank”>羽生結弦、自分に勝った孤高の金「僕はアニメの熱血系」</a>(朝日、2018年2月17日21時57分)</li></ul>

 しかし、今回作ったショートコードを使えば、簡単に書式を一定化できる。次の通りだ。

ショートコードを使った場合の記事ソース
<ul><li> <a href=”https://www.asahi.com/articles/ASL2K52X2L2KULZU004.html” rel=”noopener” target=”_blank”>羽生結弦、自分に勝った孤高の金「僕はアニメの熱血系」</a>(朝日、[date]2018年2月17日21時57分[/date])</li></ul>

 WordPressは、このように簡単でわずかなプログラムを書き加えるだけで自分の好みに改変することができる。非常に便利であり、ユーザ・フレンドリであると言える。

 世の中には、「日付に和暦や元号を使う合理性なんてまったく認められない。こんなものはやめるべきだ」などと言い立てている変な人がいるようだが、そういう人は私のように、自分の環境だけ変えればよい。私と同じように、自分の環境だけ、逆に西暦でもイスラム歴でも、勝手に好きなように使えるようにすればよい。そんなもの、上記で実践して見せたように大した手間ではない。

改元・差別・多様性・測地系・カレンダー……

投稿日:

 以前、GIS(空間情報システム)について深く考えていた時、「地球上のある一点」とか、あるいは「宇宙のある一点」を何らかの座標で表した時、現実の空間に存在するその地点はただ一つであるにもかかわらず、使用する座標系によって表現や数値が異なり、あたかも違う地点が複数存在するかのようになってしまうのは、何としてもどうにかしなければならない、と思った。

 その頃、ちょうど日本では「測地成果2000」という標準が行き渡り、明治時代からの伝統である「ベッセル楕円体」を使用した所謂(いわゆる)「日本測地系」の使用をやめ、国際標準の「GRS-80」にほぼ完全に切り替え終わっていたが、切り替わる前後しばらくの期間、旧ベッセル楕円体測地系と、新GRS-80測地系が混在し、地球の同じある一点を示すのに、複数の数値が混在していた。

 そこへ、GPSの普及、またこれを活用したカーナビの普及で、米国主導の座標系である「WGS-84」も混在して使用されるようになった。そのため、当時の情報システム内部では、旧日本測地系、GRS-80測地系、WGS-84測地系の三つの測地系を矛盾なく混在させて作動させる必要があった。

 プログラミング技術上では、例えばC++やJavaなどのオブジェクト指向言語なら、こうした事態を解決するため「座標」のクラスを作り、クラス内部ではいずれか適切な座標系で数値を保持させる。その数値は「プライベート」にして隠蔽し、クラス外からの直接操作はこれを禁ずる。「アクセッサ」のみを使用して座標を操作するのだ。そして、いずれの測地系を使用して値を入力しても、内部では必ず空間の一点のみを指す値に変換して保持し、また逆に、値を取り出す際には、いずれの測地系での値を要求しても正しく取り出し可能とする。

 こうしたふるまいをするクラスを作ることで、プログラム内部では混乱も矛盾もなく座標を扱えるようになる。無論、アメリカの旧測地系であるクラーク楕円体をはじめとして、世界中の測地系を詰め込んでクラスをデラックス化するのもよい。

 さて、こうしたことを思い出していて、日付についても似たようなことを考える。

 世界には多様な文化があり、そのため、「ある日ある時間」を表すにも、文化や地域によってさまざまな表し方が存在する。思いつくまま挙げるだけでも、例えば教祖イエス・キリストの生誕を基準とする西暦、ヨーロッパのグレゴリオ暦やユリウス暦、太陰暦を基本とするイスラム暦、同じ太陰暦でも中華文化圏で用いられてきた干支(かんし)を使用する日付表現、日本の元号や朝鮮、就中(なかんづく)北朝鮮の現在の革命年号、日の出・日の入りを基準とした不定時法など、様々だ。

 だが、どんな日付表現をしようが、科学的には「ある日ある時間」は、ただ一つである。

 一方、コンピュータシステムは人間を支えるものであって、人間がコンピュータに奉仕しているようでは本末転倒だ。コンピュータはあらゆる日付の表現ができ、かつ、あらゆる日付の表現を受け取ることができることこそ望ましい。世界中の多様な文化を矛盾なく受け()れ扱うことができてこそ、人間に奉仕するためのあるべきコンピュータシステムの姿であると言える。

 しかるに、現在のコンピュータシステムはその点が貧弱である。「建久二年辛亥(うるう)十二月(ついたち)」と入力しても、「1192年1月17日」と入力しても、はたまた「587年のズー・アルヒッジャの13日」と入力しても全てこれを許し、かつ、それが同じ日付を指しており、また逆に、どんな日付表現の出力を要求されようと、考え得る限りの多様さで人間にこれを返すようでなければならない。

 今このようなことを考える理由は、ただ一点、畏きあたりにおかせられて、近々まさに譲位あそばされんとし、恐れながら改元の沙汰もこれあることと考えられるからだ。

 改元であろうと何であろうと、人間に奉仕するべきコンピュータシステムは、これを平然と受け()れるものでなければならない。そこに多大のシステム保守作業があるなどもってのほかである。

 だが、現代のコンピュータシステムはそこが貧弱であるため、改元で右往左往しなければならないのだ。

 それどころか、コンピュータシステム運用上の煩雑さを理由として、元号制に反対したり、イスラム文化やアジアの文化を否定し、「西暦で統一すべき」などと、多様な文化を蔑んでそれでよしとする差別主義者がIT技術者にすら少なからず見受けられるのは、あまりにも残念である。

年号の表記がわかりにくい

投稿日:

 先ほどニュースを読んでいたら、
  ↓
http://headlines.yahoo.co.jp/hl?a=20090929-00000080-mai-bus_all

 ・・・文脈中に

「HVを持たないマツダはガソリンエンジンの燃費性能を追求。「清」をベースにした小型車を10年代前半までに発売する方針だ。」

などと、平気で書いてある。どうも最近こういう記事が増えてきた。ナニがおかしいかって?「10年代」ですよ、10年代。約10年前の平成10年からの10年間のことかと思った。先だってなどは、別の何かの記事で「9年度」とあって、一瞬とまどった。

 もちろん、「ああ、『10年代』と言うのは、おそらく2010年代のことであろう。無論、『9年度』というのは2009年の年度であろう。」と想像はつく。この程度ならまあ、寛容しよう。だが、簡単に想像がつかない記事もたまにある。以前など、昭和30年代の話と、太平洋戦争前の世界恐慌の話がゴッチャ混ぜに書かれた新聞のコラムを読んで、反吐が出そうになった。西暦の30年代と昭和30年代が、なんの断りもなく記事中に混在するのである。

 日本は元号を用いる国だ。新聞やマスコミも、基本は元号で年号を記すべきだ。

 「2010年」に「西暦」を冠せよとまでは言わない。だが、2バイト文字で「10」なんて書くなら、「2010」だって嵩は同じはず。だいたい、4月始まりのいわゆる「会計年度」なるものは、元号を使用するべきではないか?

 結婚式を教会でやるなとか、そんな偏屈なことを言うのではない。西暦は宗教色が強いなどと言えば「そんなことを言うなら、元号だって国家神道の総本家、皇室・皇統がよりどころでしょ」と反駁されることもよくわかっている。いや、でも、キリスト教なんてものは侵略宗教なんですがね。おっと、脱線しちゃいかん。

 ややこしいでしょうと言いたいのだ。

 西暦で書きたいときは、よりわかりやすくするため、4桁で書くべきである。百歩譲って、和暦で書くときは必ず元号を接頭する、としてもよいが、もしそうするなら、西暦で書くときは必ず「西暦」と接頭しなければならない。