正しいプログラミング言語の選び方
CC BY-NC-SA 2.0: via Flickr by cype_applejuice
ソフトウェア開発者は、あらゆるコーディングプロジェクトで、さまざまな判断を下さなければならない。あるときは、特定の分野の問題を解決しなければならなかったり、特定のアーキテクチャーに関する問題を解決しなければならなかったりする。また、あるときは、今の仕事にとってどの言語を使うのが最適かを判断しなければならない場合もある。そして、この言語の選択こそが、プロジェクトを成功させるための最も重要な要因のひとつなのである。
問題となっている分野に対して最適なプログラム言語が使われず、それとは別の言語が使われることが非常に多い。ここで、ビジネスの各分野とプログラム言語の最適な組み合わせの例をいくつか見てみることにしよう。
金融業界
金融業界は、いくつかの言語から恩恵を享受している。計算で重要な機能の1つは関数型プログラミングである。金融の計算において、関数型言語は確かなパフォーマンスで利益をもたらす。従って、金融業界ではScalaなどの関数型言語が使われている。
金融業界でプログラミング言語を語る上でもう一つ重要なのは、その言語に関係のある組織から得られる、強固なアーキテクチャーパターンを使って、オブジェクト指向の考え方の恩恵が受けられるかどうかということだ。金融機関の多くが利用しているアプリケーションの多くがJavaやC#言語で書かれているのは、このためである。このような言語は他の多くの言語が対応できない保守性をを提供することができる。
最適とされるプログラミング言語:Scala, Java, C#
代理店、メディア、広告、デザイン
クリエイティブ・ワークでは、全体的な設計プロセスが必要とされる場合、素早いプロトタイピングできる言語が必要とされる。この場合、最適な言語は一般的にスクリプト言語である。スクリプト言語は、動的であり、最少量のコードを書けば、最大の機能を提供できるようになっている。パターンや根底にあるコード設計はそれはど重要視されない。Ruby,PHP、Javascriptがそれに当たる。
ここ数年、モバイル技術の台頭により、モバイルプラットフォームの開発に大きな焦点が置かれている。とくに開発会社やデザイン会社ではその傾向はより顕著だ。このため、急速なプロトタイピングには適していない幾つかの言語をより頻繁に使用するようになってきた。Android携帯にはJavaを、iPad、iPhone、iPodのようなiOSデバイスにはObjective-Cと考えよう。
最適とされるプログラミング言語:Ruby, PHP, JavaScript, Java, Objective-C
企業向けシステムのアプリとOS
企業向けシステム(エンタープライズ)において重要なのは、再利用可能で、パターンベースで、しばしば複雑かつ大規模な階層化アーキテクチャの設計手法を必要とするシステムだということだ。ここがJavaとC#が輝く場所となる。サーバとフレームワークをサポートする大規模なエコシステムにおいて、これらの2つの言語が、企業規模のシステム開発を実践するために最適である。
最適とされるプログラミング言語:Java, C#
リーン・スタートアップと小規模なソフトウェアビジネス
現在スタートアップや中小企業は厳しい現実に直面している。彼らは生き残るために、継続的なピボット、変更、適応を非常に速い速度で行わなければならない。しかも、大抵最小限の予算しかない。ほかの多くのビジネス形態では、ソフトウェアパッケージに対しての変更はほとんどないが、中小企業では複数回のプロトタイプを作成し、アプリやデザインを繰り返し作成する必要がある。
このため中小企業やスタートアップは、非常に高速なプロトタイピングと大規模なフレームワークのサポート、強力なコミュニティや「ハッカーの精神」を持っている言語を探し求める傾向が強い。よってRailsやSinatraというフレームワークを使えるRubyのような言語がスタートアップや中小企業で利用されていることが多い。
また、プロトタイピングとディプロイを、迅速かつ容易にsる多くのフレームワークをサポートする、PHPスクリプト言語なども人気がある。最近、JavaScriptもNode.js(Node.jsを使えば、開発者がサーバサイドで、JavaScriptにより完全なwebアプリケーションを構築できる)の出現で舞台に上がった。特にRubyやPHP、JavaScriptの周辺には、大規模な開発者のコミュニティが構築されている。
最適とされるプログラミング言語:Ruby, PHP, JavaScript
研究開発、科学、学術
科学研究と学術分野では、非常に正確な計算と非常に高速な処理が求められ、オブジェクト指向のような、組織の特性に対応した、言語の実装を考える必要があるだろう。このため、学術や科学コミュニティは数学計算のためにScalaのような言語を使用し、C++ で重い処理をし、そしてErlangやPythonのような言語をその一連のタスクを完結させるために利用することが多い。各タスクのほとんどは、単一の結果を得ることに焦点を絞っているので、多くの環境でこれらの言語が選択される。
最適とされるプログラミング言語:Scala, C++, Erlang, Python
著者紹介:アドロン・ホール
アドロンは、New Relic 社で、クラウドソリューションの開発リーダを務めている。