仕様検討の手伝いしてるけど萎える

組み込みプログラマなのでハードウェアに紐づいたプログラムを作っています。日本で、自社で仕様を決めてハードもつくってソフトも作るような状況はわりとニッチなので、最近の僕はわりとあいまいな、「こういうユースケースでこういう感じに使うためのこういう機器が欲しいんだ。」というようなお客様の要求を聞いて、それにマッチするようなものを開発して納入するという受託開発的な感じの仕事をやる会社で仕事をやっています。

 

最近いろんなプロジェクトをちょっとずつ手伝っているのですが、そのうちの一つに、最近ずっとお客様が仕様検討されているんだけど全然進捗が芳しくないものがありました。最近はUI仕様を検討しているので見てみたのですが、これがもう正直よくわからない。何がわからないかというとそもそも何をしたいためのUIかの整理ができていない状態でUIの図面を作っているので、そのUIが正しいのかダメなのかが判別つかない。

 


たとえば2つの別々の機械が連動して動作をするような機能があり、その最初の部分の機能仕様に「ユーザ操作で認証を行う」「ペアリング操作をユーザが行うことで連動して動作可能になる」って書かれているので、その認証やペアリングをするためのUIが定義されようとしているんですよ。でも機能仕様には何の認証を行うのかが書かれていなかった。

ペアリングに関しては、一度認証してペアを組んだ相手を覚えておいて、次からはその操作をしなくても連動して動けるようにするようなことを考えているようなのですが、一度ペアを組んだ相手の何を覚えておくから次に認証操作が必要なくなるのかがちゃんと決まっていない。なのにペアリング画面として「双方に同じ数字が表示されているかを確認」みたいなUIが定義されつつある。こんなんでいいんでしたっけ?? ってよくわからなくなってました。

 

 

そんなわけで結局何を覚えて何を認証するのかということについて考えていたのですが、そもそもいま僕らが作ろうとしているこのシステムは、結果として機器Aと機器Bが連動するんですが、システム構成としては機器Aとサーバー・機器Bとサーバーがそれぞれ通信して連動する動きになるようになっており、サーバーにはユーザはアカウントを作ってデータを登録するようになっていることがわかりました。だとすると機器Aと機器Bを両方同じユーザが持っているということはアカウントから明らかなので、連動させるためにはアカウントに登録されている機器リストから連動相手を選ぶだけでよくて、複雑な認証なんて必要ないじゃないか、ということになり、そうすると機器名とかがちゃんと区別できるようにすることのほうが大事ということになってきます。なんだかなあ。

 

というわけでそういうことを来週はうまくお客様に説明しないといけなくなっていて憂鬱です。とにかく、皆さんもUI考える前にいったい何をしたいのかをちゃんと考えてくださいってことです。