当初の予定より7ヶ月遅れで、ようやく一つのブロジェクで納入したハードウェアが動き出した。重大な機能障害の理由は、報告書によるとチップレベルの設定オプションが不適切な設定となっていたことらしい。
そして、この設定オプションは、SDKで供給されるライブラリーのコードにディフィニションが明確にあり、それを正しく使えてなかったとのことだ。最近、ハードウェア製品のファームの仕事で、立て続けにSDKが云々な原因というかエクスキューズに見舞われている。
僕は、元々民生の電子機器の開発をしていて、回路設計の延長でマイコンを使いだし、コードを書いてきた。そして、いづれの仕事も、ものつくりであり、顧客には試作にせよ量産にせよ要件を満たす製品を納めることが仕事だった。
僕が開発に関わって来た組込み系のこれらの仕事では、結果的に組込みソフトウェアが何かの機能を実現出来ない理由は、極端な言い方をすれば、メモリーが足りないか、速度が足りないかの2つしかなかった。
しかし、いまや機器にOSがのり、その上でSDKが提供されということで、組込み系と言いながらもソフトウェア開発も、チップベンダーから提供されるSDKやライブラリー抜きでは成り立たない。この結果として、ソフト屋さんが平気でSDKを何かが出来ない理由とする事が多々在るようだ。
そりゃ、組込みとか言ってもこういう上流の仕事をしてたら、SDKとかハードに近い部分のドライバーとかは、外部要因なのだから、そんな事を言うのも判らなくはない。
しかしね、仕事をするプロのエンジニアとして、そういう事を言っちゃうのは、ちょっと僕には?だ。なぜなら、組込み系の仕事っていうのは、ハードがちゃんと動いてなんぼな訳で、それが動かなかったらどんどん深堀するべきだからだ。しかも、今回の案件では、ちゃんと提供されるソースや開発ガイドなどに、情報があるし、もっといったらチップのデーターシートを読めば、どういう内部構成で、そこにどういう設定があるかもかなり判ったレベルなのだ。
メーカーズプームやArdino、ラズパイ等で、半田ごて握って、オシロの一つも使える程度のソフトウェアエンジニアが、なにやらスーパーエンジニアと称している。でも、チップのデータシートや、ハードウェア回路の内部に手を突っ込まないで、不具合の理由をSDKや開発環境のせいにするようでは、まったく情けないと思うのは、僕が古いのだろうか?
今回も割り込み系の話しだったんだけど、チップのデータシートを読めば、どいうレジスタがあり、割り込みコントローラーにどいう構成でリソースが入力され、どのような設定が可能かくらいは、掴めるのに、そこに手を染めないで上のレイヤーでいじり回していたために、問題の割り出しにかなりの時間がかかったと見ている。
SDKや統合開発環境が提供され、その中に隠れた部分や、その中に問題があったとしても、メーカーとしてもの作りを作るとなると、そんな事は顧客には関係ないことなのだが、その辺りの自覚がないものつくり屋さんが増えていると嘆くのは、僕だけだろうか?