2011年04月19日

プログラムにおける想定外への対処

原発の運用において今回の大地震は想定外だったという報道をテレビで見ました。
今後はマグニチュード10以上や50m以上の津波であっても
今回のような事態とならないよう策を講ずることが、
想定内にするという事でしょうか。。?

プログラムでも想定外の状況は起こりえます。
プログラムはむしろ、常に想定外の状況を想定して開発するとも言えます。
プログラム開発とは、あみだくじを設計し、そのすべてのルートについて
処理を記述することとも言えます。
恐らく正常と言えるルートは1〜2割で、残りは想定外でしょう。

プログラムにおける想定外への対処とは、
起こることは想定できていても実際起きたらどうにも出来ない、
あるいは、想定すら出来ていないことが起きたときに、
出来るだけ影響の範囲が広がらないようにすることだと思います。
具体的には、
その想定外によってデータの更新が中途半端に終わってしまったり、
メモリの解放をし損じたり、データを掴みっぱなしとなって
他のアプリケーションの動作へ悪影響を及ぼしたり、はたまた、
コンピュータ自体が動かなくなってしまって再起動が
必要になったりしないようにすることです。

プログラム開発における「想定外」は、「例外」という表現が相当します。
具体的な例として、ファイルを読もうとした時に、
ファイルを問題なく読めたときが正常な状態がとした場合、
ファイルが存在しないために読めないときはトラブル発生ですが、
これを想定していれば「想定内」であり、
読めなかった理由をメッセージボックスでユーザーに通知の上、
処理をキャンセルするか、もしくは、
メッセージとともに別のファイルを選択する機会を示すなどが考えられます。
もし、ファイルが存在しないことを想定せずに処理を続行した場合、
不正なメモリを参照するなど、
事態がより深刻になる可能性を内在することとなります。

プログラム開発における想定外への対処とは、
1つでも多くのトラブルを想定して具体的な対処を組み込んでおくことと同時に、
個別の対処のしようがないトラブルすべてに対しては、
影響がゼロ(または限りなくゼロ)になる対処を組み込んでおくこと
だと思います。

今回の原発において、地震の大きな揺れの検知は、想定外の検知でもありました。
プログラムでいえば、例外(=想定外)の検知に相当します。
影響を最小限に抑えるための最後の機会は与えられていたとも言えます。

このタイミングで原子炉の運転の停止はできました。
続けて緊急冷却装置を動かして冷やす必要があり、その工程に入るはずが、
その電力が通常電源、非常電源のどちらからも得られない事態になった。
「非常電源も含め、もし全く電力が得られなかったら?」
という事態を想定した対処が組み込まれていなかったようです。
もし、今後は想定して対処するとした場合、
電力を得るルートをさらに確保しておくのでしょうか。あるいは、そもそも
電力に頼らない方法で原子炉の安全を確保出来るようにするのかもしれません。

プログラムにおける想定外への対処といっても、
ファイルにデータを保存中に、急にパソコンの電源を抜かれた状況までを
想定して対処していません。
(実際には、OS、あるいはハードウェアのレベルで策を講じます。)
…原発と比較するのはプログラムではなく、ハードを含めたシステム全体
 とするのが正しかったです。

原発についてはここ一カ月の報道で知り得た範囲の知識しかないため、
これ以上、私には想像できないのですが、
「もしこんなことが起きちゃったら!?」、「もしこれが使えなかったら!?」
という想定をし尽くして、策を講じることなのだろうと感じました。
もし、
「いや! これ(例えば電力)が無ければどうにできない!!」
という
リカバリーしきれない状況が想定でき、
その結果が許容しうるものでないことが想定出来た場合、
その人間の作りしものは、存在自体が危ういように感じますが、
今もこうして原発から供給される電力で暮らし、この文章をタイプしている私が
あれこれ言うのは、偽善的でしょうか。。

機会があればまた考えてみたいと思います。
posted by shibuta1218 at 07:20| Comment(65) | 日々雑感

2011年03月31日

見つけた東北関東大震災 支援サイト

復興支援 東北地方太平洋沖地震 - Yahoo! JAPAN
http://shinsai.yahoo.co.jp/
募金、ボランティアの案内、支援ギフト便などがあります。

支援ギフト便というのは、Yahoo!ショッピング上で、
通常の買い方と同じような手順で、お米やタオルなどを
被災地へ届けられるしくみです。
手軽に参加しやすいと感じました。

物資支援プログラム「支援ギフト便」の提供を開始
- 東北地方太平洋沖地震に関するお知らせ - Yahoo!ブログ
http://blogs.yahoo.co.jp/shp_auc_2011/2429452.html

義援金を送る、節電する、無駄な買いこみや通信を控える、
被災地の方々のことをいつも想う、、
もっとできることを考え、していきたいと思います。

posted by shibuta1218 at 10:23| Comment(0) | 日々雑感

2011年02月21日

一歩先を行くには、ひと手間かかる

今ARが台頭しようとしています。
ただ、実際いろいろやろうとすると、
画像認識を高速にできるか、
世界中のユーザーをさばけるほどのサーバー構築を出来るかなどなど、
技術的な問題に直面します。

先日のとある勉強会で、Web系でメジャーな会社の方が
iModeの頃のブラウザでのお話をしていました。
回線が狭い、携帯のプロセッサの処理能力が低いという制約へ対処するために、
HTMLのパースをサーバー側で行って、中間コードにしたものを
携帯側のブラウザでレンダリングするようにしたり、
画像もサーバー側で縮小してキャッシュし、
携帯側のブラウザはそれを受信、レンダリングするようにして
対応したそうです。

こういうひと手間をかけることで、
実用化出来たらすごいけど、その時点では簡単にはできるイメージが
持てずに静観している企業の一歩先を行けるということ
だと思いました。

思えばGoogleの検索も、
ディレクトリ型(人手で整理・精査しているタイプ)じゃない方法の
検索サービスが良いと思っても、実際作るとなると、
膨大な量の世界中のコンテンツをいかにして収集し、蓄積するか、
膨大なキーワードと高速にマッチングできるか、
マッチングの質をどうやって高めることができるか、
幾重にも途中で断念したくなるような課題が待ち受けていそうです。

はじめから最終形態をイメージしすぎて躊躇してしまっても
勿体ないです。
小さいプロトタイプからでも形にしていくことで、
往々にして、新しい課題を見つけるかもしれませんが、一方では
課題が一つ解消されたり、課題が想定より小さいことに
気づくかもしれません。

躊躇したり、静観したままより、
持続可能な力の入れ方で、始め、続けるしかないのかもしれません。
posted by shibuta1218 at 05:20| Comment(0) | 日々雑感