IoTデバイス向けのモデル駆動型ベース統合環境ビルドツール紹介(1)
2020-04-15
azblob://2022/11/11/eyecatch/2020-04-15-model-driven-based-integration-environment-build-tool-introduction-000.jpg

はじめに

皆さん、初めまして!2020年度、FIXERに入社しました佐藤拓実です!

今回 Tech Blog に乗せる記事として、自分の自己紹介と学生時代に研究のテーマとして使用していたOSSのアプリケーションの簡単な説明(今回は概要とダウンロードまで)を執筆させていただきました!

拙いところもありますが、容赦して読んでいただければと思います。


プロフィール

  • 名前:佐藤拓実
  • 出身:福島県伊達市
  • 大学:会津大学大学院 情報技術・PM専攻
  • 研究:後述するビルドツールのためのCIツール+ビジュアルエディターの開発
  • 趣味:散歩、フリーゲーム
  • 触れてきた技術:ウェブスクレイピング、GUIライブラリ、OCRツール、ChatBot、etc.

2月までは福島の会津若松市と実家のある伊達市の方にいまして、3月後半に東京の方に本格的に越してきました。コロナウイルスのパンデミック時に入社ということで、すごいタイミングになっちゃったぞ、とひしひし感じています。

入社するまで

FIXERに入社する前までは、福島にある会津大学で学生の方をやっていました。学部が情報系しかない日本だと唯一(私が入学したときはそうでした、いまはどうかな?)の大学でした。

基本的に研究室にいて、黙々と研究活動しながら、個人の時間に先輩と新しい技術やろうぜ!といった感じで自己学習をしたりするような学生でした。

強く興味をもってやっていたこととしては、技術を組み合わせて便利なアプリケーションを作るということでした。そのため、使えそうな技術や知識には積極的にアンテナをたてて収集して学習してました。

その一環として便利な機能が元から使えて、実行する環境も安易に作れるクラウドに興味を持ち、そこからFIXER入社につながったというわけです。

これからについて

これからの活動としては、まずはAzureを研修期間内でマスターすることが第一目標です。その一環で、個人の時間に、今まで作ってきてラズパイ上で動かしていたアプリ(ニュースの収集とか)はAzure上にデプロイしていきたいな~と考えてます。

最終的には、顧客や親しい人の願望に対して低コストで要件を満たすソフトウェアをぱっと出して、喜ばせることができるエンジニアになることが目標です。それまではコツコツと頑張っていく予定です。

自己紹介はこんな感じで、本題に入っていこうと思います...


IoTデバイスのための統合環境ビルドツールの紹介

前セクションでも少し触れた内容ですが、私が学生時代に研究として触っていた、OSSのモデル駆動開発アプローチとそのビルドツール(BBCoM:Building Block Component Model) の紹介をこのセクションに軽く記したいと思います。

まず、ここで紹介記事を書く理由についてです。このツールを開発していたのが、会津大学で博士後期課程に所属していたファンさんという方なのですが、卒業後に中国の方に帰国しまして、そこから別のプロジェクトを始めているらしく、おそらくこのツールについては放置されているのかな、というのが現状です。

また、このツールはOSSのソフトですが、私以外で使用しているといった話は全く聞かないので、私の研究活動に対する供養の意味も込めて、この場を借りて、インストールから使用例まで時間の許す限り記していきたい、という所存です。

今回の記事では、インストールの部分まで進める予定です。それ以降の実際のソフトウェアのビルド等は次回になります。

1. モデル駆動型開発(MDSD)

BBCoMの説明の前に、まずはモデル駆動型とはなんぞや、という所からですね。Wikipediaからの参照を下に貼ってみます。

> モデル駆動型アーキテクチャ (MDA) は、モデルとして表現される構造的仕様のガイドラインを提供するソフトウェア開発手法である。MDAでは、システムの機能はまず適切なドメイン固有言語を使ってプラットフォーム独立モデル (PIM) として定義する。CORBAや .NET といったプラットフォーム定義モデル (PDM) が与えられると、PIM は別のドメイン固有言語や汎用のプログラミング言語(Java、C#、Python など)に対応したプラットフォーム特化モデル(PSM)へと変換される。PIMとPSMとの変換は通常、モデル変換ツールなどの自動化されたツールを使って行われる(例えば OMG が標準化したQVT)。工程全体は文書化され、OMG が MDAガイド(MDA Guide)として保守している。

うーん、なんのこっちゃって感じですね。

かみ砕いていうと、MDSDはソフトウェアを作る際に従来のようにプログラムを書いて開発するのではなく、JSONやXMLといったシステムに関する事を抽象的に記述できる言語で記述したファイル(=モデルファイル)をプログラムに自動的に変換する仕組みを利用して、ソフトウェアを簡単に作ろう!というものです。

開発をモデルファイルで記述するメリットとしては、

  • プログラムへの深い知識がいらない
  • システムの抽象的な全体の構成について俯瞰しながら編集できる
  • ツールによって自動的に実装されるので人的な原因によるプログラムのバグの発生を抑制することができる

という感じです。話を聞くだけだと夢のようなツールですね!

それでは、実際の例としてこれからBBCoM Approachについて説明していきます。

2. BBCoM Approachの概要

BBCoM Approachは低性能なIoTデバイス向けの統合環境を作成するモデル駆動開発ベースのアプローチです。このアプローチではモデルファイル用のビルドツールとしてBBCoMツールを提供しています。

ビルドされたシステムはミドルウェア群からなり、IoTデバイスがそれぞれとネットワークで通信することでデバイスの動作に多大な影響を発生させるような重い処理を任せたり、ほかのデバイスへ渡す値の一時保管場所といった機能をもたせることできます。

(実際は、ミドルウェアのシステムについては開発者にとって、かなり自由度が効くので、大体のことはできると思います)

凄い簡単なデプロイまでのフローとしては、上の画像のようになってます。

  1. 開発者が目的の複数のミドルウェア(必要な分だけ)のシステム部分をプログラムで実装します(すべてモデルファイルで補えるわけではないです、簡単な部分のみなのでご容赦ください)
  2. 次に、統合システムのプロパティ、それぞれのミドルウェアとIoTデバイスとの関係等をモデルファイルとして記述する
  3. BBCoM Toolがそれらを受けとって、ミドルウェア間の通信を実現するコードをモデルファイルを見ながら自動で生成、統合し、最終的な実行可能なシステムを排出する

という、流れです。本ツールの利点としては、

  • BBCoMツールがミドルウェア間の通信――フォルトトーランス等の障害対策を組み込んである――を自動的に実装するので、一切開発者がタッチする必要がない
  • ミドルウェアのシステム部分の開発+IoTデバイス側からミドルウェアのCallはRPCスタイルで書けるので、開発者に馴染みぶかいコードとして書ける

といったものがあります。

ここまで読んで興味を持っていただけた方は、次のセクションから実際にBBCoMツールを使う話に入っていくので、ぜひやってみてください。(今回は実行までは至りません、あしからず)

3. BBCoM Tool等のダウンロード

BBCoM Tool は以下のサイトからダウンロードすることができます。今はアーカイブ化してしまっていて、OSSらしさは見受けられないのですが、サイトが生きていた時は、コードの確認とかもできたはずです。

https://archive.codeplex.com/?p=bbcom

で、アーカイブ化してからダウンロードしてToolを手に入れるまで、初見では方法がわからないような難易度になってしまったので、それを今回の記事の最後として以下に記します。

まずは、サイトにつきましたら右上の”Download Archive”と書かれた紫色のボタンをおします。

そうするとZIPファイルがダウンロードされますので、解凍してください。

すると上のエクスプローラーのような画像が出てくると思います。こっからが初見殺しです。 releases/0/ のフォルダーに入ってください。

中には文字が羅列されたファイルがあると思います。そのファイルの名前を変更から、拡張子を.zipにしてください。

そしたら、それを解凍です。すると、BBCoM.v1.0.Alphaというフォルダが見つかると思います。

その中にBBCoM ToolとチュートリアルのPDFが同封されていれば、無問題です。

これでBBCoMに関する準備は終了です。(実行環境に関しては、別の機会にやります)

今回の記事は以上です。実際にBBCoM Toolを使った例は次回行います。

長々とお付き合いいただきありがとうございました!