これからはJavaでしょ! ARM®でしょ!高付加価値な製品作りのヒントがここにある。

組み込み機器のプログラミング言語として採用がひろがるJavaテクノロジ。バーチャルマシンという仕組みによってハードウェアやOSが隠蔽されるためソフトウェアの移植性や再利用性を高めやすいという特徴がある。最近では、組み込み機器の早期開発や高付加価値化を図ることができるとして注目されている。あらゆる機器がネットワークでつながる今の時代にこそ、Javaのメリットが活きてくるといえるだろう。今回の「プレミアムトークセッション」では、オラクルとARMからそれぞれ二人のキーパーソンを招いて、組み込みのこれからについて聞いた。

メインイメージ

インターネット黎明期に誕生したJava

今日は組み込み市場をJavaとARMという切り口から覗いてみようと考え、皆さんにお越しいただきました。まずはじめにJavaはどのように誕生したのか教えてください。

オラクル宇野:Javaは現在、オラクルが扱っていますが、もともとは旧サン・マイクロシステムズに在籍していたジェームズ・ゴズリン(James Gosling)らによって1990年代半ばに開発された、ネットワーク時代を見据えたオブジェクト指向言語です。当時、サンではセットトップボックスなどのハードウェアを手掛けようとして、その一環としてJavaが生まれました。残念ながらハードは成功せずに言語だけが残ったという形ですね。ちなみに旧Netscape Communicationsが開発したJavaScriptとよく混同されるのですが、言語としてはまったく異なるものです。

組み込みのアプリケーションプラットフォームとしてJavaが使われる事例が増えていると言われていますが、Javaはどの程度浸透していると感じますか?

アーム菅波:SoC(System On Chip)やASICを通じて、われわれのIPを使ってくださっている組み込み機器メーカーのお客様のところに行っても、もうずいぶん前からJavaの名前を聞くことがとても多くなりましたね。開発者がソフトウェアを上から下までまる抱えで組んでしまうと、ハードウェアの変更のたびにアプリケーションやミドルウェアを大幅に変更、場合によってはすべて書き換えないといけなくなりますが、Javaはバーチャルマシン(VM)という仕組みによってポータビリティが確立されていますから、そのメリットが大きいんだと思います。

オラクル宇野:Javaには主にパソコンで使われているというイメージがありますが、実際にいちばん使われているのは携帯電話です。また、Blu-rayには仕様として「Blu-ray Java(BD-J)」が規定されていますし、一部のデジタルテレビや複合機にもJavaが使われています。最近はエネルギーマネジメントシステムなどにも採用され始め、すでにあらゆる分野で使われていると考えていいかと思います。

オラクル島田:Javaがすでに使われている分野と、使われるのが遅かった分野とがあって、とくにネイティブコードやC++コードが根強く残っているところは、今までの資産もあるし開発環境も変えなくちゃいけないので、移行するにはちょっとシンドイなという感じはあるようです。ただ、早い段階でJavaに乗り換えたメーカーのほうが、ビジネスを上手く進めている印象があります。

VMによってプラットフォームを隠蔽

言語としてのJavaは、どういうところが優れているのでしょうか?

アーム五月女:私は十数年前までは計測器メーカーに勤めていて、C言語などで制御ソフトを書いていたんですが、計測器の機能が増えていくにつれて、だんだんとソフト開発が困難になっていったことを経験したんですね。その後Javaが登場してきて、大規模で複雑なソフトウェアにまつわる問題を解決する手法がいろいろと入っていることを知ったときに、きっとこれを考えた人もソフトウェア開発の問題に悩んで、それを解決したかったのだろうな、と。その経験がJavaに生かされていると思いますね。

オラクル宇野:私が1990年代に初めてJavaに接したときは、C++と比べてメモリ管理をしなくても済むところが大きなメリットだと感じました。メモリポインタが存在しないおかげでアドレス空間を見つけてウイルスを作り込むことができませんから、セキュリティの面でも安心です。それに加えて、当初からマルチスレッドへの対応機能が言語レベルで組み込まれていたので、マルチコアやマルチプロセッサ環境でも開発が容易というのも特徴といえます。

アーム五月女:宇野さんの言われたメモリ管理を不要にしたという点は、大英断なんですよ。組み込みソフトをやっている人間って物理メモリが見えないのはとても気持ち悪いはずで、この言語にはメモリポインタはないよって言われたら必ず文句が出ると思うんですね。ただ、メモリポインタの存在が逆にいろいろなトラブルを引き起こしてしまう側面もあるわけです。そこで、Javaを作った人たちは思い切って物理メモリを見せないようにしてしまったと。あとはやはりバーチャルマシンによる隠蔽ですね。プラットフォーム側とアプリケーションをVMで切り離したこともメリットとして大きいと思います。

Javaはバーチャルマシン上で動くので性能が十分に得られない、といった意見もあるかと思います。

オラクル島田:それって10年前の話なんですよ。ハードとOSの上にJava VMを一段かませるので遅くなります、っていうのがたしかに10年前にあったんですけど、今はVMそのものが進化していますし、CPUも何百倍も高性能になってるんで、そういった指摘はもう当てはまらないんです。ただ、昔のイメージをなんとか払拭してもらわないとJavaの採用はひろがりませんので、啓蒙に力を入れているところです。

いざJavaを採用しようとなったときに、言語の習得や人材の育成という点で課題はありますか?

オラクル島田:C言語をやっていた人であればJavaはすぐに扱えます。Cをもうちょっとオブジェクト化させたのがJavaなんで、先ほどもあったようにメモリ管理も要らないし、すんなりと習得できるはずです。

オラクル宇野:サンの時代に出版されていた解説書籍やチュートリアルが今ではインターネット上でPDFで配布されたりもしていますし、「NetBeans」という統合環境を使ってどのOS上でも開発できますから、とっつきやすいと思います。

念のためにARMプロセッサ上でのJavaの対応状況について教えてください。

オラクル島田:基本的にはARMのどのプロセッサでも動きます。Cortex™-AだろうとCortex-Mだろうと。

アーム菅波:Cortex-AならLinuxなりμITRONの上でVMが動きますし、Cortex-MならたとえばKeilの「RTX」というOS上でVMが動きます。開発環境も問題ないですね。基本的にVMさえ動けば下のハード部分は見えないんで、プロセッサを気にする必要はまったくありません。

シンプルさとコミュニティが普及の源泉

Javaがプログラミング言語の主流に躍り出たように、ARMプロセッサも今では組み込みマイコンの主役になっています。先ほどJava誕生の話がありましたが、ARMはどのように生まれたのですか?

アーム五月女:話し出すと長くなりますが(笑)。1983年にイギリスのBBCテレビがパソコンを題材にした教育番組を始めたんですね。その番組に8ビットコンピュータを提供したのが「Acorn」(エイコーン)というメーカーで、番組の評判も良く一気に成長したんです。じゃあ次の機種はどうするってなったときに、パソコンメーカーなのに32ビットCPUを作り始めちゃったんですね。ところがIBM PC/ATやMacintoshが出てきてAcornのビジネスがうまく回らなくなった。そこでCPU開発だけは別の会社でやろうということで、Appleと旧VLSI Technologyから出資を受けて「Advanced RISC Machines」(ARM)という会社を作ったのはいいんですが、リソースが足りないのでチップ製造まで手が回らず設計図(IP)だけ売ろうとなったんです。その後幸運にも、バッテリでも動くローパワーという特性が認められて、日本製の携帯ゲーム機、Appleの「Newton」、さらにNokiaなどの携帯端末などに順次採用されていくうち成長を遂げてきた、というのがARMの歴史ですね。

コンピュータの黎明期を含めてさまざまなテクノロジが登場してきました。多くの選択肢の中からJavaとARMが生き残ったというのは、なにか共通する理由があったのでしょうか。

アーム五月女:JavaとARMは共通点が結構多いと思っていて、どちらも核になるところはシンプルな標準仕様を決めて動かさないようにしているところですね。歴史を振り返ると、アーキテクチャのバリエーションを許したプロセッサは、ほとんどが消えました。Javaも基本的なことは定義するけれども、残りの部分はクラスとして拡張していくというふうに、ある意味でコミュニティに任せています。結果論かも知れませんが、そういうところは生き残るうえで重要だったと思います。

オラクル島田:ARMの場合はとくにAMBAバスを公開したのが大きくて、ARMが主導しているわけじゃないのに、いろんなサードパーティがくっついて意外なところで思わぬイノベーションが起きてるのがやっぱり大きいなと感じます。それにアーキテクチャを単純に作っておいたほうが、パートナーとかコミュニティといった仲間を作りやすいと。要はエコシステムが大きくなるには、単純でシンプルなものが構造として重要なんだなと思います。

あらゆるプラットフォームで動作

さて、Javaに限らず組み込み市場全般で新しい動きがあれば教えてください。

オラクル宇野:センサーや通信モジュールの進化によって、いろいろな情報を簡単に収集してクラウドに集約できるようになってきました。オラクルでも「Device-to-Datacenter」というコンセプトを社外にアピールしていますが、たとえばスマホやカーナビといったデバイスから情報を取って、ゲートウェイを介してクラウドにデータを集めて、BIツールを使って解析する、といった時代がすぐに来ると思っています。いわゆる「Internet of Things(IoT)」だったり「Machine-to-Machine(M2M)」の考え方ですね。

アーム菅波:われわれは「Mali」というGPUのIPも提供していますが、スマホやタブレットのGPUを用いたタッチパネルの操作感にみんなが慣れてしまったこともあって、ほかの組み込み機器でも同様の操作感を得るために、GPUによる高いグラフィックス性能が欲しいという声が高まってきています。ひとつの流れとして、そうしたグラフィックスを重視する方向に向かうのかなと。あと昨年ぐらいからは、実際のアプリケーションで使われている算術演算などをGPGPUで高速化しようということで、Maliを使えないかという問い合わせも増えてきています。そうしたアプリケーションも今後は登場してくるのではないかと見ています。

それらの応用でもJavaが活躍すると面白くなりそうですね。最後に今後の取り組みをお聞かせください。

オラクル島田:Javaが世の中に出てからかれこれ18年ほど経っていますが、プログラマの皆さんに愛されながら進化してきました。あらためてコミュニティの力ってすごいんだな、といつも感じています。コミュニティが育ててくれた便利なJavaを世の中に広めようというのを自分のミッションにしながら、アームとのコラボレーションも深めつつ、組み込みのお客様をサポートしていけたらと思っています。

アーム五月女:モノとモノがつながる「Internet of Things」という考え方が広まっていますし、最近は家電製品でもネットにつながったりしますから、Javaを活用して上位側のソフトを再利用していかない限り、タイムリーな製品開発ができない時代になっています。部品化と再利用化ができて、標準化されているアーキテクチャっていったら、最短距離にいるのがJavaだろうと。流行り言葉を使えば「Javaいつやるの?今でしょ!」(笑)だと思っているので、オラクルさんとのパートナーシップを強化しながら、お客様に向けてメリットの啓蒙に努めていきたいと考えています。

本日はいろいろと興味深いお話をありがとうございました。