目次


現代企業にとっての最新の言語

エンタープライズ・サーバー上で JavaScript、Swift、および Java を使用する

Comments

プログラミング言語の必要性は、初めてコンピューターが考案されたときに生まれました。それ以来、新しい言語を考案するという探究はこれまで常に研究のテーマであり続け、その結果、多くの素晴らしい言語が誕生しています。ここ数年間でも、多数の新しいプログラミング言語が導入されましたが、それによって世界全体での開発者人口の分布図に変化が起きています。最近誕生した新しいプログラミング言語に精通しているのは、従来からの言語に熟練している開発者たちではなく、学校を卒業したての多くの若者だからです。世界中の開発者たちの統計をまとめた 2017 年度の Stack Overflow Developer Survey によると、最もよく使われているプログラミング言語としては、JavaScript と Java プログラミング言語が相変わらず上位の位置を確保しています。一方、新しく上位に躍り出た新しい言語もあります。その 1 つが、Swift です。

この記事では JavaScript (Node.js)、Swift、および Java 言語の概要を紹介し、エンタープライズ・サーバー上でこれらの言語を使用することがなぜ理にかなっているのかを解説します。この記事の中で使用する「企業」という言葉は、内部プロセスを処理する目的、または外部のクライアントにサービスを提供する目的でアプリケーションを使用しているあらゆる企業を指します。そのような企業がデータを保管しているセキュアなプラットフォームは、一般に、クラウド (パブリック、専用、またはプライベート・クラウド) 上にあるか、オンプレミス (通常はメインフレーム) にあるかのどちらかです。

エンタープライズ・サーバー上で最新の言語を使用する理由とは

最近のアプリケーションのほとんどは、図 1 に示す共通のアーキテクチャー・パターンに従っています。ユーザーがやりとりするアプリケーションのフロントエンドは、モバイル・アプリや Web アプリであったり、あるいは何らかのアプライアンスに接続されたセンサーであったりすることもあります。通常、アプリケーションには実際の機能と価値をユーザーに提供するバックエンドが必要になります。このバックエンドは、一般にクライアントのデータにアクセスするか、あるいはデータを更新して、トランザクションを処理します。バックエンドの典型的なプラットフォームは、パブリック・クラウドまたはオンプレミスのサーバーです。

図 1. 最近のアプリケーションのアーキテクチャー
エンド・ユーザー、ユーザー対応クライアント・アプリ、パブリック・クラウド・サービス、モノ/センサー、オンプレミスからなるアーキテクチャーを示す図
エンド・ユーザー、ユーザー対応クライアント・アプリ、パブリック・クラウド・サービス、モノ/センサー、オンプレミスからなるアーキテクチャーを示す図

上記に示されているアーキテクチャーをサポートする開発環境を確保するのは簡単なことではありません。なぜなら、フロントエンドとバックエンドを開発するには、それぞれに異なる言語と異なるスキルが必要になるためです。例えば、フロントエンドは Swift または JavaScript で開発する一方、バックエンドは C++ または COBOL で開発するといった具合です。

このような課題が、エンタープライズ・サーバー上で最新の言語を使用する動機付けとなっています。これから、その理由を説明しましょう。

スキル

エンタープライズ・サーバーに関しては、COBOL、PL/I、およびアセンブリー言語のプログラマーに高い需要があります。現在のメインフレーム開発者人口のかなりの部分が現役を引退する時期を迎えつつある中、企業はこのような従来からの言語に精通した新卒者を採用するのに苦労しています。企業がエンタープライズ・サーバー上でも新たに登場した最新の言語を使用するとしたら、これらの言語を十分に理解していて、すでにフロントエンド上で使用している新卒者を簡単に採用できます。

API エコノミー

新しい言語のほとんどは、企業の API エコノミーに上手く適合するように設計されています。そのような言語はマイクロサービスを作成するのに適しているため、バックエンド上で実行するには最適です。最新の言語をエンタープライズ・サーバー上で使用できるようにすれば、企業は CICS および COBOL に現在費やしている投資を活用して、既存の COBOL アプリケーションや CICS アプリケーションを Swift や Node.js などの最新の言語で拡張できるようになります。

データとの距離

以上の 2 つのニーズを満たすはずの言語は数多くありますが、それらの言語はサーバー・プラットフォーム上では使用されていません。そのような言語は、通常は中間層とも呼べる場所 (フロントエンドとバックエンドの中間に位置し、ステージング・ステーションとして機能する、いわゆるキャッシング・サーバー) 内で使用されています。これは、かなりのネットワーク通信が行われることを意味します。つまり、アプリケーションのパフォーマンスに影響が及ぶということです。

アプリケーションの応答時間を短縮するためには、アプリケーションのバックエンドを可能な限りデータに近づける必要があります。データがクラウド・サーバー上にあるとしたら、バックエンドもクラウド上でホストするべきです。データがメインフレーム内にあるとしたら、バックエンドもメインフレーム内でホストするべきです。この点から、クラウドおよびサーバー・プラットフォーム上で Swift や Node.js などの最新の言語を使用する必要性が生じてきます。

Java プログラミング言語

20 年以上前に登場した Java 言語は、最新型のエンタープライズ・アプリケーションに対応する主要なプラットフォームの 1 つです。Java では当初から、「一度書けば、どこにでもデプロイできる」というスローガンがその魅力の 1 つとなっています。つまり、コードを開発、テスト、デプロイする舞台としてそれぞれに最適な場所を選択できるということです。この目標を達成するために、Java では java ソースを移植可能なバイトコードにコンパイルします。コンパイルされたバイトコードは、ターゲット・プラットフォーム上で解釈されて動的に最適化されます。長年にわたり、Java はフレームワーク、セキュリティー、そして他の言語との相互運用性という点で進化を続け、成熟してきました。また、パフォーマンスについても常に向上しています。言語自体に利点があるというだけでなく、世界全体に多くの Java 開発者がいるため、企業が Java アプリケーションを構築する場合、プログラマーを見つけて採用するのに苦労することはありません。

Node.js

Node.js は、Google の V8 JavaScript エンジンを基盤にして動作するサーバー・サイドの JavaScript プラットフォームです。開発者がビルドを効率的かつ迅速に行えるようにすることを目的に設計された Node.js は、スケーラブルであり、リアルタイム・ネットワーク・アプリケーションに最適です。以下に、Node.js を開発者にとって魅力的なものにしている要因を説明します。

生産性

Node.js はオープンソース・コミュニティーを推進し、開発者たちがコミュニティーに貢献するとともに、さまざまなモジュールを共有できるよう、Node Package Manager (NPM) というモジュール管理システムを提供しています。開発者たちの間で愛用されている NPM は、現在 400,000 個を超えるモジュールをホストしています。コミュニティーが NPM に提供しているモジュールの増加率は、他のランタイムの増加率と比べて 3 倍にも上ります (図 2 を参照)。

NPM 内で利用できるモジュールの大半は、開発者の生産性向上につながります。Node.js 内で特定の機能を作成する必要が出てきた場合、それと同じ機能を実現するモジュールがすでに存在する可能性は十分にあります。これらのコミュニティー提供のモジュールをビルディング・ブロックとして活用すれば、開発者はアプリケーションを迅速に組み立てることができます。

図 2. コミュニティー提供のモジュール (2017年 2月 16 日、modulecounts.com)
CPAN、GoDoc、Maven Central (Java)、npm (node.js)、nuget (.NET)、Packagist (PHP)、PhPI、Rubygems.org のモジュール増加率を示す図。Node.js が最大で、Java、SPAN、Rubygems、PHP の順に続いています。
CPAN、GoDoc、Maven Central (Java)、npm (node.js)、nuget (.NET)、Packagist (PHP)、PhPI、Rubygems.org のモジュール増加率を示す図。Node.js が最大で、Java、SPAN、Rubygems、PHP の順に続いています。

スケーラビリティー

Node.js はそのプログラミング・パラダイムとして、イベント駆動型のノンブロッキング非同期 I/O フレームワークを採用しています。したがって、Node.js はオペレーティング・システム内の基礎となる非同期 I/O サポートを利用して I/O タスクに対処します。つまり、何千もの同時接続を最小限のオーバーヘッドで実行できるため、ピーク時の高いトランザクション需要にも円滑に対応できるアプリケーションを作成できます。

使いやすさ

Node.js はシングル・スレッドのイベント・ループ・フレームワークであり、基礎となる非同期 I/O 機能を利用して並列処理に対応します。この手法により、並行性の複雑さとスレッド・セーフに関する問題が排除されます。Node.js と JavaScript は、Web アプリケーションに必要な最新のツール (JSON API など) にもよく統合します。

Swift

Swift は、2014 年に Apple により発表され、翌年の 2015 年 12 月にオープンソース・コミュニティーに寄贈されました。それ以来、Swift は開発者コミュニティーで好評を博し、2017 年の RedMonk のプログラミング言語ランキングでは 15 位に、StackOverflow Developer Survey では 11 位に躍り出ています。また、Swift は Apple と IBM を含む業界大手の企業から支持されています。さらに、Swift を中心としたフレームワークのエコシステムが進化しており、Swift で作成されたさまざまな Web フレームワーク (Perfect.org、Kitura、Vapor など) が考案されています。Swift ファンが Swift のエクスペリエンスとベスト・プラクティスを交換し合うカンファレンスや会合も開催されています。例えば、ニューヨークバンガロール東京での try! Swift や、Swift Summit などです。

これらの要素のすべてが、Swift が大きな可能性を秘めた言語であることを物語っています。けれども、Swift がこれほどまでに話題を呼んでいるのはなぜなのでしょうか? Swift を興味深い言語にしている要因としては、3 つの点が挙げられます。

パフォーマンス

JavaScript や Ruby などの他の最新のスクリプト言語や動的言語とは異なり、Swift は静的にコンパイルされる言語です。実行可能ファイルが生成されて、そのファイルを直接実行するという点では、Swift は C 言語に近いと言えます。この静的コンパイルのおかげで、速度とメモリー使用量に関しては他の最新の言語よりもパフォーマンスに優れています。

図 3. Swift のパフォーマンス
Swift、Java、JavaScript、Ruby の速度とメモリー使用量を比較した棒グラフを示す図
Swift、Java、JavaScript、Ruby の速度とメモリー使用量を比較した棒グラフを示す図

最新

Swift は比較的新しい言語であり、最近の言語に期待するような最新の機能のすべてを備えるように設計されています。Swift の概念は他のよく使われている言語と似ているため、Swift を習得するのは簡単です。その構文は簡潔で理解しやすく、冗長な言い回しはほとんどありません。比較的新しい言語ではありますが、Swift のコンパイラーは LLVM コンパイラー・インフラストラクチャーをベースに作成されています。LLVM はこれまで長い間使われてきたコンパイラーで、C や C++ などの他の言語でその強力なパフォーマンスは実証されています。つまり、最新の言語と成熟した最適化コンパイラーという最良の組み合わせを手にできるのです。

安全

Swift は新しい言語であるため、以前の言語であれば多くのプログラマーが犯しがちな誤りを回避するように設計されています。Swift は厳格に型付けされる言語であり、コンパイル時にさまざまなタイプのエラーを検出するための対策がとられます。変数は自動的に初期化され、メモリーも自動的に割り当てられて管理されます。これらの機能により、不良ポインター、初期化されていない変数、誤った型キャストによる値の誤計算といった問題が排除されることになります。

まとめ

Java プログラミング言語はこれまで約 20 年にわたってエンタープライズ・サーバー内で使用されてきた実績があり、本番環境で稼働するミッション・クリティカルな Java アプリケーションで採用されて成功を収めています。Node.js は比較的新しく、目下、その高速 I/O と高度なスケーラビリティーを利用するために Node.js に移行する企業クライアントが増えています。Swift 3.0 はサーバー・サイドの開発を焦点に作成された初のリリースであり、x86 Linux と z System 上の Linux もサポートします。サーバー上で Swift を使用する場合、特に z/OS に Swift を導入した後で、どのようなタイプのワークロードが開発されるのか興味深いところです。

これらの最新の言語の導入を進める真の推進力は、若い世代のアプリケーション開発者たちであり、プログラミング言語自体に備わった技術的利点だけでは、言語の成功には至りません。エンタープライズ・サーバー上で最新の言語を使用する主な動機付けは、利用可能なスキルにあります。サーバー・プラットフォーム上で多言語のエコシステムを展開することで、企業の投資と近代化努力において選択肢が生まれます。それが、生産性の向上、DevOps サイクルの時間短縮、そして IT 投資の ROI 改善につながるのです。


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps
ArticleID=1049590
ArticleTitle=現代企業にとっての最新の言語
publish-date=04042019