新卒でIT業界に飛び込んで早十数年。世間ではアプリ開発だのWeb開発だの華々しい世界が注目を浴びることが多いですが、僕はほぼ組込み系システム開発一本で食っています。C言語とアセンブリが切っても切れない親友です。
そんな僕ですが、最近「MISRA-C」というものが気になってます。
MISRA-Cとは
MISRA-Cとは、組込み系ソフトウェア開発向けに、コーディング規約を標準化したものです。
Wikipediaから説明文を引用します。
MISRA CはMISRA (Motor Industry Software Reliability Association、ミスラ) が開発したC言語のためのソフトウェア設計標準規格である。ANSI/ISO/IEC規格のC言語で記述する組み込みシステムで、安全性と可搬性 (ポータビリティ、移植性) と信頼性を確保することを目的としている。
コーディングルールを組込み系向けに標準化することにより、バグを作りこみにくくしたり、移植性を高めようという狙いのようですね。確かにチームでシステム開発をしていますと、何かしらコーディングルールを決めておかないことには、みんながみんな好き勝手書いてたらわけわかんなくなっちゃいます。特にC言語は色々な書き方を許容している言語ということもあり、書く人によって癖が出やすいので。
どのレベルまでルールとして決めておくべきか、という問題はあるにしろ、コーディングルールを定めておく重要性には疑問をさしはさむ余地は少ないです。とはいえ、コーディングルールも、会社や開発チームによっていろいろな考え方や温度差があり、これまた多種多様なルールが氾濫しているわけでして。
いくつもの会社やプロジェクトを渡り歩いている人にとっては、場所が変るごとに新しいコーディングルールを覚えるというのもなかなかストレスのタネになってたりします。
そういう意味で言えば、汎用的なコーディングルールを決める取り組みであるMISRA-Cは現場の要望を汲み取ってくれているとも言えます。
ただ、MISRA-Cにはいろいろ異論や批判もあり、「そのルール本当に必要!?」と疑問視されている部分もあるようです。
万人が納得するルール作り、というのもなかなか難しいですね。
何故、MISRA-Cか?
さて、冒頭でも書いたように、僕はいまMISRA-Cが気になってて勉強しようと思っているわけですが、何故またMISRA-Cを勉強しようと思ったのか。
それは、愛知に本社を置く某大手自動車メーカー関連の仕事で、MISRA-Cを採用しているところが最近増えているらしいから、という理由です。
ブロガーがGoogle様の意向に逆らえないように、東海在住のエンジニアにとってはトヨ・・・某大手自動車メーカー様の意向に逆らうわけには行きません。おまんまの食い上げになってしまいますので。
東京や関西のほうの事情には疎いですが、少なくとも東海地区で今後も組込み系エンジニアとして食っていこうと思ったら、MISRA-Cは勉強しておいても損はないのかな、と。
【余談】たまには向学心に燃えることもある
とは言っても、普段の僕ならただちに仕事で使う知識以外はそうそう勉強する気になれなかったりします。「なんで自主的に勉強なんてせにゃならんの?その勉強してる時間お給料もらえるわけじゃないんでしょ?」なんて考えてたりしますが、それでもたまには向学心がプスプスとくすぶるときもあります。
きっかけは、馴染みのブロガーさんが最近機械学習の勉強をがんばっている姿を見ているから、というのが大きいです。この方本当すごいです。機械学習を覚えるために、高校の数学の勉強をやり直したりとか、そのエネルギーどこから出てくるンすか!?と尊敬するやらあきれるやら。もとい、尊敬しています。
たまには向学心に燃えてみるのも悪くはないですね。あくまで「たまには」ですが。