2021-09-26

自動車という概念が曖昧になっていく...

Crown Athlete から Crown RS Advance へ王冠の引継ぎを終えた... まではいいが、一通り使えるようにするのに半日がかり!
ドライブレコーダに、CarPlay に、クルージングに、インナーミラーに、パノラマビューに... 自動車という概念が曖昧になっていく。なぁ~に、心配はいらない。仮想化社会では、自由意志ですら曖昧なのだから...

1. いきなり、ドライブレコーダが作動しない!しかし、モノはまぁまぁ...
いきなり、クラウンファーストコールが繋がらなかったが、その呪いか?
モノは、Carmate d'Action 360S DC5001。相性のいい機種が分からなかったので、ディーラ任せ。30 分ほど悩んだ挙げ句、SD カードをフォーマットしたら、すんなり動いた。まさか、特殊フォーマット?いや、ごくたまにフォーマットをしくじって出荷されるメモリを見かけるが、その類いであろう。そういえば、フロッピーディスクの時代は、まずフォーマットするのが当たり前であった...
本体へのアクセスは、取説には、スマホで WiFi 経由か、本体を取り外してパソコンと USB で直接つなぐか、二つのパターンが記載されている。まさか!SD カードを引っこ抜いて直接パソコンで読めない?いや、普通に読める。なにが普通かは知らんが。しかも、.mov 形式のファイルで、メーカ提供の専用ソフトに頼るまでもない。ファイル構成も覗けば分かる。当たり前すぎて、取説に記載するまでもないってことか...
本体の設定にスマホを使うまではいいが、WiFi 転送に時間がかかるし、SD カードを持ち出して直接読む方が実用的だろう。
モノ自体は、なかなか。ドライブレコーダとしてだけでなく、アクションカメラや駐車監視機能もあって、しばらく遊べそう。ただ、標準で 32GB のメモリをつけてくれたが、ちと寂しい。128GB は欲しい...

2. うっかり通知メールでビックリ!
年寄りを乗せたままエアコンをつけっぱなしで薬局に立ち寄ると、「お車への操作忘れなどを検知いたしました!」というメールが送信されてきた。

  ----
下記日時にお車への操作忘れなどを検知いたしました。
検知日時:2021/xx/xx xx:xx:xx
ナンバー *** * ****
クラウンの検知状態
 ドア:閉
◆ドアロック:アンロック
◆パワーウィンドウ:開
 ハザードランプ:消灯
 ヘッドランプ:消灯
 車幅灯:消灯
  ----

スマホの「MyTOYOTA」アプリから通知設定ができ、セキュリティ状況がリアルタイムでモニタできる。但し、T-Connect との連携が必要。
モニタ項目は、こんな感じ...

  • 車の現在位置, 走行可能距離, ガソリン残量, 燃費, ドライブ診断
  • セキュリティ... ドアのロック, ドアの開閉状態, パワーウィンドウ, ハザードランプ, ヘッドランプ, 車幅灯, ボンネット(閉じてます), キー(車外にあります), オートアラーム(作動中), 侵入センサ(作動中)
  • ヘルスチェック... 警告灯, 電子キーの電池残量, エンジンオイルの量, ブレーキオイルの量
  • Toyota Safety Sence の状態... 自動ブレーキ, 車線はみ出し, 自動ハイビーム, 追従ドライブ支援機能

3. クラウンのナビシステムに、ようやく Apple CarPlay/Android Auto が搭載!
Athlete のナビシステムは時代遅れ感があったが、RS Advance はそうでもない。ディスプレイの横幅が広くなったのがいい。いや、Athlete の縦配置が、横配置になっただけか。左右の配置は入れ替えられるけど。どうせならマップなどを全面表示できるようにすればいいのに...
Toyota SmartDeviceLink も軽く試してみたが、うん~微妙...

さて、期待していた CarPlay だが、YouTube のような動画系アプリが対応していない。運転の支障になるからであろう。iPhone 側で YouTube を再生すれば音楽は聴けるけど、うん~...
実は、車内の音空間に YouTube の自動再生機能を期待していた。
ちなみに、関東地方には、J-WAVE という音楽垂れ流しの FM 局があり重宝した時代もあったが、九州にそんなものはない。
YouTube はというと、例えば、"you raise me up" といったキーワードで検索すれば、関連曲を勝手に垂れ流してくれるし、選曲の精度もまぁまぁ。今、ハマっているキーワードは、Celtic Woman に、The 12 Tenors に、The Piano Guys に... そして、Peter Bence & Peter Buka の魅惑的な着想に翻弄され、Simply Three にシンプルに生きようという意欲を掻き立てられ、裸足で熱唱する Adele に生きる力を注入され... こうした音空間はドライブ環境にもってこい!
尚、音楽以外のジャンルに興味はないし、広告は、AdBlock!

運転支援という観点から眺めると、画像系はやや縛られ感ありだが、自動運転レベルが上がれば、解消されていくだろう。
セキュリティ面やメンテナンスの側面から眺めると、拡張性を感じさせる。
しかし、なんでもスマホでコントロールできるという流れは、どうであろう。どちらがコントロールされているのやら?もはや、自動車という概念もぶっ飛びそう... 自動車免許証という概念も... 自動車メーカという概念も... そして、総合的な知識がなければ息苦しくなっていきそうな... サポートする側も、される側も...

2021-09-19

王冠の引継ぎ... 納車ルームで納車式!?

いつかはクラウン... と謳われた看板車も、あっという間に売れなくなったらしい。福岡ではよく見かけるけど...
SUV へ移行とも噂されるが、生産終了と聞けば、なんとなく縁を感じる。25年前になろうか、MR2 の生産終了が報じられてディーラに駆け込んだ記憶が蘇る。MR2 は名車であった。実に名車であった。


おいらは、クラウンに執着しているわけではない。そもそもセダンが好きなわけでもなく、介護用に妥協しているだけのこと。本当はロードスターが欲しいのだけど、そうもいかない。
ただ、この手の車で FR がなくなっていくのは、ちと寂しい。確かに、セダンに FR レイアウトは不向きかもしれん。プロペラシャフトがエンジンから後輪へ突き抜けるので、後部座席の中央部が盛り上がり、足元の空間を狭める。
だからといって、FF 化すればカムリとかぶる。レクサスとの共存も難しいのだろうが、おいらはデザインでクラウンを選ぶ。ブランド価値に興味はないし、庶民カーらしく割引の相談もしやすい。
とはいえ、アクアやらヤリスやら、似たような車種をたくさん生み出しているではないか。売れないからといってスポーツカーを作らなければ、真の車好きが離れていく。それで、86 の復活?いや、BRZ だ。
どうせ受注生産だし、生産効率性でそんなに足枷になるのだろうか。人気を博す必要があるとも思えんが、この多様化の時代に...


さて、レクサスには納車式なるものがあると聞く。庶民化したクラウンにそんなものはないが、付き合いの長いディーラが改装され、納車ルームなるものができたらしい。そこで、Crown Athlete から Crown RS Advance へ、王冠の引継ぎといこう。
ちなみに、Athlete は、購入した翌日に、年寄りがウンコ漏らし、新車の香りが台無しであった。後部座席の座り心地が、よほど良かったと見える。RS Advance は、皮シートでさらに心地よさそうなので、要警戒!



1. いきなり、呪われたか?
いきなり、クラウンファーストコールとやらが繋がらない。クラウンオーナーをお迎えするために何か喋ってくれるらしいが、接続をやり直してください!って。しかも、エンジンボタンを押す度にメッセージが表示され、鬱陶しい!
DCM で通信しているが、コールセンターが混んでいるのか?システムがダウンしているのか?どうでもええから、こいつを黙らせてくれぃ!
とりあえず持ち帰って、CarPlay やドライブレコーダなどを設定していると、夜七時頃、突然喋りだした。設定に夢中で何を喋ったかは、記憶にごじゃいましぇん!
それにしても、接続できないことを想定していない、実に気の利いた、実に余計な演出であった。営業マンとは、20年来の付き合いだが、二人して笑うしかない...


2. ネアンデルタール人には、他の車は運転できましぇん!
運転支援システムからの情報が多く、頭はすでに Kernel Panic !
ただ、人間ってやつは贅沢なもので、すぐに慣れちまい、逆に頼りきってしまう。もう、他の車は怖くて運転できそうにない。自動運転レベルが、3 以上にもなると、おそらく自動車という概念までもぶっ飛んでしまうのだろう。
しかし、人間ってやつは、危険を察知できるから進化してきたのであって、それがなくなると、どうなるのだろう。なぁ~に、心配はいらない。別の危険をこしらえ、新たなリスクを生み出すだけのこと...


・まず、サイドブレーキがない!
いや、あるにはあるのだけど、シフトレバーをパーキングに入れたら自動でかかる。シフトレバーの側に電子式ボタンがあって、手動でブレーキホールドができる。電動パーキングブレーキと呼ぶらしい。
ちなみに、ブレーキとアクセルを踏み間違えるといった事故をよく耳にするようになったが、人間工学的に左足の適切なポジションが右足の動きを先導するところがある。クラッチ操作が当たり前の時代に聞かれなかったのは、そのためかと。いや、間違ってアクセルを踏んでも、クラッチの保険付きだったという見方もできるか。
さらにちなみに、パソコンでキーボードの打ち間違いが多い時は姿勢が悪いせいで、けして、アルコールのせいではない!なので、オフィスチェアにバケットシートは理に適っていると思う...


・ヘッドアップ・ディスプレイは、もはやゲーム感覚!
フロントガラスに、速度計や車線からのはみ出し警告、さらに制限速度などの道路標識をカメラで認識して表示してくれる。慣れてくると、もっと派手なに情報が欲しくなり、コックピット気分を求めてしまう。


・デジタルインナーミラーは、ちょいと見え過ぎ感があり!
バックミラーに後方カメラの画像情報を表示し、明るさの調整もでき、後方視界が広がる。雨の日は、ちょいとカメラが曇る場合があるが、すぐに解消されるのは、曇り止めの機能でもあるのだろうか。ただ、後ろの車が近くに見えて、やや煽られ感あり。ズーム機能もあって一番遠くに設定しているが、それでも...
ちなみに、バックミラーは自動車の後方を見るためだけでなく、実は、後部座席の年寄りの状況を確認する意味もあったが、この際、年寄りから解放してくれる介護者支援機能としておこう...


・パノラマビューモニターは、下界を見下ろし気分!
周囲のカメラ画像を合成して、上空から自動車を見下ろした映像を作り出している。駐車場の停車位置や、レーンの左右どちらかに寄っているかなどの情報が役に立つ。
見通しの悪い交差点では、前方視界を広角に映し出し、恐る恐る頭を出しながら左右の安全確認をするといった手間がいらない。
ただ、オートモードにしていると、停車するたびに機能が作動し、信号待ちで前方画像に切り替わるのが鬱陶しい。


・パドルシフトは、いらないと思っていたが...
パドルシフトは、スポーツモード時しか作動しないと思っていたが、通常のドライブモードでも作動してくれる。オートマチック車で、ずっと気になっていたのがシフトダウンである。例えば、高速道路から降りてきた時にエンジンブレーキの効きが悪い。これを、手動でやれるのはありがたい。


・バック中に障害物を検知して勝手に停止する、まではいいが...
一旦、障害物を検知して停止すると、その解除に遅延がある場合がある。目視で安全確認し、さらにバックしようとするとアクセルが効かず、つい強く踏んでしまいそう。焦らず、ゆっくりやれば解除されるが、知らないと、これ以上バックできないと思い込んでしまう。
そういえば、時々スーパーの駐車場で頭を出したまま駐車している高級車を見かける。他の車がひっかけそうになったり、歩行者がぶつかりそうになったり。何かを検知して、これ以上バックできないと思って、そのまま放置しているのかもしれない。
ちなみに、自宅の駐車場でバックすると、よく人体を検知したと警告される。ちょいと伸びきった雑草にでも反応しているのか?誰もいないはずだが、いや、幽霊でも立っているのか。日本の幽霊は足がないと聞くが...


・やたらと警告音あり!オオカミ少年症候群になりそう...
BSM(ブラインド・スポット・モニタ)のような機能は、いまや当たり前のように付いている。そういえば、他の車でバックミラーにオレンジランプが点灯するのを見かけてはなんだろうと思っていたが、こいつかぁ...
慣れない警告音では、信号待ちで前の車に続いて停車していると、ナビ操作をしていたら先行車発進のお知らせアラームでドキッ!
レーンのはみ出し警告などでアラームが鳴るのはいいが、あまり多いのはどうであろう...


3. スマートキーに未だ違和感あり!
ずっと前から思っていることだが、おいらは、スマートキーに違和感をもつネアンデルタール人だ。
まず、せっかくロックしたのに、年寄りがドアノブを握って確認しようとする。キーを持っている運転手が近くにいると、解除されるっちゅうの...
同じ原理で、持ち主がロックして離れようとした時に、こっそり車の影から忍び寄ってドアノブを握れば... なんとも恐ろしい!
また、自宅の二階からスマートキーのロック解除ボタンを試しに押すと、ベランダから下を覗いたらロックが解除された。なんとも恐ろしい!
一昔前の感覚では、玄関先に車のキーを置く家をよく見かけたが、駐車場が近くにあると、キーの意味をなさない。
まさか!とは思うが、電波中継器を置くだけで買い物などで遠くに離れていたとしても、ロックが解除できたりして。電波ってやつは、その物理特性上、増幅器を噛ませば、いくらでも飛ばせる。地球の裏側だって。このデジタル時代に、そのぐらいのセキュリティ対策はやってくれているだろうけど、なんとも恐ろしい!
さすがに、スマートキーが車内にないとエンジンはかからないが、中継器をうまく設置して、電波を車内から飛ばしているように偽装することもできそうな。なんとも恐ろしい!
利便性ってやつは、構造的な仕組みを理解した上で利用しなければ仇となる、諸刃の剣か...

2021-09-12

自動車ナンバーは安全素数... 人生ロードは割り切れない!

希望ナンバー制度を利用して、名前の語呂合わせで番号を選んできた。それは、テトラクテュスにあやかった数で縁起がええ。
しかし、ちと目立つ。おいらは、人見知りの激しい恥ずかしがり屋なのだ。周りは信じてくれないけど。車の買い替えにあたり、ナンバーを変えることに...


では、どんな数にするか。ちょいと控え目でエレガントな数といえば、素数あたりはどうか。素数とは、自分自身以外の数では割れない数を言う。人生という長い道のりでは、割り切れない事ばかり。
そこで、暗号理論に「安全素数」という概念がある。安全運転に掛けて... ダジャレ癖は、もはや老害よ!


暗号アルゴリズムの基本的な考え方は、データを素数の積で表記して符号化する。それは、因数分解に用いる素数を見つけることが困難であることを利用している。素数が暗号キーになるという寸法よ。
例えば、インターネットで普及した RSA 暗号は、桁数の大きい合成数の素因数分解が困難であることを拠り所にしている。困難といっても、不可能ではない。桁数が大きいほど困難になるわけだが、RSA 暗号は時代とともに桁数を増やし、いまや 300 桁を超え、スーパーコンピュータでも解読に一億年かかるとも言われている。この安全神話も、量子コンピュータの登場で崩壊しつつあるけど...


素数が無限に存在することは、「ユークリッド原論」にエレガントな証明が記される。中でも、とびっきり解読が難しいとされるのが、「安全素数」ってヤツだ。それは、ある数 p と 2p + 1 が共に素数の時、2p + 1 を言う。ちなみに、p の方はソフィー・ジェルマン素数と呼ばれ、ガウスが数学の才に惚れ込んだとされる女性の名を掲げている。実際のところ何に惚れ込んだかは知らんが...
それはともかく、自動車ナンバーに登録できる数は、たかだか 4 桁。これを安全と呼ぶにはおこがましいけど...


さて、どの安全素数にするか。登録可能な選択肢は、115個もある。とびっきりのとびっきり、スーパー素数か。偉大な数学者にあやかってオイラー素数か。ガウスが惚れ込んだソフィーか。ハッピー数ってのもある。
いや、ここは人類の最も偉大な感性に委ねるとしよう。そう、気まぐれってやつに。安全素数に気まぐれを掛ければ、永遠に解読不可能となろう...

2021-09-05

"アート・オブ・アジャイルデベロップメント" James Shore, Shane Warden 著

オライリー君のシリーズで、つい手を出してしまうヤツがある。アート・シリーズがそれだ。技術に芸術を見、取り組みは泥臭くても成果物は美しくありたい。そんなことを、ぼんやりと考えながら...
しかし、芸術の道は険しい。芸術的に生きることは、さらに難しい...


さて、ソフトウェア開発でよく耳にする「アジャイル」という言葉。おいらは、こいつをマネジメント用語と解している。ソフトウェアに特化したものではなく、あらゆる開発現場で参考にできると。ちなみに、おいらはプログラマでもなければ、ソフトウェア業界の人間でもない。
アジャイルを実践する!と声高にアピールする人を見かけるが、本当に実践している人たちは、そのような用語をあまり使っていないように見える。自然体でいるような。オブジェクト指向という用語にも、似たような感覚が見て取れる。無意識に実践しているような。アジャイルチームの特徴は、自己組織性にあるという。自主的で自立的であれば、用語に振り回されることはないだろう。ましてや流行語に...


「『アジャイルになる』というのは何を意味するのか?この質問の答えは、思った以上に複雑だ。アジャイル開発は特定のプロセスに従えばよいというものではない。アジャイル手法を実践しているチームというものはない。そういうものじゃないんだ。アジャイル開発とは理念だ。ソフトウェア開発についての考え方なんだ。」


副題には、「組織を成功に導くエクストリームプログラミング」とある。ここでは、アジャイル開発における手法の一つとして、XP(エクストリームプログラミング)を中心の据えている。それは、短期間で頻繁にリリースすることを推奨するもので、具体的には、リファクタリング、コードレビュー、ペアプログラミングといった手法が紹介される。
ただ、新しい文化を取り入れるには時間がかかる。数ヶ月ぐらいの覚悟がいる。それでも取り入れる価値があるかどうか。プロマネは、いつもそんなことを考えながら仕事をしている。改善においては、貪欲でありたいと。その道のメンターがいるとありがたいが、現実には難しいので、自らメンターを演じようと...
そして、アジャイル文化は、極めて民主主義的で、自由精神の体現にも見えてくる。ファシズムの時代には、民主主義を統一を欠いた社会、自由精神を道徳の退廃と吹聴されたが、現在では民主主義が連呼される。価値観なんてものは、何を転機に逆転するか分からない。
チームの運営では、個性は統一を欠く要因とされがちだが、個性がチームとなった時の能力は計り知れない。なにより仕事をやっている連中が楽しんでやがる。マネジメントで深刻なのは、技術の問題よりも人間の問題だ。そのための第一目標は、やりがいのある仕事を提供すること、そしてプロマネ自身が楽しむこと、顧客も巻き込んで...


「変化が人を不快にするというのはまぎれもない事実だ。XP はチームにとって大きな変化だろう。もしこれまで融通の利かないドキュメント中心のプロセスを使っているなら、XP は形式的でなく、だらしなく見えるだろう。」


1. アジャイルマニフェスト... 価値と原則
アジャイルの価値は、4つ...

  • プロセスやツールよりも、人と人との交流を。
  • 包括的なドキュメントよりも、動作するソフトウェアを。
  • 契約上の交渉よりも、顧客との協調を。
  • 計画に従うよりも、変化への適応を。

これを支える原則は、ざっとこんな感じ...
  • 最優先事項は顧客を満足させること。
  • 実働可能なソフトウェアの納品を頻繁に行う。実働するソフトウェアこそが進捗状況の尺度。
  • 持続できるペースで開発する。
  • 高度な技術と優れた設計への配慮は、アジャイル性を高める。
  • シンプルさが肝心、やらなくていいことはしない。
  • 最高のアーキテクチャ、仕様要求、設計は自己管理能力のあるチームから生まれる。

マネジメント論で耳にタコができるほど聞かされるのが、最優先すべきは顧客の満足度!ここで言う顧客とは、依頼元である。つまり、スポンサー。
しかし、おいらは、顧客という言葉にしばしば疑問を抱く。顧客であるはずの依頼元が、本当の意味で要求を理解していないことがよくある。ユーザの立場になって逆提案をすれば、要求仕様は自分で書くことに。結局、顧客とは、エンドユーザか。それで依頼元を満足させられれば、同じことだけど。
そして、開発途上で状況が変われば、気も変わる。おいらは、仕様変更の生じない開発プロジェクトに出会ったことがない。アジャイルプロセスでは、変化に対応することで顧客の競争上の優位性を確保するという。
また、実働するソフトウェアを頻繁に提供するということは、必然的にテスト駆動開発(TDD)が重視される。そして、開発メンバーの意欲にも配慮したい。品質を落とすような命令は技術屋の気分を萎えさせる。技術的卓越は重要な動機だ。たゆまぬ鍛錬こそが、道を極めるということを...


2. ドキュメント主義からの脱皮
ドキュメントが重要であるという価値観は、今も変わらない。おいらはネアンデルタール人なのだ。
しかし、だ。ドキュメントは、常に最新版に保守されていなければ使い物にならない。それには手間もかかる。それでも、必要ならやるべき。そこで、本当に必要なドキュメントとは何か?これをずっと問い続けてきた。ドキュメント化することで効率化を図れる部分もあれば、無駄を助長する部分もある。
近年のプログラミング言語は、アセンブラ言語の時代とは違い、コードを見れば何をやっているか、何をやるべきかが分かる。うまく構造化され、綺麗なコードであれば。コードの変更にドキュメントの変更が引きずられるなら、何をやっているのやら。一対一で完全に対応している保証は、どこにもない。ドキュメントが仕様の神様にならなければ、悪魔になるだけのこと...


「ドキュメントという言葉にはいろいろな意味がある。エンドユーザ向けに書かれたマニュアルや、詳細な仕様書、APIとその使い方の説明書を意味することもある。いずれによせ、これらはすべて、コミュニケーションの一つの形だ。それが共通点だ... ドキュメントの量を減らすのにリスクは、もちろんある。ドキュメントを減らすためには、別の形のコミュニケーションに置き換える必要がある。それこそ XP がやっているこなんだ。」

2021-08-29

"KVM 徹底入門" 平初, 森若和雄, 鶴野龍一郎, まえだこうへい 著

KVM(Kernel-base Virtual Machine)とは、文字通り仮想マシンモニタを提供するツールで、物理マシンをハイパーバイザーにすることができる。
その特徴は、Linux のカーネルモジュールとして実装され、x86 系 CPU に搭載される仮想化支援機能(Intel VT や AMD-V)を介してオーバヘッドを軽減する。お馴染みのパッケージ管理コマンド yum で拾えるのもありがたい。
ここでは、コマンドラインユーティリティとして qemu-kvm パッケージが紹介され、QEMU にぶら下がる形が見て取れる。実際、KVM の利用には、QEMU の導入が前提されている。


QEMU といえば、ハードウェアをエミュレートする場面で重宝している。例えば、設計対象となる組込システムでは ARM アーキテクチャによく出くわし、これの動作確認のためのプログラム作成など、いわゆるクロス環境として。CPU だけでなく、USB コントローラや SCSI コントローラなどの周辺回路をエミュレートする場面でも利用している。
ちなみに、つい最近、OS 制作のセミナーでも見かけた。自作 OS を試す場面でも活用でき、これを学生と一緒になってやるのは楽しい。実に楽しい...
QEMUは、ホスト OS に対してゲスト OS を配置し、アプリケーション風に動作させられるところが手軽でいい。ただ、完全にソフトウェアで制御するため、お世辞にも高速とは言えない。ARM 環境を動かすとなると、ある程度の高性能マシンでないと辛い。特に、出先で非力なノート PC でやるには...


近年、CPU に限らず、ハードウェア・アクセラレーションを利用できる GPU も目立つ。逆に、CPU の負担を軽くしようとして GPU の負担が重くなり、表示パフォーマンスが低下したりと、その按配が微妙だったりするけど。
いずれにせよ、ソフトウェアのパフォーマンスを上げるために、ハードウェアで支援するやり方は古くからある。暗号化といった大量な演算を要するチップなど。
とはいえ、おいらの場合、仮想化のための支援回路となると、いまいちイメージできていない。おまけに、使っている対象が物理的にイメージできないと、不安に襲われる性分ときた。そこで、KVM ってヤツはどうなんだろう... というわけである。


本書は、Fedora と Ubuntu への導入事例として書かれているが、両 OS のインストール手順まで掲載される。ここまでやらんでも。なるほど、徹底入門だ!
導入部では、GUI 環境を提供する virt-manager と、コマンドシェル virsh が紹介され、コマンドリファレンスも付録される。
興味深い話題は、KVM のリソース管理機能である。動作モニタのプロセスは、物理的なイメージがしやすい。核となるモジュールは、仮想マシン制御用の抽象化ライブラリ libvirt と、そのデーモン libvirtd。そう、Xen や VMware Workstation などの導入でも見かけるやつだ。こいつを手なづけるには、ライブラリが提供する API 群をいかに使いこなすか、にかかっている...
KVM のライブマイグレーション機能も興味深い。マイグレーションとは、ホスト OS で稼働中の仮想マシンを別のホスト OS に移行させることだが、その際、サービスやサーバを停止せずに移行させるのがライブマイグレーションってやつ。まさに、Linux カーネルらしい仕掛けである...


ところで、仮想化とはなんであろう。その目的とはなんであろう。少なくとも、貧弱なリソースが豊富になった気分にさせてくれる。物の価値を代替するお金も物量の仮想化であり、貧しい心を豊かになった気分にさせてくれる。仮想化とは、価値の代替か?気分の問題か?いや、それだけではあるまい。
実体がなければ、想像は無限に膨らむし、想像力そのものが仮想化のプロセス。精神という得体の知れない実体は、仮想空間とすこぶる相性がよく、精神そのものが仮想的な存在と言えよう。人間社会とは、まさに仮想社会における生存競争の世界だ。集団は実体のない情報に振り回され、いつも右往左往。精神が仮想的な存在だとすれば、仮想化によって人間は人間を取り戻しているだろうか?仮想化によって、自らの思考回路を活性化させているだろうか?仮想化によって、合理的に生きているだろうか?
コンピューティングにおける仮想化は、想像力を膨らまし、思考アルゴリズムを豊かにする、実に素晴らしい概念だ。しかしながら、仮想化技術もまた他の技術と同様、コモディティ化の流れに飲み込まれていく。どんなに優れた概念を編み出したところで、その概念の奴隷にならず、自分らしく生きることは難しい...

2021-08-22

"宇宙をプログラムする宇宙" Seth Lloyd 著

宇宙を論じる場では、古くから重力が主役を演じてきたが、E=mc2 の呪文とともに、エネルギーが主役に躍り出た。ここでは、エネルギーと肩を並べるように情報が主役を演じて魅せる。
it is bit... それはビットから... IT や ICT もビットから...
ここで、ジョークを一つ。但し、数字は二進数表記。
「10種類の人間がいる。ニ進数を知る人間と、知らない人間だ。」


宇宙とは何か?宇宙は何のために存在するのか?量子コンピュータ研究の第一人者セス・ロイドが熱く語ってくれる。それは、計算をするためだと。では、何を計算しているのか?それは宇宙そのもの、すなわち、自分自身の振る舞いを。量子情報理論によると、宇宙とは巨大な量子コンピュータであり、宇宙は自らを計算によって作り出しているという。それは、自己増殖システムか。自己言及によって進化していく様に、不完全性定理や不確定性原理との相性が見て取れる。チューリングが唱えた計算不可能性にしても自己言及に発する。人間が進化してきたのは、自己言及の名手だからこそ。進化とは、複雑化し、カオス化していくことなのか...
尚、水谷淳訳版(ハヤカワ・ポピュラー・サイエンス)を手に取る。


宇宙という巨大な世界を知ろうとすれば、量子という微小な世界を探ろうとする。木を見て森を見ず... という皮肉めいた格言があるが、森を見て木を見ず... では同じこと。
とはいえ、量子の世界は狂ってやがる。猫が生きていて、かつ死んでいる、といった荒唐無稽なことが理屈の上で起こっちまう。宇宙には悪魔が棲みついているのか。マクスウェルの悪魔にせよ、ラプラスの悪魔にせよ、超現象はすべて悪魔のしわざか?


昔から神のように崇められる物理法則に、エネルギー保存則ってやつがある。宇宙の誕生がビッグバンにあるとすれば、無から生じたことになるが、それで何が保存されているというのか。誕生する前からなんらかの情報が浮遊していて、その情報がエネルギーを持っていたとでもいうのか。宇宙で生じる物理現象は、あらかじめ仕込まれた情報によって、突然、露わになるものなのか。
うん~... そもそも、情報ってなんだ???
例えば、有名な二重スリット実験では、電子を1個発射させると、それぞれのスリットに同じ干渉縞が生じる。これが波動性ってやつだが、電子が粒子ならば、二つのスリットを同時に通り抜けるはずがない。これも悪魔のしわざか?
量子力学には、干渉性の消失という概念がある。デコヒーレンスと呼ばれるヤツだ。それは、周囲の環境が量子系の情報を得ることで、波動性を壊すプロセスにも見える。情報を抜き取ることによって、片方のスリットに存在する電子を無にできるというのか?
まったく、情報に操られた現象は悪魔じみている。なるほど、人間社会に蔓延る情報は、人間を動かすエネルギーを持っている。どうりで、人間は悪魔じみている...


1. 計算とは何か
宇宙が、自らの振る舞いを計算しているとしたら、その住民も計算しながら生きているということか。ただ、自己言及プロセスは、自分が何を計算しているかを認知できないことにある。人間だって、なんらかの損得勘定や見返りを計算しながら生きている、ってところまでは認知できるが、それ以上のこととなると、形而上学に放り込まれる。
宇宙が、量子の集合体で構成される巨大な量子コンピュータだとすれば、人間の脳だって量子の塊であり、ある種の量子コンピュータと言えよう。量子数の規模を比べると、人間に意思があるぐらいだから、宇宙には、もっと、ずっと高尚な意思があっても不思議はない。
計算とは、意思のことなのか?単純な法則が複雑系へ向かうのは、何らかの意思が働いているということなのか?計算するとは、なんらかの情報を元に量子が運動するということなのか?
ならば、情報とは過去ということになる。計算を重ねていくうちに、そのプロセスのすべてが情報となる。最初は単純な情報でも、過去の蓄積がカオスへ向かわせる。熱力学の第二法則は告げている。エントロピーはただ増大すると。宇宙はエントロピーに引きずられて膨張し、人間は過去に引きずられて生きていくわけよ...


2. 情報の本質と二進数
情報の最小単位はビットで表され、0 か 1 の状態をとる。計算の基本原理は、この状態を保持するか、反転させるか。つまり、すべては二進数で事足りる。十進数で計算するのは人間の都合であって、両手合わせて十本の指がそうさせるのかは知らん。
実際、コンピュータの演算回路は、2 の冪乗で構成される。足し算して桁上りするかしないかは、0 か 1 で示され、人生の分岐点で、進学するか就職するかも、0 か 1 で記述できる。選択肢が複数ある場合は、二択の多重化と捉えれば同じこと。
つまり、コンピュータプログラムの基本構造は、順次処理と分岐処理が主体となる。情報理論の父と呼ばれるシャノンが提示した 2 を底とする対数で記述される定理は、なかなか意味深い。情報と計算の両方の本質を暴いて魅せたのだから...


3. 量子ビットと多宇宙
量子コンピュータが扱うビットは、従来のビットとは、モノが違う。量子ビット(Qubit)と呼ばれるやつだ。
従来のビットは、例えば、トランジスタが保持する一つの状態で、0 か 1 をとる。これを変化させるには、ベース電圧やゲート電圧を制御して、スイッチングさせる。
一方、量子ビットは、光子、電子、クォーク、ニュートリノといった素粒子が持つスピンの状態で、それぞれの相互作用によって、スピンの方向を変えて情報を処理する。これを変化させるには、単に光をあてたりする。つまり、ビットの処理速度は光速なみに高速というわけだ。一般相対性理論によると、これ以上の反応速度はない。
しかも、スピンは別の状態を同時に持つことができる。こうした特性は、超高速な多重並列処理の可能性を匂わせる。まさに夢の演算素子というわけだ。膨大な計算量を要する因数分解だって、状態を分割して同時に計算すれば、暗号解読もお茶の子さいさい。猫が生きている状態と、死んでいる状態の両方を同時にシミュレーションすることだって...
そして、宇宙はユニバースからマルチバースへ。もはや、自分探しの旅なんてやってる場合じゃない。多宇宙で生きている別の自分を探さねば、いや、お前はすでに死んでいる...


4. ランダム性と有効複雑性
計算された結果は、消去されるか、後の計算のためにフィードバックされるか、それが情報の運命。計算や分岐の積み重ねによって世界が成り立っているとしたら、今の世界は確率によって決定されたとも言えよう。サルがタイプした文字列と人間がタイプした文章の違いは何であろう。サルがタイプした文字列が、詩になる確率は?途方もなく小さな確率であろうが、ゼロとは言えまい。しかし、人類という知的生命体が誕生した確率だって似たようなもの。
ただ、この広大な宇宙空間に地球外生命体が存在するかどうか、しかも、それが知的生命体である確率は?と問えば、かなり高そうな気がする。互いの知的生命体が接触する可能性となると、途方もなく小さな確率になるかもしれんが...
物質の存在や存在の仕方を問えば、ランダム性という概念に遭遇する。ランダム性は複雑系とすこぶる相性がいい。宇宙における計算や分岐の方向は、ランダムに行われているのだろうか?それとも、なんらかの意思が働いているのだろうか?
そもそも、ランダムってなんだ?完全なランダムって、どんなランダム?なんらかの法則でランダムが記述できるとすれば、それはランダムなのか?
宇宙空間に存在する物質は一様に分布していない。銀河団のような塊が点在する。しかも、それぞれの重力法則に従って形を整えている。ランダムってやつは無秩序なのか?それとも、弱い秩序があるのか?
そこで、「有効複雑性」という概念が飛び出す。有効な複雑ってなんだ?手に負える程度に複雑ってことか?人間社会を機能させるのに、完全なランダムは必要ない。ランダムっぽく見えるだけで、かなり役に立つ。その意味では、極めて主観的である。客観性を重んじる数学が、主観確率と同居できるのも頷ける。
その証拠に、デジタルシステムの検証の場で、疑似ランダム生成器が幅を利かせている。それは、軽い秩序か?人生のコントロールには軽いアンダーステアがいい...
それにしても、確率には救われるよ。こんな天の邪鬼な性格も、どんな現象も確率のせいにすればいい。神はサイコロを振らない!と豪語した大科学者がいたが、神ほどのギャンブル好きも知らんよ...

2021-08-15

"新・数学の学び方" 小平邦彦 編

数学は楽しい!おいらは数学の落ちこぼれ。でも楽しい!
酒を酌み交わしながらオイラーの公式について語り始めると、つい夜を明かしちまう。数学ってやつは厳密に理解しようとすると、これほど難解な学問もないが、分かった気になる分にはそれほど難しくはない。
いま、顔を合わせるたびに、けしかけてくる大学の先生がいる。薄っすらと笑みを浮かべ、これを読んでみろ!あれを読んでみろ!と、チェシャ猫のごとく。専門家がド素人を論理でねじ伏せようってかぁ...
いや、数学ってやつは、感覚やイメージで嗜むものらしい。五感を総動員して、絵画や音楽を嗜むように。数学が他のどの分野よりも厳密な論理で組み立てられているのは確かだ。しかし、それだけでは味気ない。
そういえば、ルイス・キャロルも数学の先生だっけ。少女に子供心をいつまでも忘れぬようにと書いた物語が、あの「不思議の国のアリス」。だから、薄っすら笑みを?気色わるぅ...


ここでは、13人もの先生方が数学の具体的な事例を用いながら、その学び方を伝授してくれる。寄稿者の面々は、小平邦彦、深谷賢治、斎藤毅、河東泰之、宮岡洋一、小林俊行、小松彦三郎、飯高茂、岩堀長慶、田村一郎、服部晶夫、河田敬義、藤田宏。
学び方は、十人十色!数学の先生方も一つしかない表記法に対して、実に多様な考え方や理解の仕方を提示してくれる。数学は、けして無味乾燥な学問ではないってことを。
ただ、13人もの御歴々が一斉に語り始めると、話題が豊富すぎてゲロを吐きそう。ざっと拾ってみても、πが無理数であることの証明に始まり、代数幾何学、コホモロジー、微分方程式、複素関数論、微分位相幾何学,.. さらにはガウスの楕円関数論まで飛び出す。帰納的な思考を語るには、やはりガウスは欠かせない。
数学者らしからぬ、暗記を勧める先生までもいる。理解が暗記の対極のように考えられがちだが、そう単純ではないようである。どうしても理解できなければ、暗記でも何でもやってみるさ。フランシス・ベーコンとソクラテスの言葉を掛けて、疑問のあり方を問い掛ける先生もいる。
「知は力なり vs 無知の知 vs 疑問を育てる」
疑問は言語化を育てる。正しく問わなければ、正しく答えられない...


学ぶとは、どういうことであろう... 理解するとは、どういうことであろう...
本書を読んでいると、そんなことを考えてしまう。人は何かを手本にしながら、考え方のヒントを得る。幼児が大人の真似をして、繰り返し片言を喋ることによって言葉を憶えるように。ダ・ヴィンチも、ミケランジェロも、ラファエロも、古代芸術を模写しながら独創性を磨いた。けして目先の技法に囚われず、猿真似で終わらぬよう。独創性とは、模倣の先に見えてくるものやもしれん...
「'学ぶ' は 'まねぶ' であって、その第一義は 'まねること' である。」


しかしながら、ド素人が専門家の学び方を真似ても、うまくはいかない。もともと数学のセンスがあるから、この道を選んだのであろうし、数学に対する姿勢も違えば、遊び心の奥行きも違う。
とはいえ、真似てみる以外に何ができよう。数学のセンスがなくても、我武者羅にやっているうちに、突然視界が開けることだってある。理解するまでのプロセスこそが数学の醍醐味!とすれば、落ちこぼれも少しは救われる。自分の思考回路は自分にしか分からない。理解するまでの道筋は自分で見つけ出すしかない。おいらには、自分の思考回路もよう分からんけど。ユークリッドの言葉に「幾何学に王道なし!」というのがあるが、ここでは「数学に王道なし!」と励ましてくれる...


ところで、本書の代表を務める小平先生といえば、日本人初のフィールズ賞を受賞した大先生だが、フィールズ賞といえば、昔から違和感を持っていることがある。それは、40歳の年齢制限があること。頭が柔軟でなければ数学で功績を上げることは難しいということだが、だからといって絶対的な年齢で規定するとは。柔軟性を重んじる数学が、実にらしくない。健康寿命が伸びている現代社会では、尚更。
但し、何を学ぶにせよ、子供心をいつまでも忘れぬよう心がけたい。アリスのように...
「数学の持つ鋭い魅力は人に伝えようとしてできるものではない。数学は面白いから面白いのであって、説明する必要など少しもないのである。数学の魅力を伝えようとしていかに数学が世に役立っているかを力説してみても、それではちっとも面白さが分からない。むしろ苦しみが増してしまう...」


たいていの人は、銭勘定に必要な加減乗除を知っていれば十分だと考えるだろう。だが、無味乾燥と酷評される数学が、人間社会でいかに重要な役割を果たしていることか。市場経済は、微分方程式なしでは立ちゆかない。保険会社や金融機関は、数理統計学なしでは立ちゆかない。個人情報を保護する暗号システムは、素因数分解なしでは成り立たない。通信経路やデータ記憶装置では誤り訂正率が問われ、製造ラインでは歩留まりが問われる。心理学や生物学にしても遺伝子工学と結びき、その根底にある量子力学、電磁気学、熱力学といった物理数学は避けられない。最大多数の最大幸福といった政治スローガンまでも確率論に支えられ、いまや数学と無縁でいられる分野を探す方が難しい。物事を観察する上で、数学は実に多様な道具になりうるだけに、それぞれの部門に適合した数学的思考を学ぶだけでも、視野が広がる...


そういえば、おいらにだって、数学が得意だ!と言い張っていた時代があった。定理や証明なんてものは憶えるものではない!必要ならその場で導いてやるさ!などと豪語していた。なので試験では、いつも時間をめいいっぱい使う。高校数学で登場する因数分解は、せいぜい四次方程式まで。これを解くのに法則めいたものはない。ただ数字を感じ取ること。大学の初等教育で、いきなり奈落の底に突き落とされたε-δ論法なんて、丸暗記してどうなるというのよ。素朴な精神をエラトステネスの篩にでもかけようってかぁ...
人生は短い!点数競争なんぞに付き合っている時間はない。なぁ~に... 落ちこぼれの遠吠えよ!
そして、数学から逃れるように工学の道へ進んだのだった。しかし、微分方程式からは、いまだ逃れられずにいる。それでも、解析学で重要な複素数や三角関数の恩恵を知って拒否反応も薄れている。フーリエ変換の凄みを実感しながら、テイラー展開や無限級数の有難味を感じ、πの偉大さを感じつつ。
πが無理数だと知っていても、どんな風に無理数なのかは知らん。知っていることといえば、数直線上で単位円を 0 から一周させると、3 を少し超えるあたりで止まるってことぐらい。πの無理性は、無限級数の親戚の連分数で記述することができる。無限級数ってやつは、近似する上で実に便利な道具だ。求める精度に対して、必要なだけ項数をとればいいのだから。
デジタル社会が論理数学で成り立っているのは確かだけど、それほど厳密とは言えず、そのほとんどが近似法で成り立っている。人間社会で繰り広げられる物理現象は、そのほとんどが連続性に見舞われており、連続的な物理現象をモデル化するのに、微分方程式ほどうってつけの道具はない。幾何学的なアプローチで、漸近線の有難味も合わせて。金融危機や自然災害の類いで不連続なケースもあるけど、境界面を微分方程式でつなぎ合わせていかに実世界に近づけるか。これぞ、微分方程式の役割だと解して励んでいるのだけど、やはり落ちこぼれは落ちこぼれ...

2021-08-08

"タイヒミュラー空間論" 今吉洋一, 谷口雅彦 著

学術研究都市のサロンでブラックコーヒーをやりながら、空間認識なんてものは、存在を意識できるなら誰しも持っているわけで、数学屋さんは、その記述の仕方をルール化しているだけじゃないの... なんて大人気ない発言をしていると、ある大学教授から、この本でも読んでみてよ!とけしかけられた。空間論の教科書的存在らしい。
おいらにとって、空間が多様体であろうが、何次元であろうがどうでもいい。興味があるのは、微分できるかどうか。それは、いかに実世界に対応づけられるかということ。もっといえば、微分可能とは、人間の認識可能!と解している。
それでいて、解析対象の物理現象に対しては、微分方程式を組み立てるまではいいが、解けないのは毎度のこと。数学屋さんにボトルを差し入れしては、気分はいつもハーフボトル!天の邪鬼な空間認識ときたら、まったく救いようがない。
だからといって、数学のド素人を議論でねじ伏せようとする数学の大先生も大人気ない。しかも、満面の笑みを浮かべて... こっちも負けじと笑い飛ばすとしよう...

ところで、空間論なるものに接すると、いつも悩まされることがある。集合論や位相論で出くわす空間のコンパクト化ってなんだ?ある種の有限界のことか。ついでに、被覆空間ってなんだ?閉空間の類いか。いつも閉塞感がつきまとう。
空間を論じるからには、それぞれ距離の概念と結びついているが、ユークリッド空間の距離とは明らかに違う。コンパクト化と言いながら、コンパクトにまとめきれない。リーマン・ロッホの定理を用いれば、複素解析曲面の分類ができることは知っているが、オイラー数でいいじゃん。おいらにとっての空間論なんて、こんなもんよ...、
そして、解析的な思考では、広大な空間を分割して貼り合わせ、局所的にユークリッド空間を割り当てて実世界に近づける。それは、微分可能な領域の貼り合わせ。これを集合の連続体として眺めれば、群論も顔を覗かせる。要するに、ある種の近似法と解している。
微分の概念にしても、永遠に近づこうとするということは、永遠にたどり着けないことを意味する。結局、人間の能力では、真理に近づくことはできても、真理にたどり着くことはできまい。だから、近似法に縋る。いつまでもユークリッド空間に幽閉されたまま。なぁーに、屁理屈屋の独り言よ...
こんな見方からでも、複素数空間を眺めると、リーマン面とやらが薄っすらと見えてくる。それは、まさに一次元複素多様体であり、直観的には二次元平面を双正則写像で貼り合わせたもの。本書も、そんなことを言ってくれるのに救われる。
すると、数学的な厳密性が保てるかどうかの境界面は、微分可能かどうかにかかっていると言えそうな。そして、アルコール濃度で分解可能な空間を貼り合わせ、リアリティを求めてバーへ足が向く...

さて、「タイヒミュラー空間論」という名には、条件反射的に圧倒される。オズヴァルト・タイヒミュラーという数学者はナチズムに熱狂した人物でもあるが、まぁ、それはおいといて、ベルンハルト・リーマンと深くかかわるというから、こいつが難解な書であることは想像に易い。
それは、種数 g によって記述される閉リーマン面をめぐる物語。タイヒミュラー空間とは、どうやら種数によって表記できるリーマン面のことを言うらしい。ということは、リーマン面には種数で表記できないものもあるってことか?と解釈すれば、タイヒミュラー空間はリーマン面よりも親しみやすく感じる。
ちなみに、種数とは、位相幾何学で物体の本質とされる穴の数で、位相幾何学者とはコーヒーカップとドーナツの違いも分からん連中... などと揶揄される、あれだ。

こうして見ると、「同じ」という概念も、なかなか手ごわい。ユークリッド幾何学において第五公準を放棄するだけで、空間の抽象度が格段と上がる。何をもって同じ空間と見なすか?その時の座標系は?変数に何をとるか?座標を局所的にとれば、変数も局所的となる。
本書には、抽象数学でお馴染みの「自己同型」だけでなく、「双正則同値」や「等角同値」といった用語が散りばめられる。微分可能な条件をやや弱めながら、等角写像から擬等角写像を考察したり。「モデュライ空間」という用語も飛び出すが、これも「同じ」という概念の親戚のようなものか。点の集合を領域で貼り合わせて同一視することを「商空間」というらしいが、タイヒミュラー空間の商空間がモデュライ空間であるという。
何をもって同じとするか... ということは、何をもって区別するか... という問題でもある。「ホモトピック」という概念も、こうした思考から生まれたのであろう。

物語の主役は、種数 g ≧ 2 の閉リーマン面...
まず、6g-6 次元で記述される「フリッケ空間」ってやつが紹介され、次いで、双曲幾何を記述するための「ポアンカレ計量」という曲率テンソルや、フリッケ空間を記述する「フェンチェル - ニールセン座標」の導入でリーマン面の空間イメージを膨らませ、これらを予備知識として、6g-6 次元の実数空間で記述される「タイヒミュラーの定理」が論じられる。
これだけでも、満腹だというのに、ここからが本ちゃんときた!「複素解析的に...」と題して...
解析的とは、どういうことか?分割的ということか?のりとはさみによる構成論か?
g ≧ 2 の閉リーマン面を解析的に眺めるには、3g-3 次元の複素数空間が鍵になる。「タイヒミュラー・モデュライ群」と呼ばれる自己同型写像からなる群を考察しながら。このプロセスを理解するには、擬等角写像と正則二次微分が鍵となりそうだ。

また、空間を論じるからには、距離の概念も欠かせない。計量できるからこその距離だが、座標系が変われば距離の風景も変わる。距離ゼロの意味ですら。タイヒミュラー距離が小林双曲距離に一致するとか、ヴェイユ - ピーターソン計量はケーラー計量であるとか... こうした考察は本当に距離を論じているのか?遠くのものが近くに感じたり、近くのものが遠くに感じたり、まるで人間関係に見る距離感...

それにしても、こいつぁ、本当に入門書なのか?外観できるのはありがたいが、厳密に理解するのは、おいらの能力では到底無理!
ただ、数学ってやつは厳密に理解しようとすると、これほど難解な学問もないが、分かった気になる分には、それほど難しくはない。だから、数学の落ちこぼれなのである。おいらの知識は、たいていこんなもんよ。
地球が公転し、自転していることだって、地球が丸いってことすら自分で確かめた知識ではない。学校で習ったから、そう信じているだけで、そう信じていないと馬鹿にされるだけのこと。確実に知っていることといえば、コーヒーカップは食べられないが、ドーナツは食べられるってことぐらい。
なにごとも、分かった気になれるってことが一番の幸せであろう。そこに挫折感を浴びせようものなら、M な性分が救いになる。もはや、ユークリッド空間に存在する自我を満喫するのみ...
それにしても、数学の大先生のボランティア精神には敬服する。授業料も払ってないド素人相手に、ハーフボトルで釣られるなんて...

2021-08-01

"レガシーコード改善ガイド" Michael C. Feathers 著

P. F. ドラッカーは、こんな言葉を遺してくれた...


"If you can't measure it, you can't manage it."
「測定できないものは管理出来ない。」


"measure" を "test" に置き換えれば、まさに本書が意図するところ...
尚、平澤章、越智典子、稲葉信之、田村友彦、小堀真義訳版(ウルシステムズ株式会社)を手に取る。


モノづくりの現場には、科学同様、観察の哲学がある。まずは観ること、そして状態を知ること。状態を正しく見極めなければ、間違った方策を施し、さらに状態を悪化させる。設計開発で身を立てるなら、この状態を知るという検証プロセスからは逃れられない。そして、検証作業の効率化を図り、実績ある資産を蓄積していく。
では、これらの資産を再利用するためには、どのような状態にしておくべきか。ずっと悩まされてきた課題である。本書は、ソフトウェアの視点から大きなヒントを与えてくれる。
ちなみに、おいらはソフトウェア設計者ではない。ハードウェア設計者だ。それでも、アルゴリズムの検証に C 言語系や数値演算言語などを用い、実行コマンドにスクリプト言語を組み合わせ、アーキテクチャをハードウェア記述言語で実装する。設計開発において、プログラミングと無縁でいられる現場を、おいらは知らない。
そして、流用モジュールを政治的に押し付けられることも...


お偉いさんは、神話に取り憑かれる。過去のモジュールを流用すれば、開発期間が大幅に短縮できる... と。しかも、バグリスト付きときた。バグの所在が分かっているのなら、修正してからもってこい!っちゅうの。いや、修正できない!手に負えない!ってことだ。
政治的に押し付けられる流用モジュールは、たいていレガシーコードだ。モジュールが放つ異臭は、人間関係までも胡散臭くさせる。プロジェクトの健全性を保つなら、すぐにポイ!
しかしながら、現場では、簡単にポイ!できないケースが多い。理解不能コードの変更を外部に依頼すれば、責任の外注となる。


ソフトウェア業界には、もっと悲惨な事例で溢れているようで、本書に励まされる。マイケル・C・フェザーズは、何年もの間、様々なチームで深刻なコードを克服する手伝いをしているうちに、ある定義にたどり着いたという。
「レガシーコードとは、単にテストのないコードです!」
なかなか挑発的な定義だ。ソースコードがきれいで、きちんと構造化されているだけでは不十分... オブジェクト指向が採用され、きちんとカプセル化しているなんてことは核心ではない... というのである。
まず、メソッドにテストがなければ、テストを書く。これを習慣づけると、テストがコミュニケーション手段になり、テストを見るだけで、メソッドに何が期待できるかを感じ取れようになる。クラスをテスト可能にするだけでコード品質が向上する。ライブラリを過信して乱用するのは危険である。そして、コード改善の中心は依存関係の排除にある... と。


おいらは、長い間、ドキュメント化が重要な要素だと考えてきた。その考えが変わったわけではないが、きちんとドキュメント化されていたとしても、ソースコードと完全に対応している保証はどこにもない。変更作業でコードとドキュメントで二度手間になるのでは、何をやっているのやら。
コードが美しいに越したことはない。が、それでバグがないという保証にはならない。何事も整理整頓、環境美化が作業効率を上げ、合理性を高めることは確かだが、何か足りない。
それは、「より現実に...」という観点か。
力学では物体が運動している状態こそが現実であり、ソフトウェアでは振る舞いこそが現実となる。モジュール設計の現場で最もプリミティブな現実は、テストぐるみの動作状態ということになろうか。なるほど、テストが書けるか書けないかが、ポイ!するかどうかの判断基準になりそうだ。
システム設計へのアプローチにおいて、「ドメイン駆動設計」という考え方にも共感できるが、本書が提唱する「テスト駆動設計」という考え方もなかなか。そして、設計の核心をつく、このフレーズとともに...
「ネーミングは設計の中心である。優れたネーミングはシステムの理解を助け、作業を容易にする。しかし、貧弱なネーミングはシステムの理解を妨げ、後でシステムを扱うプログラマに辛い日々を送らせる。」


プログラムの基本構造は、順次処理、分岐処理、反復処理に、あとは、call ぐらいでだいたい説明がつく。
但し、構造化の掟では、goto 文のような、どこへでも飛べる裏技は御法度!
つまり、プリミティブなレベルでは、すこぶる単純な構造で、関数の呼び出しでほぼ抽象化できる。この構成単位となる関数を一つの機能モジュールとして眺めれば、ハードウェアでも同じこと。
となれば、関数レベルで機械的にテストルーチンを組み込むことは可能かもしれない。本書の事例で見る、関数単位でラップしてコードを保護しながらテストを埋め込んでいくといった具合に。ここでは、「テストハーネス」と呼んでいる。
機械的にテストを埋め込む法則が編み出せれば... いや、コーディングルールをテスト仕様にするか... いやいや、言語仕様そのものがそうなっていくのか...
それにしても、ソフトウェア業界の商売戦略は、お見事!一番コストのかかるテストを、一般ユーザにやらせているのだから。β版などと称して。オタクの姑チェックで成り立っている業界というわけか...


おいらは検証環境に対して、それなりに思い入れがある。というのも、設計開発の現場で検証環境を構築をすることが多い。設計作業は若手に任せて。検証プロセスは、経験や勘所も重要で、マネジメントと直結するところもある。つまり、歳のせいか...
よく耳にするのは、プロマネなんだから、コーディングは部下にやらせろ!というお偉いさんの声。しかし、おいらは現場から離れたくないので、強く反発する。ただ、検証環境の構築はおもろいが、検証作業そのものは大っ嫌い!だから、よく自動化に突っ走って地雷を踏む...
実際にテストコードを埋め込もうとすると、モジュールの内部と外部のどちらに持たせるか、いつも悩ましい。余計なモジュールを作りたくないので、なるべく内部に持たせたいが、助長したモジュールはハードウェアの実装では躊躇する。
ただ、リソースの贅沢な昨今、そんな配慮からも解放されつつある。昔は、故障検出率を考慮してモジュールの作り込みにも気を配ったものだが、いまや自動化されて。その分、要求仕様が膨れ上がって仕事量は減らないけど。いや、増えたか...
カバレッジの自動化にも助けられている。カバレッジそのものは非常に有効で、予期しないバグを発見することもあるが、自動化を鵜呑みにするのは危険か。ハードウェア的な機能検証とソフトウェア的なカバレッジでは、目的が少し違うし...
それにしても、人間社会とは奇妙なものである。自動化して便利になると、なぜか?仕事量が増えやがる。人間ってやつは、生まれつき仕事の奴隷ってか...

2021-07-25

"ソフトウェアエンジニアリング論文集 80's" Tom DeMarco & Timothy Lister 編

日ごとに歩みを加速させるソフトウェア。まともに相手をしていると目が回る。40年間の歩みで容量や速度は9桁も伸び、単位系は Kiro から Giga 経て、Tera へ。9600ボーは、もはや古代遺跡か。最先端の技術に振り回され、技術から生み出されたオモチャに振り回され、まったく自分の足で歩いているのやら、人の足で歩かされているのやら。仮想化ってやつが、自由意志までも曖昧にしていく...


しかし、だ。ソフトウェア技術がいくら進歩しようとも、コンピューティング哲学が、そうやすやすと廃れることはあるまい。
二千年以上前の自然哲学は未だ健在だし、相対性理論に否定されたニュートン力学だって未だ権威を保っている。そればかりか、ルネサンス風の原点回帰で一役買い、むしろ輝きを増している。
構造化プログラミングにしても、オブジェクト指向にしても、それぞれ、60年代、70年代に考案された方法論だが、80年代に花開き、21世紀の今でも輝きを失わずにいる。手法を盲目的に用いるのではなく、思想観念として独自のスタイルで実践する。哲学とは、そういうものであろう...


原題 "Software State-of-the-Art: Selected Papers"
ここに紹介される論文集は、80年代のもので、「デマルコ・セレクション」と副題される。編集は、「ピープルウェア」や「アドレナジャンキー」のトム・デマルコとティモシー・リスター。このコンビの名だけでも、なんとなく手に取ってしまう。おいらは暗示にかかりやすいのだ。
良いと感じるものは、なんでも真似したくなる。真似したからって、どうなるものでもないけど。真似る価値があるかどうかも、後にならないと分からないけど...
合理的な設計者であることは難しい。プロセスを真似ることすら難しい。あっさりと真似て独自のスタイルにしちまう人は、失敗の経験も豊富なのだろう。おそらく...
達人の書いたプログラムには、書き方を超えた何かがある。エレガントなアルゴリズムは、忘れかけていた何かを思い出させてくれる。おいらはプログラマではないが、ソフトウェア工学の考え方は技術屋の視点から非常に参考になる。生きる上でも...
尚、本書は、二人がセレクトした 31 の論文集から、監訳者児玉公信が 12 を厳選。


  1. 「ソフトウェア工学の超構造化管理」Gerald M. Weinberg
  2. 「銀の弾丸はない: ソフトウェア工学の本質と課題」Frederick P. Brooks, Jr
  3. 「ソフトウェアコストの理解および制御」Barry W. Boehm, Phillip N. Papaccio
  4. 「ソフトウェア研究についての私見」 Dennis M. Ritchie 
  5. 「ソフトウェア開発見積りのメタモデル」John W. Bailey, Victor R. Basili
  6. 「生産性改善のためのソフトウェア開発環境」Barry W. Boehm, Maria H. Penedo, E. Don Stuckle, Robert D. William, Arthur B. Pyster
  7. 「ボックス構造化情報システム」H. D. Mills, R. C. Linger, A. R. Hevner
  8. 「STATEMATE:複雑なリアクティブシステムの開発作業環境」D. Harel H. Lachover, A. Naamad, A. Pnueli, M. Politi, R. Sherman, A. Shtul-Trauring
  9. 「Pascal の問題に対する一解決 = Modula-2」Roger T. Sumner, R. E. Gleaves
  10. 「合理的な設計プロセス: それを真似る方法と理由」David L. Parnas, Paul C. Clements
  11. 「セルフアセスメント手順 IX、コンピュータ利用における倫理に関する...」Donn B. Parker, Eric A. Weiss
  12. 「TeX のエラー」Donald E. Knuth

ソフトウェアエンジニアリングといえば、プログラムの設計、運用、保守といった方法論に目が向くが、ここでは、ちと視野を広げて、マネジメントや開発環境、コストや見積もり、エラーログの有用性、さらには、倫理面にも目が向けられる。
たいていのプロマネは、技術の問題よりも人間の問題の方が深刻だということを痛感しているだろう。日程やコストに追われ、限られた人員で、いかに合理的に仕事を進めるか。たいていは、目先のことに囚われる。悪臭漂う流用モジュールを政治的に押し付けられれば、拒否した時の失敗の責任を考え、成功率の低い方を選択しちまう。品質を犠牲にすれば技術者たちのモチベーションまで下げてしまい、不合理きわまりない。
プロマネがまともに仕事をやろうと思えば、首を賭ける覚悟がいる。しかし、その覚悟は、そんな大層なものではない。自分のやり方を通す方が気楽なこともあるし、生き方もシンプルでいい。政治的な組織は、あっさりとおさらばするぐらいでいい...


プログラムってやつは、簡単に言っちまえば、文字の羅列。その意味では文学にも通ずる。いや、人間の文化そのものが、文字や記号で成り立っている。芸術作品も、建築物も、音楽も、方程式も、形式的な記述によって。宇宙を構成する素材も、ある種の暗号で記述されている。人間にとっての記述とは、解釈の道具ということになろうか。
ならば、ソフトウェア工学は、文学、社会学、生物学、量子力学... など垣根を越えた学際的な学問となろう。開発チームの運営は、極めて社会学的。使い勝手を追求すれば、極めて人間工学的。言い換えれば、ソフトウェア工学は、人間の能力に束縛されてきたという見方もできる。
実際、本書は、コンピュータ工学の書でありながら人間味に溢れている。まさに人間学。ならば、ソフトウェア工学が人間から解放されると、どうなるだろうか...


コンピュータは数学的な構造を持っている。これを動作させるソフトウェアも数学的に記述する方が合理的なはず。少なくとも、チューリングマシンの思考原理は数学的である。
しかしながら、記述するのは人間だ。現実に、人間が理解しやすい形式で記述する方が、合理的なケースが多い。ソフトウェアが複雑化し、大規模化すればするほど、プログラミング言語も人間味を帯びてくる。機械語から、アセンブラ言語、C言語、そして、スクリプト言語へ。人間に近づけば近づくほど高級言語とされる。人間の思考原理が、高級かは知らんが...
AI がプログラミングすれば、わざわざ人間に理解させる必要はないだろう。CPU が直接理解する記述方式の方が合理的なはず。するとソフトウェア工学は、さらに進化を加速させ、人間の理解の及ばない怪物となりそうだ。人間はコンピュータの奴隷になる運命にあるのか...
なぁ~に、心配はいらん。生まれつき奴隷説は、二千年以上前に既に唱えられている。仕事をすべて奪われた奴隷とは、なんと滑稽な。そして、ヘーシオドス風の精神原理に回帰せずにはいられまい。仕事に生き甲斐とやらを求めて...
ところで、生き甲斐ってなんだ???