今日も、朝から打ち合わせだらけだったけど、途中の二つのWEB会議は、建設的で面白かった。
夕方からは、某組込み系案件で、ちと嵌っていた問題に、ソフト屋さんとハード屋さんが集まって確認作業。確認の結果、問題箇所の修正もできて、無事に機能確認が終わった。
それにしても、どんなに高級言語でファーム開発ができるようになったり、Linuxが乗ったりしても、マイコンのエンジニアリングは、ハード屋さんのお仕事の延長なんじゃないかと思った。
組込み系のマイコンも、SDKとか、開発プラットホームみたいのが搭載されて、その上でコードを書いてる人達は、ピュアに提供されるものに間違いがないという前提で開発をする。まぁ、これはそういうものだと言われたら、それを信じるのは当たり前なので、この事に何ら問題は無い。
でも、組み込み系って、やはっぱしチップのデータシートを読んで、内部の構成を理解して、ビットレベルでいじる事をしないとならんことは、多々あるのだ。
というのも、チップとかモジュール作ってる方は、基本的にレイヤーの高い方のソフトの事に疎い人が多いからかもしれない。
また、僕の経験からも、歴史的にも民生用シングルチップマイコン等で、チップベンダーから提供されるソフト開発環境の質は、あまり高くない。
いまはどうか知らないけど、昔の民生用の4/8/16bit くらいのマイコンのコンパイラーなんて、バグだらけだった。
某社のZ80系のコンパイラーとかも、AT&Tのコンパイラが移植されたものだったけど、頭のなかで吐き出すアッセンブラーを想像しながらコードを書いたりする必要があった。そんでもって、もちろんデバッグはマシン語でというものだった。
こういうマイコンとかからプログラミングに入った人は、どうしても上位のソフトウェア工学的な部分が苦手なので、ソースデバッグとか統合環境的なものとかは、理解できないし、信じてないという感じだった。
昔からハード屋がソフトも書けるのがいいのか、ソフト屋がハードを知っているのが良いのかという話題によくなるけど、組込み系はマイコンは、やはり前者のほうがいいのかもしれない。
最近は、いろいろとモジュール化で、ハードの知識がなくても、ものつくりごっこが出来るようになってきてるけど、オシロの使い方一つでも、きちんと理解してないと、結局のところ深いというか差別化できるようなハードは出来ないのじゃないかしらん。