あらゆる開発現場や研究機関によるプログラミング言語のシェアの調査結果では、現在でもJavaは上位に位置しています。
Javaは1995年の登場から20年以上経過した今でも、あらゆるサービスやシステムに導入されており、いわゆる「枯れた」言語です。
銀行のATMなど信頼性が求められる金融系システムから、スマートフォンのAndroidアプリに至るまで、企業向けから個人向けまで幅広く利用されている信頼性の高い言語なのです。
しかしJavaに限らずプログラミング言語とは特性や特徴が様々で、その言語にとって得意、不得意があります。
本稿では、Javaにとって得意なこと、不得意なことを実際のサービスやシステムと共にいくつか紹介します。
「クラウドワークス テック」

フリーランスエンジニア特化エージェント
エンジニア特化×リモート案件90%
クラウドワークス テックは、フロントエンドやバックエンド、インフラなど、エンジニアの専門性を重視した案件を多数掲載。
リモート案件が90%以上。 週1日〜の参画も可能で、初めての方でも専任担当者が徹底サポートします。
案件を紹介してもらいたい副業・フリーランスエンジニアにおすすめのサービスです。
Javaの開発事例①X(Twitter)

Xは、「ポスト」と称される140文字以内の短文の投稿を共有するコミュニケーションネットワークです。
特に、Xは日本人の特性に合ったサービスで、「バルス」のツイートによってX(当時はTwitter)のサーバーがダウンしてしまった話もあまりに有名です。
Xにはポストされた内容を検索できる機能があり、この機能は世界でもトラフィックの多い検索エンジンの一つです。
そしてこの検索エンジンは1日に10億ものデータベースへのアクセスを処理してると言われています。
X(Twitter)では2011年頃まではこの検索エンジンの仕組みにRubyを利用していました。
しかし、サービスの普及に伴って増え続けるトラフィックに対応すべく、RubyからJavaのライブラリを利用したアーキテクチャに変更しました。
それによって検索の遅延をそれまでの3分の1に削減し、フロントエンドサーバのCPU使用率も半分にすることに成功しています。
サーバ1台あたりにして10倍ものリクエストを受け持つ余裕ができたとまで言われています。
この事例からもわかるようにJavaは、何か問題が発生した場合にそれを解決する為のライブラリや仕組みが既に豊富にあり、またオープンソースのコミュニティも賑わっているため、問題を素早く解決できる可能性が高い特徴があります。
Javaの開発事例②Evernote
パソコンやスマートフォン向けの個人用ドキュメント管理システムで、2億人以上のユーザー数を誇る高機能なオンラインノートサービスです。
Evernoteもまた、サービスの中心となる部分にJavaを利用しています。
Evernoteは基本的なメモ帳としての機能はもちろん、テキスト認識機能やボイスメモ機能、名刺のスキャン、他アプリケーションとの連携など、機能が充実しているのが特徴です。そして、もう一つの特徴は1つのアカウントを持っていれば何台もの端末で同じメモやノートを共有して編集ができることです。
EvernoteはTwitterほどの間隔でリクエストが発生することはないものの、一日に1億5000万ものリクエストが送信され、データのサイズはXを上回るものになります。
そして、何台もの端末から同じアカウントのリソースに対してアクセスされる可能性が高いため、整合性を保つためにシステムはアトミックなトランザクションを実行させる必要があります。
要するにどの端末からのどの様な操作でもデータは正しい状態になるように動作させないといけないということです。
そして、Javaはこのような複雑な要件にも応えやすいという特徴を持っています。
例外処理や豊富で高機能なネットワークライブラリを利用できるおかげで、あらゆる状態のリクエストを不整合が生じない様にデータに反映させることが実現可能になるのです。
Javaの開発事例③Google

GoogleもJavaを利用している企業の一つです。
Googleは他社にはない独特な社内ルールが有名です。
技術方針としてプログラミング言語についても規定されており、「C++」「Python」「Java」を主に用いることが決められています。
また、それぞれの用途も分かれていて、C++は各種の基盤システムやインデックスサーバのように処理速度が求められるシステムで用いられ、Pythonは主に社内向けツールの開発に用いられ、Javaは様々なWebサービスの開発と、Android開発の共通言語として採用されています。
そしてGoogleには少人数チームの社内プロジェクトが多数存在し、各チームはプロジェクトの立案から開発、デモ運用まで全てを行うため、コスト削減は必要不可欠となります。
Javaは汎用性や拡張性が高く、長い目で見てコスト削減にはうってつけの言語です。
Googleが革新的な技術や仕組みを生み出して発展してこられたのは、Javaを採用しているのも理由のひとつと言えるでしょう。
Javaの開発事例④紀伊国屋書店Webサイト
Javaを利用したサーブレットのWebサイトです。
サーブレットとはJava言語で記述された、Webサーバー上で実行されるプログラムのことです。
紀伊国屋書店のWebサイトを利用してみるとURLに”.jsp”の拡張子ファイルが含まれていることが確認できます。これは”JavaServer pages”の略で、HTML内にJavaプログラムを埋め込むことができ、リクエストパラメータやデータベースの状態によって動的なページを生成することができる技術で、”.jsp”はその実態ファイルにあたります。
Google検索で”.jsp”で検索して表示されるページは漏れなくこの技術を利用しています。
Javaサーブレット自体はここ最近、新技術の登場によって衰退傾向にありますが、会計処理、大規模オンラインショップなど、エンタープライズ用途でまだまだ利用されつづけている技術です。
ここまで、得意な分野のシステムを紹介しましたが、下記に不得意なことの事例を紹介します。
Javaの開発事例⑤Cookpad
ユーザーのニーズを素早く取り入れて迅速にリリースするようなサービスにはテスト駆動開発と言われる開発手法が採用される傾向にあります。
Cookpadは自作の料理レシピを載せたり、他者の考案レシピを実用した料理を写真付きで公開できるサービスで、その手軽さからユーザー数5000万人を超えるレシピサイトに発展してきました。
Cookpadはユーザーニーズを素早く実現するべくRubyを採用しています。
Rubyはテスト駆動開発に特化した言語で、新しいチャレンジを迅速に行うことができます。
しかし、ことJavaにおいてはこのような要件に応えるには少し不得意な言語です。
Javaはある程度の利用者数が初めから見込めて、あらかじめしっかりと決められたサービスの仕様を満たし、リリースに向けて十分なテストを行わなければならないような要件で効果が発揮されるのです。
社内ツールとしての言語
Javaが社内ツールを開発する上で不得意というわけではなく、他の言語の方がより効率よく早く開発できるので、あまりJavaの恩恵を受けれないというのが正しい説明です。
先ほども実例であげましたが、GoogleではJava以外にPythonを社内向けツールとして利用することを規定としています。
Pythonは構文がシンプルで覚えやすく、読みやすいプログラミング言語として人気の言語です。
基幹系のシステムやセキュリティを強固にするシステムには向きませんが、安全なローカルネットワーク内で使われることを前提としたアプリケーションを開発するのに適しています。また、サクッと修正をしたり、変更をしたりすることが容易なので業務で手軽に利用したいアプリケーションを開発する場合にうってつけの言語なのです。
まとめ:Javaの開発事例から学ぶメリット・デメリットと将来性
今回は紹介できませんでしたが、Javaは組み込みソフトウェアのプログラム言語としても優秀な言語で、私たちが普段よく使っている家電製品にはJavaのプログラムが組み込まれていることもあります。
以上にあげたサービスやシステムは世界に存在するサービスのほんの一部にすぎません。
そして、得意なこと、不得意なことの実例を紹介しましたが、Javaを利用して実現できないことはないと言っても過言ではないほど、実現しようと思えば、大概のことは実現可能です。
ただし、ソフトウェアやシステム開発は言語の特性を理解した上でサービスやシステムを構成しなければならず、不得意な言語で開発をしてしまうと、コストがかかったり、問題が解決できない状態に陥ってしまうことがあります。
Javaで何かのサービスを開発したい、またはそのような会社に就職したいと思っている方は是非、参考にしていただければと思います。
「クラウドワークス テック」

フリーランスエンジニア特化エージェント
エンジニア特化×リモート案件90%
クラウドワークス テックは、フロントエンドやバックエンド、インフラなど、エンジニアの専門性を重視した案件を多数掲載。
リモート案件が90%以上。 週1日〜の参画も可能で、初めての方でも専任担当者が徹底サポートします。
案件を紹介してもらいたい副業・フリーランスエンジニアにおすすめのサービスです。

