SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

組込みコンポーネントシステムTECS

【第4回】コンポーネントの実装コード


  • このエントリーをはてなブックマークに追加

 今回は、TECSジェネレータの働きと、コンポーネント記述言語TECS CDLで定義されたコンポーネントの振舞いを記述するセルタイプコードの実装について説明します。

  • このエントリーをはてなブックマークに追加

TECSのリリース

 もし、すでにTECSが皆さんに使っていただける状態であれば、恐らくこのあたりをもっと早めに説明したことでしょう。しかし、残念ながら、まだ使っていただける状況にありません。でも、皆さんに使っていただけるようになるのは、もうそんなに遠い先ではありません。

 ここでTECSのリリースについて、少し説明します。2008年6月に開催されたTOPPERSカンファレンスに合わせて、TECSをTOPPERSプロジェクトの会員に向けてリリースしました。そして、ようやく一般公開へ向けてのスケジュールが見えてきました。

 2009年の春(遅くとも5月のESECまで)には一般公開する予定です。

 また、TECSのホームページを開設しました。まだ、TECSを一般公開していないため、会員以外の方はトップページ以外ほとんどアクセスできませんが、これまでに発表した論文などの一覧を掲載していますので、参考にしていただけると幸いです。

TECSジェネレータ

 さて、コンポーネントの実装コードについて説明する前に、TECSジェネレータ(以下単にジェネレータと記す)について説明します。

 本連載の第2回で、TECSによる開発の流れについて説明しましたが、ジェネレータは、前回説明したコンポーネント記述言語TECS CDLによって記述されたコンポーネント記述を入力として、実装コードの一部となるC言語のヘッダやインタフェースコードを生成します。

 ジェネレータの役割は、いくつかありますが、大きなところは以下のものです。

  • セル間の結合コードの生成
  • セル本体(セルCB)の生成
  • セルタイプコードのテンプレートの生成

 さらにMakefileも生成されます。IDEを使う場合にはあまり役に立ちませんが、Makefileのテンプレート、依存関係を示すMakefile.depend、TECSのセルタイプコードなどのファイルの一覧を記すMakefile.tecsgenが生成されます。

 以前に述べたようにTECSでは、C言語記述を基本としています。

 しかし、普通C言語ではバインディングが固定されていて、コーディング時に呼出す関数が決定されてしまい、TECSにおける組上げ記述のように、後から関数の呼出し先を変更する手段がありません。

 ジェネレータは、そのようなC言語の特性をカバーして、組上げ記述に基き、呼出し先を変更します。そのやり方は、やはりC言語に欠けているものを補いますので、マクロ定義を多用します。

 経験されていることと思いますが、マクロはソースコードデバッガとの親和性は、必ずしもよくありません。その点は、現状のTECSで、不満の残るところかもしれません。

 コンポーネントシステムは、どちらかというとオブジェクト指向の要素を多く含んでいることもあり、オブジェクト指向言語であるC++を使ったほうがよりスマートに実装できる可能性があります。しかしながら、組込みシステム開発でもっとも用いられている言語がCであることを考えると、Cで実装できたほうが受け入れやすいと考えられます。そのようなことを考慮してC言語による記述を基本としています。

 ジェネレータについては、TECSとしてすべての仕様を規定するのではなく、リファレンス実装を提供するのにとどめています。よりよい実装を妨げないようにすることと、ハンドコーディングされるセルタイプコードを除けば、実装により異なることがあってもユーザーの不利益にはならないことによります。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
セルタイプコード

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
組込みコンポーネントシステムTECS連載記事一覧

もっと読む

この記事の著者

大山 博司(おおやま ひろし)

TOPPERSプロジェクト コンポーネント仕様ワーキンググループ主査オークマ株式会社 FA システム本部 主管技師オークマ株式会社(当時は大隈鉄工所)に入社以来、数値制御装置の制御ソフトウェア開発に従事する。博士(工学)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3808 2009/04/03 11:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング