連載
» 2021年04月15日 11時00分 公開

ソフトウェア技術者のためのバグ百科事典(19)複雑怪奇な通信系プログラムのバグ山浦恒央の“くみこみ”な話(140)(1/4 ページ)

ソフトウェア技術者に向けて、バグに関する基礎知識をまとめていく新シリーズ「バグ百科事典」。第19回は、複雑怪奇になりがちな通信系プログラムのバグを紹介します。

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

1.はじめに

 バグ百科事典では、筆者が気になったバグを紹介し、読者の皆さまに「バグの早期発見」と「バグの未然防止」に役立てていただくものです。

 本シリーズも第19回目を数え、バグに対する勘が身に付いてきたことと思います。今回は、通信系プログラムのバグを取り上げます。

⇒連載「山浦恒央の“くみこみ”な話」バックナンバー

2.情報の伝達

離れた人とコミュニケーション ※写真はイメージです

 離れた人とコミュニケーションを取るためには、通信技術が必要不可欠です。例えば、友人の近況を知りたい場合は、電話、メールなどを使用します。

 電話が登場する前の主要な伝達手段は手紙でした。例えば、ハガキや巻物に伝達したい内容を記述し、郵便箱に投函(とうかん)します。その後、指定した住所に手紙を配達し、相手は届いた手紙の内容を確認します。

 昔は近況を聞くだけでもかなりの時間がかかりましたが、現在は、メールで数秒あれば伝達可能です。これは、世界各地に通信網ができた恩恵でしょう。

 元祖世界3大発明が「火薬」「羅針盤」「活版印刷」なら、現代の3大発明は「コンピュータ」「通信技術」「航空宇宙技術」でしょう。今から60年前、コンピュータは単なる高速演算装置で、「点」でしたが、機械制御で使うことにより「線」になり、銀行のオンライン処理などのネットワークと合体して「面」になり、ついに、いろいろなネットワークを結ぶインターネットと結合して「立体」になりました。コンピュータは、ネットワークと合体していなければ、今日のように発展しなかったでしょう。

 コンピュータがネットワークと結びついたことで、複雑な処理が高速で可能になった反面、それを開発するエンジニアには高度な技術が求められ、難解なバグを解決しなくてはならなくなりました。皆さんは、そのど真ん中にいるのです。

3.通信系プログラムの特徴

 通信系プログラムでは、複数の機器間で通信を行います(図1)。

図1 図1 機器間の通信のイメージ

 図1では、何らかのコンピュータにセンサーをつなげている様子を示しています。通信が必要なプログラムの場合、単一機器で動作するプログラムよりも現象が複雑です。例えば、「データが届かない」という事象が発生したとします。その場合、「受信側プログラムが原因か」「送信側プログラムが原因か」「物理的な接続が原因か」などの複数が考えられるでしょう。これにより現象が複雑怪奇に見えます。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.