感想
まだ感想はありません。最初の1件を書きましょう!
サマリー
今回のエピソードでは、Autonomy Logic社が開発したST言語をC++17に変換するコンパイラ「STruC++」について紹介されました。これはST言語で書かれたプログラムをC++のエコシステムに乗せ、ユニットテストや対話式ランタイムでの検証を可能にするフレームワークです。特に、ST言語に似た構文でテストケースを記述できる点が特徴として挙げられましたが、ベンダー固有のファンクションブロックや外部I/Oのテストにおける課題も議論されました。大手PLCメーカーが内部的に同様のツールを開発しつつも公開しない中、Autonomy Logicがこれをオープンソースとしてリリースしたことの意義や、コミュニティによる活動支援の重要性についても語られました。
STruC++の紹介と概要
明日のファクトリーオートメーションへようこそ、メインパーソナリティの高橋です。
クリスです。
はい、よろしくお願いします。
よろしくお願いします。
クリスさん、なんか新しい何かを試したという話を聞きましたけど。
そうですね。たぶん前回、OpenPLCという皆さんとすごい話したんですけど、
これ会社入りからですから、オートノーミロジックという会社から作ったOpenPLCのランタイムなんですけれども、
これはたぶん先月かな。
彼はまた、なぜかまた一つ新しいものを作っていて、
Torus C++という新しいフレームワークを作っていて、
作った会社の人が、クリスさんも試してみて、ちょっと感想を聞かせてと言われたので、
一通りの基本機能も全部試しました。
なので、この会で簡単に説明したいなと思っています。
このフレームワークの名前は、基本はオープンソースなものなんですけど、
Torus C++というフレームワークですね。
GitHubでダウンロードできるので、
たぶん最終的にはPodcastのところにも、このフレームワークのGitHubもリンクも貼っていくんじゃないかなと思っています。
このフレームワークは何でかというと、
面白いのはST言語をC++に変換するというフレームワークがありますね。
変換して、そしてツールが付いていて、
なんで変換すると、
変換して、それで彼のフレームワークでいろいろな機能を使うことですね。
例えばユニットテストとか、
あとは対話式のランタイムで実際に自分が作ったSTコードをテストするとか、
そういうツールになっていますね。
私も最初に試したときにちょっと勘違いしちゃって、
これは西洋のランタイムとかじゃないかなとちょっと思ったんですけど、
オープンPSCの話と違う、これは西洋ためじゃなくて、
ユニットテストとか、あとC++に変換するのツールチェーンとか、
あとはフィールドバスは基本付いていない、
やりたいなら自分で実装してねというところですね。
なのでこれをちょっと試したので、もうちょっと紹介したいと思いますけれども、
STruC++の機能とテストフレームワーク
クリさんまだ知らないですよね、この新しいの、このTrust C++というやつが。
知らないです。
クリさんのブログしか読めないです。
そうですか。
なので最初にKeyPubで、KeyPub Cが走れる環境があればもう使えますので。
何て言うんですか、さっき言ったような目的としてはあれですかね、
ST言語で書いた資産をC++のエコシステムに乗せるためのコンバーターみたいなイメージでいいですか。
そうですね、そういうイメージですね。
対話式ランタイムも付いてきて、これで対話式ランタイムで実際に自分で変換したものか、
プログラムで動くかどうかをチェックするランタイムも付いてるんですね。
これだからあれですかね、例えばGitHubにSTコードをあげて、
GitHub Actionsでこれを通してコンパイルして、
C++のCIを回して移動テストをしてレポートを返すみたいなことが実情できるようになるみたいな認識になるんですかね。
そうですね、このユニットテストも自分で試してたんですけど、確かITで人間じゃないんですよね。
だからこのユニットテストのテスト条件1個を自分で書くのは結構辛いなとちょっと私の感想、
でも皆さん、ITでどうやってやるんだなとすぐ聞きたくて、
テスト上のケースとか、ChatTVで生成するのかな、テスト条件とか。
いやでもその、テストのちゃんと信頼性を確認せずに回したら保証にならないですよね。
ノーチェックはないと思いますよ、ノーチェックはね。
でもこのユニットテストのケースを書くのは結構大変だなとちょっと自分が思ったりはしてますね。
だからC++テストケースを書くんですよね、多分このケースで言うと。
そう、彼の書き方はSTのコープみたいな形で手案内テストを構築するイメージですね。
STで単体テストを書くんですか?
文法は。
違うんじゃない?
ユニットテスト。
ユニットテスト自体はC++で書くんじゃないですか。
でもユニットテスト。
ユニットテスト。
ユニットテストの中身はSTで書くんじゃないですか、そういう話だから。
そうそうそういう話。ユニットテストのこういうテストケースをやりたいんですとか、
そういうこのファイル自体はSTっぽいのの形で書くんですね。
それは何STにそういう関数みたいな。
多分彼らの多分ファンクション、例えばイーカーがやったのはファンクションブロックを作りました。
ファンクションブロックは2つのパラメーターが有力してて、
この中のパラメーターを加算してそれでスクロールを出すみたいな超簡単なプログラムですけれども、
ユニットテスト、このプログラムの中にはチームの文法が出てて、
この文法はVRとかエンドVR、ちょっとSTっぽいのが入ってて、
例えばこのファンクションブロックをテストしたいんだったらパラメーターを定義して答えも定義して、
ちゃんとこの同じ結果を出すかどうかをケースのテストケースを書くんですね。
それは何で書かれてるんですか。
ちょっと待ってください。今Twitterで、フェーザー見えます?高谷さん。
今ちょうど見えますけど、はい。
こんなイメージですね。これちょっとST構文っぽいな文章ですね、彼の。
ST構文だな、これは。
この構文でテストの条件を、テストの内容を定義するんですね。
じゃあテストごとやってってことですね。
僕がさっき思ったのは、STの関数とかそういうものをC++に変換することによって、
テストケースとかもC++を書けるし、
それを扱うテストのシステムですよね、全技術が含めてですけど、
そういうものが活用できるようになるよって言ってるんかなって思ったんですけど、
そうではないんですね。
今の段階ではそうじゃないんですね。将来わからないですけど。
いやでも将来に違うんじゃないですか。
だって別にさっきの話って別に技術的課題があるわけじゃなくて、
今ってSTの中に同じような独自言語のケースの形でテストケースまで書けるようにしましたっていうテストフレームワークとしてこういうのを作って、
で、それの中身がC++で動いてますよっていう話が動いてます今。
だからこいつはテストフレームワークっていう認識のほうがいいんですかね。
そうです。でも実際変換するときはC++が変換されてるので、コンパイルのときに。
それは動いてるって話だけど。
メインのプログラム、例えばこのプログラムも、メインのSTプログラムがSTからC++に変換されるので、
なので次はC++のプログラムも、例えばC++のテストケースで。
で、有利なテストでもできるんじゃうとちょっと勝手に思ったんですね。
それは彼らが想定してるケースではないんじゃないですか。
多分そう、それじゃないキーじゃないんですけど。
それはだって、だからC++に変換されてるっていうのは、それをいじってくださいねっていう意図はないでしょ、多分。
そう、いじってはないんですね。
ないですよね。だから彼らの、分かんないですよ、僕が彼らと喋ってるわけじゃないから分かんないけど、
クリスさんから聞いてる、聞こえてくる話をまとめると、単純にSTコードで扱えるテストケース、フレームワークを作りました。
でもそれをSTのランタイムでやったりするとめっちゃくちゃ大変なので、
実行形態としてはC++の形態を取っています。
そうですね。
そういうイメージ。
感じなんじゃない?違うかな。
そういうイメージですね。
ここでいうC++っていうのは、だから外から見たらあんまり重要な話じゃないんじゃないですか。
そうか、あんまり重要じゃないか。
いや、その何ていうか、画角調整とか、これを開発してる人にはすごい意義のあることだと思うんですけど、
このテストフレームワークを使うっていう人からしたら、C++っていうところはあんまり関係ないんです。
これ?そうか、あんまり関係ないかもしれないですね。
ですよね。ただそのC++を使ってるから、これを拡張したり開発する人はいろんな可能性がありますよっていう風に言ってるように聞こえました。
すみません、本当ですね。うまく表現できないですね。
これ聞かれてる方は、このフレームワークのGitHub URLはまた概要欄に貼っておくので、ご自分で見ていただくのがいいかなと。
このSTの工夫も今一時口で述べてもわかんないと思うんで。
そうですね、はい。
産業用制御システムのテストにおける課題
最後はこの対話式のランタイムみたいなものもついてて、今変換したの最後のバイナリファイルが、
トーザーとニコックかどこかをテストする環境も用意はされてるんですね。
ただやっぱりこういうときの難しさって、専用命令が入ってきたときにテストできない問題をどういう風にしていくかっていうのは結構難しい課題ですよね。
そうです。一応GitHub上では、標準のファンクションブロックは全部対応してますとかはまでは書いてるんですね。
でもそれってICのやつだけでしょ?
そう、ICのやつだけですね。ICじゃないやつは、たぶんもうチームSTで組まなきゃいけないですね、この中で。
ですよね。で、それって組まなきゃってそもそもできないじゃないですか。だって中身が公開されてないわけですからね。
ノーノーだったらたぶん無理ですね。そうそう、これは無理ですね。
だから基本的にそれを使わないものに関してはこういうもので予見を押さえていけるわけですけど、
やっぱりユニットテストができないものがあるって言うと結合テストとかシステムテストが成立しないじゃないですか。
そもそも組めないしね、作れない、なんかに見えないもの。
ごまかすとかはあるのかもしれないですけど、でもやっぱり結合とかシステムテストってユニットテストがちゃんと保証されていますっていう上のほうがやっぱりテストなので、下が崩れてくるともう上は崩れちゃうわけじゃないですか。
崩れますね。テストできないものが出てきたっていうこともあるんですね。
この取り組みっていうのは非常に、そもそもユニットテストなんかできないから偉大なことなんだけど、やっぱりそこですよね。
例えばPLCオープンのモーションファクションブロックとか、業界では普通に標準的なものになりつつあるけど、こういう環境で動かすことができないですか。
あれの中身っていうのはメーカーがこうやって実装しているから。
そうか、確かに。一応外見、外から見ると同じですけど、中身は全然違う場合もあるんですよ。わからないですもんね、見えないし。
そこ実装する手はあるんですけどね。だからその話をしたときに、それもそうだし、やっぱりハード系の難しいところは外部の応答をちゃんと入れないといけないっていうのもあるでしょうしね。
そうですね。
やっぱり難しいな。この関数の中で外部とやりとりするっていうのが、やっぱりPLC系の難しいところ、テストの難しいところですよね。
一般的なITのものであれば、基本的には関数の入出力だけ関心しておけばテストっていうのは結構成立したりするんですけど、
それが関数の中身でさらに外部とのやりとりがあるっていうのは難しいところがあるんじゃないですか、産業系って。
確かに自分だけ関心したわけじゃないですからね。
そうですね。入出力以外の入出力があるっていう。
そうですね。入出力まで入出力から紐付いてて、何層もあってて、テスト難しいですね、これは。
それをやっぱり再現するのが、コンピュータリソースの外側に行っちゃうっていうのがやっぱり難しいところだなっていう。
オープンソース化の意義とコミュニティ
なるほど。なるほどね。でもこのフェンマーク、面白いフェンマークだと思うんですけど、使ってみてどこで使えるんだろう、ちょっと全然思いつかなくて。
普通にSTのライブラリを充実させるんだったら、これでテストしていけばいいんじゃないですか。
そう、テストしてエコシステムで動ける、最初にジコファイルで変更されたんで、
ジコファイルをIPCで実際操縦ウォークまでやるかやらないかですよね。
これは書かれてSTのテストができますよっていう管理ツールでしかないわけですよね。
これで変換したランタイムをどっかで動かしたりとかないわけですよ。
これを通して書いたSTがきちんと精度が担保されていますよっていうところだけで、いわゆるこれを作った人の構想は満たされているわけだと。
そうですね。そこまでやってるのかどうか。
どう使いますっていうのはテストします以上じゃないですか。
テストがメインが目的です。だから名前がTrustSTというのね。
だから多分オープンPLCの人は困ってるんでしょ。
多分テストするのにすごく困っているからこういうのを作ったんでしょ。
会社すごいないですか。なんでこういう暇でいかないんですけど、
なんでこういうものをまた急に作ったのかなとちょっと思ったりはしてますけどね。
何がモチベーションなんだろうちょっとずっと思ってたんですけど、
オープンPLCもそうだし、
多分エコシステムを作ろうとしてるんだと思いますけどね。
自分のエコシステム。
だからソフトPLCっていうもの、バーチャルPLCっていうものを設計を変えようとしてるんだと思いますよ。
何がモチベーションでしょうね。
そこまでやるのが、メーカーじゃないと。
この会社多分メーカーですよね。ソフトウェアメーカーという言い方ですからね。
まあでも、まだラジオで公表してないですけど、
オープンPLCの人今度ラジオ出てくれるじゃないですか。
そうですね。
そのときに聞けばいいですよ、多分。
そうですね。
これをやるモチベーションは何なんだっていうのは非常に知りたいところですよね。
そう、本当に知りたい。
なかなか謎、すぐ謎ですよ、ここは。
キーワードを見たら、XMLとSTとか、
あとSiemens、スネップステイプのGUI操作の画面とか、
いろいろ面白いものを作ったので、
何なんだろうな、この会社って思ったんですけどね。
面白いと思う。
やっぱりリリースしてるっていうのが非常に意義のあるところだなっていうのは、
このオープンPLCって会社。会社じゃないけど、
オープンPLCってオープンソースに対しては僕とこのコミュニティ。
僕、いろんなPLCメーカーと話をしてきましたけど、
どの会社もこういう似たようなことをやってるんですよ。
やっぱりユニットテストがいりますよねって言って、
この同じような構文を作って、
あるエディターの中でこういうテストが回せるケースっていうのを
内部では作ってみましたっていうのはどの会社でもやってるんです。
でもそれがユーザーに受け入れないとかニーズがないとか、
だから世に出さないみたいな。
要は出しちゃうとあんまり売れないのに問い合わせいっぱいがばかり来て、
保守コースだけかかっちゃうみたいな。
そういうことを恐れて、そもそもリリースしないみたいなことが
やっぱり結構行われてるんですよ。
日本でも海外でもCMSとかもそうだし、
その中で、でもそれは考えとしてあって、
そりゃそうだよね、でも俺たちも考えてたんだよって言うと思うんですよね、
PLCメーカーの中の人。
でもその人たちはやっぱりリリースしてないんですよ。
でも彼らはリリースしたんですよね。
この差はやっぱりでかいと思うんですよ、僕。
結構大きな意味あるんですよね。
たぶん高橋さんが今私に話したら初めてPLCメーカーも作ってるってことを初めて知りましたよ。
でもそもそも私この会社のフレームワーク、
C++が知らない限りは、
たぶんそもそもそういうやり方でUnity Testをやってますよ、
SDKをやってますよってことすら分かんないですよ。
結構意味あるんだなと思って。
僕もどのメーカーがやってるかそこは言わないけど、
でも大体のメーカーはこれみたいなことやってる。
そうですね。意味あるですね、こういうところは。
でもリリースしてないから、
ユーザーはこういうことをやらねばならぬってことすらに気づいていない。
こんなことをやってるんですよということも分からない。
こういう手法。
分からない。
手法もありますよってことすら分からないですよね。
そうですね。
モギーですね、これが。
リリースをするっていうことはやっぱりとてもでかいことだと思いますね。
リリースしてるものはあるんですけど、別に世界初じゃないですけどね。
でもリリースしてるのは多分ソースですよね。
オープンソースで。
オープンソース、要はベックオフとかこういうシステムあるじゃないですか。
アサートを入れるテストシステムみたいなのは当然あるんですけど。
でもやっぱりこういうのは世に出ていくっていうのはいいことだと思います。
雑に言いますけど。
いいことですよ。
出してなんぼなところはやっぱりあると思うんでね。
特に新しい系のことに関しては。
先進的なことが8割のユーザーに受け入れられるのはほぼないですから。
まず出したっていうことがでかいよねって。
それが大手が出さないからそれは大手がダメだっていうことを言いたいわけじゃないです。
彼のような出せない理由はそれは当然あるし。
だからこそこういうオープンソース系だとか小さいベンチャーみたいなところにすごい価値があるんだろうなっていうのもやっぱりこの事例からも感じるところではありますね。
なるほどね。
このコミュニティはスポンサーが募集してるんで、お金のちょっと少し渡してサポートできるんで。
1ヶ月3000ドルがもうありますよ、ゴールド。
まあでも企業スポンサーだったらそれくらい出すかもしれないですね。
そうですね、5ドルから。
我たちのディスコードもそれくらいですよ、5ドルくらいですね確かに。
5ドルくらいでしたっけ?
そうですね、僕は1000円。
5ドルですね。
5ドルの次はもう500ドルですからね。
次は1500ドル、3000ドル。
そうですね。
やっぱり継続した活動にはパトロンがつくっていうのは、
FAラジオをやってても少しわかってきたこと。
こういう活動を応援したいですね。
応援したい。
でもね、さっきスポンサー見たら面白いこと気づいたんですけど、
ある程度お金払うと、1500ドル払うと、ソフトウェアで機能に対して特性のスポンサーシップ、やっぱりあるね。
お金払ったら、あなたのためのだけの機能を作ってあげますよということもできますね。
あなたのメーカーだけのための機能を作れますとかもありますね。
これお金払うとGPL取れたりしないのかな。
わかんない、わかんない。
高谷さん全然わかんない。
いい加減で1500ドル。
そうそうそうそう。
いやー面白い。
見たらこのスポンサーのところで、最後の3000ドルのやつ。
もうちょっとお客さん3000ドル払ったら、あなた専用のオープンピュージー開発者をあなたのところにきます、みたいな特典もついてますので。
結構安くない?3000ドルだったら。
そうかね。
だって50万ぐらいでしょ。
これ1個1000足だったら安いと思うね。
安いよね。
でもそう、あなたのところに来ますって言っても、日本には来てくれるでしょ、その日額だったらって。
オンラインじゃない?オンラインで1個で8時間でくっつけるぐらいじゃない?3000ドルで。
高谷さんどうやって払えた?3000ドルで。
でも行き着いたら結構そういうプランもあるかなと思いますね。
なるほどね。
いやでも非常に面白い取り組みでございます。
面白いというか、このPoCのコミュニティずっと力、PoCランダムWii3からやってるので、Wii3から結構コミュニティレベルで皆さん使ってるので、Wii4に出たらなおさらちょっと反応が結構盛り上がってますね。
一応この会社はアメリカの会社なんで、アメリカ会社なんですね。
ぜひ皆さんもオープンPoCもそうですし、さっきのC++ももし試したいんだったら、ぜひちょっと試してみて。
この会社の変態のところというか、ちょっとここまで作れるかということをちょっと体験できればいいかなと思いますね。
まとめ
はい。ということでこのラジオはここまでにしたいと思います。ありがとうございました。
ありがとうございました。
23:14
コメント
スクロール