2014年03月26日

今後の研究テーマについて考えた

今週に入って、信州はさらに暖かくなってきました。最低気温が零下になる日はなくなったので、やっと過ごし易くなってきたのは嬉しいです。最高気温も15℃を超える日が続いているので、今年の春は早く訪れそうな気がします。ただし、寒冷前線が通過すると、中信地域は一気に冷え込んで4月でも雪が降ることがあります。この気温変化の激しさは4月末まで続きます。暖かくなってきたのは良いのですが、私は先週末から花粉症の症状が急にひどくなりました。これから一ヶ月間花粉症に悩ませられる日々が続くのかと思うと憂鬱な気分です。

さて、先週末で本業の仕事がやっと一段落しました。今回の仕事は久しぶりのローエンド組込みで、直接マイコンを制御するプログラムを書いたのは3年ぶりでした。そのため、なかなか勘が戻らず苦労しました。やはり組込みLinuxの方がずっと楽です。ArduinoやRaspberry Piみたいな新世代の組込みボードを触っていると自然にワクワク感が湧いてくるのですが、ライブラリもOSも載っていないボードを動かすのはぜんぜん楽しくないです。ちなみに、こういうボードには大抵ルネサス(ルネサスエレクトロニクス)のCPUが搭載されています。ここ数年は組込みLinuxの仕事が続いていましたが、組込みLinuxのターゲットボードではほぼ例外なくFreescaleなどのARMコアを内蔵したCPUやSoC(System-on-a-chip)が搭載されていて、いまではルネサスのSHシリーズが使われることはありません。組込みLinux中心に移行する以前は、私は10年以上ローエンド組込みの仕事をしていました。OSはuITRONを使うことが多く、ターゲットハードウェアは大抵ルネサス(旧日立)のCPUが搭載されたボードでした。ルネサスのCPU向けにプログラムを書いていると、「これは一種の苦行ではないか」と感じることがあります。CPUに内蔵されている周辺モジュールのインテリゼンスが低く、ソフト側で超低レベルな制御処理をしっかりと実装しないと、まともに動いてくれないからです。私のようなベテランでさえ苦労することがあるので、ルネサスのCPUをちゃんと動かすのは、マイコン初心者にとってかなりハードルの高い開発作業だと言えます。ローエンド組込み向けのハードウェアではいまもルネサスのCPUが多数派を占めていますが、世の中には苦労している経験の浅い組込みプログラマがかなりの数存在するんじゃないかと思っています。仕事として選んだ以上はこういうハードルは自力で乗り越えていくしかありませんが、製造業の衰退が続いている現状を観ると、ローエンド組込みに将来性があるのかという点については大きな疑問を感じざるをえません。ArduinoやRaspberry Piみたいなボードが流行っているのは、いままでのローエンド組込みに対するアンチテーゼなのではないかという気がします。こういうボードが日本からは一つも現れていないことが、(時代遅れの開発手法を捨てられず、ひたすら現状維持を続けている)いまの日本の組込み分野の実情を反映しているように思えてなりません。

話は変わりますが、ここ5年ほど「どういう分野の研究テーマに取り組むべきかと」という問題でずっと悩んでいます。これについて考えない日はないと言っても良いくらいです。今回久しぶりにローエンド組込みの仕事をやって、改めて自分の志向について再認識したことがあります。

 ・音声や映像・画像(AV)を使わないプログラムは作っても楽しくない。

音声を映像・画像を伴うソフトウェアのインターフェース対象は人間(ヒューマン)なのに対して、これらをまったく伴わないソフトウェアのインターフェース対象はマシンやデバイスです。前者のプログラムの最終的な目的は人間に使ってもらうことですが、これに対して、後者はマシンやデバイスを正常に動かすことが最終的な目的です。やや乱暴な分け方かもしれませんが、現代のソフトウェアは大きくこの2つの種類に分けることができると思っています。ここで、一つの問が浮かびます。

 ・一般人にとって、どちらがより価値の高いソフトウェアなのか。

マシンやデバイスを正常に動かくことにも当然高い価値はあります。自動車がその代表例と言えるでしょう。しかし、車が正常に動くことは一般人には当たり前のことです。そして、車を正常に動かすソフトウェアに高い価値を感じてくれるのは自動車メーカーだけです。車載ソフトウェアという分野が存在しますが、この種のソフトはほとんど自動車関連メーカーの内部でのみ作られています。このようにマシンやデバイスを制御するソフトを必要とするのは、そのようなソフトを搭載する製品を開発している企業だけです。こういう製品が正常に稼働することは一般人にとっては普通のことであり、その事自体を特に評価することはありません。一般人が高い価値を感じてくれるのは、やはりAVを伴うソフトウェアやコンテンツの方です。当然の事ながら、音声や映像は人に聴いてもらったり視てもらうことを前提として創られています。YouTubeやニコニコ動画の人気が高いのは、多くの人がこれらのサイトで配信されているコンテンツを視たいからです。一般人にとって価値が高いということは、多く企業もその種のソフトを欲しているということです。マシンやデバイス向けのソフトで利益を得るのはそれらを搭載する製品を開発している企業だけなのに対して、AVを伴うソフトは一般人の役に立ち、同時に企業にも利益をもたらします。

 ・AVを伴うソフトウェアを作らないと、一般向けのビジネスにはならない。

ここでの「AV」という言葉は広い意味で使っています。BluetoothやZigBeeみたいな通信機能がコア部になっていても、Webクライアントやモバイルアプリをインターフェースとして使っていれば、それらもAV利用ソフトの範疇に入れます。「音声や映像・画像の入出力ができる。あるいは、音声や画像で操作できる」ことが、高価値なソフトを生み出す重要な条件だと考えます。本業の仕事では仕方なくやることもありますが、研究テーマで取り組む分野としてはこういう条件が存在しないソフト開発はもうやりたくいないと思っています。

現代ではAVと一括りで表現することが多いですが、音声と映像にも大きな差があります。映像は音声より10倍はアピール力があるじゃないかと思います。1890年代から映画は存在していましたが、映像がより一般的になったのは、やはりテレビ放送が始まった1950年代からでしょう。現代人にとって映像が身の回りに溢れていることはいまでは普通のことです。私は一切テレビを視ませんが、いつもテレビをついていないと寂しさを感じる人が多いことは知っています。常にテレビをつけている人にとっては、生活の中に映像が存在しない状態は考えられないようです。これくらい現代人にとって映像は無くなはならないコンテンツになっています。

 ・今後取り組むのは映像や画像に関連する分野に絞る。

これを最大の目標にして進んでいけば、大きなハズレを引いてしまうことはないんじゃないかという結論に至りました。一般人がもっとも価値を感じるコンテンツは映像や画像であることに異論を挟む人はまずいないでしょう。「人は何に価値を感じるか」ソフトもコンテンツの一種と考えるなら(コンテンツこそが一般人が価値を感じるものなので、むしろ「ソフトはコンテンツの付属物」と言った方が良いかも)、現代のソフトウェアにとってこれが一番大事なテーマだと思います。コンピュータの登場以来ハードとソフトいう区分がずっと使われてきましたが、これにコンテンツを加えて、いまは以下の優先度でモノづくりを考えるべきです。

 コンテンツ > ソフトウェア > ハードウェア

マシンやデバイスを動かすソフトにはコンテンツ(流行りの用語を使うなら、UX(User Experience)の方が適切かも)という要素は存在しませんが(こういうソフトにも本当はUXが存在すると思います。ハードの操作性の大部分を決めるのはソフトだからです)、人間が操作するソフトには必ずコンテンツあるいはUXが存在します。そして、いまは世界中の企業がこういうソフトを「ユーザ中心設計(User-Centered Design, UCD)」で開発しています(日本では、いまだにUXの重要性に気づいていないメーカーが多いみたいですが・・・)。

具体的にどの分野に的を絞るべきかについてはまだ決めかねていますが、将来性が高く有望なのはやはりNI(Natural Interaction)ではないかという気がします。PCの全盛期には「Microsoftの動向を追いかけていれば失敗はない」と言われていましたが、多数派のプラットフォームがモバイル機器に変わってしまったいまは「AppleやGoogleを追いかけていれば失敗はない」と考えるIT業界人が多いでしょう。03/15の記事に書いたとおり、PrimeSense社を買収したAppleは近い将来必ずモーションセンサーとNI技術を搭載した製品を出してくるはずです。一方のGoogleも以下のような動きをしています。

 Google、携帯に3D空間認識を与える Project Tango 発表。奥行きセンサつきスマートフォンを開発者に配布 - Engadget Japanese

ゲーム機だけでしか使われていなかったモーションセンサーとNI技術が家電やモバイル機器にも搭載され、これらの機器が連携して動くのは大きなムーブメントになりそうな予感がひしひしとします。近い将来にブレークする分野としてNIとその周辺技術に賭けるのが一番勝算がありそうです。「NIだけに的を絞って、一点突破を狙おうか」という気持ちが日に日に大きくなってきています。
タグ:UX NI
posted by とみやん at 17:02| Comment(2) | TrackBack(0) | 日記
この記事へのコメント
還暦を過ぎてしまったオールドタイマー独立技術者です。この記事にわが意を得た思いをし、初めまてコメント致します。私もSH等を使用してきましたが、ピンアサインが使用方法により変わることから、ハードウェアマニュアルを隅まで読まないと設計が出来ないのに嫌気がさして、近頃では見る気も起きません。最近はRaspberryPIもさることながら、PSoCで遊んでいます。なにせアナログ込みで、ピンアサインは自由自在でマニュアルを読む必要が無いですから。当方も、AV、センサーにターゲットを定め、努力中です。
とみやん様のOpenCV、MAC関係の記事もよく参考にさせて頂いております。当方もMac上のOpenCVのライブラリを再構築しようかと思っております。iPythonとの兼ね合いもありますので・・。今後共質の高い記事を参考にさせていただきます。
Posted by hirohiro at 2014年04月18日 19:18
hirohiroさん

コメントをいただきありがとうございます。また、MacやOpenCVの記事への過分の評価までいただき嬉しいです。

私も本業ではルネサスのSHシリーズを使った仕事が多かったのですが、SHの周辺モジュールの設計思想にはずっと嫌気がさしていました。そして、私と同じように感じているエンジニアはきっとたくさんいるはずだと思っていました。ルネサスのCPUを使わないで済む分野で仕事がしたいと強く思ったことも、ローエンド組込みから離脱したくなった理由の一つです。ソフト開発に少しでも美的センスを求めるエンジニアなら、ルネサスのマニュアルを読むと頭が痛くなるばずです。ピンアサインもさることながら、周辺モジュールの説明には「これをやってはダメ。こういうケースの動作は保証しない」などの制限事項のオンパレードです。これって、「最低限の信号制御しかやらないIPのレジスタを、周辺モジュールという呼び名で見せているだけじゃないの」と思えてなりません。

SHシリーズはアーキテクチャの設計思想も古く、もはや旧世紀の遺物化しているCPUだと感じています。車載ハードではまだSHが結構使われていようですが、その理由はバッテリー容量に余裕があるため、消費電力の大きいSHでも問題なく、国産メーカーであるルネサスからハード情報が入手し易いからです。車載ハードではこういう枯れたCPUを採用することが多いです。最新の開発ツールやミドルウェアがSHに対応しなくなっているので、そんな車載分野でもARMコアCPUへの切り換えがどんどん進んでいます。そして、FPGAでカスタムCPUを組む例もだんだんと増えています。

話は変わりますが、PSoC面白そうですね。私もPSoC4やPSoC5をいじくり回してみたいです。PSoCやFPGAでカスタムCPUを組み、それらに適合したソフトを開発していくのがこれからの組込み分野の主流になっていくだろうと私も感じています。。このトレンドはこれから大きな流れになるだろうと考えているエンジニアは増えているようで、AlteraのCycloneシリーズなどに手を出しているアマチュアやセミプロの電子工作愛好家がいることは知っています。そう言う私も、じつは本格的にFPGAへ挑戦したい気持ちが段々と大きくなっています。汎用CPUを触るのはmbed, Arduino, Raspberry Piだけにして、本格的な電子回路の勉強はCycloneを使って取り組んだ方が深くかつ効率的に習得できるんじゃないかという気がしています。このような流れが加速すると、SHみたいな古臭い汎用CPUは(同じく古いアーキテクチャのH8とV850も)5年以内に消えていくじゃないかと思っています。モバイル機器での存在感は限りなくゼロで、車載でも採用されなくなればSHの製造を続ける意味はなくなるからです。特機物だけで細々と使われるCPUの生産ラインを維持するのは赤字を生み出すだけになってしまいます。

ArduinoやRaspberry Piのような黒船組込みボードの襲来、PSoCやFPGAによるカスタムCPUのライト化など。組込み分野はいま大きな変革期を迎えていると感じています。PSoCやFPGAが主流になると、ハード屋vsソフト屋という区分も無くなっていくでしょう。PSoCやFPGAでシステムを組むには両方のスキルが必要になるからです。この変化についていけるかどうか、組込みエンジニアもトレンド感覚とスキル変遷速度を問われる時代になっています。こういう流れに合わせようとして、大学や高専などのカリュキュラムもいままさに大きく変わりつつあるようです(教育者側にはすごく悩ましい問題でしょうが・・・)。学生達がメーカーの現場で仕事をする頃には、汎用CPUはマイナーな存在となり、PSoCやFPGAでシステムを組む方がメジャーになっている可能性が高いからです。

本業では仕方なくまだローエンド組込みの仕事をしたりしていますが、心の中では「おいおい、こんな古臭いCPUを使ってシステムを組むような時代じゃもうないだろう」と思いながらやっています(あーあー、とうとう書いちゃった。ルネサスのCPUを使うような仕事をすることは負け組だと思っているくらいです)。本格的にやるとどうしても高価なJTAGデバッガが必要になるので、SH, H8, RXなどは趣味で手を出すような世界ではないですし、所詮これらは日本国内でしか使われないローカルなCPUです。ARMをやっている方が経済的にも精神的にもずっと楽ですし、議論の余地はなく世界のグローバルスタンダードはARMコアです。アマチュアが趣味で電子工作や組込み開発がやりたいなら、いまはmbed, Arduino, Raspberry Piみたいな入手し易く情報量も多いボードが存在してるので、これらを使って楽しみながらやった方が効率的かつ速く取得できます。
Posted by とみやん at 2014年04月24日 19:20
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/91742079

この記事へのトラックバック