話があわない

私はソフトウェア開発会社に勤務している。担当しているソフトウェアは若干特殊で、様々なハードウェアと連携する必要がある。ハードウェアの開発自体は一切行わないため、既成のハードウェアをドライバー、専用API経由で利用するという感じである。場合によっては、開発途上のハードウェアとの連携を試す場合もある。

ここからは私の完全なる私見であるが、ソフトウェア開発者とハードウェアの開発者では話が合わないことが多い。

例1)
A/D変換時の入力レンジの設定値を聞いているのに、電子部品の仕様や電圧値を返答してきたりする。いやそうじゃなくて、16bitで±5Vですとかそういうことを聞きたいんだけど?電子部品の仕様とそれをどう使っているかは別でしょ?部品のスペックシートなんて送りつけられても困るんですけど?

例2)
ハードに蓄積された某データを取得するにはどうすればいい?という質問に、メモリマップの図を返答してきたりする。いやメモリのどこに書き込まれているかではなくて、そのデータを取得する方法が知りたいんだけど?メモリに自由にアクセスするメソッドなんて公開してないよね?


例3)
許せる範囲ではあるのだけど、APIの定義の仕方に疑問を感じる場合が多い。よくよく見れば機能として成立しているのはわかるのだが、名前の付け方、引数の意味合いなど非常にわかりにくい。こういう場合はこうするだろうなという直感がまったく働かない感じ。わかりにくい。


一方的に批判してきたけど、結局、「使う側のことを考えているかどうか」ってことだと思う。これはハードだけではなく、ソフトでも同じ。

ソフトウェアの場合、機能的に十分であっても、わかりにくかったり、使い勝手が悪かったらかなりの批判を浴びることになる。開発側の都合なんて当然関係ない。どんなに開発者が頑張って作ったとしてもダメ機能ということになる。

ハードの場合、単体で完結しているものは好きにしてくれていいと思うが、PCなどと連携するものは、呼び出す側のことを考えて欲しい。ハードの内部ではなんでもありでアクセス自由なのかも知れないけど、ソフトウェアからアクセスする口は限られてるんだからさ。


自分も気をつけないと。


「それ、ユーザーに意味通じますか?」

誰のためのデザイン?―認知科学者のデザイン原論 (新曜社認知科学選書)

誰のためのデザイン?―認知科学者のデザイン原論 (新曜社認知科学選書)