年別アーカイブ: 2018年

6件の投稿

九州に転居しました

妻の癌治療が一段落したので、妻の実家がある九州(福岡県T市)に転居しました。

私たちももう歳なので住まいを変えたくないのですが、妻の実家で妻が帰らなければいけない事情があったからです。

私としては初めて住む町だし、これまで住んでいたところに比べたら随分田舎だし、第一友人がいないのが辛いところです。

この先どうなるかわかりませんが、ともかく暫く住んでいかなくてななりません。

ぼんやりしているもの嫌なので、市役所のホームページをみると、「これからの町づくりを考える会」のようなものがあったので、さっそく応募して、先日2回目の会合にあり出席しました。

参加者は約50名、市役所職員、コーディネーター、一般応募者のほかに3分の1程度が地元の大学生で構成されています。

会は流行りのワークショップ形式で、コーディネーターの指示に従って、3つのグループに分かれて議論していきます。

一回目の会議で出された宿題は、「この町のいいところを写真に撮ってきてください」というものでした。私のこの町に対する印象はよくないので、「いいところ」を見つけるより「悪いところ」に目が移ります。

ワークショップの手法として、「いいところを見つけてそれを伸ばそう」という方向付けだと思いますが、私はこの手法は時と場合により有効であったりそうでなかったりすると思います。

「悪いところを見つけて、それをいいものにしよう」という発想が欠けています。だから、悪いところに目が向かない。

少し失礼な言いかたをすれば、どうでもいい小さないいとこの寄せ集めになります。もちろんこの中からいい珠を磨きだそうということでしょうが、磨くに値しない石ころばかりで、鳴動泰山ネズミ一匹で終わる可能性があります。
「これなら大騒ぎすることはない。観光協会発行の小冊子で十分だ」になりますす。

ここで、このテーマへのスタンスの取り方が問題になります。

「いい街にしよう」が、「この街に住む人たちにとっていい街にしよう」なのか、プラス「旅行者や観光客が寄ってくるほどのいい街にしよう」なのかで意見が違ってきます。

町の中心部にある廃屋になって錆びだらけの「バスターミナル」で議論が分かれました。

この町に住む人は、「懐かしい場所だ。いつまでも保存してほしい」になりますが、私のようなよそ者からすると「目ざわりだ。99%の観光客にいい印象を与えない。一刻も早く取り壊すべきだ」になります。

「外からの目に気を使い、他所からも訪れたくなる町にしたい」と考えるか、「よそ者はほっといてくれ。自分たちが快適であればいいのだ」を取るかで随分話が違ってきます。後者であれば、他人がどうこういう権利はないし、口出しすべきではありませんが、他人からすれば魅力のない活気のない町=井の中の蛙に成りかねません。

市で主導するこの会の方向が後者であれば、よそ者である私の立ち入る場所はないし、邪魔でしょうから退会しようと思います。

一方、外部の人の目からしても、いい街にしたいというのであれば、よそ者の意見も貴重かもしれません。

この先どうなりますか。

Python

約30年前(1980年代)、私が大型CADの開発を計画した時、パソコンといえばまだオモチャみたいなもので、ワープロ(一太郎)や表計算(multiplan)で事務文書を書く程度のものでしたので、これでは使い物にならず、開発環境としてはUNIX+Cを使う以外考えられませんでした。

ところが、1995年Windows95が出現してからは、マイクロソフトの影響が強力で、アプリケーション開発ではUNIXではなく、Windows PCで開発するのが主流になりました。

私も時流に乗り遅れまいと、.NETとくにVB.NETを勉強し、専らVB.NETのプログラムを沢山書いていました。Webの世界ではJavaやJavascriptやPhpが使われていましたが、私はお手伝いで使う程度でした。

Unixは元々米国ATTの研究者が研究用として作成したもので、徐々に評判を得たOS(基本ソフト)でしたが、ビジネスと結びつくと結構高額な商品で、簡単に使えなくなりました。ただしソースは公開していたので、1991年に当時フィンランドのヘルシンキ大学の学生であったリーナス・トーバルズがUnixを参考にUnix互換ソフトを開発、無償で公開しましたので、瞬く間に評判を得て、また沢山の人が開発に協力するようになって、Linuxとして大きく成長することになりました。

時代がWEBの時代になり、LinuxがWEBサーバーとして独占的に使われるようになると、マイクロソフトが強力に作り上げたPC中心のクローズした世界は仇となって、Linux上で動作するフリーソフトを中心にした技術が大変重要視されるようになってきました。

昔は傍流であったJavascriptやJavaやPhp、最近急激に人気がでてきたPython(パイソン)やRuby(ルビー)の技術者に多くの求人が集まっています。

私は、これまでPythonやRubyに関心がなかったし、勉強しようとも思っていなかったのですが、今評判の言語を全く知らないのもしゃくなので、少しPythonを勉強してみました。

Pythonを勉強してみて、まず思ったのは、「いい教科書がない。あるのかもしれないが、探せない。マイクロソフトではこんなことはあり得ないことだ」と、最初に面喰いました。

Pyhotnの入門書はありますが、これはプログラミングの初級者用で、プログラミング経験者にはあまりにもかったるいのです。また「いいかな」と思う本は、なぜか気取った書き方で、「言語仕様を普通に解説してよ」といいたくなります。ともかく数冊読んでみました。

「この言語は『極力余計なことをしない』を設計の中心においている」と感想を持ちました。この点では「Perlに似ているが、その方針はPerlより徹底している」と思いました。

例えば次のようなことです。

プログラムは通常上から下に実行していきますが、途中で頻繁に分岐やループします。

このとき「ブロック」が明確である必要があり、メインのブロック、分岐したAのブロックとBのブロック、分岐ブロックの処理が済んだときに帰ってくるメインブロックの位置が明確でなければいけません。

C言語の系列では{}でブロックを表現しますし、他の言語では、If 判断 then Aブロック else Bブロック endif のように、then、else、endifを使ってブロックを明確にします。

これは結構かったるいのですが、Pythonではインデント(行揃えをずらす)ですませます。

また、計算では数字や文字のグループ操作が沢山あり、これも面倒なのですが、この部分も効率よく処理します。

しかし、なぜこれほどまでPythonの人気があるのか、本当のところはよくわかりません。

一つ言えるのは、WEB関連で便利なモジュールやパッケージが沢山無料で出回っていること、多分、処理系も軽く比較的容易にWEBに組み込むことができるからだと思います。

さて、GoogleやYahooで探したい事項を検索すると、関連するサイトの一覧を表示しますが、どのようになっているのだろう、と思っていました。

「Pythonによる クローラー&スクレイピング入門」(加藤勝也 翔泳社、2017年)を読みました。

Wikipediaによると「クローラ(Crawler)とは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラム」で、スクレイピングとは情報を抽出することのようです。

この本にはたくさんのクローラーとスクレイピングの技法を紹介しています。

以前書きましたようにWEBページのソースには、通常ユーザに見えていない沢山のタグ(画面制御用のラベル)がついています。そしてこれらのプログラムはこれらのタグを辿って必要な情報を抽出・表示していきます。

「価格.com」や各種ランキングページは特定のページをクロールし、定期的に価格やランキングを取得しているのだと思います。

この技法を使って、YahooやGoogleを始め、沢山のWEBサイトがこのような処理をしているのでしょう。この分野の求人も結構沢山あるようです。

乳癌

母親の世話で長年遠方(九州)の実家で生活している妻から、昨年9月乳癌に罹ったと連絡があり、直ちに自宅(千葉県柏市)に帰らせました。

随分昔になりますが、実家の家業を仕切っていた妹が亡くなって、妻はその代役として実家の手伝いに行ったのが始まりで、当時はやるべきことをやって毎月自宅に帰っていたのですが、数年前母親が倒れて母親の世話がメインの仕事になってからは、妻は滅多に自宅に帰ることができなくなっていました。

自宅から10分ほどのところに国立がん研究センターがあって、羽田からの帰宅に妻が使っていた高速バスがここに止まりますので、私は何度も妻をがんセンターに迎えにいっていましたが、彼女は大抵夜帰ってきましたので昼間のがんセンターの顔を知らず、暗がりに浮ぶ人影のない大きな病院の外観をみて、「私たちとは関係のないことだが、癌にかかる不運な人がいるのだ」と他人事と思っていました。

しかし思いもよらず、妻が乳癌に罹ったと言ってきたとき、当院にかかるのが当然と考えました。

 

九州の病院では、両乳房に癌ができていて、かなり進行しているので全摘出するといわれ、彼女は覚悟を決めて長年生活で使っていた沢山の衣類を送り返してきて、直ちにがんセンターに行って癌の治療にかかりました。

がんセンターでは骨とリンパ節への転移を検査しました(検査名:シンチ)。
これらの検査は原理的にいえば、癌に集まる性質の微弱な放射性物質を体内に入れて、それを長時間露出で撮影して癌のある場所を特定するようです。話によれば東大グループがノーベル賞を受賞したカミオカンデで使ったと同類の装置だということで、私は検査室には入れませんでしたが、妻の話では相当大きな装置だそうです。

今回、私はがんセンターが近くにあってよかったとつくづく思いましたのは、がんセンターは最新の検査装置を備えていて、他のことは分かりませんが、検査は現在の日本のベストの機器を使うのだろうと推測されるからです。

検査の結果、骨や他臓器への転移はない。ただし右乳房には3センチ程度の浸潤性乳管癌が、左乳房には3センチ弱ののう胞内癌があり、右わきの下リンパ節には4つのセンチネルリンパ節がありそのうち一つには癌組織の存在が疑われる、左には一つのセンチネルリンパ節が疑われるということでした(なお、両乳房が同時に発症する確率は3%程度だということです)。手術は全摘出ではなく残せるところは残すという方針が示されました。

検査に時間がかかったのと、多分それ以上に病室に空がなかったのが原因で、1か月後の10月17日入院、19日手術を受けました。切除したのは、右が少し大きかったようですが、多分10×5×5センチ程度の左右の患部と、わきの下のリンパ節の一部を切除しました。右のリンパ節には1ミリ弱の癌の塊が一つあったようですが、左は切開して確認しただけで済んだようです。

多分内蔵と違って乳がんは手術としては簡単なのでしょう、なんと2日後には病院を追い出されました。

乳癌手術としても軽度だったのでドレインを使うことなく、一か所少し化膿しましたが、傷は比較的順調に回復しました。

続いて12月から3週間毎に4回の抗がん剤治療を受けました。妻は抗がん剤治療の悪評をネット等で調べていたので、受けたくないといっていたのですが、私は半分強制的に抗がん剤治療を受けさせました。
最初にすぐ顔に赤みが出たり、手足がうっ血しやがて「爪が浮く」といっていました。同時にひどい便秘になったり、髪の毛が抜けたり、両足にむくみが出たり…やはり大分辛い治療になりました。

2月5月~19日、抗がん剤治療中です。(画像をクリックしてください)

抗がん剤を注射すると抵抗力が落ちるので、抵抗力を落とさないように毎回2日後に別の注射を受けましたが、この注射もまた副作用があるようです。

ともかく、2月まで抗がん剤治療を受け、3月になってから今度は平日毎日計21回放射線治療を受けました。抗がん剤治療に比べてこちらの副作用は小さかったですが、少し火傷の症状を起こしたようです。

3月いっぱいで当面の治療が終了しましたが、未だに抗がん剤の副作用があって、夕方になると足がむくみますし、数本の足の爪が剝がれ(結果的に1本を残しすべての足の爪がとれました)、長い間動かないことで両足の親指が巻き爪になりました。

治療は一段落しましたが、癌がホルモン由来だったので、今後も薬を毎日5年から10年間呑み続けなければいけませんし、3か月毎に内科の診察と半年ごとに外科の検査(マンモグラフィー)を受けなければいけません。
今も抗がん剤やホルモン剤の副作用があるらしく、時々めまいや嘔吐があり、食欲もなく、また暫く動かなかったので筋力が衰え痩せたようです。

7月10日一通り治療は終了しましたが、後遺症が残っています。
髪の毛が縮れ、足の爪が剥がれました。(画像をクリックしてください)

当初妻は、ステージ4を覚悟していたようですが、がんセンターではステージ1か2だといわれ、5年後再発率は2~3%だということですから、年齢からして再発を余り気にすることはないのでしょう(私だった5年後生存率は50%程度でしょうから)。今は髪の毛も数センチに延びましたし、注意深く元気を取り戻していくしかないのでしょう。夏には普通の生活ができると期待しています。

今回の件で、幾つか考えることがあります。

まず、癌は絶対がんセンターにかかるべきだということです。
手術の腕は分かりませんが、検査設備が充実しているので、切開の前に癌の居場所や大きさを突き止めてくれる。それによって治療を最小限に抑えることができると思います。また国立がん研究センター東病院では一棟全部が手術棟になっていて、図面でみると1フロアに20程度の施術室があり、直下の階に検査室と薬品庫を配置しています。手術の途中で取り出した生体を直ちに検査し確認しながら手術を進めるのだと思います。
第二に治療はチームで当たっているので、一人の医者が暴走することはないだろうと、この点の安心感があります。

逆に、不満は担当医が判断を自分でしないで、こちらに投げる傾向にあることです。こちらは初めてのことで、説明を受けても、どうするのがいいか判断のしようがないのに、「これとこれがありますが、どうしますか」という言い方をします。

手術後、担当が内科に移って、内科での治療方針のオリエンテーションがありました。ここで、内科医が、血液検査でB型肝炎のサイレントが発見され、「抗がん剤を使用すると劇症化する恐れがあります」といいます。
私は少し驚き(私自身も同様サイレントがあるようですし、中高年では珍しくないようです)、癌に対処するには抗がん剤を摂取しなければならないのだから、発症の恐れを受け入れなければいけない。ただその対応に万全を尽くしていただきたい。と私は考えました。
私は、「万一発症したら、こちらで対応していただけますよね」と当然のこととして、確認しました。
ところが担当医の発言は「対応しません」といいます。唖然としこの「医者はなにをいっているのか」と怒りに顔が強張るほどでした。

このような対応はがんセンターの方針なのだろうか。それともこの担当医の人間性の問題だろうか。どちらにしても、今答は見つけられませんが、医療機関の人間としてのレベルの低さに驚いています。

 

それにしても、癌患者がなんと多いことか。毎日1000人以上の患者が外来しています。

また、わが家としては幸運でしたが、妻は70歳になったところで、年金以外の収入がないので、毎月の医療費の上限が低額に抑えられています。これが働き盛りの中年だと、数百万円の費用が掛かるのだろうと思います。

しかしそれ以上に国は、癌医療だけでも相当な負担をしているのだと実感しました。

プログラミング言語

前回私はプログラミング言語について、「プロであれば、知っている言語の数を自慢するものではありません」と書きました。
勿論理由があります。

 

私たちの周りで実際沢山プログラミング言語が使われていますが、いくつかの言語を理解してみれば、言語の違いは、方言の違いだと言える程なのです。

プログラミング言語Pacsalの設計者Wirthは、次のようなタイトルの教科書を書いています。

Algorithms + Data Structures = Programs 

このタイトルは、プログラムの本質を言い当てています。
すなわち、プログラムはどんなデータをどんなアルゴリズムで操作するのか、
に尽きると言っています。

昔々、コンピュータが世の中で使われ始めたころ、すなわちIBMがこの世界の絶対王者であったころ、コンピュータは大変高価で、メモリーをふんだんに使うことができなかったので、プログラムはできるだけメモリーを使わないようにしました。

当時私たちが使うことができた言語は、FortranとCobol、少し後からC言語ですが、ここで取り入れられたのがデータ型の概念です。

データ保存倉庫に何(どんなデータ型のデータ)が入っているか、明確にする手法がとられました。

Xというアドレスには整数が、
Yというアドレスには実数(小数)が、
Zというアドレスには文字列が入っていると明示する必要があったのです。

というのは、整数や実数や文字列のコンピュータ内部での表現が異なり、多くの場合それぞれの倉庫の大きさも違うのです(倉庫の境界線はどこにも書いてありません)。Xというアドレスには実際には整数が入っているのに、
文字列だと解釈しては、何をやっているのか訳が分からなくなります。

例えていえば、全てを0と1のパターンとしてしか見えないロボットが、Xというアドレスには5㎡の面積に果物が入っているのに、10㎡の面積に建材があると思って取り出すと何をしているのか分かりません。

上でX、Y、Zを変数といいますが、以後長い間、様々な言語でこの変数のデータ型を明確に宣言することが重要であり、当然のことと考えられてきました(特にPascalはデータの型付けを厳格にしました)。

プログラムは求める結果を実現するために、このデータをどのように操作するかのロジック(Algorithm)が必要だし、それを実現する一連の命令が「手続」(Procedure)です。

この手続きも意外と少ないし、どの言語も結局同じようなことをしているのです。
例を挙げますと…

アドレス:Xに値:1を代入する。例 => X = 1
アドレス:Xの値を他のアドレス:Xに代入する。例 => Y = X
あるアドレス:XとYの値を計算しあるアドレス:Zに保存する。例 => Z = X – Y
(データの演算は、様々なものがあります。)

また一連の手続を制御するのは、アドレスの値を判定する条件文(if文、switch文)、同種の動作を繰り返す繰り返し文(While、Until文)です。

また、一連の処理を纏めておいて、必要な時に呼び出して使うサブルーチンや関数やライブラリーも昔から使われていました。

データを単独ではなく纏めて保存する仕組みとして当初から配列がありましたが、
その後リスト、ストラクチャー、ディクショナリー等の便利なデータ保存の仕組みが登場しました。

更に、近年プログラミング言語で大きく発展したのは、クラス概念です。

クラスは仕様書のようなものです。
例えば、自動車という仕様書には、車輪があり、駆動部があり、座席があります
(自動車は車輪を持っている。have)。乗用車や作業車は自動車の一種です(乗用車は自動車である。is)。

ここで乗用車は自動車クラスを継承します。すなわち乗用車といえば、自動車クラスの性質(駆動部や座席を持っている)を継承しています。

当然、プログラムは世界を定義するのではなく、そのプログラムに適したクラスを定義していきます。

実際のデータは仕様書から、「生産」(言語では通常=newを使います)することで、オブジェクトとして実体化します。
例 => 私の車 = new 乗用車

 

上の説明は、プログラミング言語をよく説明したとは言えませんが、プログラミング言語の骨組みはこのようなもので、これに色々便利な(場合によっては厄介な仕組み)が付加されています。

例えば、正規表現、デリゲイト、ラムダ式、ジェネリック、データベース、ファイル操作や様々なライブラリー(処理プログラムのパッケージ)です。

最初に書きましたが、データ型はプログラミング言語では必須の概念と考えられてきましたが、多分メモリーを気にしなくてよくなったことと関連すると思いますが、データ型を余り気にしなくてよい言語があります。

例えば、特にインタープリター型言語のPerlやJavascriptやPythonでは、必要になって初めて動的にデータ型を判断するし、Pythonでは数字を含むすべてのデータをオブジェクトにしていて、むき出しのデータではなく、データをオブラートで包んで処理することで、プログラマはデータ型を気にしなくてよいようになっています。

ともかく、手続き型言語は、それぞれ特徴を持ってはいるにしても、文法の本質は変わらないので、この部分を理解していれば、後は方言だと思う程度のものです。

勿論実務で使いこなすには、マニュアルでよく動作を確認しなければいけませんが、それも難しいものではありません。