2006-06-25

組込みソフトエンジニアの情報検索能力は低い?

インターネットが普及した現在では、学生が大学のレポートの宿題のテーマをインターネットで検索して探した文章をコピペ(Cppy & Paste)して提出するらしい。

検索した論文をコピーして教授に提出したところ、何か見たことのある文章だなあと思ったら、教授自身の論文の一節を学生がそれとは知らずにコピペしてレポートにしていたという嘘のような笑い話もあるとのこと。

ただ、いまの時代、「情報を暗記していること」自体の価値はかなり薄れているのかもしれない。昔なら、あの人に聞けば何でも知っているという価値は高かったが、今では 検索サイトを使って知りたいことを上手に検索すればかなりのことがインターネットでわかる。分からないことを人に聞くというシステムをインターネットで実現した「はてな」のサイトもある。

しかし、インターネットに載っている情報はガセネタも少なくない。雑誌に記事を書いたり本を書いたりする経験をするようになって分かったが、たったひとつのことを書くにも「裏取り」の作業が必要になるということだ。うろ覚えの内容をそのまま書いてガセネタになると自分の信用を落としてしまう。

ソフトウェアでもハードウェアでも同じだが、品質を高めるにはコストがかかる。かかったコストを回収するためには、高い品質の資産を再利用する必要がある。雑誌や本はかなりの部数が発行されるので再利用効率は高い。

また、雑誌や本はメディアとして多くの人々が購入し、そこには対価が発生するため、書いていることに対する責任が編集者や著者に生じる。

ところが、インターネット上に載せる情報の多くはタダで見られるので、そこに書く情報の品質を高める努力をすればするほど、情報提供者はかかったコストを自分の「持ち出し」でまかなうことになる。

ふつうに考えれば、情報の品質を高めるために使ったコストにはなんらかの対価がなければいけない。それは、広告を載せることでの収入かもしれないし、自分の文章が多くの人に読まれるということで欲求が満たされるという心理的な対価かもしれない。

さて、組込みソフトエンジニアも日々パソコンを使い、時にはインターネットで情報を検索しているはずだ。でも、日々の活動の中に自分の知りたいことや困っていることの解決方法が、インターネットの中にあるかも知れないと考えたことがあるのだろうか?

20年前、10年前はインターネットが発達していなかったため、職場の先輩や同僚に分からないことを聞いたり、本屋にいって知りたいことが書いてありそうな雑誌や本を買って読んだりした。

そのような環境で育った技術者がプロジェクトマネージャとなり、部下に問題解決の方法として上記のような「知っている人に聞く」ことしか教えていなかったら、もしかすると部下はインターネットの中に問題解決の答えがあることに気がつかないかもしれない。

組込みソフトエンジニアはドメインに特化した技術が必要なため内に内にこもりがちだ。自分の環境の外にある知識や情報に自分達のドメインの問題解決に使えるネタがあるとは思わない。

しかし、これだけ情報の共有化が進み、検索のしくみができあがってくると、世界中に同じような問題にぶち当たって解決のヒントを情報発信してくれている人がいるかもしれない。

また、自分自身が問題と問題の解決について情報を発信していけば、その情報によって助かる技術者が世界中に何人かはいるに違いない。

そう考えると、冒頭に紹介したレポートをコピペする学生も、インターネットの情報検索リテラシーを少しは身につけているということで、その後の役に立つかもしれない。

部下にうんちくを披露して、後で「インターネットにもっといい解決策が載っていましたよ」と言われないように、ベテランエンジニアも情報の検索能力を高めておくことをお勧めする。

2006-06-17

シンドラーの事故を再発防止するためにエンジニアは何をすべきか

シンドラー社のエレベータで痛ましい事故が起きた。この事故との関係は今のところ否定されているが、シンドラー社のエレベータの不自然な挙動の原因の一つがエレベータ制御ソフトウェアの構成管理の失敗であることがわかった。

【毎日新聞2006年6月17日朝刊より引用】

問題があったのは同社が国内で1991年から1993年までに製造したもので、この間、同一の制御プログラムを搭載した49基を出荷したが、扉が開いたまま「かご」が昇降する欠陥が一部で起きていることが1993年に分かった。

欠陥は、扉が閉まった瞬間から0.25秒以内に「開」ボタンを押した場合、扉が開いた状態でかごが昇降を始める。モーターに作動指令の電気信号を誤って伝えるプログラムミスで、1993年中に49基すべてを正常なプログラムへ交換した。

ところが、同社は49基のうち東京都八王子市、豊島区、名古屋市、静岡県沼津市にある計6基で、その後に行った別の修理の際にミスのあるプログラムを誤って再設定。49基とは別に、千葉県浦安市と神奈川県相模原市の計3基は、1993年にプログラムミスのまま誤って出荷した。

【引用終わり】

SESSAMEの中級技術者向けセミナーでソフトウェア構成管理の講義(SESSAME e-Learning Series 構成管理Ⅱに収録)を担当したとき、構成管理に失敗するとどのような事故が起こりうるのか、また、不具合が発生したときに構成管理の情報はどのように使うのかについて解説した。

ソフトウェア構成管理について最近感じるのは「ソフトウェア構成管理ができている」ということと「構成管理ツールを使っている」ことがイコールだととらえられることだ。

構成管理Ⅱの講義スライドを作るときも、『組込みソフトエンジニアを極める』の原稿を書くときも、特に気をつけたのが「その施策はなんのために行っているのか」を説明するということだ。

ソフトウェアシステムは日々の技術者の活動を積み重ねた成果物である。そして、生来、過ちを犯しやすい人間はうっかり大事なファイルを上書きしてしまったり、安易にコピー&ペーストして一部修正し忘れたりする。

過ちを犯しやすい人間の活動が積み重ねられた成果物であるソフトウェアは、規模が大きくなってくるとどれとどれを組み合わせれば不具合の修正が確認された正しいシステムになるのかよく分からなくなってくる。

また、いろいろなバージョンのソフトウェアが存在すると、今回のシンドラー社のエレベータ制御ソフトのように間違ったバージョンのソフトウェアを製品にインストールしてしまう問題が発生する。(最新のバージョンをリリースしたつもりが、もとの問題があるバージョンにしてしまうことをデグレードという)

不具合の特定と修正および修正の確認がなされたソフトウェアソースのバージョンの関連を管理された状態にし、ユーザーや営業サイドからの不具合の問い合わせにスムーズに回答したり、問題を解決するためのバージョンを速やかにリリースできるようにしておくことがソフトウェア構成管理を行う最大の目的である。

安全な装置を世に送り出すためには、過ちを犯しやすい人間-リスクマネージメント-構成管理 この3つをセットで考えないといけない。

シンドラー社のエレベータの制御ソフトのケースでは、扉が閉まった瞬間から0.25秒以内に「開」ボタンを押した場合、扉が開いた状態でかごが昇降を始め、モーターに作動指令の電気信号を誤って伝えるプログラムミスがあったという。

どんなエレベータでも、各階のドアが閉まっている状態でなければかごは昇降をしないようなプログラム設計をするはずだ。設計者が意図しない状況が発生したということは、扉が閉まった瞬間から0.25秒以内に「開」ボタンを押したという行為が、実際のドアやかごの動作の状態と、制御盤内で認識し管理している状態との間に不整合を発生させたと考えられる。

エレベータの制御だけでなく、何かの動作をしたことである状態からある状態へ遷移する際、わずかな時間がかかることはある。リアルな環境で状態遷移が起こっているこのわずかな期間に、別な操作をしたことによって、コンピュータが認識するシステムの状態とリアルシステムの状態に不整合が起こることはある。このような魔の瞬間に状態遷移の不整合は起こりやすい。

状態遷移の不整合が起こる魔の瞬間をなくすには、コンピュータ内での状態遷移が完了したと判断する際に、実際のシステムの状態を確認するか、もしくは、状態遷移中という状態を作って状態が完全に切り替わってから次の状態に移るようにする。このとき、システムの状態を確認するセンサーが用意されている場合は、センサーの入力を確認することになる。センサーが用意されていないと、コンピュータは暗闇の中で頭の中の地図を頼りに歩いているようなことになり、ひとつ判断を誤ると自分がどこにいるのかわからなくなる。

したがって、安全確認のためのハードウェア(たとえばセンサーなど)をコストダウンのための省いてしまうと、システムとしての安全性は低くなる。『組込みソフトエンジニアを極める』では、システムの安全性に関する商品価値ことをカタログスペックに書かれる顕在的価値(Real Value)に対して、安全性や信頼性を確保し、使いやすさ、安心感を保証するという意味で潜在的価値(Potential Value)と呼んでいる。

顕在的な価値だけを意識し、潜在的な価値のことを考慮せずにコストダウンをしようとすると、結果として事故が起こる確率が高まる。

安全性を高める取り組みとしては、リスク分析を行いリスクをできるだけ小さくするようなハードウェア、ソフトウェアを配置する方法がある。また、故障が発生したときに安全側に倒れるような設計を行うことをフェールセーフ設計を行うという。

エレベータにおける最大のリスクは「各階のドアまたはかごのドアが開いたまま昇降してしまう」ということだ。このリスクが起きる原因を考え、その障害・危害(ハーム)が起こらないような対策を積み重ねることが商品の潜在的価値を高めることにつながる。

リスクをできるだけ低くするためにはFMEA(潜在的故障モード影響解析:Failure Mode and Effects Analysis)が有効となる。この FMEAを使ったリスク分析については『組込みソフトエンジニアを極める』の第4章-品質の壁を越える-で解説した。

リスク分析を行う際のポイントは2つある。ひとつめは潜在的な価値を高めるために準備したハードウェアやソフトウェアが正しく動かないという一次故障が起こった場合のことを考えておくこと。ふたつめは、せっかく用意した安全装置の検出精度の問題があり危険がないのにアラームを鳴らすという「オオカミ少年」状態が発生し、本当の危険と間違いアラームとの差異がわからなくなるような事態を避けるということだ。

そして、フィールドで問題が発生した際には、二度と同じ不具合が発生しないように、リスク分析とその対策を追加し、対策が実施されたソフトウェアのバージョンを管理し、確実にそのバージョンをリリースするシステムを作り上げることが組込み機器メーカーに求められている。

組込み機器や組込みソフトを作り上げる組織は、商品の顕在的な価値だけでなく、潜在的な価値を高めるには、どのような取り組みをしなければいけないのか常に考えている必要がある。

また、組込みソフトエンジニアは自分たちが作り上げた組込み機器を安心して使ってもらうためには、日々どんな活動をしなければいけないか考えなければならない。

2006-06-10

音声のプロフェッショナル

いま、SESSAMEのタスクとして、組込みソフト初級技術者向けの e-Learning コンテンツを作っている。

組込みソフトの各分野の第一線で活躍するエンジニアが講義を行うSESSAMEのセミナーにスタッフとして参加し、レポート作成しているときに「このセミナーを聞 きたいと思っている潜在的なユーザーはたくさんいるだろうな」と思ったのがきっかけで検討しはじめた企画だ。

SESSAMEのセミナーは 講師となる技術者がスライドを作るだけではなく、作ったスライドをメーリングリストで提示して意見を出し合ったり、リハーサルを行って「あそこはこう表現 した方がいい」とか「あの言葉はわからないから、解説した方がいい」とかいったディスカッションを行いコンテンツを洗練する。

一般のセミナーの場合、講義の内容は講師が用意したものをそのまま使うので、有識者たちで内容をディスカッションして修正することはほとんどない。偉い先生達はプライドがあるので、他人に自分の資料にあーだこーだ言われるのがきらいなのだ。

SESSAMEのセミナー講師はほとんどが現場のエンジニアで商品開発の中でチームで議論しながら、ものを作り上げていくので自分の資料をレビューされることは慣れている。

だからこそSESSAMEのセミナー講義は内容が濃く、現場で使える確率が高い。このような講義が一日ないし、二日で何人もの講師によって実施される。この講義をたかだか60人とか、100人の受講者だけが享受するのはもったいないと、セミナーを聞きながら感じた。

だから、この講義をビデオに撮って e-Learning コンテンツにできないかと思った。そこで、いろいろ調べたところ、Microsoft が PowerPoint の関連ソフトとして、PowerPoint のスライドと映像を同期させてコンテンツ化するソフトウェアを提供していることがわかった。これが、Microsoft Producer for Power Point 2003である。

手順はこうだ。
  1. Microsoft Power Point で講義スライドを作る。
  2. セミナーを開催したときに、家庭用ビデオで講師の映像を取る。
  3. 音声はビデオに記録されるが別途音声だけ録音する。(後で解説)
  4. セミナー終了後、ビデオ映像をパソコンに取り込みながら、スライドを同期させていく。
  5. 取り込みが終わったら、スライド同期を微調整し、タイトルなどを付けて整える。
  6. できあがったコンテンツを発行(音声と映像を指定した圧縮率で圧縮)する。
  7. html でコンテンツメニューのページを作り、動画コンテンツにリンクを張る。
  8. CD-ROMに焼き込み、ラベルを印刷して完成。
使用する機材は、最低限、家庭用ビデオと三脚、パソコンがあればいい。ひと昔前は一コンテンツ作るのに何百万円もかけていたのに、今は家庭用のビデオレコーダとパソコンがあれば e-Learning コンテンツができてしまうのだ。(もちろん、人の手は昔同様、今でもそれなりにかかる)

商用のe-Learning コンテンツは映像も音声もプロが加工している。今回取り組んでいる e-Learning コンテンツの映像部分は素人の仕事でもよしとしている。なぜなら、Microsoft Producer で再生する映像はコンピュータの画面の左上にちっちゃい窓で出ているだけで、そのときの講師の身振り手振りや表情の雰囲気を伝えるために使っているからだ。だから、画像の解像度も高精細なものは求められておらず、枠の中に講演者が収まっていればいいのだ。

問題は音声だ。家庭用ビデオに内蔵されているマイクは指向性が強く、レンズの向こうの音源をねらっているので会議用のICレコーダなどよりはクリアに録音できる。

しかし、どうしても会場の雑音もいっしょに録音されてしまう。 e-Learning コンテンツはパソコンのスピーカやイヤホンで聴くことが多いので、音声データが会場のノイズに埋もれてしまう危険性がある。

そこで、SESSAME の e-Learning コンテンツは、SESSAMEメンバーで音声のプロフェッショナルである TEAC の國方さんが講演者の音声の録音と加工を担当してくれている。國方さんは『組込みソフトウェア開発のための構造化モデリング』の著者のひとりでもある。

TEACというと自分は録音機器メーカーという印象が強いのだが、今はパソコンの周辺機器も手がけているとのこと。

國方さんは音声編集用の機器の開発をされており、e-Learning コンテンツの制作には、自分で開発したハードディスク内蔵の音声編集機器を使っている。

音声は幅広い周波数帯域を持っているが、安いスピーカやイヤホンが再生できる周波数帯域はそれほど広くないので、その範囲に録音した音声データが十分なダイナミックレンジと周波数帯域に入るようにする必要がある。

ということで、e-Learning コンテンツで大事なのは実は音声だ。家庭用のビデオのマイクは指向性が強く、ビデオの向いている方向の音を拾うようになっているのでそれなりに聞けるのだが、どうしても会場の雑音が入ってしまう。SESSAMEのコンテンツは聞きやすいように國方さんが加工してくれている。

國方さんのプロフェッショナルぶりは以下のようなメールのやりとりでわかる。

【國方さんから酒井へのメールより引用】

> Nさん声をボリューム上げるとビビリ音が聞こえるのはイヤホンの周波数特性
> が悪いからでしょうか?

確かに、Nさんの声は声量(パンチ)があるので、そのように聞こえる可能性はありますね。

今のところ、データ自体にビビリの原因となる歪みはなさそうですが、周波数特性の良いヘッドホンでボリュームを上げていくと、圧縮データ特有の、高音域の変調ノイズが耳につきます。シュワシュワした感じの音に、多少チリチリ音が混じって聞こえます。

【引用終わり】

この、「シュワシュワした感じの音に、多少チリチリ音が混じって聞こえる。」という表現がそのとおりだからすごいのだ。

マイクはダイナミックレンジが限られているので、講師の声が入力の範囲にうまく入るようにマイクの感度を調整してあげないといけないし、大きな声を出す講師の場合は入力がサチらないようにする必要がある。

だから、SESSAMEではミュージシャン用のそれなりに高級なヘッドセットマイクを購入し、TEACの音声編集用機器で音声を聞きやすいように加工している。

商用音楽の世界では、かなりの部分がパソコンを使った「音の打ち込み」という作業で作られているという。CDはデジタルデータで音声が格納されているため、音をパソコン上で作り込むこともできるのだ。

ただ、そうはいうもののコンピュータで作った寸分の狂いもないリズムは聞いていると疲れるらしい。しかし、これを聞きやすくするために微妙にリズムをずらす調整を「クウォンタイズをかける」というそうだ。

この話は、プロの音楽家がアマチュアの作品を評価するポッドキャスト番組ハイパーミュージックゲートで知った。音は映像より目立たないが、実はメディアの中で重要な役目を果たしている。レコーディングのスタッフで音の加工・調整を担当する技術者のことを「エンジニア」というそうだ。音楽業界にもエンジニアがいるというのがおもしろい。

組込みソフトエンジニアはその道のプロでなければ、プロ用の組込み機器を作ることはできないのだ。