C言語

MISRA C:2023 がリリースされました

The_C_Programming_Language_logo

2023年5月12日に MISRA から、MISRA C:2023 がリリースされました。この記事では、MISRA-C の紹介と歴史を振り返ります。

MISRA-C とは

C 言語は、長く広く使われているプログラミング言語です。古い言語ですが、現在でも、リアルタイム制約が厳しい組込みソフトウェアでは、主力言語として使われる場合があります。

C 言語は、軽い開発環境でもコンパイルができるなどの利点があります。その一方、実行時チェックをほとんど行いません。また、基本的にプログラマーがやりたいことを妨げないため、危険な書き方ができます。

C 言語で危険な書き方ができることは、1985年にベル研究所内部ですでに内部報告書があったようです(「Cプログラミングの落とし穴」A. コーニグ著 1990年)。C 言語の危険な面を避けるために、ベテランの開発者はノウハウをガイドラインとしてまとめていました。

自動車に搭載するコンピュータは、高品質が求められます。業界団体 MISRA(Motor Industry Software Reliability Association)がまとめたガイドラインが MISRA-C です。MISRA-C は車載を超えて多くの分野で採用されるガイドラインとなりました。

注意
MISRA-C は、MISRA-C:2004 までは、”MISRA-C” と記載していました。一方、MISRA C:2012 から “MISRA C” と記載しています。タグでは、”MISRA-C” としました。

MISRA-C の歴史

いままでに3つの Edition が発行されています。

MISRA-C:1998 (First Edition)

“Guidelines for the use of the C language in vehicle based software” として、1998年4月に発行されました。現在、MISRA サイトから購入できる PDF 版は、2002年10月に Version 1.2 として更新されています。

C 言語を安全に使うための127個のガイドラインを定めています。

自動車業界では、このガイドラインが業界標準となりました。日本語訳は、自動車技術会からテクニカルペーパとして公開されていました。日本規格協会から解説書が発行されています(「組込み開発者におくる MISRA-C 組込みプログラミングの高信頼化ガイド」MISRA-C研究会編 2004年)。

MISRA-C:2004 (Second Edition)

“MISRA-C:2004 Guidelines for the use of the C language in critical sysytems” として、2004年10月に発行されました。タイトルも自動車を超えて利用されることを意図しています。

この版では、141個のガイドラインを定めています。一度改訂(Technical Corrigedum)が発行されています。2004年に発行されていますが、C90 のみを対象としており、C99 は対象外としていました。C90、C99 については、こちらをご覧ください。

日本語訳は、自動車技術会からテクニカルペーパとして公開されていました。日本規格協会から解説書が発行されています(「組込み開発者におくる MISRA-C 2004 C言語利用の高信頼化ガイド」MISRA-C研究会編 2006年)。

MISRA C:2012 (Third Edition)

“MISRA C:2012 Guidelines for the use of the C language in critical sysytems” として、2013年3月に発行されました。

この版から以下となりました。

  • おおきな指針を示す「ディレクティブ」とより厳密な定義を持つ「ルール」にガイドラインを分けました。
  • C99 に対応しました。Amendment 2 からは C11 にも対応しました(後述)。
  • 自動生成されたコードに適用する場合の提案をしています(Appendix E)。

日本規格協会から解説書が発行されています(「MISRA C 2012 組み込みプログラミングの高信頼性ガイド」MISRA-C研究会著 2022年)。

MISRA C:2012 (Third Edition) の改訂と追補

この版では、以下の多くの改訂(Technical Corrigedum)と追補(Amendment)が発行されています。追補ではガイドラインが追加されています。

  • 2016年4月: MISRA C:2012 Amendment 1 (AMD1)
     主にセキュリティに関するガイドラインを追加
  • 2017年8月: MISRA C:2012 Technical Corrigedum 1 (TC1)
     ガイドラインを明確にするための注と誤記訂正
  • 2019年2月: MISRA C:2012 Third edition, First revision
     AMD1とTC1を取り込んで、改訂版として本体が更新されました。
  • 2020年2月: MISRA C:2012 Amendment 2 (AMD2)
     主にC11に関するガイドラインを追加
  • 2022年3月: MISRA C:2012 Technical Corrigedum 2 (TC2)
     ガイドラインを明確にするための注と誤記訂正
  • 2022年10月: MISRA C:2012 Amendment 3 (AMD3)
     主にC11に関するガイドラインを追加
  • 2023年3月: MISRA C:2012 Amendment 4 (AMD4)
     主にC11で導入されたマルチスレッドに関係するガイドラインを追加
  • 2023年5月: MISRA C:2023 Third edition, Second revision
     今回発行されたガイドラインです。
     MISRA C:2023 となっていますが、TC と AMD を取り込んだ改訂版です。

最後に

駆け足でしたが、MISRA-C について紹介しました。

わたしは、高品質が求められる組込み製品の開発に従事しています。高品質を実現する手段のひとつとして MISRA-C を活用しています。

このブログで、版権に抵触しない形でガイドラインの紹介ができないか検討しています。

POSTED COMMENT

  1. wosi より:

    初めまして。プログラミング素人のものです。
    MISRAの出版物が多く整理できていませんでしたが、歴史含めてわかりやすくまとめて頂き、とても理解が進みました。ありがとうございます!

    発展した議論ができず恐縮ですがお礼まで。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA