組込という業界に入ってしばらく経ちます。しばらくと言うより社会人になってからずっと組込やってきました。さて、この組込という業界はどこへ向かっていくんでしょうか?ミドルウェア屋である私の目線から、今後について書いてみたいと思います。。
■過去の技術?
最初から何ですが、世の中には「廃れていく」要素ばっかりが目につきます。Byte単位でメモリを削って押し込んだり、C言語のコンパイラじゃ最適化を満足せず、アセンブラで無駄コードを排除して「良かった良かった」と自己満足していたあの頃。。今必要ですか?ハードウェアとして、そもそもメモリ容量はキロbyteだった単位は、いつのまにかメガbyte単位になってるし、動作クロックだって、メガHzだったのが、ギガHzになっているし。メモリ削減なんて過去の話、アセンブラなんて最近見たことない、、、という方も多いのでは?っと思います。
いやいや、技術革新でメモリ単価や処理速度(クロック)の上昇は確かに起こっているし、まだなんとか「ムーアの法則」成り立っている気がする。。。
だからといって、前述の過去の技術?(私たちはこういったネタになりそうな昔話を「オヤジ ホイホイ」と呼んでます。ネタ話を始めると、オヤジばかりが集まってくるから。。)、、ああ、過去の技術はもう本当に過去の技術なんだろうか?もう、昔話で良いんだろうか?っと感じます。
■Free沼
ミドルウェア屋である私の周辺でも、FreeのLinuxが乗った基板や、FreeのRTOS環境が提供されるCPUだったり基板だったりが増えてきて、肩身の狭い思いをしています。「Linuxでやってみるから今回は使わないわ」「FreeなRTOSで行けそうなんでやってみる」そんな声が聞こえます。もっと言うと、クラウドと繋ぐから、AzureとかAWSから提供されるFreeのソフトウェアで動かそう、、とか、思いますよね?
ここで問題提起。このままで良いんでしょうか?そういった Freeの寄せ集めで開発できるという「甘い汁」を吸っていて良いんでしょうか?「タダより高いものはない」という言葉があります。私も昭和の人間なので、いつもこんな事考えています。Freeの裏側には何が待っている?っという事。なぜFreeなんだろう?Freeで儲けている人は誰?です。
Freeで簡単にスタートできると喜ぶ前に、さて、Freeで開始できるという事の反対側を考えてみましょう。
FreeのLinuxが急にバージョンアップして過去のものになったり、脆弱性が発表されたら、あなたはどうする?
FreeのRTOSが提供されるCPUに供給不安が生まれて、Freeのソースが無い他のCPUに替えてという要求が来たらどうする?
コストダウンのために、今Free環境で構築したハードウェアを原価2/3に圧縮して、と言われたらどんな別環境を提案できますか?
Free沼(私はあえてそう言いたい)に一旦はまると、Freeを探し続けて、Freeこそが神みたいな気持ちに陥ることがあります。いやいや、私たちは「エンジニア」なのだから、「自ら生み出すこと」が仕事だったのでは? Free探しが仕事ですか?
最近、ミドルウェアのサポート業務をしていると「***のデバイスドライバを探しています」という問い合わせが来ます。あくまでも無償サポートの範囲で「***にサンプルドライバがあります。参考にどうぞ。」と回答すると「型番が違うようなので、どうやってカスタマイズするか、教えてください」と追加で質問されました。え、それ「エンジニアリング(開発)そのもの」ですけど、「作業費用を見積もりますか?」と答えたい。。。。
全く悪気は無いのかもしれませんが、自ら必要なものをFreeで手に入れる事、無償でソフトは手に入るもの、、という所がベースになってきていると感じる瞬間でした。
■エンジニアの出番!
さて、こういった方々は、デバイスドライバのスペックシート(テクニカルドキュメント)は読めるのでしょうか?っというか、読んで自らの開発をしたことがあるのでしょうか?買って来ればFreeでキッチリ動く環境が手に入る「型にはまった開発」であれば、苦労は無いと思いますが、そこから少しでも外れたら、そこからはエンジニア自らの力量で頑張る領域です。
昨今、Freeで出来るところのレベルが上がってきたことにより、「型から外れた」瞬間の技術的ギャップは相当に大きくなっており、そのギャップに対応するエンジニアスキルは相当磨かれたものを必要とされています。
Free環境には、フォーラムだったり、掲示板だったり、「お困りごと相談」が出来るSNSも立ち上がっているものもあります。でも、そこで取り交わされる技術情報は、所謂FAQであり、自らの問題が直接解決できる(解決してくれる)ツールではありません。
業務利用していて、「フォーラムで回答してくれないから解決できない」なんて言えないですよね?
さて、あなたならどうする?
昭和なエンジニアだったら、「腕を磨け」で親方!風を吹かせればよかったかもしれませんが、今は令和。疑問はまずググる時代です。昭和なエンジニアが定年退職していくなかで、令和なエンジニアにどう指南すれば良いのか。親方と一緒に5年は一緒に働こうや、、なんて言ってられない速度感を要求されている今日。これは大問題だと思います。
先に説明した「型にはまった開発から外れたら大変」という例のほかにも、そもそも「型を用意してくれない零細な環境」での開発もあるでしょう。冒頭にお話しした、リッチな環境は許されず、やっぱり64KBのROMに収まるように設計しなければならない製品も多い事でしょう。 更に、64KBなのにクラウドに接続して、更にスマホから操作に対応しなければならない機器開発もあるでしょう。みんながみんな、1GBのRAMと1GHzのCPUを積んでいればそれでよいのでしょうが。。。
ハード屋、ソフト屋という垣根はだんだんと無くなってきていると感じます。周辺コントローラを選ぶのはハード屋?ソフト屋?その性能を担保するのはハード屋?ソフト屋?部品がディスコンになった。代替は誰が選ぶ?お見合いしてられないですよね?
つまり、どんどん、組込屋の難易度は上がっているのにもかかわらず、Free沼にどっぷりと浸かってふやかされてしまっているのでは?っと思います。
すべてを自社で開発できた時代ならよいのですが、、、
「やっぱりリソースも限られている、予算も限られている、、でも技術は妥協できない。」
「技術の空洞化は避けたい」でも「ゼロからの開発は難しい」ではどうするか?
短期的には技術を安定した信頼できるパートナーから調達して自分の手の中で(内製で)進める。
中長期的には、その技術を他にも流用して使えるような人材を育てる。
そして余裕が残れば「その技術」を内製化する、とかと言う順番でしょうか。
次回はそのあたりから続きを書きます。
■今日の閑話
弊社では、「昭和なエンジニア」がまだ残っているので、「昭和」な技術の研修が残っています。新人として4月に入社してから、8月末に新人卒業して各部署に配属されるまでの4か月間、みっちり、「昭和」を勉強します。勉強するだけではなく「手を動かして体験して悩んで解決して皆で喜び」ます。コンピュータはなぜ動くのか、ファームウェアとはなんぞや?
https://qiita.com/Cente_mw/items/41646eb1ef18702d2e32
組込とは
https://qiita.com/Cente_mw/items/5bbfecf503ff7eb253a1
、、、、
ハードウェアはどう作る?というところで、はんだごてを手に基板を作り上げます。その基板の上にファームウェアを設計して搭載します。そして仕様書を書きます。レビューします。そこまで「昭和」を体験させます。
Cente:
https://www.cente.jp/
お問合せはこちら:
https://www.cente.jp/otoiawase/
■次回
私たち「組込屋(エンジニア)」はどこへ行く?(その2)
https://qiita.com/Cente_mw/items/5ea603bdc2e9afb10a02