2018-06-03

"こちら脳神経救急病棟" Allan H. Ropper & Brian Burrell 著

原題 "Reaching Down the Rabbit Hole (ウサギ穴を降りて)"...
ウサギ穴とは、「不思議の国のアリス」に出てくるあれか。無邪気なアリスはウサギを追いかけ、奇妙な世界へ迷い込む。脳神経疾患とは、脳が変性してしまう病で、時には信じ難いほどに変性したケースもある。まさに、空想の域を超えた不条理な世界が...

脳神経内科医の仕事は、患者の厄介な反応を分析し、臨床像に当てはめ、問題を整理し、できるかぎり当人が望むような生活を送ってもらえるプランを立てることだという。
しかしながら、患者の癖のある表情から真意を汲み取るのは至難の業。患者はぞれぞれに違った症状を見せ、場所の見当識はあっても時間や状況が把握できないといったケースも珍しくない。医師アラン・H・ロッパーは、唯一の対処法は患者一人一人の内面に接すること... と自分に言い聞かせるように語り、そのためにうんざり気味な側面も覗かせる。人間の多様性ってやつは、実に手強い。人間の本質を理解しよう思えば、正常な人間よりも、いや、正常と思い込んでいる人間よりも、こちらに耳を傾ける方がはるかに有意義かもしれない。少なくとも政治屋どもの演説を聞くよりは...

脳の活動は、極めて電気的に作用するため、環境条件によってシステムダウンすることも。運が良ければ再起動できるが、運が悪ければ復帰の見込みもない。まさに、Kernel Panic !!!
自己の存在意識を肥大化させれば、妄想が妄想を呼び、正常な細胞までも破滅へ道連れ。そして今、この酔いどれ天の邪鬼が自己分析を試みても、時には些細なことで怒り狂うかと思えば、驚くほどの忍耐や寛容さを見せることもあって、まったく支離滅裂ときた。どちらも自分ではないような感覚に見舞われるが、どちらも正真正銘の自分なのだ。そうなると、もう確率論に委ねるしかない。気まぐれってやつに...
正気と狂気の境界は精神病棟の鉄格子によって分けられる。それは、異常者を隔離するためのものだろうか。それとも、純真な心の持ち主を保護するためのものだろうか。そして、自分はどちらの側にいるのだろうか...

ところで、おいらは脳神経内科と脳神経外科の違いもよく分からない。大雑把に言えば、手術などの外科的な治療の対象かどうかで線引きされるが、まずは脳神経内科で診察してもらうのが順序のようである。そういえば、初めて総合病院を訪れた時、まずは内科にかかってください、との案内を受ける。怪我で血まみれ状態というなら明らかに外科の領分であろうが、外傷がはっきりしなければ、内科で診療方針が決められ、診療科が選別される。
では、外科と脳神経外科の違いとはなんであろう。脳腫瘍のような病は外科で、脳の神経系を対象とするのが脳神経外科ということになろうが、脳内で何が起こっているかなんて患者に分かりっこない。頭痛がするのも神経が何かを感知した状態であろうし、脳神経と無関係な脳の病ってあるんだろうか?自覚症状がないということもあるが、そもそも脳がいかれているかどうかを自分の脳で判断できるのだろうか?もし判断できるとすれば、それは極めて冷静な精神状態にあり、自分自身が正常だと思い込んでいる状態よりも、はるかに正常っぽい。
本書は、こうした状態の区別を明確に説明してくれるわけではないが、医学的な立場から重要なヒントを与えてくれる。それは、「症状」「兆候」で区別していることである。
「症状」とは患者が訴えるものを言い、「兆候」とは医師が診察して見て取れるものを言うそうな。もっと言えば、症状は主観的で、兆候は客観的ということになり、症状は脳機能の枠組みで捉え直す必要がある。
「症候群」ってやつもよく耳にするが、これは医学用語というより社会学用語に近いイメージがある。本書は、症候群を問題の集合体として扱い、専門的な病名とは区別している。兆候よりも症状に近いニュアンスであろうか。例えば、「錯乱」というのは専門的には病名ではないそうな。
「錯乱というのは医学でも最も錯乱した症候群だ、という言い方は陳腐に聞こえるかもしれないが、事実である。」
そして、脳神経内科では症状から兆候に至るまでの過程を観察することになるが、貴重な情報源となるはずの脳が変性してしまっていては、根気強く試行錯誤を続けるしかない。身体をスキャンしたところで心は映らないのだから...
「医学を医学たらしめているのは、こういうことだ。患者はわれわれのところにやってくるけど、問題を医学用語で描写してくれるわけではない。ゆえにわれわれは、患者の言葉を医学的に利用できる形に組み替える。話に統一性を与えるのだ。」

1. ちゃんと聞いてますよぉ...
脳がやられれば、精神を患う。脳神経と精神は同期しているようである。そういえば、知的障害者はたいてい自閉症を患うと聞く。おいらの身近にも重度の知的障害者がいるが、自己主張ができなければ自分の殻に篭もるほかはない。ある種の防衛本能である。人間とは精神である... 精神とは自己である... とは、キェルケゴールの言葉。人間にとって、「自己存在」という認識ほど重く感じるものはないように思える。そして、終末期ケアとしてのホスピスの意義も見えてくる。
となると、脳神経内科医のまずもっての治療法となるのが、ちゃんと聞いてますよぉ... という態度で接すること、本当に聞いていなくても患者に自らの物語を語ってもらうこと... ということになろうか。まぁ、本当に聞いていないってことはないだろうけど、医師だって人間だし、愚痴りたいこともあろう。患者自身に病識がないのに、どうやって気づかせるかとなれば、もう心理学の領分。自己にとって自我ほど手に負えないものはない...
「医学の中でも一人の人間の総合的な知的努力ってやつが付加価値になる分野は、もう神経内科しか残っていないんだ。機械はものすごいのが揃っているけれど、本当の意味での検査はできない。きみたちはベッドの脇で問題を解かなければいけないのさ...」

2.ヒポクラテスの誓い
"Primum Non Nocere (まず害をなさぬこと)..." とは、ヒポクラテスの言葉として広く知られる。この格言は、医師にとって指針となる基本的な姿勢であるだけでなく、慎重になる際の正当化の理由にもなる。
しかしながら、現代医学においては解決不能のジレンマを生み出す場合があると警告している。例えば、アスピリンを飲んで寝てなさい!という以上のことをしない場合の言い訳として。
生命的な危機に直面すれば、何もやらないよりはまし... という信念が必要なこともあろう。手術するリスクと手術しないリスクを天秤にかければ、確率論に頼らざるをえない。しかも、その確率は医師の経験と腕に左右される。どんな専門分野であれ、難題に直面すれば専門家たちの意見は分かれる。だから、リスクなのである。終末期患者と対峙すれば、死神がほとんど勝利をものにする。患者だって、医師と会話するよりも、死神と会話する方が癒されるかもしれない。それでも醒めた意識を遠ざけ、患者を救うことができると信じてやるしかないとは...
医師は、科学に対する信仰を持ち続ける必要があるという。それは、科学が神秘的な力を持つという逆説的な信念である。
「リスクに身を置き、悪い結果が出たときの失望を抱えながらやっていけないのなら、この仕事は無理だ。」

3. 生きることと、死なないこと
生と死の判別、この基準がなければ医師は仕事ができまい。ただ、死にもいろいろな見方がある。心臓が停止した状態を言ったり、脳が機能を失った状態を言ったり、心を失えば、それを人間死と言う人もいる。「脳死」という用語一つとっても様々な定義があり、全脳死を死とする場合や脳の機能低下を条件に死とする場合など、法的な扱いも国によって違う。
脳死は死の兆候か、それとも死そのものか?脳神経科では「脳死」という用語を嫌い、「脳を基準とする死」という言い方をするそうな。脳だけが死んでいるとしたら、何が生きているというのか?臓器が生きているから移植医療が成り立つ。解剖学は、死体の下僕か?身体は死んでいるが、魂は生きているってか...
やはり、人は脳の中にいるように思う。とはいえ、脳を基準とする死の判断はなかなか微妙だ。本当に蘇生する可能性はないと断言できるのか?現代科学は、そこまで人間の脳のメカニズムを解明できているのか?脳を基準とする死が、生物学的な有機体の死と一致しないとすれば、このような物体をどう分類するというのか?心臓を基準とした死の方が分かりやすいとなれば、責任の基準もそこに持っていこうとする。そして、医師たちの愚痴が聞こえてくる...
「医学は、人を生かしておく... 永遠とまでは言わないが... ことについては、かなりの力を備えている。白血病患者に骨髄移植を 10 回行うこともできる。実験的な化学療法を試すこともできる。血小板輸血をし続けることもできる。ALS 患者に対しても、同じように極端な手段がいろいろとある。しかし、どれも病気を治すことはできない。そこで、このことが問題になってくる。医師が医学的にできることを一つも提供しないとしたら、それは自殺幇助にあたるのだろうか?」

4. 人工呼吸器の禅
ALS(筋萎縮性側索硬化症)とは、運動ニューロンが侵される神経変性疾患。体が重くなれば、心も重くなる。筋肉の小さな部分が震えることを「攣縮(線維束攣縮)」というそうで、たいていの攣縮は良性だとか。目や口、ふくらはぎや腕など、ちょっとした引きつけを起こすことは誰にでもあろう。運動をやりすぎたり、酒をやりすぎたりすると。
だが、運動ニューロン疾患では、放置すれば筋力が自然低下し、確実に死に至るという。ALS 患者が直面する究極の選択は、生きるべきか死ぬべきか。単純化して言うと、生き続けるためにできることをすべてやるか、それとも病に命を委ねるか。もっと露骨に言えば、気管切開して人工呼吸器をつけるチューブを挿入したいか?
人工呼吸器をつけると会話はできなくなるが、呼吸は続けられるし、脳と感覚系も冒されずに残る。感覚のほとんどを感じることができても、動かせる身体の部分がほとんどなくなり、最終的に、身体という殻の中に完全に閉じ込められてしまう。そのような状況を想像しながらも、ALS 患者の多くは、完全に冷静さを保っているという。意識過剰とまでは言わなくても。死ぬより辛そうな試練が、人の心を研ぎ澄まさせるのだろうか。人工呼吸器が奏でるシュー、シューという音は、サンバのリズミカルな音調とは対照的に冷たさを感じるものの、心にやすらぎを与える。意識がしっかりしていれば、子供の成長を黙って見守ることだってできる。
とはいえ、人間は、どのくらいの不自由に耐えられるものなのか?どのくらい人の重荷になれるものなのか?生きる権利を訴えるのもいいが、死ぬ権利も考えずにはいられない。
その一方で、医師は、極限まで治療を続けるのは義務であろうか?実際、安楽死ビジネスなるものがあり、合法化されている国もある。おいらの親友も、難病のために尊厳死というものを受け入れて逝った。そして、友人という言葉も陳腐なものとなり、それ以外の友情は冷めて見えてくる。生あるものは、いずれ死ぬ。死ぬ時が来れば、ただ死んで行くだけ。絶望は冷めた心を覚醒させる。
やがて医師は、終末期の患者を通して死との交渉を余儀なくされる。すると、患者の方から目で訴える。そろそろ終わりにしましょう... と。
「呼吸器ケアの専門病院は、独特の世界だ。一種の煉獄とも言える。一日一日が意味もなく過ぎていく。快活に患者を励まして回る職員たちだけが、汗と排泄物と消毒薬の匂いに絶望感の混じった特有の空気を和らげようと、できることを懸命にこなしている...」

2018-05-27

"インテルスレッディング・ビルディング・ブロック" James Reinders 著

バッハのカンタータを BGM にフィーヌ・ブルゴーニュをやりながら、マイク・ガンカーズの本(前々記事)や、ブライアン・カーニハンとロブ・パイクの本(前記事)でコンピュータ哲学の郷愁に浸っていると、またもや本棚の奥底から考古学的な書物が出土された。オライリー君の本は、手っ取り早く手段を習得し、そしてそのまま... という群れが、納戸の一画を占拠してやがる。コレクションってやつは、集めるという行為の方が目的となって、知識を深めようという本来の目的を見失わせるところがある。
本書もその例に漏れず、満載されたコード事例を辞書代わりに用い、著者が力説する思いについては読み飛ばしたことだろう。仕事が忙しい!とは、威厳をまとった実に都合のよい言い訳である。こうして古書を漁ってノスタルジアに耽り、おまけに、これをネタにお喋りがかっぱえびせん状態になるのも、引退勧告を受け入れているようなものか...

さて、Intel Threading Building Blocks(TBB)とは、C++ の STL を拡張した並列処理用テンプレートライブラリであり、こいつがプログラマのための書であることは言うまでもない。
しかしながら、おいらはプログラマではない。むかーし五年間ほど、リアルタイム OS を書いていた時期があるものの、あくまでもハードウェア設計者であり、専門はプロセッサである。特定用途向けの CPU や DSP など。
とはいえ、効率的で合理的なシステムを構築する上で、ハードウェア側からの視点だけでは不十分である。それは、ソフトウェア設計者とて同じことだろう。
かつて、CPU パフォーマンスを最大限に引き出すためにアセンブラ言語で書き、また、高性能なコンパイラを求めた。今でこそ低水準な扱いを受ける C 言語だが、当時は高級言語として輝き、実装では物足りないほどであった。特にリアルタイム性の厳しい組込み系システムでは、ハードウェアとソフトウェアが協調してカスタマイズされる。命令セットやタスクの同期、あるいは割り込みといった機能を。
やがて、ムーアの法則に従い半導体の性能そのものが向上すると、汎用的なリアルタイム OS によって抽象化が進んだ。アプリケーション設計者は余計なことを考えずに済み、タスク設計に傾注できるようになったのである。
そして、プロセッサのマルチコア化が進むと、言語システムのレベルでマルチスレッド用ライブラリが整備されるとは、凄い時代だなぁ... などと思い本書を手に取ったのが、十年ぐらい前であろうか...
ところで、抽象化ってやつは、恐ろしい戦略である。おまじないを書いただけで、なんとなく動いてしまうし、それで理解した気分にもなれる。プログラミング言語には、おまじないめいた記述が実に多い。その代表といえば、"stdio.h" であろう。アセンブラ言語にも、ハードウェアを定義するためのおまじないがある。これらのおまじないは、時にはテーブルと呼ばれ、時にはやライブラリと呼ばれる。そして、STL を置き換えるように記述する TBB もまた、おまじないめいている。
ちなみに、ライブラリの中身を読むことが、プログラミング言語の習得における良い方法の一つと言えよう。なにしろ達人が書いたコードなのだから。ただ、書き方をパクるのではなく、考え方をパクりたい...

コンピューティングの並列思考そのものは古く、個人的にも三十年前には触れていた。メインフレームがそれだ。当時、TSS(Time Sharing System)という用語が流行った。メインフレーム設計者たちは、キャッシュのアルゴリズムだけが妙に詳しかったり、命令セットの効率性ばかりを追求したり、システムバスのアーキテクチャに執念を燃やしたりと専門技術が細分化され、全体構造となると意外と理解していなかった。
そして今日、パソコンや携帯端末のレベルでマルチコア化が進み、おまけに、マルチスレッド環境までも当たり前になると、もはや専門技術に執着している場合ではあるまい。
ただ、マルチタスクだから、マルチスレッドだからといって、必ずしもパフォーマンスが向上するわけではない。実際、シングルで処理した方が速いケースも少なくない。それは、開発プロジェクトのように、いくら技術者を増員しても日程が縮まらないばかりか、かえって無駄な管理作業を増やして混乱させる状況に似ている。それでも、人海戦術のお好きなお偉いさんをよく見かけるけど。
シングルタスクで十分な処理でも、マルチタスク OS 上で実行させることのメリットはある。例外処理やハードウェア割り込み、あるいは、システム暴走の抑制などの監視機能を、OS 側に任せることができるのだから。
例えば、ファクトリーオートメーションのような分野では、常に製造工程を監視する必要があり、マルチタスクの恩恵をかなり受けている。バックアップ電源が整備されているとはいえ、災害などで起こるイレギュラーなシャットダウンなども考慮される。シングルタスクの時代には、一つのプログラムがシステム全体をよくクラッシュさせていたのである。
そういえば、むかーし、ネイティブコードにこだわるお偉いさんがいた。スクリプト言語がまだ地位を獲得していない時代、技術雑誌に実行効率の側面から言語システムの比較が掲載されると、流行り用語に群がり、開発効率よりも優先させるから頭が痛い!信頼性までも向上すると思い込むようで、おいらはネイティブおじさんと呼んでいた。
そして今、ネイティブスレッドにこだわるお偉いさんがいる...

1. 並列思考
並列思考の基本的な戦略に、パイプライン時分割処理がある。まず、一つの流れ作業を分割してパイプライン化し、複数の流れ作業を時間単位で同時に処理できるようにする。このとき重要なのは、それぞれの作業に待ち時間が生じないように分割単位を一定時間でスライスすること。この一つの流れ作業がタスクであり、分割した単位がスレッドということになる。
そして、スレッドの単位をいかに効率的にマッピングできるかは、プロセッサとの相談ということになるが、アプリケーション設計者が、いちいちプロセッサのご機嫌伺いをしている場合ではない。
そこで、TBB は、そんなことを意識せずとも、自動的にスレッドマッピングをやってくれるというのだから、なんとも狐につままれたような... そんな気分になった記憶が蘇る。
マルチコア環境を与えられれば、それぞれのコアにタスクを割り当てて同時に処理しようと、誰でも考えるだろう。メモリ領域さえ互いに侵さなければ、大した問題にはならないはず。それでもリソースの競合は起こるけど。
さらに、一つのタスクをスレッドに分割して、これを並列で処理しようというのだから尋常ではない。当然ながら、メモリ競合やデッドロックの問題を深刻化させ、スレッドの前後関係などシーケンスの問題までも生じる。
ここで重要な概念は、タイムスライスとウィンドウ(時間幅)、そして、分割の正当性の検証ということになろう。実際、キャッシュの方がはるかに役立つ場面は少なくない。キャッシュで済むなら、わざわざマルチスレッドなんて高度な技を持ち出さなくとも。
ただ、キャッシュはキャッシュで、単純に未使用期間でデータを退避させているわけではなく、連想方式を組み合わせたりと様々な工夫がなされる。
TBB は、タスクとデータの不必要な移動を避けるようにキャッシュアクセスまでも考慮されているという。自動生成されたスレッドがキャッシュと相性がいいのは、なんとも心強い。
プロセッサ効率の最も良いケースは、演算処理が主体となるプログラムで、一つの物理スレッドに一つの論理スレッドがマッピングされているような状況である。
では、TBBってやつは、プロセッサのスレッド構造だけでなく、キャッシュ構造までも知っているというのか?
ただ、いくらハードウェア構造を知り尽くしているとしても、コンパイラが万能とは考えにくい。ロックを避ける価値は大いにあるが、デバックを困難にしかねない。TBB は、ロックの必要性を軽減してくれるが、ロックから解放してくれるわけではなさそうである。デッドロックと競合をいかに回避するかという問題はいつまでもつきまとうだろうし、メモリアロケートの問題もまた、最も悩ましい問題の一つとしてあり続けるだろう...
「プログラミングの真理の1つは、最良の直列アルゴリズムが最良の並列アルゴリズムであることはめったになく、その逆もまためったにない...」

2. スケジューリングと parallel_for
パイプラインの処理能力は、スライスしたトークンによって制限される。パイプラインが n 個のトークンで構成される場合、n より多くの操作を並列に実行することはできない。n値が低すぎると並列性が悪くなり、高すぎるとバッファなどのリソースを浪費する。
また、処理時間の最も遅い直列ステージに引っ張られる。それはプログラムだけでなく、システム I/O やネットワークポートなどのリソースである場合も多々ある。
最適なウィンドウサイズを模索するのは、実に骨が折れる。この面倒な作業を誰かが代替してくれるなら、並列処理は病みつきになりそう。スレッドではなく、タスクで考えるという安心感を与えてくれれれば...
本書は、その醍醐味を語るために、parallel_for テンプレートを中心的な話題にしている。タスク・スケジューラという高度な方法も提供されるが、まずは parallel_for を検討してみては... と勧めてくれる。
「なぜクィックソートのような再帰的なアルゴリズムが再帰テンプレートを使用する代わりに parallel_for テンプレートを使用すべきなのかを理解したとき、アプリケーションにスレッディング・ビルディング・ブロックを実装する方法を理解したことになる...」
ここで注目したいのは、「再帰連鎖反応」という概念である。スケジューラは、ツリー構造のタスクグラフで最も効率良く動作するという。それは、幅優先のスチールと深さ優先の作業という両面の戦略が最もうまく適用できるからであると。
例えば、マスタータスクが n 個の子を直接生成するには、O(n) ステップ必要だが、ツリー構造のフォークでは O(log n) ステップあればいい。ただ、ドメインがツリー構造でないことがよくある。それでもツリーマップは可能で、parallel_for は反復空間で動作し、バイナリーツリーに再帰的にマップするという。こうした並列思考の根底にアムダールの法則を匂わせ、直列ステージをなるべく減らしたいという動機を誘う。
ちなみに、コンピュータアーキテクトのジーン・アムダール氏はこう言ったそうな。
「ほぼ同じ大きさの直列処理の速度が改善されないのであれば、並列処理の速度を改善しようとする労力は無駄になる。」

2018-05-20

"UNIX プログラミング環境" Brian W.Kernighan & Rob Pike 著

前記事でマイク・ガンカーズの UNIX 哲学に浸りながら本棚を眺めていると、なにやら懐かしい香りのする一冊に目が留まる。ライアン・カーニハンとロブ・パイクの本... 20年以上前に買ったやつだ。
これら二冊を要約すると... 一つのことを確実にすっきりやる!それらをうまく協調させる!そして、インターフェースの基本は標準入出力を介して!... これが、UNIX 哲学ということになろうか。エリック・レイモンドは、UNIX は口承文学!と書いた。ドナルド・クヌースは文芸的プログラミングを提唱した。技術分野とはいえ言語を語るからには、やはり文学的に味わえる余地を残したい...

本書の考古学的な発掘のおかげで、改めて気づかされることがある。それは、辞書的な扱いのために、じっくりと読んだ覚えのない専門書が幾多も埋れていることだ。ヘネパタ本をはじめお蔵入りした高価な書群が、数段に渡って本棚を占拠してやがる。面倒臭がり屋は、これらを横目にハウツー本へ飛びついてきた。なんてもったいないことを...
仕事が忙しい!などという台詞は、自分自身を納得をさせるのに実に都合のいい、威厳をまとった言い訳である。そのために、本質的な考え方を疎かにし、盲目であり続ける。その方が幸せなのかもしれんが...
哲学をやるなら、精神が本当の閑暇を知らねばならない。
しかし、だ。プログラミング環境は、まず慣れろ!というのがある。まず触ってみて、書いているうちにその思想を習得していく。そのために手っ取り早く使い方から学ぶ。実際、理屈をこねても何も始まらない。本書を手にしたのは、sed, grep, awk といったコマンド群の教科書としてである。これらのコマンドを押さえるだけでも、かなりのことができ、しかも、フィルタやパイプの機能を通してシェルの設計思想に触れることができる。標準入出力を基本インターフェースとする考え方は、自分でこしらえるプログラムもこの路線に乗せることで、シェルの有難味を実感できる。そのインターフェースを司るのが、C言語でいうところの put/get 系関数。ただ、あまりコンパクトにしようとすると、正規表現の暗号めいた記述のために悩まされることも多い。
他にも、低レベルの入出力を提供するシステムコールの仕組み、ファイルポインタや i ノードへアクセスできる機構、nohup という端末を off してもプロセスの実行を続けてくれるコマンドなど、重宝したものである。
「複数のフィルタを結合して、1本のパイプラインにすることは、問題を解決可能な小問題に分解するのに役立つ。このようなツールの利用法こそは UNIX プログラミング環境の核心であるといわれることが多い。この見方は一面的に過ぎるが、フィルタはシステムのあらゆるところで利用されており、なぜうまく動いているのかを調べておいて損はない。」

さて、何をもって UNIX と呼ぶか?となると、人それぞれ。コンパイラ、エディタ、コマンド群といった環境の一群を指す場合もあれば、X Window などのグラフィックス環境までを含む場合もあり、はたまた、文書作成ツールや統計解析ツールといったパッケージ群まで含む場合もある。その名が Multics から継承されているので、真髄がタイムシェアリングにあることは確かであろう。
本書は、UNIX の特徴に、まずファイルシステムを強調している。階層化された構造こそが... と。用語ではディレクトリとファイルで区別されるが、マッピングの中身は属性が違うだけ。最初は、現在の作業場としてカレントディレクトリという概念から触れることになるだろう。
そういえば、新入社員の時代、この単純化した仕組みを理解するために、パーティションやセクタで管理されるディスクの物理構造の書に飛びついたものである。低レベルの物理構造を知っておくと、ディスクをアクセスする関数の構造もイメージしやすい。
Windows でも同じ用語を使っていたが、いつ頃からか、フォルダという用語で抽象化された。ディレクトリという用語に不都合を感じないが、文具用語としては馴染みがないからか?あるいは、Mac のパクリか?コマンドプロンプトでは、dir コマンドのままだけど。
「UNIX システム上ではあらゆるものが1つのファイルである。ファイルシステムこそ、UNIX システムの成功と、使い勝手のよさをもたらした核心と言える。」

ところで、UNIX の ls というコマンド名は評判が悪いという話も聞くが、どうだろう。list と directory がいまいち合わないらしい。
ちなみに、おいらは、sl コマンド好きで、必ずインストールし、わざと間違えてタイプする。そう、あの蒸気機関車 SL が走るやつだ。

また、UNIX のプログラミングスタイルを四つ挙げている。
  • 第一の姿勢... 汚れ仕事はマシンにやらせよう!人間は思考すべきことに集中すること。
  • 第二の姿勢... 仕事は他人にやらせよう!既存のプログラムを素材とし、それを結合し、シェルの思想、すなわちフィルタやパイプの機能に乗せること。
  • 第三の姿勢... 仕事は順序を踏んで行おう!最も単純なものからこしらえ、その経験を軸に拡張していくこと。無闇にオプションを追加して多機能主義に陥らないこと。
  • 第四の姿勢... ツールを作ろう!環境を自分だけのものにカスタマイズして自由を謳歌すること。UNIX システムは完全ではないので、修正の余地が多分にあるということを理解すること。
これらの姿勢は、今となっては当たり前といえばそうなのだが、当時は感動的であった。そして、構造化プログラミングからオブジェクト指向への布石であったようにも映る。結果論ではあろうけど...
UNIXは、ギークな自由精神を体現する場として発展してきたところがある。その経緯はオープンソース的で、ボランティア的ですらあり、極めて民主主義的である。そのために、やりたければ自分でやれば!と冷たく突き放される。だから自由なのだ。才能なき酔いどれ天の邪鬼は自由が欲しいと大声で叫び、才能あふれる UNIX グルは静かに自由を謳歌する...

ところで、この手の書に触れると、お喋りが止まらなくなるのは悪い癖。歳のせいか... いや、そろそろ引退勧告か...
おいらが UNIX に出会ったのは、30年以上前。マシンが一人一台なんて環境は贅沢、ハードディスクなんて高嶺の花だった。メインフレームを利用するにしても、CPU の使用料を部署ごとに予算化しなければならず、なんで社内の機械を使うのにお金が請求されるのよ?と愚痴ったものである。
なので、朝、出勤と同時にワークステーションの端末に社員が群がる。SunOS か、HP-UX かでも人気度が違い、BSD系と System V系の派遣争いが色濃く残っていた時代で、まだ Solaris の名は聞かない。
当時の記憶として、やたらと TSS(Time Sharing System)という用語を使っていたような気がする。いくらパソコンが革命的に出現したとはいえ、まっとうなマルチタスクを実現できたのはメインフレーム以外には UNIX マシンだけ。しかも、TCP/IP を標準装備し、ネットワーク環境が当たり前のように整っているのが魅力だった。
その時代からの名残であろうか。おいらは、いまだに母艦マシンが手元にないと落ち着かないネアンデルタール人だ。15年前の独立時、Solaris マシンに設備投資したが、今では、Linux が母艦マシンを担っている。厳密に言えば、Linux は UNIX とは認められていないが、UNIX ライクであることに違いはない。タダだし、システム要件も緩い。ただ、タダほど高いものはないとも言う。実際、参考書やらで意外と投資額は大きいが、啓発的な浪費ならば慰めにもなる。
ずっと Fedora を愛用してきたが、周りには Ubuntu 愛好家が多く、変わり者と言われている。Fedora の魅力はパッケージ群が豊富なこと。とはいえ、システム関係をいじれば時々フリーズする。特に、グラフィック系で。それでも、ほとんどリモートで CUI 環境で操作するし、視覚的に覗きたい時はブラウザを経由するので、大した問題にはなっていない。
しかし、だ。UNIX の本分は、やはり安定感であろう。惚れっぽい酔いどれは暗示にかかりやすい。そして、CentOS に鞍替えするも、酔いどれ天の邪鬼ゆえか...

2018-05-13

"UNIX という考え方" Mike Gancarz 著

「オペレーティングシステムは生きている、息をしているソフトウェアの生命体だ。コンピュータシステムの魂であり、神経系であり、電子とシリコンを生き物に変える。オペレーティングシステムは、コンピュータシステムに生命を吹き込む。オペレーティングシステムは、その性質上、創造者の哲学を身にまとって現れる...」

原題には、"The UNIX Philosophy." とある...
OS の参考書というものは、たいてい大量のツールの使い方について解説されるもので、なぜ UNIX なのか?と素朴な疑問を投げかけるやつはあまり見かけない。OS の選択では、周りの影響を受けやすく、慣習とも強く結びつき、宗教的ですらある。宗教ってやつは、その根源にある思想を理解せずに、信じる者は救われるの原理に働きかける。現在では、ユーザに OS の存在を意識させるべきではない!という論調も強くあり、これも世の趨勢というものか...
スマホの世界ともなると、無意識に「愛の電話」教に入信していたり、知らず知らずに「人造人間」に仕立てられていたり。実際、OS と他のソフトウェアとの境界はますます曖昧になり、カーネル自体も巨大化し、どこまでをカーネルと呼ぶべきかも議論が分かれる。
それでも、だ。たとえ境界面が曖昧になっても、やはり区別しておいた方がいい。ノイマン型の思想哲学を体現する場として... それを語る場として... そしてなにより、文芸的に楽しめる場として...

ノイマン型コンピュータを現実世界にしたのはメインフレームということになろうが、思想哲学を植え付けたのは UNIX ということになろう。MS-DOS は文句なしにパソコンの革命児であったし、MacOS にしたって視覚に訴えるユーザインターフェースで魅了した。
しかし、その思想哲学となると UNIX に負うところが大きい。デスクトップ環境のシェアでは、これだけ Windows や Mac で占められながらも、UNIX 信者は根強く生き残っており、使い勝手の良し悪しや技術的な優位性だけでは説明のつかない、実に人間社会学的な多様性を示している。
おいらの周りにもメイン環境が UNIX となると少数派になるが、サブ環境で UNIX ライクな環境を確保していない人となると皆無。Xen, KVM, VMWare などで仮想マシンを構築したり、Cygwin のようなソフトウェアで Windows 上に仮想環境を構築したり。
エンジニアが、UNIXライクな環境を手放せない理由の一つに柔軟性があろう。柔軟性が高いということは、自由度が高いということ。自由度が高いということは、それだけ知識を要するということ。おいらのような面倒臭がり屋には、ちと高級過ぎる感もある。実は能力のない人間にとって、自由ほど不自由なものはないのである。
ユーザに分かりやすく、間違いをしたくないというなら、これしかできない!ってやればいい。対して、お好きなように!ってやるのが UNIX 流。自由への道は険しい。「UNIX グル」なんて呼び名には、他とは違う!という思いが込められている。ソフトウェア魔術に憑かれた人々はギークな香りを漂わせ、憧れもする。
そして、この領域に一度踏み込むと、待ち受ける学習曲線から降りられなくなる。まるで麻薬だ!酔いどれ天の邪鬼は、このジレンマにずっと悩まされつつも、コマンドライン環境を絶対に手放せないネアンデルタール人なのである...

ところで、MS教(= SM狂)の十字架バージョンの WUuu... (Windows Update の略)にこれだけ悩まされて来たというのに、いまだにデスクトップ環境のメインが、Windows とはどういうわけだ?本書は、その答えを一言で片付けやがる。群集心理!と...
実に頭の痛い御指摘。これだけシェアが高ければ、この選択で間違うはずがないという思いがどこかにある。しかも、人間ってやつは、自分だけが不幸になることは絶対に許せないもので、みんなで不幸になる分には安心できるという奇妙な意識を持っている。
いつの時代でも、良いものが勝つとは限らない。いや、やや劣るぐらいの方が勝つケースが多い。実際、苦労して整えた環境ほど親しみがわく。出来の悪い子ほど可愛いと言うが、出来が悪過ぎれば見放される。Windows とは、そういう人間心理をうまくついた絶妙な出来栄えということは言えるのやもしれん...

1. 軍隊方式
軍隊経験のある人ならば、世の中には、「正しいやり方」「間違ったやり方」、そして「軍隊方式」があることを知っているという。正しいか間違っているかは互いに対極にあり、立ち位置も分かりやすい。だが、白とも黒ともつかないやり方では、うまくいくはずのものが、なぜか失敗したり、惨めに失敗するはずのものが、空前の成功を収めたり、まったくわけが分からん。この得体の知れない方式が、UNIX にどこか似ているというのである。
純粋主義者の言い分を信じれば、20年も前に消滅していなければならないが、評論家の厳しい非難を食べては肥え太り、寄生虫のごとく生き長らえている。滅亡しなかったからには、少なからず信者がいて、なんらかの理由があるだろう。
UNIX 方式には、「劣るほうが優れている」という逆説的な法則が染み付いているという。そして、コンピュータの設計で考慮される特性を四つ挙げている。単純さ、正しさ、一貫性、完全性の四つ。設計というものは、単純で、観察可能で、どこから見ても正しく、バグがなく、全体に一貫性があり、予想されるすべての場面に対応しているという意味で完全でなければならない。
だが、四つすべての特性を満足するのは、現実的ではなく、優先順位が重要となる。一般的に「適切な」と表現すれば、単純さを犠牲にしてでも完全性を追い求めるだろう。
しかし、UNIX 開発者は、なによりも単純さを優先するという。ここが、しばしば非難の的とされるところだ。結果的に単純さが完全性へ導くという信念であろうし、単純さを犠牲にすれば、やがて完全性も見失われていくという警鐘でもあろう...

2. UNIX 教のドグマ
UNIX 人を名乗るなら、守るべき九つの定理が提示される。

・Small is beautiful.
ヒトラーのような独裁者の思考回路は、融通のきかない巨大なオモチャがお好き。対して、自由人は小さなもので大きく動かそうとする。機動性と小回り、その積み重ねによって。これが柔軟性の根本原理と言えよう。

・一つのプログラムには一つのことをうまくやらせる。
余計な脂肪分を削り落とし、一つの仕事を確実にこなす。"Small is beautiful." とセットで考えたい。

・できるだけ早く試作。
最初から完成度の高い仕様書が書けるはずもなく、まずはプロトタイプで実験して、必要に応じて仕様をまとめていく。

・効率より移植性を優先。
スクリプト言語の持つ利点は、C言語よりも移植性が高いこと。最も効率の良い方法は、たいてい移植性に欠ける。

・数値データは ASCII フラットファイルで保存。
プログラムの移植性もさることながら、データの移植性も重要だ!いや、こちらの方を優先すべきかもしれない。データ構造で ASCII 形式を意識していれば、エディタで手軽に開ける。酔いどれネアンデルタール人にはエディタの存在しない環境なんて想像できない...

・ソフトウェアを挺子として使う。
梃子の原理... 支点をいかに自分に向けるか。これが UNIX が成功してきた理由の一つだという。優秀なプログラマが書くコードは黄金律となる。自分だけの技術だとして囲い込まず、惜しみなく披露する。オープンソース的な思想原理は、民主主義的な機構とすこぶる相性がよく、なによりも自由を重んじる。

・シェルスクリプトによって挺子の効果と移植性を高める。
スクリプト言語が流行る最大の理由は、やはりこれであろう。

・過度の対話的インターフェースを避ける。
拘束的なユーザインターフェースを避けよ!誘導尋問で導くような!拘束的なプログラムは、ユーザが人間であることを想定しているという。しかも、そこには多機能主義が忍び寄る。これだけ自動化が進めば、相手がコンピュータであることも想定すべきということ。

・すべてのプログラムをフィルタとして設計。
プログラムの本質はデータを生成することではなく、データを処理することだという。データを生成するのは人間の役割ってか。ただ、巷で騒がれる AI ともなれば、どうだろう。人間の役割を狭めているのは人間自身ということか。フィルタ機構によってパイプが機能し、標準入出力ライブラリによって、コマンドライン環境がより強力となる。
ただ、本書に登場する grep, sort, sed, awk といったコマンドは、古びた感を漂わせ、こうした機能はほとんどスクリプト言語で置き換えている。いや、ちょっとした時はいまだに使っているか。diff を重宝し、make は嫌いではないし、やはりネアンデルタール人...

これらの定理は、すべて失敗から導かれたものという見方はできるだろう。少なくともおいらは、これらを教訓にできるような失敗をすべて経験している。いや、経験させられた。組織に所属していれば、政治的な思惑で意思に反することを強いられることもしばしば。特に、モジュールの流用で痛い目に...
開発会議でまず強調されるのが、開発期間の短縮だ。思想に則っていないものを流用すれば、却ってスパゲッティ状態になる。お偉いさんの口癖は、日程を死守せよ!しかも、一旦遅れれば人海戦術を採用するのがお好きときた。そして、余計に日程をスパゲッティ状態にする。
したがって、ここに提示されるドグマは、なにも OS の開発に限ったことではないということを強調したい!
「覚えておいてほしい。ソフトウェアは、実は作るものではなく、成長していくものなのだ。成長したソフトウェアを新しいハードウェアにも移植できれば、そのソフトウェアの価値は上がる。新しいアーキテクチャは頻繁に現れる。移植性の高いソフトウェアは、すぐにその新しいアーキテクチャの長所を利用できる。そこで、試作では効率よりも移植性を優先させる。その結果、移植できるものは生き残る。」

2018-05-06

"世界の技術を支配するベル研究所の興亡" Jon Gertner 著

精神を完全に解放できれば、時間の概念がぶっとぶ。研究に没頭できれば、崇高な気分になれる。この喜びは、なにものにも代えがたい。その原動力は純粋な好奇心に発し、自由な風土が優れたアイデアを生み出す。そして、個々の喜びが使命感にまで高められた時、強力な産業研究所として成立する。まさにアイデア工場!
原題には、"THE IDEA FACTRY... Bell Labs and the Great Age of American Innovation." とあり、ジョン・ガートナーが、その熱き技術者魂を代弁してくれる。ここで紹介される選りすぐりの人材は、マグネトロンの開発で U ボート撃沈に貢献したジム・フィスク、接合型トランジスタの発明で伝説となったウィリアム・ショックレー、純粋な好奇心に邁進して情報理論の父となったクロード・シャノン、異分野の専門家たちの学際的な知の結集を図って組織論を確立したマービン・ケリー、天才シャノンと経営者ケリーの中間的な位置で技術を見抜き牽引する仕掛け人ジョン・ピアース、作家のごとく完璧な文法を操って聴衆を煙に巻く饒舌家ウィリアム・ベーカーといった奇人、変人、狂人の面々... 彼らが世界のイノベーションハブとしての存在感を示し、史上最強の部類に入るプロジェクトチームであったことは間違いない。ゲーテはカントを評して、こんなことを言った... たとえ君が彼の著書を読んだことがないにしても、彼は君にも影響を与えている... と。エレクトロニクスに携わる技術者ならば、ベル研究所からなんらかの影響を受けてきたはずである...

ベル研究所が発明した功績を挙げても、なかなか言い尽せるものではない。第二次大戦を制したレーダー、電子機器の米と言われる半導体を開花させたトランジスタ、蜂の巣型に無線局を張り巡らせて携帯電話の原型となった移動体通信網、GPS の先駆けとなった通信衛星...
ここではハードウェアばかりが注目され、ソフトウェアにはほとんど触れられないが、ケン・トンプソンが編み出した UNIX や、デニス・リッチーが開発した C 言語も付け加えたい。UNIX は基本的なソフトウェアアーキテクチャの生みの親的存在であり、C 言語は世界中のプログラマに愛されると同時に嫌われ者であり続け、その影響力は今日でも絶大なのだから。そして、なによりも見逃せないのは、これらの技術が今日のデジタル社会を根底から支えるシャノンの情報理論と結びついてきたこと。すなわち、2 を底とする対数の世界と完全にマッチすることである。
その名が、グラハム・ベルに由来するのかは定かではないが、電話交換機から派生してきたことは見て取れる。20世紀初頭、AT&T が掲げた「ユニバーサル・コネクティビティ」という壮大な構想は、今日のクラウド・コンピューティングに受け継がれている。
情報を制する者が世界を制す!と言われるが、それは古代から証明されてきたこと。人間の本能には、なんでもいいから繋がっていないと不安でしょうがいない性分があり、概してコミュニティやコネクティビティってやつに憑かれる。情報交換こそが繋がりをもたらし、それが友好を温めるものであったり、欺くものであったり。いくら名目上の実力社会を言い張っても、本性上のコネクション社会を免れない。世間では悪魔のように攻撃を受ける情報隠蔽体質にしたって、感情的で本性的なものだ。自分だけが知っているという事が自尊心をくすぐり、自意識を肥大化させる。おまけに、誰かに喋りたくてしょうがないという相い反する性分まで抱え込む。ベル研究所は、こうした人間の本能をくすぐる領域を制したことで、技術史上比類なき成功を収めたということは言えるだろう。
産業史上これほど大規模な独占企業を生み出したのは奇遇といえば、そうかもしれない。ただ、電信通信業界では「自然独占」という形態がよく指摘される。安定したサービスを隅々にまで行き届かせるためには、都市部の収益で地方を賄う必要があり、こうした業界体質に便乗して巨人化していった様子が見て取れる。それは鉄道業界や運送業界にも言えることだ。物流、郵便、情報の集中する場所が... あらゆる流れを支配する者が... そして、彼らが開花させたエレクトロニクス業界は、様々な種のネットワークを形成し、いまや知のハブとしての存在感を示そうとしている。
一方、現在のベル研究所はと言うと、皮肉なことに一大企業に属す一産業研究所という地位に甘んじている。どんなに優れたアイデアも、どんなに優れた技術も、やがて模倣され、改良され、庶民化し、凡庸化していく。生き残るには、この道しかなかったのやもしれん...

1. あぁ、産業研究所よ...
皮肉なことに戦争が発明の母となったことは否めない。人間なんてものは、必要に迫られなければなかなか実力を発揮できないもの。アルキメデスの時代から、最先端を突っ走ってきたあらゆる科学技術は、まず軍事の応用として現実味を帯びてきた。レーダーの開発者たちは、よくこう語り合ったとそうな。
「戦争に勝てたのはレーダーのおかげである。原子爆弾は単に戦争を終わらせただけだ...」
レーダーは、対象物から反射波をとらえるという科学的には単純な原理であっても、技術的にはなかなか手ごわい。微小信号につきまとう雑音と減衰という S/N 比の問題は、通信制御の基本中の基本。米国政府のレーダー開発への投資額は推定30億ドルに達し、原爆の20億ドルを大きく上回ったという。
戦争の最大の発明は、VT 信管だという意見もよく耳にする。だが、社会的なインパクトという意味では、原子爆弾ということになろうか。なにしろ悪魔の代名詞とされるのだから...
動機はなんであれ、光学、音響学、反響学、磁気学、有機化学、冶金学、気象学など、実に多くの科学的知識が結集した結果、エレクトロニクス時代の幕開けとなった。ベル研究所の社員は、人間のコミュニケーションにわずかでも関係のあることなら何でも研究するという。有線であろうが、無線であろうが、音声データであろうが、画像データであろうが。この時代にあって生理学や心理学までも研究対象にしていたとか。
彼らの哲学的動機には、なんとなく共感できるところが多い。おいらが、ある電機メーカで研究所と名のつく職場に十年ほど籍を置いていたこともあろうか。研究者という人種は、世間で無価値とされるものに価値を見出そうとする。それも執念めいたものによって。ただし、失敗を恐れない挑戦!と言えば聞こえはいいが、贅沢な資金を後ろ楯に失敗感覚が慢性化していくことにも留意したい...

2. あぁ、偉大なトランジスタよ...
近代技術の最大の発明は何か?と問えば、酔いどれ天の邪鬼は、即トランジスタ!と答えるだろう。仕事柄もあろうけど、トランジスタを語り始めると、かっぱえびせん状態になるのだ。
何が凄いかって?
まず、増幅作用を挙げよう...
電流が流れる固体物質といえば鉱物だが、こいつを経由すると電流が増幅するとは、まさに物質の偉大さを示している。電力源が貧弱でも中継器で増幅すれば、いくら遠距離でも電力を供給することが可能となる。そして近代科学は、電子の流れを研究するための専門分野、とりわけ、表面準位を研究する結晶学、バルク特性を研究する界面化学、金属素材を研究する冶金学といった学問を開花させてきた。いわば、基礎物理学の領域である。あの仮説を嫌ったニュートンも錬金術に執着したという説があるが、まだ妖術や占星術の域を脱していない。あるノーベル賞級の経済学者はこんなことを言った... 基礎物理学者には金融アナリスト並に報酬を払うべきだ... と。尤も真理を探求しようという者が、報酬にこだわりを持つことはあるまい。ちなみに、おいらが美少年と呼ばれていた頃、この増幅特性に感動したものである。物性学は赤点だったけど...
次に、スイッチング特性を挙げよう...
電流を流したり、遮断したりする制御が、外部から電圧を加えることで簡単にできる。それは、トランジスタの ON/OFF 制御がそのままデジタル値の 0 と 1 に対応し、シャノンの情報理論とすこぶる相性がいいことを示している。ブール代数が電子回路の基本原理となり、いまやトランジスタの構造を知らなくても回路設計ができるという寸法よ。
さらに、物理構造に目を向ければ、奇妙なことに気づく。抵抗などの回路素子が無いにもかかわらず、それだけで等価回路が実現できるのだ。天の邪鬼な美少年は、教科書に掲載されるトランジスタの等価回路にいつも懐疑的であった。物質をくっつけていくだけで多段回路が形成できるということは、いくらでも集積可能ということだ。そして、半導体業界は微細化との戦いを強いられてきた。そろそろムーアの法則も息切れ気味で、それを量子コンピュータが引き継ぐのかは知らんが...
また、半導体をくっつけるだけで得られる重要な特性に、整流作用がある。ダイオードってやつだ。電流を一方向にしか流さないという性質が、交流を直流に変換することを可能にする。遠隔地へ電力を供給するには交流が有利で、細かい電子制御には直流が有利なので、その住み分けが明確にできる。ダイオードを片トランジスタなんて表現すると差別用語と言われそうだけど、PN 接合という単純な構造こそがトランジスタの基本特性を引き出している。
ただ、天の邪鬼な美少年は、マクスウェルの悪魔くんがどこかに一人ぐらいいるのでは?と懐疑的であった。実際、逆電流がわずかながら流れるってこと、それを安定的に動作保証するのが技術者の使命だ。
こうして改めて眺めていると、トランジスタこそが物質に情報を結びつけた立役者であり、トランジスタこそがデジタル社会の牽引役であったと言うのは、ちと大袈裟であろうか...

2018-04-29

デスクトップの魔物... 雨降って頭固まっちゃった!?

デスクトップには魔物が住むという...
なかなか仕事が手につかず、とりあえず周りの整理整頓をしていると、これが徹底的にやらないと気が済まなくなり、夜な夜な大掃除を始めてしまう始末。やらなければならない!という意識が強いほどマインドセットに逆らってしまう。条件反射的に。天の邪鬼な性癖がそうさせるのか...
デスクトップ環境をいじるのにも、これに似た心理が働く。カスタマイズ衝動が、かっぱえびせん状態へ誘うのだ。忙しい時にかぎって。そして、 雨計量器に嵌ってもうた...

1. Rainmeter(Stable Ver 4.1)... こいつの柔軟性にイチコロ!
Windows 系のデスクトップツールで遊ぶなら、こいつは最強かもしれない。なにしろ、ある種の言語システムもどきを具えているのだから。Documentation サイトも非常に参考になる。
スキン求めて、deviantArt あたりを散歩すると... スキン集というより、コードの宝庫!あまりの量に目移りし、どれをベースに改造しようか、惚れっぽい酔いどれは、はしごしまくり。柔軟性が高いということは自由度が高いことを意味し、自分でいじり倒すことができなければ、逆に不自由の呪縛にかかる。自由への道は険しい。ド M を覚醒させるにはうってつけの性向か...
中には完成度の低い作品もあり、自分の環境に合わせてカスタマイズを強いられる。やがて採用したスキンすべてに対して、なにかしらいじらないと落ち着かなくなる。自由というより、これはもう依存症だ!

2. マルチモニタ環境で... 病みつき!
スキン毎に「ドラック許可」や「クリックスルー」などの設定を組み合わせて、擬似的にドラッグ禁止領域を作ることができる。透明色で前面に配置しておけば、普段触りたくないリソースモニタ用アプリの保護領域を作ったり。
ちなみに、狼の黄色い目と青い目のあたりが、その領域...




とはいえ、あまり凝って、デスクトップツールに CPU を持っていかれれば本末転倒。リソースモニタ以外のアニメーションは、四つの地球儀と時計だけにし、CPU 使用率を 3% 未満に調整する。尚、CPU は、Intel Core i7-7700 3.6GHz...
右上画面には、三つの地球儀を重ね、大きくなるにつれて周期を遅くし、左下画面には、"Van Schagen Globe" という大航海時代風の地球儀スキンに "Steam Clock" という時計スキンの歯車を接地させて、ポンプで地球儀を回転させているように見せている。ちなみに、時計といえば、おいらは、SKAGEN を愛用している。Schagen と SKAGEN では綴りが違うけど日本語の発音は同じ。思わず夜の社交場でお馴染みの口癖を漏らす... 奇遇だねぇ!

尚、カレンダー、イベント、ToDo リストでは、姉妹ソフトの Rainlendar を採用している。Rainmeter に比べて柔軟性は劣るが、これらの要素では手軽さを優先したい。
Rainmeter の気がかりは、オーディオ制御系がちと不安定なところであろうか。ソースのスイッチングなど。使えないほどではないが、うちの環境といまいちマッチしない模様。お気に入りのイコライザや VU メータもあって惜しいのだけど。
てなわけで、WMP + XTHREE + FRUITY + DefaultAudioChanger を採用(画面右上)。実は、FRUITY にも嵌ってたりして...

3. 記述フォーマットに... なんとなくノスタルジア!
スキンファイルの拡張子は .ini で、基本フォーマットはこれ...

  [Section]
  Key=Value

Section には、こんなものがある。

  [Rainmeter] : 全体のオプション定義
  [Variables] : 変数定義
  Measures    : CPU やメモリなどの計測オブジェクト(Measure=Option で指定)
  Meters      : 視覚的なオブジェクト(Meter=Option で指定)
  MeterStyles : Meters のオプション定義。
  [Metadata]  : 動作に無関係な情報を記述

オブジェクト名はなんでもいいようだが、とりあえず、このあたりの動作を抑えておきたい。

  Measure=Calc    : 演算制御オブジェクトに指定
  Meter=Shape     : 形状制御オブジェクトに指定
  Meter=Image     : 画像制御オブジェクトに指定
  Meter=Rotator   : 回転制御オブジェクトに指定
  Meter=Roundline : 円運動制御オブジェクトに指定
  Meter=Button    : マウス操作オブジェクトに指定

Shape オブジェクトには基本的な属性が揃っている。
Rectangle(長方形), Ellipse(楕円), Line(線), Arc(円弧), Curve(曲線), Path(パス)、あるいは、 図形の結合やグラデーションなど。
Image オブジェクトでは、画像データの位置やサイズの変更が自由にでき、色を混在させることもできる。
そして、軽く試すと、こんな感じ...

;; 横方向にグラデーション
[Object1]
Meter=image
BackgroundMode=2
SolidColor=0,0,0,255
SolidColor2=0,0,0,0
X=0
Y=0
W=100
H=200

;; 縦方向にグラデーション
[Object3]
Meter=Shape
Shape=Rectangle 0,0,200,100 | Fill LinearGradient MyFillGradient | Stroke Color 0,0,0,0
MyFillGradient=90 | 0,0,0,0 ; 0.0 | 0,0,0,255 ; 1.0
; MyFillGradient で角度を指定する。0度や180度にすれば横方向。
X=0
Y=250

;; 枠付き長方形
[Object2]
Meter=Shape
Shape=Rectangle 0,0,200,100 | Fill Color 0,0,0 | StrokeWidth 4 | Stroke Color 0,0,255
X=0
Y=400

4. おまけ... 目玉!
新人時代に実習で書いたマウスカーソル追尾プログラム(C コード)を移植してみた。
目玉を二つにしたければ、インスタンスを二つにするだけ。具体的には、別々のフォルダにそれぞれ同じ ini ファイルを置く。
ところで、マウスカーソルを含めた画面キャプチャで、ちと悩んでしまった。
Windows 標準の「拡大鏡」なんてツールは一生使わない!と思っていたけど、こいつでわりと簡単! 拡大鏡ウィンドウをアクティブにした状態でマウスを移動させて、Alt + PSc で一発。へぇ~...
尚、ビューモードは固定。



さて、基本的な演算子はだいたい揃っているので、計測で困ることはあまりなさそう。
マウスの座標を取得するには、"MouseXY" という Plugin を見つけたので、どこぞからもってきた。
また、ビルトイン変数を知っているとなかなか便利。リソースのパスを暗黙に取得したり、モニタ変数を動的に取得したり。動的オブジェクトに対しては、現在の位置とサイズを取得するビルトイン変数が用意されている。

  #CURRENTCONFIGX#
  #CURRENTCONFIGY#
  #CURRENTCONFIGWIDTH#
  #CURRENTCONFIGHEIGHT#

尚、動的変数は、Measure と Meter だけに許されていて、おまじないを一つ書いておけばいい。

  DynamicVariables=1

あれ?
Roundline オブジェクトの "StartAngle" というオプションが、0度を指定すると3時の方向?なので、頂点から開始するなら 270度を指定するってこと?目玉なんて、どこから始まってもええんだけど、とりあえず Documentation サイトの事例に従って...

  StartAngle=(Rad(270))

RotationAngle は、360度フルに欲しいから...

  RotationAngle=(Rad(360))

そして、コードはこんな感じ...

[Metadata]
eye follow the cursor... Junk Edition.

[Rainmeter]
Update=20

[Variables] 
EyeColor=127,255,212
IrisColor=47,79,79
PupilColor=0,139,139
OutlineColor=47,79,79

EyeSize=180
IrisSize=80
PupilSize=30
OutlineSize=2
AdjustMaxLen=0.005
AdjustEyeDis=0.002
; "AdjustMaxLen" は、[MaxLength]オブジェクトに対する瞳孔の移動係数。
; "AdjustEyeDis" は、[EyeDistance]オブジェクトに対する瞳孔の移動係数。
; 目のサイズを変更すると、これらを微調整しないと瞳孔が眼球からはみ出すかも...

[PosX]
Measure=Plugin
Plugin=MouseXY
Dimension=X
 
[PosY]
Measure=Plugin
Plugin=MouseXY
Dimension=Y

[EyeArea]
Meter=Roundline
W=#EyeSize#
H=#EyeSize#
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineLength=(0.5*#EyeSize#)
LineColor=#EyeColor#
Solid=1
AntiAlias=1

[EyeOutline]
Meter=Roundline
W=#EyeSize#
H=#EyeSize#
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineLength=(0.5*#EyeSize#-#OutlineSize#)
LineStart=(0.5*#EyeSize#)
LineColor=#OutlineColor#
Solid=1
AntiAlias=1

[EyeAngle]
Measure=Calc
DynamicVariables=1
Formula=(Atan2(([PosY]-0.5*#EyeSize#-#CURRENTCONFIGY#),([PosX]-0.5*#EyeSize#-#CURRENTCONFIGX#)))

[EyeDistance]
Measure=Calc
DynamicVariables=1
Formula=(Sqrt(Abs(([PosX]-0.5*#EyeSize#-#CURRENTCONFIGX#)**2+([PosY]-0.5*#EyeSize#-#CURRENTCONFIGY#)**2)))

[MaxLength]
Measure=Calc
DynamicVariables=1
Formula=(0.5*(#EyeSize#-#IrisSize#)-#OutlineSize#+1)

[Iris]
Meter=Roundline
DynamicVariables=1
W=#IrisSize#
H=#IrisSize#
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineLength=(0.5*#IrisSize#)
LineColor=#IrisColor#
Solid=1
X=(([EyeDistance] > [MaxLength] ? ([MaxLength]*Cos([EyeAngle])) : ([EyeDistance]*Cos([EyeAngle])))+0.5*(#EyeSize#-#IrisSize#))
Y=(([EyeDistance] > [MaxLength] ? ([MaxLength]*Sin([EyeAngle])) : ([EyeDistance]*Sin([EyeAngle])))+0.5*(#EyeSize#-#IrisSize#))

[Pupil]
Meter=Roundline
DynamicVariables=1
W=#PupilSize#
H=#PupilSize#
StartAngle=(Rad(270))
RotationAngle=(Rad(360))
LineLength=(0.5*#PupilSize#)
LineColor=#PupilColor#
Solid=1
X=([Iris:X]+0.5*(#IrisSize#-#PupilSize#)+([EyeDistance] > (2*[MaxLength]) ? (#AdjustMaxLen#*[MaxLength]) : (#AdjustEyeDis#*[EyeDistance]))*#IrisSize#*Cos([EyeAngle]))
Y=([Iris:Y]+0.5*(#IrisSize#-#PupilSize#)+([EyeDistance] > (2*[MaxLength]) ? (#AdjustMaxLen#*[MaxLength]) : (#AdjustEyeDis#*[EyeDistance]))*#IrisSize#*Sin([EyeAngle]))

2018-04-22

"はじめての数論 原著第3版" Joseph H. Silverman 著

なにゆえ、このような書に向かわせるのか。童心に返りたいという潜在意識がそうさせるのか。いまさら感を覚えつつも、ジョセフ・シルヴァーマン先生が誘ってくる。小説や演劇を楽しむように数の理論を鑑賞してみては... と。
数学の定理が鑑賞に耐えうるかは、ひとえに美にかかっている。それは、ルーベンスの歴史画やモーツァルトの交響曲を探求したくなるような、衝動を駆り立てる誘惑の美だ。美とは、主観性から発する情念であって、そこにどんな美を感じるかは千差万別。何も感じることができなければ苛立ちを隠せず、作者はいったい何が言いたいのか?などと最低な感想をもらす。オイラーに触れて何も感じることができなければ、幸福の一部を放棄しているようなものか...
しかしながら、客観性を信条とする数学とは、相容れぬ特性である。五感のすべてをニュートラルな状態にし、その美を純粋に感じ取ることができるとすれば、もしかしたら主観性を客観性へ昇華させるのやもしれん...

「数学について公平に考えれば、それは真実性のみに位置づけられるものではなく、なかでも美... 冷たく厳しい美... それは骸骨のように我々自身の生来の弱さには何も訴えるものはなく、絵画や音楽のような着飾ったところもない。しかし、崇高なる純粋さ、そして厳格なる完全性を実現した唯一の芸術である。」
... バートランド・ラッセル

この本は、元々はブラウン大学のジェフ・ホフスタインによって創始された Math 42 クラスのための教科書だそうな。Math 42 とは、自然科学系以外の学生を引きつけようと構想されたクラスだとか。なるほど、高校の初等数学ぐらいの知識があれば読めそうである。基本的な読み方としてはコンピュータ不要論を唱え、安心感を与えてくれる。
「最大公約数を調べるために GCD[M,N] とタイプして答えを得てしまうことは、テレビをつけることで電子工学を学ぼうとするようなもの...」
とはいえ、完全不要論を唱えているわけではない。ここに紹介されるアルゴリズム群にはプログラミングの知識がちと欲しい。実際、数値演算言語 Octave あたりで遊べるし。良い例題に、ユークリッドの互除法、RSA 暗号、平方剰余の相互法則、平方数の和の形式、素数判定法、楕円曲線の有理点などを挙げてくれる。
数論とは、数の理論を問うもの。ここで主役を演じるのは自然数だ。負の数を意識せずに済めばあらゆる負債はチャラ、これぞプラス思考!なんと自然だろう。だが、人間は負債の先送りがお好き。人生という苦難を冷静に率直に受け入れれば、悲観的にならざるをえない。だから自然数に焦がれるのか。
数学だって想像上の数に縋っているではないか。虚数とは、人間が編み出した虚しい数。真理を覗くには、よほどの想像力を要するらしい。
そして、ガウス整数にまで議論が及ぶと、面白いことが次々と起こり、人間がニヒリズムに縋る姿も自然に見えてくる。
自然数の世界は、実に風変わりな生物相で溢れている。ピタゴラスの数がいたり、メルセンヌ神父の数がいたり、パスカルの三角形がいたり、フィボナッチの兔がいたり... ディオファントスな関係を迫れば、フェルマーの方程式がいて、ペルの方程式がいて、オイラーの関数がいて、楕円曲線までいやがる。ただ、平方数の素数はいないようだし、奇数の完全数がいるかは知らんよ...

物質の性質を探るプロセスに原子構造を辿るというやり方があるが、数の本質を探るのにも似たところがある。ここでは性質の側面から、素数や平方数といった数が、あるいは関係の側面から、互いに素、因数分解、既約といった概念が重要な役割を果たす。素数は、これ以上分解できないという視点から、平方数は必ず合成数になるので、成分を明るみにするという視点から、それぞれ意義を与えている。
それにしては、既約ピタゴラスの定理は素っ気ない。元々は素っ気ない関係が複雑に絡んだ状態こそ、人間社会というものか。その絡み具合といったら悪魔じみている。互いに素な関係を求めてすっきりさせようといのが哲学というものか。
プラトン風のイデアなる精神の原型を追い求めては、原始根は存在するか?と問い、存在の確実性を探る。完全数ってどうよ。友愛数ってどうよ。三角数って完全な三角関係ってか。完全数がどんなふうに完全かを考察すれば、創造者の完全性に思いを馳せ、友愛数がどんなふうに友愛かを考察すれば、宗教が唱える友愛に疑念を抱かずにはいられない。なるほど、哲学とは、悪魔の素因数分解であったか。
こうして酔いどれ天の邪鬼は、「数学は哲学である!」との持論を検証するのであった...

1. 割り切れない関係
本書が求める数の関係では、合同式が主役を演じている。つまり、演算法ではモジュロ演算が主役だ。こいつの抽象レベルときたら四則演算をコンパクトに凌駕し、数の本質を見抜くのに最適な道具となる。何を法とするかは、研究者がどんな戦略をとるかで決められ、この柔軟性が数と戯れる自由を知らしめている。おまけに、素数 p を法とする時に一段と輝きを放ち、モジュロ性が暗号技術への道を切り開く。要するに、人間が認識しうる演算という企ては、循環性の概念によってすべて説明がつくということである。
ん?ということは...
人間社会で四則演算の方がはるかに有用だということは、本質を見る必要がないということか。いや、あえて見るのを避けているのか。整除性という概念が、人間精神を平穏なものにしてくれる。だが、その定理が証明不可能となると、たちまちカルト化する。知らぬが仏というが、こと人間社会においては本当らしい。真理において、割った余りを考察するやり方が有効だというなら、人生において、割り切れない思いがつきまとうのは至極当然か...

2. 素数の中の異物
「2 は最高に奇な素数だ!」
素数の中には異物が混ざっている。素数は無限に存在すると告げているにもかかわらず、こいつだけが偶数ときた。偶数の世界には、なにか引き込まれるものがある。偶数どうしでは、和も、差も、積も、商も、偶数の世界に閉じられる。だが、奇数どうしで足すと、偶数になるとはこれいかに?奇数と偶数を掛けると必ず偶数に引き込まれるのはなぜ?数の世界では、対を求めるのが自然だというのか?
人間社会では、2 で割り切れる数が揉め事を回避する方向に働く。分け前や財産分与など。偶数に奇数が絡むと、なにかと揉めることが多く、離婚問題では三角関係がさらに複雑化させる。性行為によって誕生する種が、遺伝子の掛け算の結果か、足し算の結果かは知らんが、偶数になる確率を高めているのは確かなようだ。はたして偶数どうしの関係で、偶数の世界を超えられるだろうか?
偶数の世界に引き込まれるのが嫌なら、素数で割って、余った数を平等に扱ってみてはどうだろう。モジュロ性の真の意味が、平等性にあるのかは知らんが、2 を法としたモジュロ性では 0 と 1 にしか登場機会を与えない。この特性が情報理論の礎となり、デジタル社会の正体を明るみにしている。素数が法(=法律)として君臨すると、なにかと便利なことが起こるのは確かなようだ...

3. ディオファントス近似の摩訶不思議!
コンピュータには見過ごせない弱点がある。浮動小数点演算で答えが合わないと騒ぐ新人君を見かければ、IEEE 754 の意義を匂わせてやればいい。べき乗の壁を乗り越えられない限り、近似の概念に頼らざるを得ないということを。システムエラーの回避に欠かせない前提があることを。
しかしながら、近似の概念に頼っているのはコンピュータの世界だけではない。純粋物として崇められる素数の世界ですら、その存在のしかたを問う素数定理となると、近似が幅を利かせている。
人間社会で必要なのは、完全な真理ではなく、真理っぽく見えることだ。人間は真の存在を知りたいのではなく、存在感を噛み締めたいだけ。本当の自由なんて、この世にありはしない。そんなことは百も承知しつつも、自由意志の存在は信じている。耐えられないのは盲目ではなく、盲目感なのである。
おっと!話を戻そう...
簡単な近似法では、連分数の概念がなかなか実用的だ。どんな数でも、整数部分を引きはがして残りを分数にひっくり返すと、連分数を作ることができる。このような再帰的なやり方はプログラミングとすこぶる相性がいい。本書は、連分数展開を漸化式として見せてくれる。
ところで、ディオファントス方程式はなかなか手強い!ここでは、整数や有理数で考えることをやめて、素数 p を法とする解を見つけるという戦略を用いている。
そして、楕円曲線上の点の個数 Np に考察が及ぶと面白いことが起こる。すなわち、楕円曲線方程式の解の数において...
Np が p より小さいことは直感的に分かるが、p を追っていくと... なんと!なんと!
Np は、p に等しくなるというのである。

  ap = p - Np

ap「p 欠乏」と呼ぶそうで、実際は「フロベニウス写像」のトレースになるという。
さらに、フェルマーの最終定理を素数 p とモジュラ性の観点から物語ってくれる。
尚、フェルマーの最終定理は、ディオファントス方程式における n ≧ 3 のパターン。

  An + Bn = Cn

n = pm の時、

  (Am)p + (Bm)p = (Cm)p

なるほど、モジュラ性の抽象レベルには限りがないと見える。どうやら宇宙は循環性に支配されているらしい。そりゃ、夜の社交場に繰り返し通うのも自然であろう。これが自由意志の正体であったか...

2018-04-15

"aha! Gotcha ゆかいなパラドックス(1, 2)" Martin Gardner 著

娯楽数学の真髄をもう一冊...
いまだにマーティン・ガードナーの世界に魅せられるのは、童心に返りたいという意識がどこかにあるからであろうか。酔いどれ天の邪鬼にだって、若き日を懐かしみ、若さを羨むことがある。だがもし、若返ることができ、もう一度世間を渡り歩いて来なければならないとすれば、やはり煩わしいものがある。戻りたいのは過去ではない。記憶と知識をそのままに肉体だけを若返らせ、脳内活動を活性化させたいだけ。なんと都合のいいことを。なぁーに、脳内チップにデータをダウンロードすればいいだけのこと。若いうちに。いや、もう手遅れか。いやいや、構造主義風に言えば、人間の身体もまたサイボーグだ。はたして、それは人間なのか?人間とは、どういう存在なのか?精神の持ち主のことを言うのか?だが、科学はいまだ精神の正体を明確に説明できないでいる。精神の正体も知らぬ者が精神を崇めても... などと問えば、循環論に陥る。

まさに、パラドックスの世界は循環論法と自己言及論に毒されている。自己言及で最も単純なものは、「この文は嘘である」といった形式。この文章を信じるにしても、信じないにしても、悪魔との取引を強いられる。ただ、悪魔をも味方につけなければ、世間を渡り歩いて行くことは難しい。
哲学には、形而上学という大層な代物がある。メタ的な観点から物事をさらに上位から眺める立場を要請するのである。精神ってやつが、形而の上位に存在するのか、はたまた下等な存在なのかは知らんが...
言語学は、自然言語を語るための最適な言語は何か?という慢性的な課題を抱えている。日本語を構造的に説明するために、日本語で語っては矛盾が生じる。だからといって、外国語で日本語を語っても、自然言語というものが社会風土にどっぷりと浸かって変化してきただけに、その本質的な性質に踏み込むことは難しい。
プログラミング言語では、ある言語システムを記述するための上位言語に何を選ぶべきか?という議論をよく見かける。そして、メタ言語もメタメタになるという寸法よ。
数学は、論理の不完全性を証明した。少なくとも人間が構築する論理は。となれば、パラドックスは、忌み嫌うよりむしろ歓迎すべきだろう。その役割は、論理暴走のチェック機構として、ひいては、自分自身の在り方を問う機構として。
レイモンド・スマリヤンは、「この本の題はなにか?」と題する論理パズルの本を書き、その二年後、「この本に題はいらない」と題する本を書いたそうな。バーナード・ショーはこう言ったとか。
「ただ一つの黄金の法則は、黄金の法則がないことだ。」

パラドックスを後押しする概念に、時間の一方向性がある。それは、人間の認識能力の限界を示している。エドウィン・A・アボットは著作「フラットランド」の中で、二次元平面の世界に幽閉された住民たちを滑稽に描いて魅せた。まさに人間の欲望は、時間の矢という次元に幽閉されている。次元ってやつは、幾何学構造の支柱を成す、いわば自然界の構造を支配する存在であって、この基本原理に一方向性しかない!なんてことがありうるのだろうか?数学の美には必ず対称性を見出すことができる。なのに、時間という存在だけは、どうも異物感を拭えない。
純粋数学の定理は、次元によって乱されることはあまりないが、応用数学の定理の多くは時間の関数で定義される。時間ってやつは、認識の産物でしかないのか。
パラドックスは、正しいと思うような前提に対して、およそ想像もつかない結論が導かれた時に生じる。それは感覚や感情からくるもので、逆理や背理の類いは大抵この心理的な罠に落ちる。
では、正しいと思うような前提とは、どこから生じるのか?認識の揺れは経験から生じ、まさに誤謬は余計な知識から発する。人間は、経験や知識を常識に昇華させては精神の防波堤を築く。ここに心の拠り所を求めるのだ。常識を否定すれば、過去の知識を否定することに繋がり、ひいては今まで生きてきた自己をも否定しかねない。その結果、考えることを放棄して思考停止状態に陥る。これが幸せの正体か。
脂ぎった大人になればなるほど、柔軟な思考を持ち続けることが難しく、よほどの修行を要する。子供のように矛盾を素直に受け入れ、かつ自己否定に陥ってもなお愉快でいられるとしたら、真理の力は偉大となろう。なるほど、ゆかいなパラドックス!とは、この道であったか...

1. 無限の悪魔
ピュタゴラス教団が無理数の存在を隠蔽したのは、そこに悪魔が住み着いているとでも考えたからか。単位正方形の対角線の長さが、定規のメモリをいくら細かくしても正確に測れないというのは、数を崇める宗派にとって由々しき問題である。そして十九世紀、数の理論が集合論に及ぶと、悪魔を目覚めさせた。
有限集合では... 元の集合が真部分集合と一対一で対応する... なんてことはありえない。全体は必ず部分よりも大きいとするのが、部分集合の中でも真の部分集合とされる所以である。
ところが、無限集合では違う。こんな定義すらあるぐらい。
「真部分集合との間に一対一の対応がつくような集合のことを無限集合と呼ぶ。」
数学者は無限には濃度があると主張する。アレフ(ℵ)がそれだ。自然数の集合の濃度は、アレフゼロ。偶数の集合も、奇数の集合も、アレフゼロ。つまり、こうなる。

  ℵ0 + ℵ0 = ℵ0 ???

対角線論法は、まさに写像のパラドックスを示している。実数全体の集合が無限直線上の数と一対一で対応する... ここまではいい。
しかし、だ。これが平面上のすべての点、さらに三次元空間上の、さらにさらに四次元空間上の、n次元空間上の... となると、写像の概念そのものを疑わずにはいられない。
そして、無限濃度はさらに抽象レベルを昇華させ、カントール集合論に対して、非カントール集合論に分派した。ユークリッド幾何学が、第五公準の矛盾をついて非ユークリッド幾何学と分派したように。
こうしてみると、パラドックスこそが数学の歴史に見えてくる。それは、悪魔との取引の歴史だ!というのは言い過ぎであろうか...

2. 統計の嘘と平等視の原理
いまや、初歩的な統計の知識を具えていないと、生きるのが難しい時代。保険、福利厚生、公衆衛生、広告、報道など多岐に渡って、数理統計なしでは運用が成り立たない。とはいえ、統計情報ってやつは、扱いを一つ間違うとまったく別の結論を導く。
マスコミがよく報じるものに「平均的な家庭」、「平均的な生活」、「平均所得」といったものがある。だが、平均ってやつは偏り方を示さないので、格差を闇に葬ってしまうばかりか、平均的な... という奇妙な価値観を押し付けてしまう。世論調査などは、質問の仕方でいかようにも操作できる。
本書は、平均値、中央値、最頻値という三つの尺度を持ち出し、民主主義の公平性を皮肉る。やはり統計は嘘をつくものらしい。
人間ってやつは、確率が低そうに見えるものを偶然と呼び、そこに因果関係を結び付けずにはいられない。決定論や運命論がそれだ。
例えば、統計のパラドックスに、有名な誕生日のネタがある。出鱈目に選んだ 23 人の中で、誕生日が一緒なのは 50% よりやや高く、40 人ともなれば 90% に跳ね上がる。そして、女性を口説くネタにするわけだ。運命の赤い糸は、いかようにも結ぶことができるし、いかようにも切ることができるという寸法よ。
また、偉大な数学者は長男が大半だそうな。というより、どんな社会でも、最も数の多いのが長男か長女となる。一人っ子なら、そのまんま。二人兄弟で、男と女なら、どちらも長男と長女。同性でも確率 1/2。そして、次男、三男、四男... の順に確率は減っていく。
著名な人物と同じ誕生日だとか、同じ出身地といった類いは、しばしば特別な偶然だと思い込ませる。
人間ってやつは、常に特別な存在でありたいと願っているようだ。いや、都合が悪くなると、すばやく大多数の中に紛れ込む。統計ってやつは、都合よく解釈できる代物というわけだ。ベンジャミン・ディズレーリは、うまいことを言った... 嘘には三種類ある。嘘と大嘘、そして統計である... と。アドルフ・アイヒマンにかかれば、悲劇までも統計にしちまう... 一人の死は悲劇だが、百万の死は統計に過ぎない... と。
さらに、統計の捉え方で興味深いものに、ケインズが呼んだ「平等視の原理」というものを紹介してくれる。不確定な事象に対して、真か偽かの根拠が見つからないような場合、等しい確率で見積もりやすい、という根拠不十分な原理である。例えば、核戦争の起こる確率は?と問えば、有識者たちは五分五分と答える。不合理な確率が、不合理な結論を導き、不合理な行動を煽る。これが人間社会というものか。論理的矛盾をついた悪名高き歴史を持ってきた原理というわけである。
人間ってやつは、具体的な数値を見せられると、客観性に満ちていると思い込む傾向があるが、実は、数値そのものに主観性が満ち満ちている。裏付けってやつの威力は強力だ。いや、裏付けがありそうに装うことが...

3. 信者の賭け
宗教を信じるか信じないかを問いかける皮肉めいた問題に、あの有名な「パスカルの賭け」がある。ブレーズ・パスカルは、キリスト教の信仰が得かどうかを問うた。教会を信じなかった場合、教会が誤っていれば何も失わず、教会が正しければ地獄で限りない苦痛に直面するだろう。教会を信じた場合、教会が誤っていれば何も得をせず、教会が正しければ天国で永遠に幸福を得るだろう。したがって、教会が正しい方に賭ける方が有利だってさ。
キリスト教に限らず、あらゆる宗教は、信じることによって救われると教える。ならば、すべての宗教を信じればどうだろう。所詮、人間がこしらえたもの。宗教も、神という概念も。一つの宗派に固執したところで矛盾からは逃れられないのだから、すべての宗派を受け入れ、矛盾を歓迎してみてはどうだろう。それは、すべての宗教を信じないのと同じことのようにも映る。そして、無神論者や無宗教者の方が、高貴な宗派に見えてくる...
ところで、霊感商法は騙される側にも問題があると、よく言われる。とはいっても、だ。人間ってやつは、何かに縋らなければ生きてはゆけない存在。文化庁の統計によれば、日本の宗教法人の数は18万を超える(平成28年度)。未登録数を合わせれば、20万を超えるそうだ。そして、信者の数はというと、少なく見積もって、延べ1億8千万人、潜在的に2億人くらいになりそう。人口をはるかに超えるとは、これいかに?宗教なんて信用ならない!なんて言いながら、厄年になれば厄払いはするし、家を建てる時には地鎮祭をやるし、葬式仏教は大盛況ときた。人が死ねば墓が必要になり、墓地が高いとなれば納骨堂と契約を結び、自動的に宗派の会員となり、信者の数に加えられる。なるほど、「信者」と書いて「儲かる」ってか...

4. サイクロイドの誘惑
「自転車の車輪の上部は下部より速く動いているのを、ご存知ですか?」
実は知っているけど、改めて問われると、なんとなく感動してしまう。車輪の縁のある任意の点に着目して、どういう軌道を描くかを作図すれば、サイクロイド曲線になることは義務教育時代に証明済み。サイクロイド曲線は、車輪の頂点に向かって加速し、頂点に到達すると今度は地面に向かって減速する。しかも、地面との接点で瞬間的に静止してやがる。円の中心が単純な等速運動をしているにもかかわらず、外円では想像もつかない運動が生じているだけでなく、静止が関与しているところに、なんとなく感動してしまうのである。
静止には、不思議な力が宿る。人間は心拍停止を忌み嫌うが、心臓の運動にもどこかに瞬間的な静止状態があるはず。だから、永遠の静止に真の安らぎが求めるのか?いや、これも悪魔の仕業か?パラドックスってやつは、無限によって悪魔を目覚めさせ、統計によって嘘まみれにし、ついに永遠の静止へ導こうってか...

2018-04-08

"aha! Insight ひらめき思考(1, 2)" Martin Gardner 著

古本屋を散歩していると、なにやら懐かしい香りのする書を見つけた。マーティン・ガードナーの世界に魅せられたのは三十年以上前、おいらが美少年と呼ばれていた頃だ。今でも感動してしまうのは、進歩のない証か。エレガントな問題集には娯楽数学の極意が詰め込まれ、答えが見つかった時、ついニヤリとしてしまう。何かを悟った瞬間とは、そうしたものか。逆に答えが見つからなければ、ムヤムヤ感が溜まり、今夜は眠らせないよ!とピロートークを仕掛けてきやがる。それが、M にはたまらないときた...

ひらめきとは、突然変異の類いか。それとも、眠っていた意識が目覚めたに過ぎないのか。寝ずに考え抜き、夢の中まで攻め倒し、それでもどうにもならない難問が、まったく予期せぬタイミングで、ふとしたことから解決してしまうことがある。トイレで思いついたり、風呂場で思いついたり... アルキメデスの逸話は、下半身を解放してやることが解決の糸口であることを証明しているのか。どうやらフル思考は、フルちん志向と相性がいいらしい。
考えるとは、言葉を使って論理を展開すること。言葉とは記号であり、数学的に記述できれば、いっそう論理展開の道筋が見えてくる。そして、言葉を正しく知り、論理的思考を深めれば、日常の問題をもっと正しく、もっと賢く解決できるようになるはずだ。
しかしながら、論理数学ってやつは、ゲーデルが示したように不完全性の悪魔に取り憑かれている。すべての問題を演繹的に解決できればいいが、帰納的な思考も用いなければ、現実的な解決は望めない。この帰納的な思考に、自己矛盾という悪魔が背後霊のごとくつきまとう。証明も反証もできない無矛盾性に遭遇すれば、非決定性の問題で袋小路に迷い込む。
ライプニッツは、論理学を "Ars combinatoria(組合せ術)" と呼んだそうな。組合せ論において、不可能性の証明ほど難しいものはない。人類の未解決問題であった四色定理にしても、ケプラー予想にしても、答えを出したのはコンピュータであった。数学の問題は、なんでもコンピュータにかけちゃえ!という時代の到来か?
現実世界が論理で解決できないとなれば、トンチも有効な解決策となろう。本書にも、トンチ先生が登場する。トンチにはユーモアが含まれ、それはある種のジョークから発している。ジョークは感情で理解する領域にあり、人によってはジョークにならないこともある。アハ!とひらめく瞬間とは、こうした遊び心から発し、なによりも子供心から発している。マーティン・ガードナーは、たまには童心に帰ろうよ!と誘ってくる。創造力とユーモアには、密接な相関関係がありそうだ。
形式論理学だけで人間社会のあらゆる問題が解決できるならば、人間は精神を獲得する必要がなかったのかもしれない。いや、精神を獲得したがために、人間はこうも苦悩するのか。ニーチェはうまいことを言った... 笑いとは、地球上で一番苦しんでいる動物が発明したものである... と。だから、弁証法ってやつが重宝されるのか。なるほど、論理数学者とは、屁理屈屋であったか...

本書にはユーモアとは裏腹に、組合せ論、幾何学、数論、論理学など多岐に渡って、深遠な数学の概念がちりばめられる。人類の文明の始まりを規定することは難しいが、一つの考え方として、数を数えるようになったのが始まり、とすることはできよう。整数は、現実社会において実に有用な概念である。しかも、プラス側に重要な意味がある。なぜかって?人生という自然界にとって実にちっぽけな空間を生き抜くには、プラス思考でもなければやってられんよ。
人間の世界では具体的な数を与えることによって生活が営まれるが、数学の世界では問題の一般化が問われ、n という抽象化された数の法則が求められる。数の n への昇華とでもしておこうか。こうした数学的な思考の始まりは、ディオファントスの算術に見てとれる。線形方程式ってやつに。入力値を n で与え、多項式を n 次元で規定できれば、アルゴリズムを編み出すことが可能となり、コンピュータにかけてお仕舞い。プログラミングでは、いかに効率的なアルゴリズムを実装できるかが問われる。このテクニックは、時にはアートと呼べるほどのエレガントさを具えている。
本書は、OR(オペレーション・リサーチ)という研究分野を紹介してくれる。OR では、しばしば実務上の問題をグラフ化して考えるというから、グラフ理論にも通ずる。グラフ理論では、最小の極大木を求める「クラスカル法」のようなうまいやり方も見かけるが、「シュタイナーの木」のようなNP困難な問題もある。
グラフ志向は、今日のネットワーク制御でもよく用いられる。例えば、インターネットでは、物理的な距離を計測するよりも、ルーティング経路や帯域幅などで数値化するホップ数やメトリックのような見方が有用となる。こうした最適化の思考は... 料理人が厨房で最も効率的に多くの料理をこしらえるには... 企業が最も効率的な人員配置をするには... 最もコストのかからない軍事行動を行なうには... といった戦略的問題で有効となる。
そして、人生戦略に思考が及べば、今やることの優先順位を考えずにはいられず、今宵も眠れそうにない。寝不足こそ、思考を鈍らせる最大の敵にもかかわらず。なので、Aha! でも読んでストレス解消といきたい...

1. 組合せ論について
タイル貼りの問題では、正方形のパーツを並べていく分にはなんの悩みもないが、長方形となるとちと悩んでしまう。不規則な敷地をきちんと埋め尽くせるか?の問いには、その証明を奇数パリティを用いてエレガントにやってのける。
また、誤った錠剤の入った瓶を探す問題では、基数システムと結びつけて簡単に解決して魅せる。二進数と結びつけて。整数ならば、どんな数でも 2 の累乗で表すことができ、二進法はコンピュータ工学では欠かせない道具だ。こうした思考法は、デジタルシステムの誤り訂正システムでよく使う手である。
おまけに、トーナメント表で不戦勝者の数を決定する問題では、データソーティングと思考が同じときた。
組合せ論では、すべての組合せパターンを抽出し、それぞれの事象にとどまる可能性を探る。その意味で、最悪から逃れるためのパターン検索、という見方もでき、ここに確率論の本質を垣間見る。つまり、生き延びるための事象はどれか?という意味で。
そして、組合せによってグループ化や階層化する戦略は集合論にも通じ、組合せ論、確率論、集合論の三つの原理が切っても切り離せない関係にあることを味あわせてくれる。

2. 幾何学について
図形には、対称という美の概念がある。それは、形を移し替えても、幾何学的性質はそのままというもの。ユークリッド幾何学では、移動、回転、反射、拡大縮小といった操作を行った時に形の不変性を問い、アフィン幾何学では、形がある方法で引き伸ばされた時にベクトル的な不変性を問い、位相幾何学では、ゴム製の物を変形させるように乱暴にゆがめても、その基本的性質の不変性を問う。
さて、よく見かけるケーキを平等に切るといった問題では、差分法的な発想が登場する。微分の基本的な思考がこんなところに。ただ、誰も不平を言わないように切る実践的な方法となると、切る人の選択権の優先順位を下げるのが有効となろう。人間社会では、完全な平等よりも、平等そうに見える方が、はるかに重要なのだ。
極点を周遊するパイロットの話では、航程線(等角航路)という面白い曲線を扱う。到着場所は極点に収束することに。
元の鞘に収まるという話では、直線の剣ならば間違いなく鞘に収まるが、曲線ならばどこまで許容できるだろう?と問えば、近代科学で重要視される螺旋形が浮かび上がる。それは、自然界にあふれる形で貝殻や植物などに見つけることができ、DNA の分子構造もこれに従う。
ただ、螺旋構造は必ず右巻きか左巻きで規定されるので、対称性という観点からはどうであろう。人間社会には、実に多くの右巻きの概念が溢れている。時計回りに、ネジ、ボルト、ナットなど。そして、理髪店の看板も右側に登っていくように見える。回転軸に対して並進という意味で、やはり対称性を保っている。ちなみに、酔いどれ天の邪鬼のつむじは左巻きかは知らん...

3. 数論について
n への昇華を求めれば、n の呪縛に嵌まる。自然数の呪縛ってやつに。数え方のトリックでは、加算、減算、乗算、除算の四つの演算が、人間社会で主役を演じている。
しかし、だ。コンピュータの世界では、第五の演算と呼ばれるモジュロ演算こそが主役!数え方の合理性という意味では、人間はあまり合理的な存在ではないということか。
本書では、列をつくって行進する時に、最後尾に何人残るかで、全体の人数が簡単に把握できるという発想を魅せつける。何人の列にするかが、何を法とする剰余演算と等価になる。この思考法は、孫子の剰余定理としても知られ、数の循環性という性質を利用したもの。
ちなみに、孫子の兵法の孫子とは別人で、古代中国の数学書「孫子算経」に掲載される。
宗教的な匂いがプンプンする古典的な問題「ヨセフスの問題」もまた、数の循環性を問うものとして知られる。
また、n 個の物を m 個の箱に整理整頓する考えを、数学者たちは「鳩の巣原理」と呼ぶ。そう、あのディリクレの編み出した思考法だ。そこには、一対一で対応できない無限集合の影がつきまとう。
さらに、互いの数が素であるという性質が、時計の長針、短針、秒針が一致する時間が、12時以外にはないことを簡単に証明してくれる。
なるほど、モジュロ演算、ヨセフスの問題、鳩の巣原理、互いに素といった概念を数の循環性という観点から念じれば、一つの強力な道具が見えてくる。今日のネット社会を根本から支えてくれる暗号システムが、それだ。エラトステネスの篩のようなアルゴリズムは、古代数学者たちによって示されてきた。まさか!素数の発見者が、21世紀の暗号システムで根幹をなすとは思いもしなかったことだろう。さらに素数定理の精度が上がり、ゴールドバッハ予想までも凌駕すれば、人間社会はどうなるのだろう... と夢を膨らませずにはいられない。

4. 論理学について
論理的思考では、おそらく演繹的な思考が王道なのであろう。しかしながら、帰納的な思考がなければ、現実社会を生き抜くことは難しい。
帰納法という用語には、本質的に二つの意味があるという。科学的帰納法と数学的帰納法である。科学的帰納法とは、特定のものを観察することから、普遍的な結論へと飛躍するプロセスである。例えば、何羽かのカラスが黒いという事実を認めれば、すべてのカラスは黒いという結論を導く。もちろん、この結論は確実なものとはならないし、一つの例外が認められれば、この法則はおじゃん!
対して、数学的帰納法は、科学的帰納法とはまったく違い、すべて演繹的な思考で導き出され、その法則の可能性は無限までも凌駕しうる。神をも凌駕しようってか。ただ、演繹的な思考で導くのに、帰納法とは、これいかに?
ところで、論理学の言い回しでは、なぞなぞのような紛らわしい記述によく出くわす。法律の条文、定義、規格といった記述にも顕著に現れ、政治屋ならこれを利用しない手はない。
本書は、ディスコのチークタイムで男女の組合せを扱う問題で、パターンを視覚化する「チャートメソッド」という概念を持ち出す。コンピュータ工学を学べば、カルノー図やクワイン・マクラスキー法といった論理式を簡略化する方法に出くわすが、これらに通ずるものがある。
形式論理学の基本的な形に、二元的な関係がある。もし... ならば... という文章の形が、その典型例。論理の基本構造は、二分岐で組み立てられ、条件の階層化によって複雑な論理回路を構成していく。
したがって、データ構造と分岐構文を理解できれば、ほぼプログラムが書けるだろう。分岐構造を持たないプログラム言語をおいらは知らない。とはいえ、プログラミング言語を操る上でデータ構造を理解することが、なかなか手ごわいのだけど...

5. いまさらだけど... 感動!

「リングの面積は、リングの内部のひくことのできる最長の長さを直径とするような円の面積に等しい。」

この驚くべき定理は、円の面積を求める公式で簡単に証明できる。内側の円の半径を、最小値に近づけ、ゼロとなったらどうなるか?と考える。すると、内側の円に外接する弦の長さが直径と同じになる。
すなわち、弦の長さが分かれば、どんな円であろうと、リングの面積が分かるという寸法だ。おそらく義務教育の時代に出くわしたような気がするが、いまさらながら感動してしまう!




6. 少なくとも一つは... という型の問題
この類いの問題は、昔からある楽しい数学のパズル。本書は、よくある問題として、レストランで帽子を間違える話を紹介してくれる。
不注意なクローク係が、番号札と帽子の組を合わせず、出鱈目に番号札を渡してしまったとさ。少なくとも一人が帽子を返してもらえる確率は?この確率は、帽子の数が大きくなるほど、ある値に近づくという。

  1 + (1/e)、つまり 1/2 強に...

e とは、ネイピア数で、この無理数が誤り率の限りない答えを示していることに、なんとなく惹かれる。
ちなみに、数学界には、二つの超越数の派閥がある。円周率π派と、ネイピア数 e 派である。誰がどちらの派に属すかはすぐに見分けられる。酔いどれ天の邪鬼は、e 派だ。その証拠に、脚線美に自然美の対(つい)を感じる。断じてオッパイ星人ではない...

2018-04-01

超自然主義を見た... 人生はノーパンだ!はかない...

今日、四月一日、午前四時... ステーキハウスでこってりとした朝食をとり、いつもの一日が始まる。脂ぎった精神には、ジューシーな脂肪分を摂取せねば...
ポータルサイトを訪れては、右から左へ流れていく情報の群れ、群れ、群れ... そして、じっと手を見る。我、退屈なり!
物憂い小春日和が、すべてを物語っているではないか。劇的なドラマなどあろうはずがないと。ちょっとした変化に期待しても、想定外の変化は迷惑千万!最後の砦を頑なに守ろうと必死だ。自我という砦を...

すべてを曝け出し、自然体でいることが、如何に難しいか!これを素直に実践できれば、思考の柔軟性を富ませるであろうに...
おいらはポーカーフェースが苦手だ。シリアスな顔は1分ともたない。慣れない筋肉を使えば、顔の筋肉がつる!自然体を体現するには、まずは力まないこと。まずもって自己を欺瞞しないこと。だが、自分に嘘をつかないで生きることが、如何に難しいか!そもそも嘘をついていることに、自分自身が気づかないでいる。
むかーし、ノーパン喫茶というのがあったと聞く。ノーパンしゃぶしゃぶってのも耳にした。そんな専門用語を羅列されても、おいらには何のことやら?まったく縁がない!決してない!断じてない!
ちなみに、「忘れっぽい嘘つきほど、気の毒なものはない。」とは、F・M・ノールズの言葉だ。
自己とはなんだ?交通事故の類いか?欺瞞とはなんだ?銀杏の類いか?夜の社交場で出会い頭に店に入ると、いつも乾き物をつまんでいる。
すべてを曝け出し、自然の姿のままでいることが、如何に難しいか!いくら仕事場が完全個室で、生まれたままの姿でいられるとはいえ、玄関のチャイムが鳴るとパンツを履くのに大慌て。実に果敢ない!思考が集中していれば、我を忘れてスッポンポンでお出迎え。その時に限って女性のセールスときた。いや、セールスお断りを強烈にアピールできれば、OK!ある落語家は言った... 人生はノーパンだ!はかない!

1. フル思考とフルチン志向
ゲシュタルト崩壊を起こした今、夢も現実もごっちゃ。妄想に耽り、妄想が妄想を呼び、妄想の産物が煩悩を神格化させる。それでもなお、ナマの女体に遠く及ばないとは、どういうわけだ?
思考を自由に解放することが、如何に難しいか!思考の制御は実に手強い。集中力ってやつは、いつも気まぐれときた。思考の方向性を誘導することはできても、難題を本当の意味で解決するためにはフル思考を要請する。最も理想的な精神状態と言えば、フロー状態であろう。無我の境地に達することができれば、雑念が完全に消え去り、時間や空間を超越した快楽へ導かれる。
ただ奇妙なことに、着想が湧いて出る瞬間は、思考しようという思惑から解放された場面に遭遇する。トイレで遭遇するという人もいるが、おいらの場合はお風呂!気分転換にスパでオイルマッサージを受けていると、突然解決策が頭に浮かび、メモに走る。かのアルキメデスには、叫びながら浴場から素っ裸で飛び出したという武勇伝がある。ヘウレーカ!フル思考とフルチン志向はすこぶる相性が良いと見える...

2. 裸体族を夢見て...
かつて人間社会は自然界の一員であった。現在もそうなのかは知らんが、自然回帰への憧れとして、ヌーディスト祭りなるものが出現した。それは、現代社会がもはや自然には戻れないという絶望感の現れか?どこかに人工的文化に歯止めをかけないとまずいとの考えからか?ナチュラリストと呼べば聞こえはいいが、ヌーディストと呼ばれると赤面しちゃう。
自由な身体の文化は、十八世紀末にドイツで始まったと聞く。それは、工業化や近代化に反発する形で現れた。その伝統は、1927年に公開されたサイレント映画「メトロポリス」に通ずるものがある。近未来批判ってやつだ。ナチス時代に廃止されるものの、その後、アーリア人の身体を語る文化として復権したらしいが、七十年代の旧東ドイツで盛んになったとか。FNN ビーチなどは伝統精神を守っているようで、一度誘われたことがあるが、その精神が健在とはいえ、若者離れが進んでいるとも聞く。
やはり生まれたままの姿は、自然とすこぶる相性がいい。家の中でもフルチンでいたいが、家族がいればそうもいかない。一人暮らし時代の、あのぶーらぶらな生活が懐かしい...

3. 自然学は、やめられまへんなぁ...
天文学がまだ占星術の域を脱せず、ピュタゴラス教団が無理数の存在を隠蔽していた時代、科学的な知的探求は「自然哲学」と呼ばれた。「科学」という用語が広く認知されるようになったのは十七世紀頃、科学革命の時代になってからである。
アリストテレスは、「自然学」という大作を成立させ、形而上学を第一の哲学、自然学を第二の哲学とした。彼の運動論は、「存在」という観念的な上位概念から発しており、実際、物質的存在を強烈に印象づける物理量が「重力」ってやつだ。命の重さを問うたところで、人間は明確な重さの尺度を持ち合わせていない。ひたすら自己存在の重さをアピールし、女性は天空の聖母に憧れて体重計の御前で存在の軽さを演じる。人間ってやつは、なにごとにも存在を意識した途端に、その存在意義を求めてやまない。そして、精神という得体の知れない存在を、形而の上に位置づけるのである。人間の存在が自然界の合目的に適っているか?って、そんなことは知らんよ。
そういえば、ある作家が、こんなことを言ったとか、言わなかったとか...
さて、諸君は自然哲学者と宗教家との違いをご存知だろうか。自然哲学者とは、そこに存在しない黒猫を探すために真っ暗な部屋を覗き、真理が見つからないと嘆いては、弁証法級の屁理屈を並べて自己満足に浸る連中。宗教家とは、そこに存在しない黒猫を探すために真っ暗な部屋を覗き、それを見つけたと豪語しては、信じる者は救われると吹聴して回る連中... と。
ちなみに、「信じる者」と書いて「儲かる」となる。自然学にせよ、信仰にせよ、やめられまへんなぁ...

「満足は、自然の与える富である。贅沢は、人間の与える貧困である。」... ソクラテス

「自然によってつくられた、人間と野獣との違いよりもはるかに大きな違いが、教育というものによって、人間と人間との間にできるものである。」... ジョン・アダムズ

「すべては自然が書いた偉大な書物を学ぶことから生まれる。人間が造る物は、すでにその偉大な書物の中に書かれている。」... アントニ・ガウディ