分業化の悪夢、俺たちは下請けじゃない!:組み込み開発の混沌から抜け出そう(2)(1/3 ページ)
組み込み開発の現場では、製品の高度化に伴ってコーディング量の増大や納期短縮といった厳しい現実にさらされている。ソフトウェア開発に新しい手法を導入しなければ、今後の組み込み開発は行き詰まってしまうだろう。連載第2回では、メカ、エレキの後工程に位置するソフトウェア開発の構造的な問題を掘り起こしてみる。
組み込み開発の現場は、このままでは行き詰まってしまう。組み込みソフトウェア開発に何か新しい手法を取り入れたい。しかしその前に、何が問題なのかをあらためて問い直そうというのが本連載の主題です。前回「職人芸、あるいはブラックボックスの悲劇」では、職人的開発手法について、いくつかのエピソードをご紹介しました。今回は、もう1つ別の角度から、組み込み開発の現実を見てみようと思います。
ソフトウェア開発者の立場はなぜ弱いのか
組み込みソフトウェアの開発に携わっている人たちは、よく「ソフト屋は立場が弱い」とこぼします。この言葉には、組み込み製品開発の構造が表現されています。
開発現場の構造をイメージする題材として、携帯電話を思い浮かべてみてください。携帯電話は、いまや電話という言葉が不似合いと思えるほど、機能が増えています。ずうたいが大きくて邪魔そうな携帯電話を使って、街中で大声でしゃべっている人が奇異に見えたのは、そんなに遠い昔のことではありません。しかし現在は、これ以上電話に何が必要なのか、と思えるほど高機能化しています。この先、どんな形になるのか、どのように特色を出すのか、その進化はとどまるところを知りません。
ところで、いま、あなたがお持ちの携帯電話を選んだ決め手は何でしたか?
- ボタンが押しやすい
- 画面が大きい
- 値段が安い
- カメラが高解像度
- 動画の録画ができる
- 軽量
- デザインが気に入った
- 「おまけ」に魅力があった
- 彼女が「これがいい」といった
次に携帯電話を買い替えるなら、こういう機能があったらいいなと思っている方は多いでしょう。また、最初に携帯電話を買ったときは、いまとは違う基準で選んでいたはずです。
「選んだ決め手」や「こういう機能があったらいいな」が、新製品の基となる要求であり、急速な進化の原動力となるわけです。コンシューマの好みや競合他社の動向、差別化、マーケティング戦略などから、デザインや仕様が決まっていきます。そして、それを実現するためにどういう素材やハードウェア、電気的処理が必要なのかが決まります。これらをコントロールするためのソフトウェアの仕様は、この後にならないと完全には決め切れないというのが現状です(図1)。
しかし、製品を市場に投入するタイミングを逸すると、競合他社に負けてしまう可能性もあるわけで、納期も重要です。間に合わないからといって発売を遅らせるわけにはいきません。この状況に、「ソフト屋は立場が弱い」というつぶやきの根っこがあるように思います。
ソフトウェアの再利用は二の次
早速、携帯電話の開発現場を見てみましょう。ある携帯電話機メーカーは年に2回新製品を作るそうです。これだけ進化が速く、競争も激しい製品を短期間で作るなんて、その開発現場が大変な状況であろうことは容易に想像できます。ソフトウェア開発に携わるメンバーは200〜300人規模とか。その中からある開発者の話を拾ってみましょう。
ソフト開発担当者 「常に、特注品をイチから作っているようなものです。メモリも要求される速度もギリギリですし、ハードが変われば、同じ機能でも実装し直すことがほとんどです。機種もたくさんありますしね」
でも、「電話」という基本的な機能は共通だから、流用や共有できるモジュールもありそうなものですが。
ソフト開発担当者 「ありますが、共有モジュールなんて、多くても20%ぐらいじゃないかな。機種に依存する部分が多いので、その機種専用の割合が圧倒的に高いんです。どれだけ再利用できるかを考えるより、とにかく期待されている性能を出さなければ使い物にならないわけですからね」
ボタンを押したらすぐに反応することが当たり前の世界。ソフトはハードからの要求どおりの性能を出せなければなりません。組み込みのソフトウェア設計についても、企業システムの分野で使われているような開発手法を取り入れようとする動きはありますが、なかなか現実は難しいようです。ソースコードが読みやすいとか、再利用性が高いことより、目の前の要求をいかに満たすかがミッションということでしょう。
でも、テレビコマーシャルとかポスターもできるし、店頭に行けば自分の手掛けた製品が並んでいて、たくさんのお客さまが手に取って見てくれるし、開発していて楽しいでしょ。
ソフト開発担当者 「確かに、これの一部は僕が作ったんだという気持ちは多少はありますね。ただ、実際に開発している間は、自分の作業割り当てとスケジュールを守って、ひたすら実装するという毎日で、これでどんな製品が出来上がるかなんて、あまり考えていませんね。ソフトウェア開発マシンみたいなもんです」
Copyright © ITmedia, Inc. All Rights Reserved.