プログラミングをして、いざ実機で動かそうとしたら……「無反応」。PC画面の中だけで完結するアプリ開発とは違い、私たちの世界では原因が「ソフト」にあるとは限りません。回路図を読み、ログを追い、不具合という名の事件を解決する。そんな「捜査官」のようなエンジニアの視点を、クイズを通して学んでみましょう!
お話を伺ったのは…
【東洋テクニカルシステム株式会社】
親会社であるリオン株式会社の精密機器(補聴器や音響振動計測器など)のソフト開発を主軸に、50年以上にわたり日本の「モノづくり」を支えてきた技術者集団です。ハードウェアを制御する「組み込みソフト」から、データを管理する「Windowsアプリ」まで、モノを動かすためのあらゆるソフトウェアを手がけています。
左から、
相川 雅広さん:東京工学院専門学校出身。Windowsアプリ開発のスペシャリスト。病院の電子カルテシステムなど、ネットワークを介した高度なシステム連携をリード。
池田 敏弘さん:東京コンピュータ専門学校出身。組み込みソフトのスペシャリスト。機械の中身を制御するソフト開発に精通。
相川 雅広さん:東京工学院専門学校出身。Windowsアプリ開発のスペシャリスト。病院の電子カルテシステムなど、ネットワークを介した高度なシステム連携をリード。
池田 敏弘さん:東京コンピュータ専門学校出身。組み込みソフトのスペシャリスト。機械の中身を制御するソフト開発に精通。
【Case1】踏切のバーが上がらない!
【現場の状況】
あなたは踏切の制御ソフトを担当しています。ある日「遮断機のバーが上がらなくなった」と連絡が入りました。ログを確認すると、ソフトからは正常に「バーを上げろ」という命令が送られているようです。しかし、現場のバーは動きません。
バーが上がらない原因は、「A:ハード」?「B:ソフト」?
正解は・・・
「A:ハード」
【解説】
不具合が起きた際は、まずログを確認してソフトに異常がないかを確認します。そこで問題が無ければ、「モーターやギアの故障では?」と疑います。テスター等を使って、電気的な信号がモーターまで届いていることが確認できれば、原因はそれ以降の「動き」を作るパーツにあると推測できます。実際に、原因はバーを動かすための「ギア(歯車)の摩耗」でした。このように、ログや測定器を使って一つひとつ可能性を潰し、原因を絞り込んでいくプロセスが重要です。
【Case2】補聴器の検査結果が、たまに「デタラメな値」になる?
【現場の状況】
あなたは補聴器の性能をチェックする検査装置を担当しています。画面に表示される測定データを確認すると、本来なら一定であるはずの数値が、たまに不規則な「異常に大きな値」を示してしまいます。補聴器から出ている音を、電気信号の動きをグラフのように画面に映し出す「オシロスコープ」という測定器で確認したところ、波形は非常に綺麗で、ノイズが乗っているわけではなさそうです。
異常値の原因は、「A:ハード」?「B:ソフト」?
正解は・・・
「B:ソフト」
【解説】
数値が異常な値を示すとき、原因は「入力信号の乱れ(ハード)」か「計算のバグ(ソフト)」のどちらかです。今回は、オシロスコープを使って「ハードが送り出している信号そのものは正しい」と確認できました。この場合、信号を受け取った後の、プログラム内の計算の過程で何らかのエラーが起きていると判断できます。
【Case3】太平洋のど真ん中で、亀からの信号が途絶えた!
【現場の状況】
亀の背中に調査機器をつけ、太平洋を横断する生態調査プロジェクト。順調だった信号が、ある日突然途絶えてしまいました。現場は太平洋の真ん中ですぐの確認、捜索は難しそう。他の亀に取り付けた機器は正常に動いており、プログラムに共通のバグはなさそうです。
信号が途絶えた原因は、「A:ハード」?「B:ソフト」?
正解は・・・
判別不能
【解説】
実際にこのようなケースでは、「どちらとも断定できない」という結論に至ることもあります。検証するための現物が手元にない以上、これ以上の追及は困難です。プロとして大切なのは、不明なエラーを闇雲に恐れるのではなく、「再現性がある問題か」「他の個体でも起きているか」を分析することです。その上で、ときには「これ以上の深追いは不可能」と冷静に判断を下し、次回の改善策に繋げる決断力も必要になります。
【Case4】特定の病院だけ、データ転送が極端に遅い
【現場の状況】
耳の検査データを集計するWindowsアプリを導入しました。多くの病院では快適に動いていますが、ある一軒の病院だけ、送信ボタンを押してから完了するまで「30秒」もかかります。社内のテスト環境では3秒で終わる処理です。
遅延の原因は、「A:ハード」?「B:ソフト」?
正解は・・・
「A:ハード」
【解説】
特定の環境でのみ発生する遅延は、ネットワーク経路やサーバ負荷など、インフラ側の問題が疑われることが多いです。
今回の原因は、病院内のネットワークを流れるデータ量が許容量に対して非常に多く、通信の順番待ちが発生していたことでした。その結果、動作が極端に遅くなっていました。
この場合、ソフト側で「タイムアウト」になってしまう制限時間を延ばせば、エラーで止まってしまうということは防げますが、それではユーザーの使い勝手は改善しません。プログラムを修正する前に、ネットワーク構成を確認し、環境そのものの改善を提案できる広い視野が、根本的な問題解決に繋がります。
※タイムアウトとは、データ通信において「応答を待つ制限時間」のこと。ネットワークが混雑していると、データが途中で渋滞し、あらかじめ決めておいた制限時間内に応答が戻ってこないため、エラーとして処理が中断されてしまいます。
【Case5】検査開始ボタンを1回押したのに、2回反応する?
【現場の状況】
「聴力検査機器」の使用中、被検者が音が聞こえた時に「応答ボタン」を「カチッ」と1回だけ押したのですが、システム上では「複数回連続で押された」と判定されてしまいました。プログラムのコードを確認しても、「ボタンが押されたら1回だけ実行する」という命令は正しく書かれているようです。
複数回判定されてしまう原因は、「A:ハード」?「B:ソフト」?
正解は・・・
「A:ハード」
【解説】
これは「チャタリング」と呼ばれる現象で、スイッチ内部の金属接点が触れ合う瞬間に、物理的にごくわずかな「震え」が起きることで発生します。
人間の指では1回しか押していないつもりでも、電気信号の世界では超高速で「オン・オフ」が繰り返されているため、コンピュータは「連打された」と勘違いしてしまうのです。
本来はハードウェア側で電気的に防ぐのが理想ですが、プログラムで解決することもあります。具体的には、「一度信号を検知したら、その後のごく短い時間は次の信号を無視する」といった処理を加えます。ハードの物理的な「癖」を理解し、ソフトのロジックでそれをカバーして正しく動かす。ここが組み込みエンジニアの腕の見せ所です。
【Case6】10年動いていたシステムが、急に動かなくなった
【現場の状況】
10年以上、安定して動いていた顧客管理システム。PCが古くなったため、最新のOSを搭載した新品のPCに買い替え、ソフトを入れ直しました。ハードウェアは最新で、初期不良もありません。しかし、いざソフトを起動すると、エラーが出て止まったり、動作が異常に重かったりして使い物にならなくなってしまいました。
以上が出てしまった原因は、「A:ハード」?「B:ソフト」?
正解は・・・
「B:ソフト」
【解説】
ハードを新品にしたのに動かない。この場合、疑うべきは「新しい環境にソフトがついていけていない」ことです。
OSの仕様変更によって、古いプログラムの書き方ではエラーが起きてしまうことがあります。
また、10年分の蓄積された膨大なデータが、新しいOS上の処理スピードと噛み合わなくなることもあります。ハードウェアの寿命は「新品交換」で解決できますが、ソフトウェアには「時代の変化に合わせたメンテナンス」が欠かせません。だからこそ、お客様との信頼関係を築きながら、長いお付き合いをさせていただいています。
学生のみなさんへのメッセージ
エンジニアの仕事は、決してデスクでパソコンを叩くだけではありません。今回のクイズのように、動かない原因がハードにあるのか、それともソフトにあるのかを突き止める「捜査官」のような面白さがあります。物理的な機器の「クセ」を理解し、ソフトの力でそれをコントロールして正しく動かせた時の喜びは、組み込み開発ならではの醍醐味です。
私たちが手がけているのは、医療現場や社会インフラを支えるシステムです。そこでは単にコードを書くスキルだけでなく、ネットワーク環境や将来のデータ蓄積まで見据える広い視野が求められます。自分が解決したその一歩が、誰かの「当たり前の生活」を守っている。そんな責任感と誇りを持てる仕事を、ぜひ皆さんと一緒にしたいと思っています。
