(Photo by:Betsy Weber)
ソフトウェア開発のプログラミング言語について、2017年の動向に合わせてフロントエンド側で利用されるプログラミング言語とバックエンドで利用される言語をまとめてご紹介します。
このような方におススメ
- 今時の開発で採用されるプログラミング言語の動向を知りたい
- ウェブUIやアプリ開発のプログラミング言語に興味がある
アプリケーション開発とそのバックエンド開発で利用されるプログラミング言語を目的別に紹介して行きます。
ウェブアプリケーション開発
言語名 | メジャーなフレームワーク名 | フレークワークURL |
Java | Java EE | http://www.oracle.com/technetwork/java/javaee/overview/index.html |
C# | ASP.NET | https://www.asp.net/ |
PHP | Laravel | https://laravel.com/ |
Ruby | Ruby on Rails | http://rubyonrails.org/ |
Python | Django | https://www.djangoproject.com/ |
Perl | Catalyst | http://www.catalystframework.org/ |
JavaScript | Meteor | https://www.meteor.com/ |
Scala | Play Framework | https://www.playframework.com/ |
Elixir | Phoenix Framework | http://www.phoenixframework.org/ |
Go | Revel | https://revel.github.io/ |
雨後の竹の子のようにウェブアプリケーションフレームワークが登場していた頃から見ると、だいぶ落ち着いてきた印象があります。
Java
Javaを使って新しくアプリケーション開発を行う場合はJava EEが主流かも知れませんが、Springも高い人気を維持しています。
C#
マイクロソフト社の提供する環境でウェブアプリケーション開発をするならば同社が提供するASP.NETを軸とした技術を中心に利用します。
PHP
PHPで使われるフレームワークの主流はLaravelになりつつあります。Symfonyは安定して使われており、過去に盛り上がりを見せていたCakePHPは他フレームワークと比べると勢いが弱く採用するメリットが無くなりつつあります。
Ruby / Python / Perl
RubyのRuby On RailsとPythonのDjangoは堅調、Perlのウェブフレームワーク全般は前に増して下火になった印象があります。
JavaScript
Node.jsは他言語と少し様相が異なり、新しいウェブアプリケーションフレームワークが生まれては淘汰される状況にあります。その中でも使われ続けているMeteorが人気です。
Scala / Elixir / Go
新しく登場し注目を集めている新興系の言語にもウェブフレームワークが揃いつつあります。
ただし、既存言語のウェブフレームワークの機能と比べると少し見劣りします。そのため既存フレームワークの代替えではなく言語が得意とする領域での問題解決に特化する用途で利用される事が多い印象です。
フルスタックかマイクロか
APIを利用したシステム間の連携やインテグレーションを行うアプリケーションが増える中、ウェブアプリケーションフレームワークはフルスタック型とマイクロ型の2種類に分かれつつあります。この記事中で紹介しているのはフルスタック型のフレームワークになります。
フルスタック型はデータベースやビューの描画まで行う従来のウェブフレームワークです。
マイクロ型は主にルーティングとコントローラーまでをフレームワークの守備範囲として、それら以外は外部のAPIやシステムまたはDBと連携してアプリケーションを構築します。例えばHTMLのビューを持たないサーバーであればマイクロ型のフレームワークの採用が向いているかも知れません。
iOS/Android/クライアントアプリケーション開発
(Photo by:Ryan Morse)
アプリ開発として扱われる領域で利用されるプログラミング言語の一覧です。
- Objective-C (iOS)
- Swift (iOS)
- Java (Android)
- Kotlin (Android)
- js(デスクトップ)
- C/C++(デスクトップ)
iOSのネイティブアプリケーションを開発する場合はApple社が提供しているSwiftとXcodeを利用します。
Androidアプリの開発言語と言えば基本はJavaですが、2017年に入り新しくKotlinが追加されAndroid StudioにもKotlinが同梱されるようになりました。
クロスプラットフォームで動作するネイティブデスクトップアプリケーションとしてElectronの利用が増えてきました。Electron を使ったアプリにはGitHub社が開発しているテキストエディタのAtomやGitクライアントのGitKrakenが有名です。Electronの開発はNode.jsで行います。
他にはQtがクロスプラットフォームなデスクトップアプリケーション開発で利用されています。開発言語はC++です。
マークアップ言語
- XML
- HTML
- SVG
- CSS
- LESS
XML/HTMLを使ったビューの構築に変化はありません。Reactに代表されるシングルアプリケーションライブラリではDOMの構造を動的に組み立てるため、静的にHTMLを出力してブラウザに表示するものから、ページ内で動的に切り替える用途も増えつつあります。
SVGはHTMLに埋め込める仕様のため、インタラクティブコンテンツの生成、例えばページ中でアニメーションを動的に生成するエフェクトを作る場合などにも活用されつつあります。
CSSの拡張言語としてSASSとLESSが2強でしたが、今ではSassはほぼ利用される事がなくなりLESSの1強になりつつあります。
ウェブサイトの規模が大きくなるとCSSの記述が煩雑になり重複が多くなりがちです。LESSのようなCSS拡張言語を使うとプログラマチックにCSSを記述できるようになり、CSSメンテナンスが楽になります。
マークアップ言語のコンパイル環境
Node.jsで開発されたwebpackのようにウェブアプリケーションで利用するアセット(CSSや画像やクライアントjsファイルの資産)をコンパイルしてビルドするツールが登場し注目を集めています。
ウェブアプリケーションが高度になるにつれ、中間フォーマットや成果物への変換ツールの需要が高まります。今後マークアップ言語の領域でもwebpackのようなビルドツールが増えるかも知れません。
まとめ
2017年の動向に合わせてアプリケーションのフロントエンドとバックエンドで利用される言語を紹介しました。
プログラミング言語自体は安定傾向にあり、どちらかと言えばAWSやGCPやAzureのようなクラウドプラットフォーム上でのミドルウェアやDockerに代表されるコンテナ技術などのアプリケーションの動作やインフラに関する動きの方が活発な印象を持ちます。
アーキテクチャの選択肢が広がりつつある中で、一時期のMVCモデルに適合したのがJ2EEだったように、設定よりも規約を重視するライトウェイトなフレームワークがRuby On Railsだったように、もしかすると新しいパラダイムに対応したウェブフレームワークが登場するかも時期かも知れません。
No Comments