JEITA ソフトウェアは未来をつくる

お問い合わせ・ご意見・ご感想

     

ソフトウェアに携わる人

関連サイト

いますぐアルゴロジックを体験したい方はこちら

エンジニアインタビュー 島 敏博さん

セイコーエプソン株式会社 島 敏博(しま としひろ)さん

情報画像事業本部 組込みソフトウェアアーキテクト(2008年現在)

長年のソフトウェアエンジニアの経験を生かして、ソフトウェアの設計を担当する、全社に数名の「アーキテクト」の1人として活躍。 現在は、すべての製品をつくるときの基盤となるようなソフトウェアを設計している。 業務のかたわら、若手エンジニアの指導や教材開発などにも精力的に取り組んでいる。 「組込みソフトウェア管理者・技術者育成研究会(SESSAME)」正会員。26年の経験を持つ、ベテランの49歳。

島 敏博(しま としひろ)さん

最先端の製品を動かすソフトウェアをつくる

「組込みソフトウェア」とは何ですか。

ソフトウェアは、コンピュータの上だけで動くものではありません。 今の社会にある高性能な機器の中では、ほとんどと言ってよいほど、実はソフトウェアが動いています。 このように、ソフトウェアの中でも特に、コンピュータ以外のさまざまな機器の中にあるソフトウェアは、「組込みソフトウェア」と呼ばれています。

「組込みソフトウェア」は、どんな機械の中にあるのですか。

組込みソフトウェアは、私たちが目にするさまざまな機器や装置に組み込まれていますが、代表的なものには、自動車や携帯電話、テレビなどがあります。 携帯電話の中では、複雑な組込みソフトウェアが動いて、メールの送受信やインターネット接続など、数多くの機能を実現しています。 テレビの中でも、組込みソフトウェアが動き、美しい画像の表示からリモコン操作の受け付けまで、さまざまな機能を担っています。
私の会社では、プリンタを製造していますが、プリンタの中でも、組込みソフトウェアが重要な役割を果たしています。 使う人の操作を受け付け、プリンタ装置に命令を出して高度な印刷を実現しているのは、実は組込みソフトウェアなのです。 現在社会にあるさまざまな機器や装置は、組込みソフトウェアによって、複雑な機能を実現していると言っても過言ではありません。 現在のように、機械の部分(ハードウェア)が発達すると、おもしろい製品をつくるための勝負の鍵は、機械の中で動くソフトウェアが握るようになります。 組込みソフトウェアは、最先端の製品をつくる上で、とても重要な役割を果たしているのです。

未来の新しい製品をつくりだすソフトウェアの力

ソフトウェアの魅力はどんなところにありますか。

先ほども述べましたが、製品の機械の部分(ハードウェア)が発達し、高度なものになると、ハードウェアで差をつけることが難しくなってきます。 そこで、より素晴らしい製品をつくるために、ハードウェアの上で動く、ソフトウェアが重要な役割を担うようになってきたのです。 新しい製品をつくったり、新しい機能を実現するために、ソフトウェアでなければできないことがたくさんあります。
例えば、プリンタを例にとってみましょう。プリンタは、これまで一般の家庭では、パソコンの情報を印刷するための装置でした。 しかし、これをネットワークにつなげば、いろいろなことができるようになります。 最近では、生涯学習などもさかんで、いろいろなことを学びたいと思う人が増えています。 ネットワークにつないだプリンタで、このような要望に応えることだってできます。 プリンタは、家庭内でも身近な存在ですから、きれいに印刷する以外にも、もっと多様な皆さんの要望に応えることができると思います。
今はプリンタを例にあげましたが、プリンタに限らず、さまざまな製品をこれから画期的なものにつくり変えていくのは、実はソフトウェアの力なのです。

自分の手で製品をつくりあげたいという思い

大学では、どんな勉強をされたのですか。

大学では、産業機械工学科に入り、モノをつくるためのロボットを研究していました。 その頃、ようやくパソコンが世に出始めた頃だったので、東京の秋葉原のような大阪の日本橋に通って、 ワンボードマイコンという昔の簡単なパソコンを作って、メカ(機械)を動かすのに熱中していました。 この頃から、メカが自分の思ったとおりに動くというのは、大変おもしろいと感じていました。

島 敏博

エプソンに入社されたのはなぜですか。

自分と同じ研究室では、自動車業界に進む人が多かったのですが、私は、もっと自分の手の上に乗る小さいもので、自分が動かしていることを実感できる製品をつくりたいと思っていました。 そこで選んだのがプリンタをつくっていたエプソンです。 自動車だと、ひとりでつくるには規模が大きすぎるのですが、プリンタは小型の機器ということもあり、当時は、自分で一からすべて作り上げていくことができ、 工夫の余地がたくさんあるように見えました。自分ひとりの力でも、いろいろな工夫ができるところが、私の興味と一致したのです。

他のエンジニアの土台を作るエンジニアの中のエンジニア

現在は、どんなお仕事をされているのですか。

島 敏博

現在、私は、「ソフトウェアアーキテクト」として、他の多くのエンジニアの“土台を作る”仕事をしています。 小さな機械の中で動く組込みソフトウェアも、実は、とても大きく複雑なプログラムからできています。 例えば、プリンタの中にある組込みソフトウェアも、書かれたプログラムの行数で表現すると、数百万行というものすごい大きさになります。

こんなに大きく複雑なソフトウェアをつくる(開発する)ためには、全体の設計が必要になります。 大きなソフトウェアは、しっかり設計をしてからつくらないと、きちんと動かないことがあるのです。 この全体の設計のことを、ソフトウェアの「構造設計」と呼んだりします。そして、この構造のことを、ソフトウェアの世界では、「アーキテクチャ」と言います。
「アーキテクト」とは、このアーキテクチャを考える人のことなのです。つまり、「アーキテクト」の仕事は、ソフトウェア全体の構造を設計する仕事だと言えます。

「アーキテクト」は、そのほかに、どんな役割を担っているのですか。

私は、アーキテクトとして、ソフトウェア開発を簡単に(効率的に)行えるようにする役割も担っています。 大きなソフトウェアをつくるのには、とても時間がかかります。 ひとりでつくるような小さなソフトウェアであれば、1日でできてしまうこともあると思いますが、プログラムが数百万行にも達するような非常に大きなソフトウェアは、 そうはいきません。場合によっては、何十人ものソフトウェアエンジニアが、何ヶ月もかけ、力を合わせて、1つのソフトウェアをつくります。 そのような大規模なソフトウェア開発を効率的に行う方法を考えるのも、私の仕事です。

ソフトウェアの開発を効率的に行うには、どんな方法があるのですか。

プリンタには、いろいろな機種がありますが、機種ごとに、実は異なったソフトウェアが組み込まれています。 しかし、どの機種のソフトウェアも、とても大きく複雑なので、新しい機種が発売されるたびにソフトウェアを一から作り直していたら、 大変時間がかかりますし、新しい機種を次々とつくることができません。
そこで今、私の部門では、アーキテクトである私が主導して、ソフトウェアを「機種共通の部分」と「各機種に固有の部分」に分ける、 という取り組みを進めています。機種共通の部分が大きくなれば、新しい機種のソフトウェアを開発するときに、共通の部分を土台として利用できますので、 すべて最初からつくるよりも、つくるソフトウェアの分量を減らすことができます。 今は、ソフトウェアがどんどん大きくなっていますので、このような工夫によって、ソフトウェアの開発を効率化することが大切なのです。
実際に、この取り組みを始めてから、多くの製品を安定してつくれるようになり、たくさんの人が、このような取り組みが重要だと分かってくれるようになりました。
また、他にも、設計図を描くとプログラムが自動で作成されるようなソフトの導入も進めています。 こうした新しい方法を取り入れることで、今よりもっと、ソフトウェアは簡単につくれるようになるはずです。
もっといいソフトウェアやもっといい製品をつくるために、誰よりも先に新しい方法を考え、それをみんなに広めていく―――これも、豊富な経験と技術を持つアーキテクトの重要な役割です。
島さんの1日のスケジュール

ソフトウェアエンジニアを目指す皆さんへのメッセージ

ソフトウェアエンジニアのおもしろさはどんなところにありますか。

組込みソフトウェアのエンジニアは、自分のアイディア次第で自由に、今ある製品を作り変えたり、新しい製品を生み出したりすることができます。 また、自分のアイディアと苦労の結晶である製品が、世の中で実際に使われ、お客様に喜んでいただけると、格別の満足感と達成感が味わえます。
また、コンピュータ上で動くソフトウェアがうまく動かない場合、その原因は、自分でつくったソフトウェア以外のソフトウェアやコンピュータそのものにあることがよくあります。 でも、組込みソフトウェアの場合は、機械(ハードウェア)からハードウェアを動かすソフトウェアまで、すべて自分でつくっていますので、 うまく動かない場合は、必ず自分に責任があります。うまく動かないときも、しっかりと考え抜けば、必ずどこかに原因を見つけ出すことができるのです。 “すべて自分の手でできること”、これは、組込みソフトウェアならではの魅力だと思います。

優秀なソフトウェアエンジニアとは、どんな人ですか。

ソフトウェアには、使う人のために作るものです。そのため、ソフトウェアエンジニアにとって、人の気持ちや要望を理解する力は、とても大切なものです。 また、他のソフトウェアエンジニアと一緒に大きなソフトウェアをつくるためには、コミュニケーション能力や、自分の考えを分かりやすく表現する力も求められます。

島 敏博

ページトップへ