日本オラクル特集記事

Javaが生み出す
ビッグデータと機械学習への新たなチャンス

テクノロジー・ライター
ロジャー・スミス


Javaのエコシステムはありがたいことに成長・進化を続けている。このことは、実際のビジネスへの応用の幅が広がり、Internet of Things(IoT)からオンライン詐欺検出まで、あらゆることにJavaプログラマーが関わるチャンスが増えることを意味している。

この5年間で企業が収集した個人にまつわるデータは膨大な量に上る。これらのデータは、Webサイト訪問、クリック、「いいね!」、ツイート、写真、オンライン取引、ブログ投稿といった人々のオンライン行動に基づくものであり、収集後、細かい分類と分析を経て、デジタル広告キャンペーンという形で私たちにフィードバックされる。収集されるデータはとにかく膨大だ。分析会社Domoの調査により、以下のような数字が明らかになっている。

• Googleの検索数:毎分400万件超
• Facebookユーザーによるコンテンツ共有数:毎分約420万点
• Twitterユーザーによるツイートの回数:毎分約30万回
• Instagramユーザーによる新規写真投稿数:毎分約175万点

2013年から2015年にかけて、世界のインターネット人口は18.5%増え、現時点で32億人に達している。人だけでこの数だ。モノがオンライン化されるようになったら、データ・フローはどのようなことになるのか想像してみてほしい。

Internet of Thingsの到来と共に、次世代のスマート・カー、TV、家電製品に内蔵された数十億のコンピュータ――照明のスイッチ、コーヒー・メーカー、冷蔵庫、料理用ミキサーなどのモノも含まれる――が相互に通信するようになれば、情報を得るために抽出されるデータの量は再び急増することになるだろう。

ビッグデータとJava

人やデバイスによって生み出されるデータを従来のリレーショナル・データベースに取り込んで分析するには、あまりにも時間とコストがかかりすぎる。よって企業では、「ビッグデータ」分析とストレージのための新たな手法の採用を進めている。ビッグデータにはデータ・レイク(Data Lake)やクラウド内のストレージ・リポジトリでのデータの保存がともない、膨大な量の生データを必要時までネイティブ・フォーマットのまま保管しておくことが可能である。

ビッグデータ処理には、多くの場合、Javaで記述されたオープンソースのソフトウェア・フレームワークであるHadoopが用いられる。Hadoopを使うことで、データ・アナリストは大量のデータ・セットを多数の廉価サーバーに分散して保存したうえで、それらのサーバーのJava Virtual Machine(JVM)でMapReduce処理を実行して、データの整理、統合、処理を行うことができる。MapReduceはデータ・セットに対する1つのクエリを受け取り、それを分割し、複数のノードに対して同時に実行する。このような演算処理の分散によって、データが多すぎて単一のマシンに収まりきらないという問題が解消される。汎用のLinuxサーバーを複数台接続した巨大なコンピューティング・アレイにMapReduceを組み合わせることで、アナリストはほとんどすべてのデバイスから低コストのスーパーコンピューティング・リソースにアクセスできるようになる。

オラクルのHadoop&ビッグデータ・プロダクト・マネージャーであるダン・マクラリー(Dan McClary)は、米国サンフランシスコで開催されたJavaOne 2015で発表を行い、Java開発者に向けて、自身のキャリアと所属企業の収益を高めるために、ビッグデータ事業開発プロジェクトでプログラミングのスキルを活用するよう呼びかけた。マクラリーはJavaの新たな進化を高く評価する一方で、いくつかの技術的な問題を見過ごすことがないよう注意する必要があると、開発者に警鐘を鳴らしている。「たとえば、データ・ブロックを記述する場所と方法に気を配らずにいると、均等な分散にならずに、データ・ノードに偏りが生じてしまう可能性がある」とマクラリーは述べている。

もちろん、Javaを取り巻く状況は進化し続けている。この1年半でApache Sparkはビッグデータ分野で広く使われるようになってきた、とマクラリーは言う。Hadoopが2段階のディスクベースのMapReduceパラダイムを採用しているのに対し、Spark(同じくJavaで記述される)はマルチステージのインメモリー処理をサポートしており、用途によっては、HadoopとMapReduceに比べて最大で100倍高速なパフォーマンスを提供する。「プログラミング面で重要なのは、Java、Scala、Pythonによるプログラムが可能な抽象化や機能が豊富なことから、コード数が1/2~1/5ですむ点だ」とマクラリーは述べている。

近い将来の展望として、マクラリーは強力な機械学習のためのDeepLearning4Jプロジェクトと、シンプルなデータ分析環境を提供するApache Zeppelinプロジェクトについて言及し、最後に、「機械学習に興味がある人は、ぜひDeepLearning4Jについて調べてみてほしい」と語った。

本記事はForbes.com OracleVoiceの以下の記事を抄訳しています:
http://www.forbes.com/sites/oracle/2015/11/10/java-creates-new-big-data-opportunities/