X

A blog about Oracle Technology Network Japan

Javaの偉大なアプリ25選

Guest Author

※本記事は、Alexa Moralesによる"The 25 greatest Java apps ever written"を翻訳したものです。


宇宙探査からゲノミクスまで、また、リバース・コンパイラからロボティック・コントローラまで、Javaは現在の世界の中核を担っている。無数のJavaアプリの中から、傑出したいくつかのアプリを紹介する

著者:Alexa Morales
2020年6月5日

Javaの歴史が始まったのは1991年、Sun Microsystemsがコンピュータ・ワークステーション市場における優位性を、当時芽吹きつつあった個人向け電子機器の市場に拡大しようとしたときでした。Sunが作ろうとしていたこのプログラミング言語は、コンピューティングの世界を身近なものにし、世界中のコミュニティを感化することになりました。さらに、言語やランタイム・プラットフォーム、SDK、オープンソース・プロジェクト、そして膨大なツール群で構成される永続的なソフトウェア開発エコシステムのプラットフォームにまでなっています。このようになるとは、当時認識されていませんでした。James Gosling氏らは、数年間をかけてJavaプラットフォームを秘密裏に開発しました。Sunがそれをリリースしたのは1995年のことです。「一度書けば、どこでも動く」という画期的なもので、その方向性は、対話型テレビを動作させるという当初の設計から、急速に普及しつつあったWorld Wide Webでアプリケーションを動作させるというものに変更されました。世紀の変わり目には、スマートカードから宇宙船まで、Javaはあらゆることに使われるようになりました。

現在は、数百万人の開発者がJavaのプログラムを書いています。Javaはこれまでにない速さで進化し続けていますが、Java Magazineでは、プラットフォーム誕生25周年となるこの機会に、Javaがどのように世界を作り上げてきたのかについて振り返ることにしました。

これから紹介するのは、Wikipedia検索から米国国家安全保障局のGhidraまで、これまで書かれてきたJavaアプリの中で、特に独創的で影響力が強い25のアプリのリストです。これらのアプリケーションが扱う範囲は、宇宙探査、ビデオ・ゲーム、機械学習、ゲノミクス、自動車、サイバーセキュリティなど、多種多様です。

順不同で紹介しますが、とてもすべてを網羅できるものではありません。明らかに漏れているものがあると思った方は、ぜひお知らせください。Twitterでハッシュタグ#MovedbyJavaと#Top25JavaAppsを付けて@OracleJavaMagにツイートするか、javamag_us@oracle.comに電子メールをお送りください。

個人的な話になりますが、筆者は2000年にSoftware Development誌の編集長になりました。このころ、サンフランシスコのベイエリアの優秀な新進Java開発者たちが注目を浴びていました。Kathy Sierra氏とBert Bates氏による『Head First Java』の初版をむさぼるように読んだことを覚えています。視覚的な表現が多用され、言語の構文だけでなく、Javaを成功に導いたオブジェクト指向プログラミングの概念をわかりやすく伝えているものでした。当時は、その20年後も自分のキャリアでJavaが重要な位置を占めることになるとは考えていませんでした。現在、筆者はオラクルで働いています。

ここに掲載するリストをまとめるにあたっては、オラクルのJava開発チーム(そのほとんどは、2010年のオラクルによる買収以前からSunで働いていました)に協力していただきました。ここで感謝を申し上げます。Java Magazine元編集長のAndrew Binstock氏と、2006年にSunのソフトウェア部門でコンテンツ・マーケティング・ストラテジストを務めていた同僚のMargaret Harrist氏にも感謝をささげたいと思います。さらに、今回の調査では皆さんのようなJavaコミュニティ・メンバーの多くから意見を頂きました。Jeanne Boyarsky氏、Sharat Chander氏、Aurelio García-Ribeyro氏、Manish Gupta氏、Manish Kapur氏、Stuart Marks氏、Mani Sarkar氏、Venkat Subramaniam氏、Dalibor Topic氏をはじめとする、Javaコミュニティ・メンバーに感謝いたします。

それでは、Javaの偉大なアプリ25選の紹介を始めます。

 

最後のフロンティア

Worlds of space

1.Maestro Mars Roverコントローラ:2004年、Javaは人類が別の惑星に到達することに貢献した最初のプログラミング言語になりました。この年、米国カリフォルニア州パサデナにあるNASAジェット推進研究所(JPL)の科学者たちは、JPLのロボット・インタフェース研究室が構築した、JavaベースのMaestro Science Activity Plannerを使い、火星を探査するマーズ・エクスプロレーション・ローバー「スピリット」を3か月にわたって操作しました。JPLによるJavaの実験は、1995年のマーズ・ソジャーナ向けのコマンドや制御システムの作成により、その何年も前に始まっていました。Javaの生みの親であるJames Gosling氏は、JPLの顧問団の一員として多くの時間を費やしました。

2.JavaFX Deep Space Trajectory Explorer:宇宙旅行を計画している方には、米国の航空宇宙関連企業であるa.i.solutionsのツールが必要になるかもしれません。この会社の製品やエンジニアリング・サービスは、20年超にわたって防衛関連企業や民間宇宙機関で使用されています。

軌道設計者は、この会社のJavaFX Deep Space Trajectory Explorerを使って深宇宙での三体系の経路や軌道を計算することができます。このアプリケーションでは、任意の惑星衛星系や小惑星の多次元表示やモデリングを生成し、精密な視覚探索によって数百万個の点をフィルタリングすることができます。

3.NASA WorldWind:NASAは、ロケット科学者が開発したSDKをオープンソースのWorldWindとしてリリースし、誰でも無料で使用できるようにしました。プログラマーは、WorldWindにより、自分のJavaアプリ、Webアプリ、AndroidアプリにNASAのジオグラフィック・レンダリング・エンジンを追加し、仮想的な地球を表示することができます。WorldWindがGoogle Earthよりはるかに優れているのは、NASAのエンジニアが標高モデルやその他のデータソースを使って地形を視覚化し、地理空間データを生成している点です。Webサイトでは、「世界中の組織がWorldWindを使用して、天候パターンの監視、都市や地形の視覚化、車両の動きの追跡、地理空間データの分析を行っているほか、地球についての知識を私たちに与えています」と説明されています。

4.JMARSとJMoon:2003年に公開され、現在もNASAの科学者たちがよく使っているのがJava Mission-planning and Analysis for Remote Sensing(JMARS)です。JMARSは、アリゾナ州立大学のMars Space Flight Facilityの研究者が作成した地理空間情報システムです。JMARS for the Moon(月科学者にはJMoonと呼ばれています)では、月周回衛星ルナー・リコネサンス・オービタの広角カメラ画像を分析します。2009年に打ち上げられたこの衛星は、月の50キロから200キロ上空を周回しつつ、NASAのPlanetary Data Systemに観測データを送っています。

5.Small Body Mapping Tool(SBMT):ジョンズ・ホプキンズ大学のApplied Physics Laboratoryで開発され、宇宙科学者たちに支持されているのがSBMTです。SBMTでは宇宙機ミッションで収集したデータを使い、小惑星、すい星、小衛星などの不規則な形状の天体を3Dで視覚化します。SBMTはJavaで書かれており、オープンソースのVisualization Toolkit(VTK)を使ってJavaでの3Dグラフィックスを実現しています。ドーン、ロゼッタ、OSIRIS-REx、はやぶさ2の飛行ミッション・チームは、すべてSBMTを使ってすい星や小惑星、準惑星を探査しています。

 

高度なデータの活用

Worlds of space

6.Wikipedia検索:人々のための、人々による百科事典は、オープンソース・ソフトウェアで実行するのが適切です。そして、その検索エンジンにはJavaが使用されています。1999年にDoug Cutting氏が書いたLuceneは、彼の妻のミドル・ネームにちなんで名付けられたものです。LuceneはCutting氏が開発した実に5つ目の検索エンジンでした。その他のエンジンは、Cutting氏がXerox PARC、Apple、Exciteのエンジニアとして開発したものです。2014年、WikipediaではLuceneエンジンを分散型REST対応検索エンジンであるElasticsearchに置き換えました。こちらもJavaで書かれたエンジンです。

7.Hadoop:今回のリストに含まれるCutting氏の作品はLuceneだけではありません。Cutting氏は、商用コンピュータの大規模クラスタによるデータ処理用アルゴリズムMapReduceについて書かれたGoogleの論文に触発され、2003年にMapReduce操作用のオープンソース・フレームワークをJavaで作成しました。このフレームワークは、彼の息子が持っていたおもちゃのゾウにちなんでHadoopと名付けられました。Hadoop 1.0は2006年にリリースされました。これによってビッグ・データのトレンドが起こり、多くの企業が「データ・レイク」を収集し、「データ・エキゾースト(排出データ)」のマイニングを戦略化して、データを「新しい石油」と評するようになりました。2008年、Yahoo(Cutting氏の当時の勤務先)は、10,000コアのLinuxクラスタで動作するSearch Webmapが、現存するもので最大の本番向けHadoopアプリケーションであると述べました。Facebookは2012年に、世界最大のHadoopクラスタに100ペタバイトを超えるデータを保持していると述べました。

8.Parallel Graph AnalytiX(PGX):グラフ分析は、データ間の関係や結びつきを把握するためのものです。ベンチマークによると、PGXは世界最速のグラフ分析エンジンの1つです。PGXはJavaで書かれ、Oracle Labsの研究者Sungpack Hongが率いるチームが2014年に初めて公開しました。PGXにより、グラフ・データをロードし、コミュニティ検出、クラスタリング、経路探索、ページ・ランキング、影響分析、異常検知、経路分析、パターン・マッチングなどの分析アルゴリズムを実行することができます。医療、セキュリティ、小売、金融業界でさまざまな用途に使用されています。

9.H2O.ai:機械学習は、初期に習得しなければならないことが多いため、各分野のエキスパートが機械学習のすばらしいアイデアを実現できないでいる可能性があります。自動機械学習(AutoML)は、特徴エンジニアリング、モデルのトレーニングやチューニング、解釈など、MLプロセスの手順の一部を推論し、サポートしてくれます。Javaベースのオープンソース・プラットフォームであるH2O.aiは、Java ChampionのCliff Click氏が作成しました。その目的は、AIを身近なものにし、初心者に対して仮想データ・サイエンティストの役割を果たすとともに、MLエキスパートの効率を向上させることです。

 

娯楽の世界

Worlds of fun

10.Minecraft:ブロックでできたバイオーム(生物群系)や人々に加え、自分がブロックで建てた建物でできた平和なMinecraftの世界は、世界中の子どもや大人を長い間魅了しています。そして、Minecraftは歴史上もっとも人気のあるビデオ・ゲームとなっています。Minecraftは、Markus "Notch" Persson氏がJavaで開発し、2009年にアルファ版がリリースされました。この3D空間では、同じ世界ができあがることは決してないため、終わることのない創造性の源となっています。このビデオ・ゲームはJavaで作られているため、自宅や学校のプログラマーが自分のmodを作ることもできます

11.JitterロボットとleJOS:Jitterは、自律型ロボット掃除機ルンバが登場する前から存在していました。Jitterとは、国際宇宙ステーション(ISS)で浮遊している粒子を吸い込むために作成されたプロトタイプ・ロボットです。壁で跳ねかえり、ジャイロスコープを使って方向制御を行うことで、無重力状態でも移動できました。ある報告によると、ロシアの宇宙飛行士たちは、このロボットのx、y、z回転の処理が、ISS自体の方向を制御する仕組みと見事によく似ていることに気づいたそうです。Jitterは、もっとも世間離れした、leJOSのプロトタイプです。leJOSは、プログラム可能なロボットをおもちゃのレゴ・ブロックで作成するためのハードウェア・ソフトウェア環境であるLego Mindstorms用のJava仮想マシンとして作られたものです。このおもちゃに使用されたOSの歴史は、José Solorzano氏が開始した1999年のTinyVMプロジェクトまでさかのぼります。その後、Brian Bagnall氏、Jürgen Stuber氏、Paul Andrews氏が率いるチームが手を加え、leJOSとなりました。この環境にはロボット・プログラミングに固有なクラスが含まれ、多様な機能が搭載されています。Javaのオブジェクト指向性によってシンプルにまとまっており、誰でも高度なコントローラや動作アルゴリズムを利用できるようになっています。

12.Javaアプレット:『Oxford English Dictionary』によると、アプレットという言葉が初登場したのは1990年のPC Magazine誌です。しかし、アプレットが実際に使用されるようになったのは、Javaが登場した1995年以降です。Javaアプレットは、Webページ(フレーム、新規ウィンドウ、SunのAppletViewer、テスト・ツール)で起動できた小さなプログラムで、ブラウザとは別のJVMによって実行されました。Minecraftが早い時期に成功を収めたのは、プレーヤーがゲームをダウンロードしてインストールする必要がなく、WebブラウザのJavaアプレットで遊ぶことができたからだという人もいます。JavaアプレットはJava 9で非推奨となり、2018年のJava SE 11で削除されましたが、しばらくの間はもっとも高速なゲームでした。豆知識:Javaアプレットは3Dハードウェア・アクセラレーションにも対応していたため、科学計算の可視化にも広く利用されていました。

 

栄誉あるコード

Worlds of coding

13.NetBeansとEclipse IDE:Javaの世界に初めて登場した統合開発環境は、NetBeansでした。NetBeansは、1996年にプラハのカレル大学で開発が始まり(Xelfiという名前でした)、起業家のRoman Staněk氏が同名で設立した会社によって1997年に商用化されました。1999年、SunはJavaアプリケーションのすべての種類をサポートするこのモジュール式IDEを買収し、翌年にオープンソース化しました。2016年、オラクルはNetBeansプロジェクト全体をApache Software Foundationに寄贈しました。
有名なJavaベース統合開発環境には、オープンソースのEclipse IDEもあります。このIDEはJavaだけでなく、AdaからScalaまで、さまざまなプログラミング言語のコーディングに使用できます。Eclipse SDKの開発は、IBMが2001年に始めました。IBM VisualAgeをベースとしてJava開発者向けに作られていますが、プラグインで拡張できます。Eclipse IDEは、2004年にIBMからEclipse Foundationに移管されました。そして現在も、特によく使われているIDEの1つであり続けています。

14.IntelliJ IDEA:IDEにはさまざまなものがありますが、2001年に誕生したIntelliJ IDEAは特に普及しているものの1つです。現在のIntelliJ IDEAは、Python、Ruby、Goなど、多様な言語をサポートする多くのIDEのフレームワークとなっています。IntelliJ IDEAと、関連製品であるJetBrains IDEスイートは、Javaで書かれており、多くの開発者が多用するようになっている、生産性機能やナビゲーション機能が追加されています。追加されているのは、コードの索引付け、リファクタリング、コード補完(スマートフォンのテキスト自動補完の前身となった機能)、エラーを検出する動的分析(スペルチェックに似た機能)などです。イギリスのJava Championで、フリーランスのソフトウェアおよびデータ・エンジニアであるMani Sarkar氏は、「IntelliJ IDEAは、JavaやJVMベースの複雑なアプリケーションの管理やデバッグを1つのフレームワークで行うという難題を解決してくれました。このツールを使う開発者は、効果的であり生産的であり、そして何より幸せであると感じています」と話しています。

15.Byte Buddy:オープンソースJavaライブラリであるByte Buddyを作成した、ノルウェーのオスロを拠点とするソフトウェア・エンジニアRafael Winterhalter氏は、非常にニッチな分野に人生をささげていることを認めています。ときには、尋常でないほど細かい部分に焦点を当てることもあります。それでも、その献身の成果は広く普及しています。Byte Buddyはランタイム・コード生成および操作用のライブラリで、HibernateやMockitoといったJavaツールに使用されています。Winterhalter氏によれば、月間2,000万回ダウンロードされているそうです。

16.Jenkins:Sun Microsystemsのエンジニアだった川口耕介氏が2004年に作成したJenkinsは、強力なオープンソース継続的インテグレーション・サーバーです。JenkinsはJavaで書かれています。短時間で自動的にアプリケーションのビルド、テスト、デプロイを行うことができ、一般的に、「Infrastructure as Code」を実現した初期のDevOpsツールの1つとして認識されています。Jenkinsと、コミュニティによる1,500超のプラグインは、GitHub連携から、色覚障害の開発者のサポートやMySQL Connector JARファイルの提供まで、無数のデプロイやテストのタスクに対処しています。

17.GraalVM:Oracle LabsのThomas Wuerthingerが率いるチューリッヒ(スイス)の研究者チームは、Javaでコンパイラを書いたらどうなるか(オリジナルのJVMはCで書かれています)、そのコンパイラがどんな言語で書かれたどんなプログラムでも実行できたらどうなるか、そのコンパイラが非常に効率的だったらどうなるか、という3つのアイデアを数年間かけて研ぎ澄ましてきました。そして、60本の研究論文を発表した後、GraalVMは困難な状況を覆して商用プロダクトとなりました。このテクノロジーを熱烈に支持している企業の1つがTwitterで、GraalVMを使って自社サービスのスピードと計算効率を改善しています。

18.Micronaut:クラウド向けのコードを書いている開発者は、アプリケーションでどのくらいのメモリがどのように使用されるかについて慎重に考える必要があります。マイクロサービス用のJavaフレームワークであるMicronautを作成したGraeme Rocher氏は、「アプリの再起動やフェイルオーバー、シャットダウンと復帰にかかる時間を非常に短くし、起動時間やメモリの使用を最適化する必要がある」と述べています。Micronautでは、アノテーション・メタデータを使って、JVMがアプリのバイトコードを効率的にコンパイルできるようにしています。

19.WebLogic Tengah:1997年、WebLogic Tengahは、実際に実装された初めてのエンタープライズJavaサーバーとなりました。Java MagazineとDr. Dobb's Journal誌の元編集長であるAndrew Binstock氏は、「WebLogic Tengahは、Java 2 Enterprise Editionに先駆けてリリースされBEAの主要製品となり、最終的にはオラクルによるBEA Systems買収につながった」と話しています。同じころ、IBMはビジネス・オブジェクト・フレームワークのSan Francisco Projectで成功していました。これについてBinstock氏は、「このフレームワークによってJavaは、クールな若者たちが遊ぶおもしろそうな新しいものの段階をまさに脱し、重要なビジネス・ツールへと進化した」と述べています。Oracle WebLogic Serverは、現在も主要なJavaアプリケーション・サーバーであり続けています。一方で、他の製品も普及しています。Sunが2005年に開発を始めたオープンソース・アプリケーション・サーバーGlassFishは、2018年にEclipse Foundationに寄贈されました。

20.Eclipse Collections:投資銀行や株式市場などの金融サービス企業で働く、多くの高賃金開発者にJavaの強力なスキルが求められるのには理由があります。Javaプログラミング言語は、並列実行処理に加え、高頻度取引やその他の大規模金融取引でよく使われる、複数の実行スレッドの管理にたけているからです。当初はGoldman Sachs Collectionsとして知られ、後にEclipse Foundationに寄贈されて改名されたEclipse Collectionsは、Java ChampionのMani Sarkar氏によると、「最適化されたデータ構造と、高度で機能的な流れるようなAPI」でネイティブJavaの高パフォーマンス機能を拡張したものです。Sarkar氏は、Eclipse Collectionsにはキャッシュ処理、プリミティブのサポート、並列実行ライブラリ、一般的なアノテーション、文字列処理、入出力などが含まれていると話しています。

21.NSA Ghidra:米国国家安全保障局は、2019年にサンフランシスコで開催されたRSA Conferenceで、Ghidraと呼ばれるJavaベースのオープンソース・ツールを紹介しました。現在、セキュリティの研究者や実務家が、マルウェアの動作を理解するためや、自分たちのコードの弱点を調査するために、このツールを使っています。このリバースエンジニアリング・プラットフォームでは、ソフトウェアを機械語からソース・コード(Javaなどの言語)に逆コンパイルすることができます。このツールには、2017年3月にその存在がWikiLeaksによって暴露されたという、忌まわしいとまでは言えないにしても、よく知られた歴史があります。

 

ゲノム・マッピング

Worlds of genomics

22.Integrated Genome Browser:ヒトゲノムのマッピングという競争は、1990年に始まり、その13年後に終わりを迎えました。医学研究者ら3,000人が30億米ドルの費用をかけて10年間作業し、生物工学研究者であるCraig Venter氏のDNA塩基対30億個の配列決定に成功したのです。配列決定が完了すると、科学者たちは、私たちの種のソース・コードを読み解く作業に入ることを切望しましたが、どのようにすればよいのでしょうか。この作業は、Javaベースのゲノム・ブラウザを使って行われました。このブラウザは、バイオインフォマティクスを専門とするAnn Loraine教授らのチームが開発した視覚化ツールで、基礎データセットと、参照遺伝子の注釈の両方を調べるものです。オープンソースのIntegrated Genome Browserにより、ゲノム・データのズームやパン、グラフ化を行い、遺伝子の機能を特定して注釈を付けることができます。カリフォルニア大学サンタクルーズ校では、この世界的な取り組みと歩調を合わせ、Jim Kent氏が主導してGenome Browserという同様のツールを作成しています。

23.BioJava:2000年に始まり、現在も順調に作業が進んでいるのがBioJavaです。このオープンソース・ライブラリは、生物学データの処理を行うもので、バイオインフォマティクスと呼ばれる分野に属します。科学者はこのライブラリを使用して、タンパク質およびヌクレオチドの配列を操作することや、遺伝子からタンパク質への翻訳、ゲノミクス、系統進化、高分子構造に関するデータを調査することができます。このプロジェクトをサポートしているのはOpen Bioinformatics Foundationです。世界中に所在するその貢献者には、製薬、医療、ゲノミクス分野のさまざまな関係組織から資金が提供されています。Aleix Lafita氏らのチームは、「Javaで利用できるツールとJavaのクロス・プラットフォーム移植性のおかげで、BioJavaは手法やソフトウェアの開発によく採用されている」と記しています(2019年の論文"BioJava 5:A community-driven open source bioinformatics library")。この論文によると、BioJavaは2009年以来、65人の開発者による貢献を受け、GitHubで224個のフォークができて270個のスターを獲得しました。また、BioJavaは2018年の1年間で19,000回超ダウンロードされました。

 

お気に入りの「モノ」

Worlds of iot

24.VisibleTesla:このJavaベースのアプリは、電気自動車メーカーTeslaのファンであるJoe Pasqua氏が、所有するTesla Model Sの状態を監視して操作するために2013年に作成した無償のプログラムです。VisibleTeslaはTesla Motors Clubコミュニティから着想を得ており、Teslaの公式モバイルアプリと同様の機能が提供されています。ユーザーは、ジオフェンシングの設定に加え、ドアのロック忘れや充電状態などの通知設定を行うことができます。また、走行データの収集や操作も可能です。このプロジェクトはオープンソースで、コードはGitHubで公開されています。

25.SmartThings:このInternet of Things(IoT)アプリケーションは、2012年にAlex Hawkinson氏が共同設立し、後にKickstarterで120万米ドルを調達したSmartThingsが開発したものです。このアプリケーションにより、自宅の照明や鍵、コーヒー・メーカー、温度調節器、ラジオからホーム・セキュリティ・システムまで、あらゆるものをスマートフォンやタブレットから制御して自動化することができます。JavaベースのMicronautフレームワーク(#18参照)を使っているため、クラウドベースのサービスはミリ秒未満のスピードで動作します。この会社は、2014年に2億米ドルもの金額でSamsung Electronicsに買収されました。


Alexa Morales

オラクルの開発者コンテンツ担当ディレクター。Software Development誌の元編集長。15年超にわたり、テクノロジー・コンテンツ・ストラテジストおよびジャーナリストとして活動している。


Alexa Morales

オラクルの開発者コンテンツ担当ディレクター。Software Development誌の元編集長。15年超にわたり、テクノロジー・コンテンツ・ストラテジストおよびジャーナリストとして活動している。

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.