2017年4月30日日曜日

桶屋が儲かる (1999-05-01 掲示の再録です)

・1999-05-01 社内情報誌に掲載
・1999-11-15 個人ホームページ(Knuhsの書斎)に掲載
・2017-05-01 一部手直ししてブログ(ドッと混む・Knuhsの書斎)に掲載


── デバッグのやり方

 春一番の吹く季節がやってきた。
 寒い冬が過ぎて春が来るのだから、誰もが心浮き立つような気分になるはずだが、私にとっては一番耐えがたい季節の到来である。それは私が花粉アレルギー症だからである。杉花粉に悩まされているのは私だけではなかろう。毎年の春の行事の一つだと考えてしまえばそれはそれであきらめもつく。薬をのんだりマスクをするなりして自己防衛すれば、杉花粉くらいは何とか乗り切ることもできる。

 しかし五月頃に起こるアレルギー症状には何とも耐えられないものがある。私の場合のアレルゲンは“オオアワガエリ”と呼ばれる道端のどこにでもある雑草なのだ。五月頃になるともう戸外でマスクなどしている人はいないから、自分だけマスクをするのは何となくはばかられて、どうしてもやせ我慢をしてしまう。その結果、呼吸困難になって入院するはめになった年もあるほどなのだ。

 ところで、春の風が吹く季節になると私はいつもある言葉を思い出す。それは「風が吹けば桶屋が儲かる」というあれである。この言葉の意味するところは「思わぬ結果が生じる」あるいは「あてにならぬ期待をする」ことのたとえであると言われている。だが私は、これは我々が携わるソフトウェア開発という仕事、とりわけプログラミングのデバッグ作業と密接に関係している言葉のように思えてならないのである。

 そもそも、なぜに桶屋が儲かったのかというところから問題を掘り下げてみましょう。それはもちろん桶屋の商売が繁盛したからなんです。

 なぜ繁盛したんですか。

桶を買う人が増えたからでしょうね。

 なぜ増えたんですか。

無論、桶がだめになったから買い替えが必要になったんですよ。

 じゃ、なぜ桶がだめになったのか調べないといけませんね。

それは、実は鼠が桶をかじったからであることが分かっています。

 なるほど。じゃ、なぜ鼠が桶をかじったりしたのでしょうか。

それはですね、鼠が異常に増えたからなんです。

 あぁ、なるほどなるほど、そういうことですか。

 感心していてもはじまらない。今度は鼠がなぜ異常に増えたのか、その理由を調べなければいけないですね。

そうです。いろいろ調べてみると鼠が増えた理由は、実は鼠を獲る猫が減ったのが直接の原因であることが分かってきたんです。

 ほ~、それでは、今度はなぜ猫が減ったのかを追求する必要が出てきましたね。

そうなんです。ところが、意外なことにそれは猫を捕獲する人が増えたからだということが分かってきたんですよ。

 へぇ~、そいつは驚いた。なぜに猫を捕獲する人がそんなに増えたんですか。

それそれ、そこが一番調査の難しかったところなんです。実は猫の皮なんですよ、問題は。三味線に張る猫の皮が大量に必要になったんです。

 何と!三味線ねぇ、よくそこまで分かりましたねぇ~。なるほど、なるほど。
 それでは、きっと三味線が大量に売れたんでしょう。

そう、そうなんです。実は眼に障害のある人が増えたので、その結果三味線をひく人が増えたといわれています。

 どうも、昔の話なので現代では到底理解できないことですね。

 それで分かりましたよ、なぜ眼に障害のある人が増えたのか。多分風が吹いて砂ぼこりがまったんでしょう。その結果眼に障害のある人が増えたということでしょう?

ご明察! ちょっと論理に飛躍がありますがね。実はそのとおりなんですよ。

 それでやっと分かりましたよ。桶屋が儲かった原因は、風が吹いたことが本当の理由だったんですね。

 ‥‥という訳である。

 プログラム作りのテスト段階で不具合が発生した場合、一般にその原因の究明は大変に難しい(もちろんプログラムの程度にもよるが)。多くのプログラマは、日夜“デバッグ”と呼ばれる困難で孤独な作業に取り組んでいる。そういったデバッグ作業では、不具合の直接の原因Aを見つけてもそれで問題が解決する訳ではない。その直接の原因Aが予想外の現象であるならば、今度は再びそれを引き起こした原因Bを追求しなければならないのである。そして原因Bが見つかったら、今度は(多分また)原因Cを捜すことになるであろう。そのようにして原因D,E,F,‥‥を捜し続けるのである。最終的に原因X(それ以上はさかのぼるべき特別な理由がないもの。大抵は設計のし忘れなど)を見つけるまで。

 つまり、桶屋が儲かったという事象から始めて、風が吹いたという原因にまで逆に(1点の飛躍もなく)一つ一つたどっていくという、いわゆる“推理作業”を行わねばならぬのである。そして、風が吹いたという最終的な原因Xを捜し当てたら、今度は風Xから桶Aに向かってもう一度たどっていく。そして不具合のすべての兆候が、それで完璧に説明がついて初めて(デバッグ作業では特にこれが重要なのである!)その障害の原因が完全に究明されたと断ずることができるのである。

 もちろん、その障害を修復するにはまた別の努力が必要であることは論をまたない。つまり風が吹かないようにするか、あるいは風が吹いても砂ぼこりがたたないようにするか、とにかく何らかの対策が別途立てられなければならない。プログラマとは誠に難儀な商売ではある。

 現在のようにコンピュータ資源が十分でなかった時代には、自分に割り振られたコンピュータ使用時間が来るまで(それも僅かな時間しか割り振られないのだが)机上で上記のような推理を働かせたデバッグ作業を繰り返したものである(これを机上デバッグと称する)。そして時間が来ると、その限られた時間内の実機テストで確認するという手順になっていた。机上デバッグが不十分だと必ず実機テストに失敗し、また出直しとなってコンピュータ時間の確保から始めねばならぬのである。

 最近のプログラマは、コンピュータ資源を豊富に与えられているので何時でも実機テストができる。その結果、十分な推理作業を行わずに絨毯爆撃でいろいろと試しては結果を見るというデバッグ姿勢を取りがちである。桶屋が儲かったのは、多分雨が多かったためではないか、あるいはエルニーニョのせいではないか、‥‥などといろいろとやってみるのである。これだとコンピュータ使用時間がいたずらに増え、結局能率が悪くなってしまう(*)
【注】(*) もっとも、そうやって徹夜をしているプログラマの方が管理者の目には熱心に働いているように見えるのだからソフトウェア稼業というものは実に難しいものである。
絨毯爆撃で運良く解決したように見えても、別のケースで再び問題が顕在化するかもしれない。根本的な解決をはかるには、やはり完全な推理作業に取り組むべきではなかろうか。豊富なコンピュータ資源は、推理作業を助けるデータの収集にこそ向けられるべきであろう。そしてピンポイント爆撃で一発で虫を退治したいものである。

 そういう完璧な推理作業を繰返してプログラマとしての経験を積んで行くと、いつか「桶屋が儲かった」ら即座に「風が吹いた」に違いないとピンとくるようになるのである。こういったベテランの勘は大事にすべきであろう。しかし経験を積んでいない者の勘は、単なる“カン”であって信用するに足らない。

 気象の世界では「風が吹けば桶屋が儲かる」に相当する言葉は「東京で一匹の蝶が羽ばたけば、一ヶ月後にニューヨークに雨が降る」というのだそうである。私は持ち前の好奇心から、どうして東京からニューヨークまでつながっているのか、その流れを追ってみたくなった。そこで、博識をうたわれているお天気キャスターの森田正光氏にTBSラジオ局を通じて質問のメールを送ってみた。しかし数ヶ月過ぎても何の回答も得られない。彼にも分からぬことがあるのであろう(しかし返信なしは気に入らん)。私はこの問題の解明作業を今後も続けようと思っている。ご存知の方は是非ご教示いただきたい。■
【追記】
 この拙文に対しては多くの読者から反響があった。私信なのでそのまま掲示することはできないが、「東京で一匹の蝶が羽ばたけば、一ヶ月後にニューヨークに雨が降る」(これを、一般には「バタフライ効果」というのだが)について、「北京で今日蝶が羽を動かして空気をそよがせたとすると、来月ニューヨークでの嵐の生じ方に変化がおこる」ではないかという指摘があったことだけは報告しておきたい。カオスの話では必ずと言っていいほど引き合いに出される話なのだそうである。しかし、その間のつながりがどうなっているのかは、相変わらず分かっていない。
【追記】2008-5-20
 アメリカのマサチューセッツ工科大学名誉教授のエドワード・ローレンツは、60年代の初めに天候の変化をコンピュータで再現する実験を繰り返していた。あるとき、“0.50612”と打ち込むべきところを、丸め(四捨五入)て“0.506”という数字を使ったところ打ち出されたグラフは数字を丸めなかったときとは大きく異なるものとなった。半端な数を切り捨てるかどうか。それは小さなチョウが舞うか止まるかの違いに似ている。チョウの羽ばたきが地球規模の気象を左右することもある。そんな「バタフライ効果」という言葉が広まったのはこの体験がきっかけであったという。この効果は、物事が複雑に揺れ動く「カオス」と呼ぶ現象のなかで表れる。自然界はそんな複雑さに満ちている。(朝日新聞の記事から引用)

2017年4月29日土曜日

アナログ写真の思い出


── アナログ写真の焼き付けと引き伸ばし
 
 デジタルカメラの普及にともない、写真(静止画や動画)を撮ったりそれを表示して楽しんだりすることが昔と比べて格段に容易になった。今や写真画像を誰でも簡単に取り扱うことができる時代である。もし写真画像を今のように容易に扱えなかったら、SNSの世界もそれほど広くは普及しなかったのではないかと思う。

 アナログの時代からカメラを愛用してきた私は、カメラの技術進歩を目の当たりにしてきたので、この辺りでアナログ写真に関する思い出(ほとんど静止画ばかりであるが)をまとめておこうと思う。同時に、昔からやっていた写真撮影での前準備後処理で苦労した際の詳細を忘れないよう記録しておきたいと思う。


▼使用したカメラ
 私がアナログ写真の撮影に使用したカメラを以下に列挙する。


(1)

(2)

(3)

(4)

(5)

(6)

(1)レオタックス(Leotax):主に学生時代に使用した。
(2)キャノン(Canon Pellix):企業人になってから購入。海外出張中に頻繁に使った。
(3)キャノン(Canon A-1):望遠レンズ、ストロボ付き
(4)ペンタックス(PENTAX ESPIO 120Mi):
(5)キャノン(Canon snappy 20):
(6)富士フィルム(EPION 100):NHKで講演した時のお礼として頂いた。薄謝協会とはよくぞ言ったもの。新しいタイプのカメラだったので使ったことはない。

 

取扱説明書類


▼写真撮影とその前準備
(1)フィルムを選ぶ
 どんな場所で何を撮影するかに依存して最適のフィルムを選択する必要があった。感度(ASA/ISO 100など)、解像度、サイズ(135..24/36枚撮り)などを考慮して選ぶ。私はパトローネ入り(フィルム・カートリッジ)の35mmフィルムを使っていた。

フィルム・カートリッジ
 
(2)カメラにフィルムを装着する
 昔のカメラは、フィルムを狭い隙間から差し込むようにして装着しなければならなかった。うまく装着できずに何度も苦い思いをしたものだ。


カメラの底部を開いてフィルムを装着する
 
フィルム端の片側を切ってリーダーとし、カメラの巻上げスプールのスロットに差し込む。フィルムを送るためのパーフォレーションの穴を所定の位置にしっかりと噛み合わせないと空回りしてしまう。それに気が付かずに蓋を閉じてしまうと撮影後に取り出そうとすると、何も写っていないだけでなく装着途中のフィルムが露光してしまうことになる。その瞬間にすべてがオシャカになってしまうのである。逆に、これをうまく装着できるようになると、リーダー部分が節約できて36枚撮りのフィルムでも37枚は撮影できるようになる。

(3)撮影中の迅速なフィルム交換
 フィルムを使い切ったら新しいフィルムと交換しなければならない。野外の撮影では、交換作業は明るい太陽光の元でやることを覚悟しなければならないから、撮り終わったフィルムを外し新しいフィルムと交換する作業を手際よく行う必要がある。これがスマートにできないと、フィルムの一部が露光してしまったり運が悪いと写真撮影の努力がすべて無駄になることもある。

(4)写真撮影:必ずレンズキャプを外す!
 うまく写真を撮るにはどうすればよいか、と聞かれたプロの写真家土門拳氏は「先ず、レンズキャップを外しなさい」と答えたという有名な話が残っている。これは名言であると言われていた。

 しかし最近のカメラ事情しか知らない人にとっては“何を馬鹿なことを”と思われるかもしれない。当時のカメラは、光の入射経路がファインダーとレンズは別系統だったのでキャップをつけたままでもシャッターが切れたのである。初心者の撮影ではそういう失敗が多かった(えっ? 私はそんな失敗しませんでしたよ、私は!)。

その他、以下のことに配慮する必要がある。
(5)写真撮影:絞りとシャッター速度を決める

(6)写真撮影:“焦点深度(*1)”という概念をよく理解した上で、焦点を合わせる最適の場所を決める(まだ自動焦点などという便利な機能はなかった)
【注】(*1)焦点深度とは、ピントが合っている位置から距離があってもピントがシャープに見える(つまりピントが合っているように見える)範囲を言う。一般に絞り値が大きいと深度も深くなる
(7)写真撮影:画面の構図をよく考える

(8)写真撮影:シャッターチャンスを逃さない(*2)
 こういった事項を常に頭に入れておかないと写真撮影はうまくいかないのだが、今では(8)だけ注意していれば何とか写真らしきものは撮れる。楽なものだ。
【注】(*2)デジタル画像での撮影では、シャッターチャンスを逃さないようにするのがすべてである。特に静止画を撮るのであれば構図などあまり気にしなくてよい(プロレベルの人は、この文章を読んで眼を剥いたりしないでください。私のような素人カメラマンレベルではこの程度で良かったのです)。
 デジタルカメラでは、解像度を高く設定しておけば、撮影後の処理で適当にトリミングすることにより結構良い写真が撮れるものである。
(9)カメラの関連部品、アクセサリー類を紛失しないよう管理する


▼撮影後の処理
(1)フィルムの現像(写真屋に依頼する)
 撮影済みのフィルムは、パトローネごと写真屋に渡すと、数日後にベタ焼き(いわゆるコンタクトプリント)と簡易なケースに収められたネガフィルムを受け取れる。このケースに撮影データ等を記録して保存する。


(2)選択してプリントする(これも写真屋に依頼する)
 ベタ焼きからプリントすべきものを選ぶ。
 ケースにサイズとプリントして欲しい枚数を記入(サービスサイズ等、縁あり/なし等を指定)して再度注文を出す。


(3)自分でプリントする場合
・焼き付けと引き伸ばし作業
 私は写真の焼き付けと引き伸ばしは、普段は写真屋に頼むことにしていた。しかし写真が大量になるとプリント代がばかにならない。大学時代の山登りや、夏季の合宿山行では大量の写真を撮るのでプリント代を節約するため自分で焼き付けと引き伸ばし作業をするようになった。しかし最大の理由は、自分でトリミングなど自在に行って大きな素晴らしい山岳写真を作りたかったのである。

 引き伸ばし機は少し高価だったので兄に買ってもらい、暗室はないので夜間家の風呂場で引き伸ばし作業をしたものである。大学の写真部の暗室を借りてやったこともあった(私は部員ではなかったが)。

・印画紙を選ぶ
 サイズと感度を決め、必要なものを用意する(まとめ買いをするため、神田によく買いに行ったものだ)。

 印画紙の号数は数字が大きくなるほどコントラストが高くなる。通常は3号か2号を使用していた。  引き伸ばし機にフィルムと印画紙を装着して露光する訳であるが、もはや細かい作業は思い出せない。概略、以下のようになる。

▼前準備
 暗室内は赤色灯の下で作業を行う。ネガをネガキャリアに挟んで引き伸ばし機に設定し、印画紙を置くイーゼルは引き伸ばし機の台上に置く。拡大されたネガの像のピントを合わせる。
▼露光
 像の大きさとピントが決まったら露光する。
▼現像
 露光が終わったら印画紙を現像液のバットに入れる。像が現れてくる。
▼停止
 現像が終わったら印画紙を取り出し停止液に移す。
▼定着
 停止が終わったら、停止液をよく切って定着液に入れる。
▼水洗
 定着が終わったら水洗用バットに移す。
▼乾燥
 水洗が終わったら乾燥させる。これで完了です。
 もはや細かい作業手順は思い出せない。ただ、露光時間を決めるのが一番難しかったことだけは覚えている。写真で一番難しいところは何かと聞かれたら、今でも私は迷わず「引き伸ばし時の露光時間の選び方」と答えるだろう。


▼自分で引き伸ばした作品
(1)大学時代の北アルプス山行の記録から



前穂高岳       唐沢岳       北穂高岳
 
(2)大学時代の北海道旅行の記録から



利尻島のベースキャンプ地
 


釣り(利尻の子供達と)

2017年4月10日月曜日

日本、凄いですね

━━ 忖度と斟酌(そんたく と しんしゃく)

 「日本、凄いですね」的なテレビ番組が盛んだが、この種の愛国心を煽る自画自賛的な番組には違和感を持つ人が多いのではないかと思う。私もその内の一人なのだが、何か作業をしながらテレビを見ている「ながら族」の立場からは結構興味深い番組の一つなのである。自分の関心事だけをチラ見すれば済むからである。

 日本の製品造りで使われている各種の技術やノウハウを惜しげもなく紹介してくれる番組だから、その方面に特別な関心のない素人の立場から見ていても興味深いものがある。私が特に興味深くチラ見しているところは、外国から招かれ製造現場で実地にノウハウ紹介を受けている外国人の様子である。「凄いですねぇ~」とか、「私の国では、そんなことはしていません」などと驚きの表情で「凄いですね」を連発する“凄いですね役”の人達のことである。

 外国語だから真意の程は分からないが、少なくとも翻訳された日本語ではそう言っている。番組作成者の意図通りに動いているのは明らかである。それを見ながら私は、彼らだって愛国心とやらを持ち合わせているだろうに、と思うのである。

 こういう時、一方的に褒めるのではなく「いや、私の国ではこうやっていますよ。その方が効率的ではないですか」などと反論したら、さぞかし面白い番組になるのではないかと思ってしまう。このような場で異を唱えるのは勇気のいることだが、そこから議論が始まれば技術進歩の種が生まれてくるのではないだろうか。

 しかし“凄いですね役”の外国人は専ら場の空気を読んで期待されたようにしか動かない。どこぞの総理夫人のように能天気に、思っていることをペラペラしゃべってくれたら・・・と思うのだが、決してそうはならない。

 しかしそれは当然のことだろう、彼らは旅費持ちで招かれて日本に来たのだ。当然ギャラを貰う約束になっているのだろう。そして東京見物をさせてもらい(多分)、日本が世界に誇る日本食を楽しむことだってできる(多分)。そうなれば、どうしたって招いてくれたテレビ局側の思いを忖度して行動することになる。英語に「忖度」という単語が無くても、彼らだって“相手の心情を推し量る”行為の方はよく分かっていて、自ら進んで実行しているのである。

 先日読んだ「天声人語」に書いてあったが、忖度とは、もともとは悪いたくらみを見抜くことを指したものだという。
「他人心有らば (たにんこころあらば)
  予之を忖度す (われこれをそんたくす)
 とは古代中国の詩集「詩経」の一節である。
 他の人に悪い心があれば私はこれを吟味するという
 意味だと、石川忠久著『新釈漢文大系』にある。


 もう一つ、忖度に関わる話を紹介しよう。
 昔、私が若かった頃のことだが、しばしばギックリ腰になり苦労していた。重い物を持ったのが原因であるが、仕事で身不相応な重責を背負わされたのも原因の一つではないかと今でも疑っている。かなり長い期間、三軒茶屋駅近くにある整体院に通っていた記憶がある。

 そこで治療を受けていると、若い整体師がマッサージをしながら私に話しかけてくる。それに応えるのは礼儀だと思い、普段無口な私もマッサージの痛さに耐えながらできるだけ親しく会話するようにしていた。ある時、その若い整体師が私に向かって、最近コンピュータを使っているんですよと言う。しかもC言語でプログラミングをしているらしい。最近の整体の専門学校では一般教養としてプログラミングの授業をしているのかな、などと考えながら聞いていた。

 すると彼は「C言語って、円記号を使うんですよねぇ~」と感に堪えたように言うのであった。“これは凄いことですね”と私に同意を求めているような雰囲気である。アメリカで作られたプログラム言語の仕様書の中で、こともあろうに極東(*1)のはずれにあるちっぽけな国の通貨記号が使われている。周知のようにC言語では円マーク()が言語仕様の一部として出てくる。それを知って凄いですねぇ~ という気持ちになったのであろう。

【注】(*1)西欧の世界地図では、日本は東の端の極まるところに描かれている。そのため極東(Far East)と言うのであろう。
 私は「いゃ、そうじゃないんです」と彼の誤解を解いてあげようと一瞬思ったが止めた。そして、ただ「そうですよね」と答えるだけにした。

 この瞬間に私が何を考えたか整理してみると
 (1)マッサージが痛くて余裕がない
 (2)誤解を解くには長い話
(*2)が必要になる
 (3)説明してもどうせ理解してもらえない
 (4)相手が喜んでいるのだからその気持ちを尊重しよう

ということになる。
 そして私は、賢くも(4)に重きを置くことにしたのである。

【注】(*2)コードとしての円記号について知りたければ「円記号 技術者のエゴ」を参照してください(20年程前に書いたものですが)。
 後から考えると、このときの私の行為こそが今話題になっている「忖度」というものではないか。日本は凄い国なのだと思っている彼に向って、そうではないと縷々説明しても何の意味もない。このまま彼の気持ちを壊さないようにそっとしておいてあげるのが思いやりと言うものではないか、そう考えたのである。

 これが「忖度」なら、凄いですね役の外国人と似たようなものだと思うが、よく考えると異なるところもある。単に相手の心情を推し量るだけで何もしないのが「忖度」なのに対し、推し量った上でそれを汲み取って何か処置をしてあげると、それは「斟酌」してあげたことになる。
 彼らはギャラを貰って積極的に協力している。これはまさしく斟酌に違いない。逆に私は治療費を支払った上に相手の気持ちを推し量り何もしていない。これは凄い違いだ。

 現在、国会審議等で「忖度した」とか「いや、忖度していない」と言い争っているのは、本来の意味とかけ離れているのではないか。「解釈変更」したり「拡大解釈」を繰り返している。何かおかしいと思う。

 更に言うなら、某財務省や財務局の連中がやったことは斟酌である。某森友学園に対して物凄い斟酌をしてしまったことになる。某財務省の担当者は、事後その記録が残っていないと言う。記憶もないと言う。これは誰かを救うために言っているのは明らかだが、それは「斟酌」ではなく「証拠隠滅罪」,「公文書等毀棄罪」,「偽証罪」等に当たる行為であると言えよう。


 日本には、外国からの伝来文化や技術を取り入れて日本流に消化(日本化)させ、日本独特の文化や技術に仕立て上げる特技がある。中国から伝わったという「忖度」や「斟酌」という言葉も、日本に来てからいろいろな意味が付加され変更されてきたのだろう。こういったことは日本人が最も得意とするところである。


 最近はこの“日本化”の分野に政府も積極的に乗り出してきているようだ。彼らが最も得意とする手法は「閣議決定」したと称して「解釈変更」したり「拡大解釈」してしまうことだ。あるいは「歴史認識」さえも変更してしまう始末である。
 某官房長官などは記者会見の場で「問題ない!」の一言ですべてを正当化してしまう。あるいは「使用禁止!」とか「必要なし」と断定しそれ以上の言及を許さない。恐ろしいことである。「閣議決定」など我々には何の拘束力もないと思うのだが。

 日本って、本当に凄い国ですよね。