首藤瓜於という風変わりな名前の作家は、数年前まで聞いたことがなかったが、「脳男」という作品をたまたま、ブックオフで見たとき、なぜか強烈な印象をもち、読んでみると、その精神医学の知見を絡めたミステリーに魅せられ、一気読みだった。

次に読んだのは、「脳男」と同じ、愛宕市シリーズで、「刑事の墓場」は、比較的地味なストーリーで、風変わりな警察署に集まる、ユニークな警察官たちの生態を描くものだったが、下積みみたいな経歴を経てきたサラリーマンである私には、なかなか共感できた。

その次の「指し手の顔」は、「脳男」の続編で、題名からして、将棋の棋士が登場するのかと思ったら、そんなことは全くなく、しかし、「脳男」をブーストアップしたストーリーは、あまりに強烈で、痺れた。

そして、今回手にした「刑事のはらわた」は、やはり愛宕市を舞台にしたもので、かなり前に買ってあったのだが、いろいろ本を買ううちに下位の地層に追いやられ、雑然たる私の部屋の中で、行方不明になった。そんなことは、よくあるので、存在を忘れてしまったのであるが、たまたま部屋の中で別の本を探すまめに上層の本達を引き剥がしているうちに、おっ、ここにあったのかと、「刑事のはらわた」を見つけ、読み始めた次第である。

「刑事のはらわた」の主人公は、八神という警察官である。大学時代は、普通の学生だったが、警察官だった父の突然の自殺に衝撃を受けた。大学を出て、就職できなくて困っていたら、父の葬儀に出席していた、刑事部長だたか、ある地位の高そうな警察官の言葉を思い出した。それは、何かあったら面倒をみるから、相談してくれ、というものだった。今にして思えば、父は、何かのスキャンダルを抱えたままで死んだので、ある意味、警察に恩を売ったのだろう。

それで、他に行くあてもなかったので、その伝手を頼って、警察官になったら、その刑事部長の引きで刑事になれ、順調に昇進した。

八神は、真面目な性格で、刑事として頑張っていたが、あるとき、やや畑違いの鑑識部門に移動を命じられた。八神は、それに戸惑ったが、そこでも真面目に努力し、なんとか信頼されるまでになった。特に、愛宕医科大学での検視解剖には、いつも律儀に立ち会うので、法医学の六合光教授とも、馴染みになり、六合光教授は、八神のどんな急な検視解剖の依頼も大抵、受けてくれた。

しかし、八神は、真面目すぎる性格が災いしてか、あるいは刑事部長の引きで昇進してきたことをやっかまれてか、上司から、不当ともいえる扱いを受けたりした。例えば、ある殺人事件の検視に呼ばれ、八神は直ちに現場に駆け付け、どうみてもきちんと処理したのに、そのあとで八神は上司に呼ばれ、しばらく謹慎することを命じられた。そのいわれのない謹慎で八神は、いくら考えても謹慎の理由が分からず、本当に死ぬほど悩んだ。あとで聞くと、死んだのが、窃盗の累犯者で、盗んだ金を相当貯めておいたという噂があったから、というのだが、真相は不明なままだった。

しかし、この小説のコアは、港で見つかった水死体の事件に関与する。すなわち、普通に殺されて海に遺棄された事件かとおもいきや、その被害者もまた窃盗の累犯者で、あるところに忍び込んだとき得た財産を隠蔽するともに、なぜか死ぬ前に愛宕医科大学に掃除のアルバイトに来ていたことが分かり、八神はその背景を個人的興味で調べているうちに、深みに嵌るというストーリーなのだった。

それにしても、必然性はないのに、検死解剖のシーンをリアルに詳細に記述したり、八神が不自然に特定の事件に個人的に入れ込んだり、部下や同僚に裏切られたりと、これはこれで首藤ワールド全開なのだった。

多倍長分数クラスの続きであるが、懸案だった符号の実装のところが案外うまくいったので、細かいバグはあると思われるが、一応の完成とみなして、そのうち実際的な計算を行ってみる。

そのヘッダ・ファイル、L_frac1.hは、L_frac1.hのとおりである。このヘッダ・ファイル内で指定しているL_num3y.hも示しておく。

L_frac1.hでは、下記のようなプライベート変数とメソッドを定義した。

class L_frac    {

private:
 int SGN; // 符号 1 or -1
 L_num A; // 分母
 L_num B; // 分子
 
public:
 L_frac(int b, int a);
 void SetPlus();
 void SetMinus();
 void SGN_change();
 int GetSGN();
 void Delete();
 void Show();
 void Show_nr();
 void reduce();
 void setA(int i);
 void setB(int i);
 void set(int c,int d);
 void operator=(int c);
 void operator=(L_frac C);
 void operator+=(L_frac C);
 void operator-=(L_frac C);
 void operator*=(L_frac C);
 void operator/=(L_frac C);

};

L_frac1.hのフィーチャーは、多倍長分数クラス同士の四則演算と、±の符号を実装したことにある。四則演算はともかくとして、±の符号の実装は結構苦労したので、下記のような検証用サンプル・プログラムを作成して、これが目で見て正しくなるまで、L_frac1.hを修正した。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "L_frac1.h"


int main()                {
 int i;
 L_frac X, Y, Z;
 
// -
 X.set(1,2); Y.set(1,3);
 X.Show_nr(); printf(" - ("); Y.Show_nr(); printf(") = "); 
 X -= Y;
 X.Show();
 
 X.set(-1,2); Y.set(1,3);
 X.Show_nr(); printf(" - ("); Y.Show_nr(); printf(") = "); 
 X -= Y;
 X.Show();
 
 X.set(1,2); Y.set(-1,3);
 X.Show_nr(); printf(" - ("); Y.Show_nr(); printf(") = "); 
 X -= Y;
 X.Show();
 
 X.set(-1,2); Y.set(-1,3);
 X.Show_nr(); printf(" - ("); Y.Show_nr(); printf(") = "); 
 X -= Y;
 X.Show();
 // +
 X.set(1,2); Y.set(1,3),Z;
 X.Show_nr(); printf(" + ("); Y.Show_nr(); printf(") = "); 
 X += Y;
 X.Show();
 
 X.set(-1,2); Y.set(1,3);
 X.Show_nr(); printf(" + ("); Y.Show_nr(); printf(") = "); 
 X += Y;
 X.Show();
 
 X.set(1,2); Y.set(-1,3);
 X.Show_nr(); printf(" + ("); Y.Show_nr(); printf(") = "); 
 X += Y;
 X.Show();
 
 X.set(-1,2); Y.set(-1,3);
 X.Show_nr(); printf(" + ("); Y.Show_nr(); printf(") = "); 
 X += Y;
 X.Show();

 X.Show_nr(); printf(" * ("); Y.Show_nr(); printf(") = ");  
 X *= Y;
 X.Show();
 
 Z.set(5,88);
 X += Z;
 
 X.Show_nr(); printf(" / ("); Y.Show_nr(); printf(") = ");  
 X /= Y;
 X.Show();
 
 printf("X = (X - Y)*Yを20回繰り返す。\n");
 printf("X = "); X.Show();
 printf("Y = "); Y.Show();
 
 for ( i = 0; i < 20; i++ )     {
  X -= Y;
  X *= Y;
  X.Show();
 }
 
 return 1;

}

これの実行結果は、以下のとおりである。
1/2 - (1/3) = 1/6
-1/2 - (1/3) = -5/6
1/2 - (-1/3) = 5/6
-1/2 - (-1/3) = -1/6
1/2 + (1/3) = 5/6
-1/2 + (1/3) = -1/6
1/2 + (-1/3) = 1/6
-1/2 + (-1/3) = -5/6
-5/6 * (-1/3) = 5/18
265/792 / (-1/3) = -795/792
X = (X - Y)*Yを20回繰り返す。
X = -795/792
Y = -1/3
59/264
-49/264
-13/264
-25/264
-21/264
-67/792
-197/2376
-595/7128
-1781/21384
-5347/64152
-16037/192456
-48115/577368
-144341/1732104
-433027/5196312
-1299077/15588936
-3897235/46766808
-11691701/140300424
-35075107/420901272
-105225317/1262703816
-315675955/3788111448

形作り

user-pic
0

形作りとは、将棋で、もう負けがはっきりして、最後に見かけの上で一手違いにするなど、棋譜の上ですっきりしたものにする儀式のようなもので、勝目がないのに醜く粘っても、ルール違反ではないが、まあ、形作りに従うのが礼儀というか、美学である。

なぜ今さらそんなことを言うのかというと、ついに私のサラリーマン生活が来年3月あたりで終わる予定だからである。

そういうことを考えながら会社にいると、なぜか普段よりも多くの仕事が来る。で、軽くムッときたのであるが、私が以前いた会社では、あと数ヶ月で辞める人にはあまり仕事は依頼せず、有給消化モードに入ることを許していた。なのに、この仕事の来方はなんだ、有給をあまり消化しないで辞めることになるではないか、と思った次第である。

それは、以前いた会社と、ここでは、習慣も、会社にいる身分も違う、ということになるのかもしれないが、それでも私に多少の遺恨があるのは、私は去年の12月から、今年の3月まで、目が回るほど忙しく、ほとんど休暇を取れないばかりではなく、難しい案件が多くて、そのストレスで、下半身のあちこちに蕁麻疹が出るほどだったからである。

そして、その原因の一部が、定年で辞めていく、一人の担当者のせいでもある、と私は感じていた。すなわち、その人は、去年の年末あたりから年休消化モードに入り、最早あまり仕事はしていなかったである。その分の仕事が私にきていることも私は見抜いていた。なら、今年は、私がその権利を享受してもよいではないか、と考えるのは、妥当だろう。

ただ、その人はプロパーの社員で、私はサードパーティの会社から来た外様であって、微妙に立場が違う、というのはある。で、いろいろ迷って、私なりの形作りとは何か、と自分に問うてみたのが最初に書いたことになっている。

10分くらいの短考で、私なりに決めたのは、辞める直前まで、定年間際まで、今までどおり仕事しよう、ということである。それが私の形作りである、と。

そういえば、前の会社での退職の状況を思い出した。当時、恒例のようなリストラは走っていたが、とりあえず私には声がかからなかった。私は一応、部門で必須の仕事をしていたつもりでいたが、リストラの期限ぎりぎりになって、私に声がかかった。管理職をやっていた経験で、ははぁ、割り当て人数が足りないのだな、と察知した。それで、家内に相談して、それから人事担当者にコンタクトして、退職割り増し金の額を確認して、早期退職を受け入れることを決めた。

それを、研究所の発明委員会のリーダーに話したら、びっくりしたようで、強く慰留されたが、もともと普通でもあと一年ちょっとだし、部門の杜撰すぎる体制にうんざりしていたので、とか話したら、諦めてくれた。何しろ、信じられないくらいリストラが日常茶飯事の会社のカルチャーなのだから。

結局、たまたま辞めるまでの期間が短くて、引き継ぎでほとんど休暇が取れなかったし、最後の月なのに、10件も中間処理をこなした。そんな知財部員は、その部門には今までいなかった、と自負する。

それを、流石に嬉々とということはないにしても、淡々とこなした私の今からの形作りがどうあるべきか、ということは最早自明なのであった。

発達障害

user-pic
0

昔から、心理学に興味がある私は、最近話題になっている発達障害にもひとかたならぬ関心をもち、発達障害など、関連の書籍も何冊か読んでみた。

ところが、そういう本を読んでも、自閉症、アスペルガー、ADHD、その他の学習障害などの定義がよくわからない。私は子供の頃から、今に至るまで、周囲とあまり打ち解けることができず、結構孤独で、いいようのない淋しさを感じたりしていたが、次第に孤独に馴染んできて、今では、ある程度の孤独が、自分の生活の必須成分になっている。実際、何かのきっかけで集団生活に放り込まれ、孤独が剥奪されてしまうと、私は発狂してしまうかもしれない。

そんな孤独の原因の一つは、どうも自分の発達障害的特性にあると思われる。そういう傾向を見抜いて、周囲の人達は、もっと人と付き合いなさい、恋愛にも積極的になりなさい、そうしないと世間でうまくやっていけないよ、とアドバイスしてくれたが、私は孤独にしがみつき、もしかして私と似たような傾向のある、マイナーな人達とだけ、細々と付き合ってきた。

私のなけなしの知的能力は、そうやって自分の個性を大事にしてきたことの果実である。

さて、発達障害が人口に膾炙してきたためか、実際の発達障害という人達が何人も登場し、自分たちの症状や日常生活の困ったことを、話すというテレビ番組があった。

それをみて、私はいいようのない違和感を感じた。すなわち、発達障害の傾向は実に多様で、ここで述べられたことは、必ずしも典型的とは限らない例にすぎないのに、番組を観た、自分を発達障害でないと信じる人達が、周囲の人達を発達障害だとラベル付けするために使用しないか、という懸念である。そうやってラベル付けして、あいつはおかしい、自分はまともだ、と溜飲を下げたりしないか。

そうされると、つい自分のことのように書いてしまうのだが、私は疎外感を強め、一層孤立してしまう。

ところで、人類はネオテニーで進化してきた、という説がある。すると、精神的ネオテニー、すなわち発達障害は、進化人類ということにならないか。流石に詭弁か。

例えば、子供の頃、宇宙の果てはどうなっているのだろう、時間って何だろう、とつい考える人は、結構いる。しかし、四十代や五十代で、会社なら中堅幹部になったときまで、そういう疑問を引き摺っている人は多くない。いい歳をしてそういうことを考える人は、宇宙物理学者か、単なる変人である。

と、電車の中で、つい妄想に耽るのだった。

特許と翻訳の続きであるが、機械翻訳の使用について、今更の議論をしてみたい。すなわち、機械翻訳が、どう特許実務に役にたつか、ということである。

私の経験では、機械翻訳が一番役にたつのは、外国特許実務に関連してである。例えば、外内の実務で、外国出願を日本語に翻訳して、日本の特許庁に出願すると、当然ながら、ほとんどのケースで、日本語で拒絶理由通知がかかる。すると、これを英語に翻訳して、外国クライアントに送る必要かあるが、私の経験では、これは結構大変で、普通、拒絶理由通知は数ページに亘るので、時間と手間がかかった。これは普通、あまり高品質の翻訳でなくていいので、機械翻訳がぴったりである。

さらに大変なのは、拒絶理由通知の日本語の引例を英語に翻訳することである。これも、請求項のところ以外は、あまり厳密な翻訳でなくてよいが、何しろ大部なので、翻訳会社に外注したりした。だいたい、こういう翻訳は軽くて、外資系の会社の新入社員の頃、私はよくこの手の和文英訳をやらされたものである。

さて、最近は、深層学習を駆使した翻訳システムが登場して、英和も和英も随分質が向上した。で、出願のための翻訳にも使える、という意見も出てくるのであるが、ちょっと待て、といいたい。特許明細書は、読んでざっと意味が取れるだけでいい文書と訳が違う。それは重要な技術の知的財産権に関与するので、隅々まで矛盾や勘違いがあってはならない。

しかし、私の知る限り、AIを駆使した機械翻訳は、ざっと読むと、自然な文章に見えるが、よく読むと、論理を無視した、意味不明の文章に仕上がっていたりして、これを読み直して、きちんとした文章に校正するのは、大変な手間がかかる。私見では、自分で一から書いた方が楽である。

なので、機械翻訳はほとんどそのまま使えるなどと分かったことをいう人は、翻訳実務で苦労したことがないのだね、と私は内心で苦笑したりする。

さらに別の側面で、外国特許調査に、機械翻訳を使うという話も聞いたりするが、これはどういうことなのか、私には特許明細書の翻訳よりもさらに意味が分からなかったりする。というのは、外国特許調査の場合、一日に1000件くらい英語の特許公報を読むのであるが、それに機械翻訳を適用するというのは、一件一件、特許の英文を機械翻訳システムにかけるのだろうか。

でもやはり、外国特許調査の仕事をするということは、英語の達人でなくてもいいけれども、そんなに苦痛なく英語が読めるスキルが必要なのではないか。

とか、いろいろ考えてしまうのだった。こんな余計なことを考えるのは、古い奴だとお思いでしょうが、とつぶやくおっさんに過ぎないのだろう。

多倍長割り算ルーチンまでをなんとか完成したので、これを使って、かなり前からの目標だった多倍長分数クラスL_frac.hを作成してみた。まだ、引き算ルーチンが不完全なので、プロトタイプの段階である。

また、多倍長クラスL_num.hにバグが見つかったので、L_num3y.hとして、修正版を用意した。そこで、このL_numクラスを組み込んだ多倍長分数クラスL_fracを作成して、分数の計算(その2)と同様の計算を行なってみた。

まず、L_frac.hを示す。

#include "L_num3y.h"

class L_frac    {

private:
 L_num A; // 分母
 L_num B; // 分子
 
public:
 L_frac(int b, int a);
 void Delete();
 void Show();
 void reduce();
 void setA(int i);
 void setB(int i);
 void operator+=(L_frac C);
 void operator-=(L_frac C);

};

L_frac::L_frac(int b = 0, int a = 1) {
 B = b;
 A = a;
}

void L_frac::Show()      {
 B.Show_nr();
 printf("/");
 A.Show();
}

void L_frac::Delete()    {
 A.Delete();
 B.Delete();
}

void L_frac::reduce()     {
 L_num Z;
 if ( A == B )    {
	A = 1;
	B = 1;
    Z.Delete();
    return;
 } else           {
    B.GCD(A,Z);
    A /= Z;
    B /= Z;
 }
 Z.Delete();
}

void L_frac::setA(int i)    {
 A = i;
}

void L_frac::setB(int i)    {
 B = i;
}

void L_frac::operator+=(L_frac C)   {
L_frac X1; // 仮変数
L_num T;  // 仮変数
// 分母
 T = A;  T *= C.A;
 X1.A = T;
// 分子

 T = B; T *= C.A; X1.B = T;
 T = A; T *= C.B; X1.B += T;
 // 本体に書く
 A = X1.A; B = X1.B;
 reduce();
 X1.Delete();
 T.Delete();
}

void L_frac::operator-=(L_frac C)   {
L_frac X1; // 仮変数
L_num T;  // 仮変数
// 分母
 T = A;  T *= C.A;
 X1.A = T;
// 分子

 T = B; T *= C.A; X1.B = T;
 T = A; T *= C.B; X1.B -= T;
 // 本体に書く
 A = X1.A; B = X1.B;
 reduce();
 X1.Delete();
 T.Delete();
}

次に、これを使った、分数の計算(その2)と同様のプログラムのソースコードは、以下のとおりである。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "L_frac.h"


int main()                {

 int i = 1, n = 1;
 L_frac r,u;
 r.setA(1);
 r.setB(0);

 u.setB(1); 
 while ( n < 60 )   {
   u.setA(i);
   r += u;
   printf("%d項までの和:",n++); r.Show();
   i += 2;
   u.setA(i);
   r -= u;
   printf("%d項までの和:",n++); r.Show();
   
   i += 2;
 }
 
 
 return 1;

}

そして、これの実行結果は、以下のとおりである。

1項までの和:1/1
2項までの和:2/3
3項までの和:13/15
4項までの和:76/105
5項までの和:263/315
6項までの和:2578/3465
7項までの和:36979/45045
8項までの和:33976/45045
9項までの和:622637/765765
10項までの和:11064338/14549535
11項までの和:11757173/14549535
12項までの和:255865444/334639305
13項までの和:1346255081/1673196525
14項までの和:3852854518/5019589575
15項までの和:116752370597/145568097675
16項までの和:3473755390832/4512611027925
17項までの和:3610501179557/4512611027925
18項までの和:3481569435902/4512611027925
19項までの和:133330680156299/166966608033225
20項までの和:129049485078524/166966608033225
21項までの和:5457995496252709/6845630929362225
22項までの和:227848175409504262/294362129962575675
23項までの和:234389556075339277/294362129962575675
24項までの和:10721947005578370344/13835020108241056725
25項までの和:77030060483083029083/96845140757687397075
26項までの和:75131136154500923258/96845140757687397075
27項までの和:4078795356946236329749/5132792460157432044975
28項までの和:3985471857670646656204/5132792460157432044975
29項までの和:4075520848199724411379/5132792460157432044975
30項までの和:235322937583626308226386/302834755149288490653525
31項までの和:14657533947750493292463071/18472920064106597929865025
32項までの和:14364312994351975865004896/18472920064106597929865025
33項までの和:1126808597274538496041637/1420993851085122917681925
34項までの和:74075182166308956317107754/95206588022703235484688975
35項までの和:75454987789826394512538029/95206588022703235484688975
36項までの和:5262097545054970774905511084/6759667749611929719412917225
37項までの和:390892788538624796287515226357/493455745721670869517142957425
38項までの和:384313378595669184693953320258/493455745721670869517142957425
39項までの和:390721894773872702479890241783/493455745721670869517142957425
40項までの和:30373573941414272626394186143432/38983003912011998691854293636575
41項までの和:92564536783946965978880865602021/116949011736035996075562880909725
42項までの和:7565907541331562180171548964058018/9706767974090987674271719115507
             175
43項までの和:7680104811614985564574745659534573/9706767974090987674271719115507
             175
44項までの和:7568532765935778809698059232919548/9706767974090987674271719115507
             175
45項までの和:683306184142375301737398990845346947/86390234969409790301018300128
             0138575
46項までの和:8759565772466007793584732166520919086/1123073054602327273913237901
             6641801475
47項までの和:8880326315971634382177553446269755661/1123073054602327273913237901
             6641801475
48項までの和:8762108099697705195449844193462999856/1123073054602327273913237901
             6641801475
49項までの和:861155216216700676697767265782552787507/10893808629642574556958407
             64614254743075
50項までの和:850151369116051611488718369170287588082/10893808629642574556958407
             64614254743075
51項までの和:86954669143685470216056396050813301139357/110027467159390003025279
             917226039729050575
52項までの和:8846303454640213429228528876007730288303196/1133282911741717031160
             3831474282092092209225
53項までの和:8954235160520376956005708223381845451086141/1133282911741717031160
             3831474282092092209225
54項までの和:946770333058263163981006948427575371174007862/12126127155636372233
             41609967748183853866387075
55項までの和:104410579018914322097271367346353899311833244033/13217478599643645
             7344235486484552040071436191175
56項までの和:103219815181108588247323299900547124176054539608/13217478599643645
             7344235486484552040071436191175
57項までの和:11796013901461706929291768375246377071965599166879/149357508175973
             19679898609972754380528072289602775
58項までの和:11666137807395643279901345679831121589112796648594/149357508175973
             19679898609972754380528072289602775
59項までの和:11793793797289637465199624397546970995335636730669/149357508175973
             19679898609972754380528072289602775
60項までの和:11668283286217391081334930196095253511906457826444/149357508175973
             19679898609972754380528072289602775

竜王戦第5局が豊島名人の先番で開始された。ここまで豊島は三勝一敗だが、この将棋を負けると、急に帰趨が混迷してくる。なので、是非ともここで決めたいところである。そこで豊島は、A戦法である角換り腰掛銀を採用した。

さて、例によって45手目▲4五銀から見てみる。

【図1】 45手目▲4五銀まで
持ち駒:△広瀬竜王=角



持ち駒:▲豊島名人=角歩
この戦型は、4五に銀がいるのは普通であるが、なんと3四の歩を掠めて4五に戻ったもので、プロ的にも珍しい展開らしい。しかし、明らかに2五桂が歩で取られる運命にあるので、プロ的には後手もちのようである。ここから△2四歩,▲5六銀,△2三金,▲4五銀,△7五歩,▲同歩,△6五歩,▲6九飛,△2五歩,▲6五歩,△8四飛,▲5六銀と進んだが、ここでは桂損だが、先手の模様はそんなに悪くない。

【図2】 58手目△5四銀まで
持ち駒:△広瀬竜王=角桂



持ち駒:▲豊島名人=角歩3
広瀬は△5四銀と出て、先手が▲6四歩なら、△6五桂打ちをみせた。そこで豊島は、▲2五歩と歩を延ばして、△3三桂,▲3五歩,△2五桂という展開になったが、どうしてここで豊島は▲2六歩と打たなかったのだろうか。すると、△3七角が嫌なのだろうか。で、▲7四歩,△同飛,▲7六歩,△8六歩,▲同歩,△3六歩と進んだが、こう進んでみると、△3六歩が忙しくて、後手が良くなっている。すると、先手は▲2六歩と打つとか、▲6四歩と伸ばすとかの方がよかったか。

【図3】 69手目▲2九飛まで
持ち駒:△広瀬竜王=角桂歩



持ち駒:▲豊島名人=角歩4
そこで豊島は勝負手で▲2九飛であるが、これではいかにも苦しい。広瀬は△2八歩,▲同飛,△2四金と追撃して、あくまでも△3七歩成を見せる。そこで豊島は、▲5八金と金を早逃げして、△3七歩成に▲2五飛,△同金と飛桂交換を敢行した。

【図4】 77手目▲6六桂まで
持ち駒:△広瀬竜王=飛角桂



持ち駒:▲豊島名人=角歩5
それは▲6六桂が狙いであるからなのだが、これでは先手が幸せになれないよね、というのがプロの感覚らしい。実際、以下△8四飛,▲7五角,△2九飛,▲8八玉,△6五銀,▲8四角,△5六銀,▲同歩と進んで。

【図5】 86手目△8七歩まで
持ち駒:△広瀬竜王=角銀桂



持ち駒:▲豊島名人=飛銀歩5
△8七歩と急所に叩かれては、これは豊島がもたないのと思った。しかし、豊島は▲9八玉と耐え、△6五桂,▲5四桂,△同歩となった。

【図6】 91手目▲7五角まで
持ち駒:△広瀬竜王=角銀



持ち駒:▲豊島名人=飛銀歩5
ともかく豊島は、▲7五角と王手をして様子をみた。すると広瀬は△5三桂と、さっきもらった桂馬を合駒して平気である。以下、▲6六角に広瀬は△3五金と金をどけながら、飛車先を通したが、これはどうだったか。△3三角の方がよくなかったか。なぜなら、△3五金に▲2一飛があったからである。以下、ともかく△7七桂成,▲同角と進んだ。

【図7】 98手目△8八銀まで
持ち駒:△広瀬竜王=角銀歩



持ち駒:▲豊島名人=銀桂歩5
で、△8八銀だが、これに▲2二飛成,△同飛成,▲同角成に、△8九銀不成とすると、どうみても先手玉は詰みそうである。ところが、検討陣は、これは詰まないと発見した。すると事件である。しかし、こうなったら広瀬も最早軌道修正できない。すなわち、△8九銀不成以下、▲9七玉,△8五桂,▲同歩,△8六角,▲同玉,△7四桂,▲8七玉,△8六銀,▲8八玉,△7八銀成,▲同玉と一本道である。

【図8】 114手目△7七金まで
持ち駒:△広瀬竜王=飛歩



持ち駒:▲豊島名人=飛角銀3桂2歩6
以下、△7七金に玉が逃げると王手で馬が抜かれるので、▲同馬と取るよりない。以下、△同銀成,▲同玉,△6五桂,▲6八玉と進んだ。

【図9】 120手目△7七角まで
持ち駒:△広瀬竜王=飛角



持ち駒:▲豊島名人=飛角金銀4桂2歩6
そして後手は△7七角と打つよりないが、ここでは最早先手が有利になっている。そこで▲6九玉と落ちた段階で、先手は持駒が豊富で、一応後手は詰めろになっている。以下、△2九飛,▲3九歩,△同飛成,▲5九桂,△2八龍,▲7五角,△6四歩となった。ここでは最早、先手が勝勢である。

【図10】 129手目▲3八歩まで
持ち駒:△広瀬竜王=歩



持ち駒:▲豊島名人=飛金銀4桂歩4
▲3八歩に後手が△9九角成と香を取った手が先手の詰めろでなく、先手はついに一手の余裕をえた。以下、▲6四角,△5三金,▲5一銀と進んだ。これを取ると、▲3一飛,△4一銀,▲6二銀,△同玉,▲7三銀から詰む。

【図11】 134手目△3三玉まで
持ち駒:△広瀬竜王=香歩



持ち駒:▲豊島名人=飛金銀3桂歩5
なので、△3三玉は仕方ないが、▲5三角成と金を取られてしまった。広瀬は△5七香と詰めろをかけるが、▲3一飛以下は後手が詰む。すなわち、△3二歩,▲4二銀,△2二玉,▲3三銀打,△同歩として。

【図12】 投了図 143手目▲3二金まで
持ち駒:△広瀬竜王=銀



持ち駒:▲豊島名人=金銀2桂歩5
▲3二金で即詰みである。

なんか、途中広瀬が圧倒的に有利かと思ったが、案外そんなに大差でもなかったのかもしれない。分からないが、【図6】の△3五金がリスキーだったか。

ともかく、豊島は、第1局と、第3局と、第5局という奇数局で、大逆転を演じた。なんという勝負強さだろう。一方、広瀬の鬼のような終盤の強さも定評があるところで、なんか魔に魅入られたとしか思えないのだった。

最後に、読売新聞の記事を引用させて戴く。

竜王戦史上5回目の竜王対名人の決戦となった第32期竜王戦七番勝負は、挑戦者の豊島将之名人(29)が4勝1敗で広瀬章人竜王(32)を破り、史上4人目の竜王・名人が誕生した。頂上決戦を制した豊島竜王・名人が「令和の覇者」へと名乗りを上げた。
7日午後7時56分、「負けました」と広瀬竜王が頭を下げた。対局室に一斉に報道陣が集まる。激戦を終え、「2日目の昼には失敗したと思っていた。ずっと自信はなかったが、最後に▲5一銀と王手して勝ちだと思った」と豊島竜王・名人は第5局の感想を話した。

ライブラリ

user-pic
0

ライブラリと言っても、私が意図するのは、図書館のことではなく、特定の仕事に使用するためのコンピュータ・ツール群のことである。

会社の知財部で、電子出願のサポートを始めたとき、通信やシステム寄りのところは、専門のSEの人が担当してくれたが、業務寄りのアプリが全くなく、苦労した。料理でいえば、コンロはまああるが、それこそ鍋も包丁もない状態で、それは自作するよりない。

もちろん、そういうシステム・サポートを請け負う会社は何社かあったが、そういう会社は皆、私が勤務する外資系のガチの競合会社で、その外資系の数年前の事件で、競合会社は戦々兢々且つ疑心暗鬼だった。なので、部門長は、そういう会社の関係者をオフィスに入れるわけにはいかないので、サポートは自前でやるしかない、と判断した。

しかし、私としては、おいおいである。私のプログラミング・スキルはまだ初心者で、頼みの師匠のMさんは病気で夭折していた。しかたないので私は、自分でもできる基礎的なところからツールを作成し、積み上げていった。

そういう有象無象のツール群も、ある程度数が溜まると、少しだが量が質に転化したような気がしたことがあった。

それでも、途中何度も、自分のスキルでは無理だ、と絶望しかけたことが何度もあった。私は昔から、根性がないし、粘り強いほうではない。ところが、悩んでいると、どこからかアイデアが降ってきて、それを実装すると、なぜかうまくいった。それはどうみても私が書いたコードとは思えず、おそらく霊界からMさんが伝えてくれたのだろうと信じた。

こういうことを書くと、眉唾というか迷信のようで嫌う人がいるが、だいたい、作家とか音楽家とか、アイデアを生活の糧とする人は、これとあまり変わらないレベルのスピリチュアル的な雰囲気に馴染んでいたりする。

ともかく、石の上にも三年で、作成したツール群は、私の昇進や生活レベルの向上には全く寄与しなかったが、ライブラリとしてのツールの意義みたいな意識は残った。

それで、その後転職した会社で特許調査の仕事をするようになると、私に使うことが許された唯一の処理環境であるPerlで、100以上のスクリプトを書き、業務を合理化した。しかし、Perlなので、誰にも使ってもらえず、そこは残念だった。

個人的に余暇に数学、すなわち数論の初歩を勉強するようになると、まず多倍長数字計算ライブラリを作った。これは最初、コラッツの問題などの単に大きい数を計算する玩具に過ぎなかったのであるが、素数の本を読んでいて、Lucas-Lehmer判定のプログラミングするのに役に立った。へぇ、トイ・プログラムでも、数学の理解の役に立つことがあるんだ、とうれしくなった。

そうしていると、分数計算のライブラリを作れ、とどこかから聞こえたような気がした。確かに、楕円曲線の有理数解の計算に使えるよね、と作ってみたら、なんとベルヌーイ数の計算にお誂え向きで、これはゼータ関数や、発散級数の計算にも使えることが分かり、ラッキーだった。

あと、まだ作ってなくて必須なのは、複素数のライブラリであるが、そんなのC++の標準ライブラリにあるので、それを使えば作らなくていいと言われると思う。実際、既にある物をわざわざ作ることを車両の発明という。

それは特許としてみたら、何の新規性もないが、ある深層学習の本に、感動的なフレーズがあった。それは、プログラムはコピーできるけど、作る経験はコピーできない、というものである。

なので、私は今後も、作る経験を求めて陳腐なコード、そして文章を書き続けるだろう。

影踏み

user-pic
0

横山秀夫の小説は、古書店で見つけたら、とりあえず買っておくのだが、なぜか、直ぐに読むものと、しばらく積ん読にするものに分かれてしまう。

「影踏み」祥伝社文庫は、後者に属するのであるが、何年かの積ん読を経て急に読む気になったのは、映画化されて封切られると知ったからである。

そういうのがあると、普通は、じゃ、映画を観に行くか、ということになるのだが、私はほとんど映画には行かないので、じゃ、その原作本を読むか、ということになる。「アルキメデスの大戦」がその典型である。

ところが、「影踏み」は、既にもっているのだから、そんな幸便なことはない。で、「影踏み」を直ぐに読み始めたのだが、これは中編小説だと思い込んでいたら、なんと、七編からなる短編集なのだった。

ただ、読み通してみると、短編は相互にかなり密に関連しており、全体で一つの中編小説とみるのも、的はずれでもないか。

前置きが長くなってしまったが、この小説の主人公は、真壁修一。その仕事は、ノビ師である。すなわち、泥棒の一種なのであるか、空き巣の違って、人がいるときに家に忍び込む。この小説で改めて知ったのだが、泥棒も、車内、通行人、その他、様々な場合に特化されていて、専門化している。そして、その各々に業界用語が名付けられている。

真壁は、もともとは泥棒でも非行少年でもなく、極めて優秀な法学部の学生で、司法試験の合格が期待されていた。

しかし、ある事件から、人生が暗転した。すなわち、真壁には啓二という双子の弟がいた。啓二も優秀だったが、試験というのは運もあり、啓二はたまたま浪人した。啓二は精神的に弱いところがあったか、つい盗みを働くようになった。そうなっては、いくら秀才でも、最早エリートの道に進むことは無理で、そのことに絶望した母親が、啓二を道ずれに自宅に火をつけ、無理焼身自殺を試みた。それを助けようとした父親も巻き込まれ、結局真壁修一は、天涯孤独になった。

そうして、世を拗ねたたか、ノビ師になった次第である。だが真壁は、もともと、頭の切れる秀才であるだけでなく、空手部にいたこともあり、喧嘩が強く、指先も器用で、こうして業界で有名な一流のノビ師となった。

とはいえ、人が寝ている家に忍び込むというのはリスキーで、流石のノビ師真壁、通称ノビ壁も、何度か警察に逮捕され、服役している。

何度目からの服役から出所した真壁は、その服役の原因になった案件を思い出してみた。真壁が忍び込んだとき、夫婦が寝ていた。しかし、真壁は、女の方が実は寝たふりをしていることに気付いていた。さらに、真壁は、状況から、女が家に火をつけて、夫を殺そうとしていると推察した。なので、女は、真壁が金目の藻のを盗んでそのまま逃走してくれることを期待したが、真壁のある行動に気づき、このままでは自分の計画が崩れると判断して、急遽警察に通報し、真壁は警察に捕まり、女の計画は未遂に終わったというものだが、これはあくまでも真壁の推理である。

ともかく、色白の美人の印象が強かったその女はその後離婚し、別の男の情婦になったらしいが、そのことを起点にしてそれとは関係ない事件も絡み、真壁に様々な災厄が襲う。

真壁の特徴は、服役中に知り合った男たちとの関係に義理堅く、要するに侠気が強い。ヤクザでさえ、一目置くほどである。

そして、そのためには、警察とも、ヤクザの親分とも、対抗することを全く怖れない。おそらく、家族三人があの世に行っちまっているので、自分もそうなることに拘りがない。

真壁の心残りは、幼なじみの恋人、久子である。女に関しては地味な真壁は、他の女を作ろうとしない。一方の久子は、真壁への思いを断ちきれないながらも、真壁に真っ当な人間になってもらって、一緒にくらしたいという思いと、堅気の男性に乗り替えたいという思いが交錯しているのであった。

ともかく、こういう背景を知って、映画を観て、差分を探すのもそれなりに楽しいと思うが、やはり多分映画は見ないだろう。

それにしても、映画の主演の真壁役、山崎康晃じゃなかった、山崎まさよしは、私のイメージの真壁とかなり近いので、なんとなくうれしい。

今から8年くらい前だろうか、まだ外資系にいて、中央林間に通っていた頃である。特に意識していなかったが、それは満員電車も遠距離通勤もない幸せな日々であった。その思いは、その事業所に勤務するほとんどの人に共有されていたはずである。

なので、その事業所が閉鎖になり、豊洲に移転すると発表されたとき、そこの従業員全員に衝撃が走った。なぜなら、豊洲というと、一応東京都とはいえ、ほとんど千葉といってよい最果てだったからである。

豊洲事業所は、そのとき既にあり、通っていた人に聞くと、なんか通勤が壮絶に疲れるという。でも実際に通い始めると、案ずるより生むがやすしで、なんとか慣れた。まあ、今よりはまだ体力があった。それでも、豊洲で知り合いと飲むときは、家内から、ホテルに泊まるように義務づけられた。前年の新宿駅での酔っぱらい事件があったからである。

それで、豊洲でなくても、自宅から一時間半以上の電車の時間がかかる場合は、なるべくホテルに泊まるようにした。都内なので、ホテル代は7000円くらいかかったりするが、まあ私は飲む頻度は高くないので、そんなに負担にならない。

なので、三鷹にある会社に転職してからも、状況に応じて、中央線沿線に泊まった。

会社のそばには、リッチモンドホテルなどの立派なホテルがあるが、私のような庶民を寄せ付けはい値段なので、無理だった。それで、駅の反対側にあるホテルに泊まったこともあるが、どうも趣味に合わなかった。

で、三鷹より新宿側の駅のホテルを探したが、何度ネットで見ても、なかなか空きが見つからなかった。なので、立川や八王子のホテルにも泊まってみたが、朝会社に行くとき殺人的に混むので、避けるようになった。

で、結局中央線に適当なホテルが予約できないので、それを理由にして、会社の飲み会そのものを避けるようになった。もともと会社の飲み会は内輪話が多く、外様の私には面白くない。

ところが、年齢が進むと、飲み会がなくても、通勤に疲れて、たまにはホテルに泊まりたいと思うようになった。実は三鷹は私にとって、豊洲と同じくらいの遠距離通勤なのである。

それで、ダメ元で、新宿と吉祥寺の間の駅で、ホテルを探してみた。何しろ私は、年に一度健康診断でいく荻窪を除き、新宿から吉祥寺の間の駅で降りたことがない。すると、高円寺にあるホテルが予約できた。なんと画期的なのだろうと思ったが、もしかして東京オリンピックをあてこんで、新しいホテルの建造が進んだので、現時点ではホテルがだぶついているのかもしれない。

それで、65歳にして初めて、高円寺の駅で降りたが、荻窪と同様、なんとも地味な街である、昭和の雰囲気が残っている、というか。単に疲れていただけかも知れないが、食堂に行く代わりに、ホテルの近くの東急ストアで弁当を買って、部屋に籠って弁当を食べ終わると、シャワーを浴びて、さっさと寝てしまった。ホテルは決してファンシーとはいえないが、妙に落ち着く場所で、悪くないと思った。

次の朝、会社に行くために、早く起きた。地味と思った高円寺の街も、朝日を浴びるとなかなか立派である、私の出身地と比べて、であるが。そんなんと比べるか。

と、思っていたらと突然、頭の中で、吉田拓郎の「高円寺」という曲が流れてきた。♪君を好きだなんて言ったりすると 笑われそうな気がして♪

それからしばらくして、♪君はどこに住んでいるの 高円寺じゃないよね♪という歌詞になる。

いや、きっと高円寺だよ、と呟きながら、私は三鷹行きの総武線の電車に乗った。

月別 アーカイブ