【RL78組み込み開発】なぜ私は wrapper を必ず入れるのか〜ルネサスRL78で後悔しない設計の話〜
みなさんこんにちは、通信機器設計一課 アーキテクチャーユニットの親泊です。
今回はRL78マイコンの組み込みソフトウェア開発のwrapperについてお話しさせていただきます。
ルネサスの RL78 は、「低消費電力・長期供給・実績十分」のマイコンです。
このため、非常に使い勝手がよく当社でも多くの採用実績があります。
しかし、組み込みソフトウェア開発に共通することですが、「設計をサボる」と後々泣きを見ることになります。
特に
・レジスタ直叩き
・生成コード直書き
・ドライバAPI 直呼び
これらをやり始めると、後で修正地獄コースに一直線。
そこでこの記事では、**「RL78組み込み開発こそ wrapper を入れるべき理由」**を、現場目線で解説します。
wrapper(ラッパー)とは? 組み込みソフトウェア開発におけるwrapperとは何か?
wrapper(ラッパーと読みます)とは既存の関数・ドライバ・ハードウェア制御コード等を新しいAPIや別の形式で「包み込み(ラッピング)」することで、元の機能を修正することなく、利用しやすくする、他の環境への移植を簡単にする等を目的とした中間コード的な役割を持ちます。EOL(生産中止)対応などで、別のマイコンに移植する際にも効率化が図れます。

RL78の組み込みソフトウェア開発でよくある“詰みポイント”
生成コードに手を入れて戻せなくなる
Code Generator が吐いたコードやサンプルをそのまま改造して開発を進めていくと、最初に生成したコードとの違いが多くなり、後に設計の見直し等が発生した時にコード生成機能が活用できなくなる等は良くある話です。
wrapper を挟んでいないと、自動生成物と独自設計部分の関係が密になりやすい。
マイコンは同じでも、設定変更が地雷
マイコンのファームウェア開発あるあるとして「クロック設定変更」、「割り込み優先度調整」、「低消費電力モード追加」等、設定変えただけなのに思わぬ場所で不具合が発生した場合、直接触っている箇所が複数あり不整合に気づきにくいことが大体の原因だったりします。RL78に限らず、高性能な汎用マイコンは、ハードウェアが色々な機能に対応しており設定が非常に複雑化しています。
wrapperを入れると得られる3つのメリット
wrapperのメリットその1 設計変更に強くなる
wrapperがあると、
・レジスタ変更
・ドライバAPI差し替え
・将来のマイコン派生対応
等の設計変更が発生しても、wrapperの修正だけで対応できることが多いです。

wrapperのメリットその2 テスト・デバッグが楽になる
wrapperがあれば、
・ダミー実装に差し替え
・ログの仕込み
・通信の無効化
等が、簡単に行え、テスト可能な構造が作りやすくなります。

wrapperのメリットその3 属人化を防げる
wrapperを使い、
・「このレジスタは触るな!」
・「この順番じゃないと動かない!」
等を、内包することでRL78の制約に左右されなくなり、経験の浅いエンジニアでもRL78を動かしやすくなります。
また、生成コードやドライバAPIを直接触ることによる事故も防げます。

独自開発したRL78用wrapperで開発がどうなったか
当社は既に自社開発のRL78用wrapperを使用した開発を行っております。
実際にwrapperを使用したことで以下のようなメリットが得られました。
① 問題発生箇所の特定が容易になる
デバッグ中の問題解析からwrapperに関する部分を排除できるため、従来よりも原因の特定が容易になります。
万が一、wrapperの不具合だったとしても、独自開発しているため原因特定や対応は容易です。
② 経験の浅いエンジニアでも簡単にマイコンが動かせる
RL78依存箇所をwrapperにすることで、経験の浅いエンジニアでもレジスタ設定等を容易に行えます。
また、設計段階のレビューで使い方の間違いにも気づきやすくなります。
③ コードの可読性が上がり、品質向上につながる
wrapperにより関数名やI/Fを使いやすくすることでコードの可読性が上がり、結果的に品質の向上にもつながります。
例として、関数名を「LED_On()やLED_Off()」といった「機能」で表現することにより分かりやすくできます。
まとめ:RL78開発者こそ wrapper を武器にしよう
RL78は堅実
だからこそ、設計差が出る
wrapperはコストではなく投資
「直接触らない勇気」
「APIを見ることで何をしているのかが分かりやすい」
これが、RL78を楽に、正しく使うコツです。
最後までお読みいただき、ありがとうございます。

【関連リンク】
【関連ブログ】
