MISRA-Cから実践的な組み込みCプログラミングを学ぶ ――『組込み開発者におくるMISRA-C』

加藤滋郎

tag: 組み込み

書評 2004年8月12日

MISRA-Cから実践的な組み込みCプログラミングを学ぶ

f1.jpg

MISRA-C研究会 編
日本規格協会 刊
ISBN:4-542-50334-8
26×19cm
273ページ
3,400円(税別)
2004年5月



 MISRA-Cは,英国の自動車関連ソフトウェアの業界団体であるThe Motor Industry Software Reliability Association(MISRA)が策定した,C言語によるコーディングのガイドラインである.1998年にMISRA-Cが発表されてから,欧州だけでなく世界中で組み込みCプログラミングの安全性に対する関心が高まってきた.日本においても,MISRA-Cに準拠したコーディングを重要視する自動車メーカが現れた.ところが,実際の開発現場でMISRA-Cを適用しようとすると混乱が生じてしまう.本書は,そうした開発現場で役に立つMISRA-Cの解説本である.

 混乱は,ソース・コードがルールに適合しているかどうかを静的解析ツールでチェックすると現れる.開発者は,まず多くの警告にあ然とする.そして,気を取り直して一つ一つの警告を確認していくが,いったい自分のコーディングのどこが悪いのかがわからない.ツールの警告は機械的で冷たいし,そもそもMISRA-Cルールそのものが淡白で,理解するのに専門的な知識が要求される.現場の開発者は,実際のコードを前にして,そのルールをどう解釈すればよいのかわからなくなる.

 そんなとき,本書の詳細な解説が役に立つ.本書の優れた点は,ほとんどすべてのルールにサンプル・コードが載っていることだ.ルールに適合している場合と,逸脱している場合の両方のコードが載っているので,自分の書いたコードがそのどちらなのかが判断しやすい.また,解説の中では,ISO Cの定義にまでさかのぼり,なぜそれが危険なのか,どのような問題が生じるのかをていねいに説明している.Bool型や関数型マクロはMISRA-Cでもっともあいまいに規定されており,チェック・ツールがもっとも冗長に多くの警告を出す部分だが,本書では編者であるMISRA-C研究会の独自の解釈を披露して,具体的な判断基準を示している.

 本書はまた,組み込み現場での実践的なCプログラミングの教科書としても有益だ.本書で示される解説では,ISO Cで未定義・未規定の部分や,switch文でdefault:のスペルをまちがえるとどうなるかなど,C言語の入門書では決して学ぶことのできない落とし穴にまで言及している.日本の組み込み開発現場では,実際のところ,開発者がC言語の入門書レベルを学んだ程度で,すぐに実践に入ってしまうところが多いのではないだろうか.静的解析ツールの出す警告を調べながら本書を読んでいけば,自分のソース・コードを事例として,こうしたC言語の落とし穴を学習できるだろう.

 本書について残念なところは,文章が固く,遠回しで慎重な表現が多い点である.そのため,ルールを逸脱しても,どの程度危険なのか一見してわからない箇所もある.C言語の初学者が読むのには適していない部分も見られる.それから,MISRA-CのVer. 2についても,もう少し言及してほしかった.まだ正式発表されていないのでしかたないとは思うが,Ver. 2でルールが大きく変わるようだと,開発者はまたそれに振り回されて混乱してしまう.もしVer. 2の内容も先取りして解説できたならば,こうした現場での不安の解消にひと役買ったに違いない.

 もっとも,現場の開発者はMISRA-Cばかりに気を取られていてはいけない.いくら良いコードを書いても品質が保証されたわけではない.ソフトウェアの品質は,上位の設計,さらにはアーキテクチャ・レベルで作り込まれるべきものである.筆者の会社(デンソー)でも,MISRA-Cに準拠したコーディングを採用し始めているが,あくまでもこれはソフトウェアの品質を保証するための,多くの努力の一つに過ぎないと考えている.


加藤滋郎
(株)デンソー

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日