あらゆる開発現場や研究機関によるプログラミング言語のシェアの調査結果では、現在でもJavaは上位に位置しています。
Javaは1995年の登場から20年以上経過した今でも、
あらゆるサービスやシステムに導入されており、いわゆる「枯れた」言語です。
銀行のATMなど信頼性が求められる金融系システムから、
スマートフォンのAndroidアプリに至るまで、
企業向けから個人向けまで幅広く利用されている信頼性の高い言語なのです。
しかしJavaに限らずプログラミング言語とは特性や特徴が様々で、
その言語にとって得意、不得意があります。
本稿では、Javaにとって得意なこと、不得意なことを
実際のサービスやシステムと共に幾つか紹介します。
項目
- Evernote
- 紀伊国屋書店サイト
- 社内ツールとしての言語
- Cookpad
- 最後に
「ツイート」と称される140文字以内の短文の投稿を共有する
コミュニケーションネットワークです。
と、あえて説明をする必要のないほど全世界で利用されているサービスですね。
特に、Twitterは日本人の特性に合ったサービスで、「バルス」のツイートによってTwitterのサーバーがダウンしてしまった話もあまりに有名です。そんなリアルタイムの発信が要となるTwitterですが、その一部にJavaが採用されています。
TwitterにはTwitter検索という、ツイートされた内容を検索できる機能があり、
この機能は世界でもトラフィックの多い検索エンジンの一つです。
そしてこの検索エンジンは1日に10億ものデータベースへのアクセスを処理してると言われています。
Twitterでは2011年頃まではこの検索エンジンの仕組みにRubyを利用していました。
しかし、サービスの普及に伴って増え続けるトラフィックに対応すべく、
RubyからJavaのライブラリを利用したアーキテクチャに変更しました。
それによって検索の遅延をそれまでの3分の1に削減し、
フロントエンドサーバのCPU使用率も半分にすることに成功しています。
サーバ1台あたりにして10倍ものリクエストを受け持つ余裕ができたとまで言われています。
この事例からもわかるように
Javaは、何か問題が発生した場合に
それを解決する為のライブラリや仕組みが既に豊富にあり、
またオープンソースのコミュニティも賑わっているため、
問題を素早く解決できる可能性が高い特徴があります。
Evernote
パソコンやスマートフォン向けの個人用ドキュメント管理システムで、
2億人以上のユーザー数を誇る高機能なオンラインノートサービスです。
Evernoteもまた、サービスの中心となる部分にJavaを利用しています。
Evernoteは基本的なメモ帳としての機能はもちろん、テキスト認識機能やボイスメモ機能、名刺のスキャン、他アプリケーションとの連携など、機能が充実しているのが特徴です。そして、もう一つの特徴は1つのアカウントを持っていれば何台もの端末で同じメモやノートを共有して編集ができることです。
EvernoteはTwitterほどの間隔でリクエストが発生することはないものの、
一日に1億5000万ものリクエストが送信され、
データのサイズはTwitterを上回るものになります。
そして、何台もの端末から同じアカウントのリソースに対してアクセスされる可能性が高いため、整合性を保つためにシステムはアトミックなトランザクションを実行させる必要があります。
要するにどの端末からのどの様な操作でも
データは正しい状態になるように動作させないといけないということです。
そして、Javaはこのような複雑な要件にも応えやすいという特徴を持っています。
例外処理や豊富で高機能なネットワークライブラリを利用できるおかげで、
あらゆる状態のリクエストを不整合が生じない様にデータに反映させることが実現可能になるのです。
GoogleもJavaを利用している企業の一つです。
Googleは他社にはない独特な社内ルールが有名です。
技術方針としてプログラミング言語についても規定されており、
「C++」「Python」「Java」を主に用いることが決められています。
また、それぞれの用途も分かれていて、
C++は各種の基盤システムやインデックスサーバのように
処理速度が求められるシステムで用いられ、Pythonは主に社内向けツールの開発に用いられ、
Javaは様々なWebサービスの開発と、Android開発の共通言語として採用されています。
そしてGoogleには少人数チームの社内プロジェクトが多数存在し、
各チームはプロジェクトの立案から開発、デモ運用まで全てを行うため、
コスト削減は必要不可欠となります。
Javaは汎用性や拡張性が高く、長い目で見てコスト削減にはうってつけの言語です。
Googleが革新的な技術や仕組みを生み出して発展してこれたのは、
Javaを採用しているのも理由のひとつと言えるでしょう。
紀伊国屋書店Webサイト
Javaを利用したサーブレットのWebサイトです。
サーブレットとはJava言語で記述された、Webサーバー上で実行されるプログラムのことです。
紀伊国屋書店のWebサイトを利用してみるとURLに”.jsp”の拡張子ファイルが含まれていることが確認できます。これは”JavaServer pages”の略で、HTML内にJavaプログラムを埋め込むことができ、リクエストパラメータやデータベースの状態によって動的なページを生成することができる技術で、”.jsp”はその実態ファイルにあたります。
Google検索で”.jsp”で検索して表示されるページは漏れなくこの技術を利用しています。
Javaサーブレット自体はここ最近、新技術の登場によって衰退傾向にありますが、
会計処理、大規模オンラインショップなど、
エンタープライズ用途でまだまだ利用されつづけている技術です。
ここまで、得意な分野のシステムを紹介しましたが、下記に不得意なことの事例を紹介します。
社内ツールとしての言語
Javaが社内ツールを開発する上で不得意というわけではなく、
他の言語の方がより効率よく早く開発できるので、
あまりJavaの恩恵を受けれないというのが正しい説明です。
先ほども実例であげましたが、GoogleではJava以外に
Pythonを社内向けツールとして利用することを規定としています。
Pythonは構文がシンプルで覚えやすく、
読みやすいプログラミング言語として人気の言語です。
基幹系のシステムやセキュリティを強固にするシステムには向きませんが、安全なローカルネットワーク内で使われることを前提としたアプリケーションを開発するのに適しています。また、サクッと修正をしたり、変更をしたりすることが容易なので業務で手軽に利用したいアプリケーションを開発する場合にうってつけの言語なのです。
Cookpad
ユーザーのニーズを素早く取り入れて迅速にリリースするようなサービスには
テスト駆動開発と言われる開発手法が採用される傾向にあります。
Cookpadは自作の料理レシピを載せたり、
他者の考案レシピを実用した料理を写真付きで公開できるサービスで、
その手軽さからユーザー数5000万人を超えるレシピサイトに発展してきました。
Cookpadはユーザーニーズを素早く実現するべくRubyを採用しています。
Rubyはテスト駆動開発に特化した言語で、新しいチャレンジを迅速に行うことができます。
しかし、ことJavaにおいてはこのような要件に応えるには少し不得意な言語です。
Javaはある程度の利用者数が初めから見込めて、
あらかじめしっかりと決められたサービスの仕様を満たし、
リリースに向けて十分なテストを行なわなければならないような要件で効果が発揮されるのです。
最後に
今回は紹介できませんでしたが、
Javaは組み込みソフトウェアのプログラム言語としても優秀な言語で、
私たちが普段よく使っている家電製品にはJavaのプログラムが組み込まれていることもあります。
以上にあげたサービスやシステムは世界に存在するサービスのほんの一部にすぎません。
そして、得意なこと、不得意なことの実例を紹介しましたが、
Javaを利用して実現できないことはないと言っても過言ではないほど、
実現しようと思えば、大概のことは実現可能です。
ただし、ソフトウェアやシステム開発は
言語の特性を理解した上でサービスやシステムを構成しなければならず、
不得意な言語で開発をしてしまうと、コストがかかったり、
問題が解決できない状態に陥ってしまうことがあります。
Javaで何かのサービスを開発したい、
またはそのような会社に就職したいと思っている方は是非、参考にしていただければと思います。
フリーランスになるために必要な知識やスキルアップの方法等、様々なお役立ち情報を発信していきます。
(リモートワーク案件に強いフリーランスエージェント「クラウドワークス テック」を運営)