現在、システム開発に利用される各種プログラム言語とその開発環境、フレームワークについてまとめます。この概要では、プログラム言語の基礎的な概念についてまとめます。
1.汎用系・オープン系
汎用系は汎用コンピュータいわゆる大型コンピュータ(メインフレーム)を利用したシステムのことでNECのACOSシリーズ、IBMのZシリーズなどがあります。時代の流れの中、WindowsやLinuxを利用したオープンシステムへの移行が進められ、過去の遺産という意味でレガシーシステムと呼ばれるようになりました。この汎用コンピュータで利用されるプログラム言語はCOBOL、C、JCLなどです。JCLはメーカーごとの独自言語なので、他メーカーとの互換性がありません。
対して。オープン系は、オープンシステム、いわゆるWindowsやLinuxを利用することにより、どのメーカーの機器でも共通して利用できるシステムです。オープン系で利用されるプログラム言語はJava、C++、C#、VBなどです。
2.インタプリタ方式・コンパイル方式
まず、プログラム言語は、その実行方法により大きく2方式に分かれます。
・インタプリタ方式
・コンパイル方式
です。
プログラムを実行するためには、機械語に変換しなければなりませんが、その変換方法について、一括で機械語に変換する方式をコンパイル方式。1行ずつ変換しながら実行していく方式をインタープリタ方式と呼びます。
コンパイル方式のプログラム言語はJava、C++、C#、VBなどです。
インタプリタ方式のプログラム言語はPHP、Python、Ruby、JavaScriptなどです。
実行速度はコンパイル方式の方が高速です。実行時にコンパイルする必要がないからです。
しかし、クラウドコンピューティングの進むこの時代にコンパイルに掛かる時間がボトルネックになるのか?という話です。DBのレスポンスやネットワーク速度、Webサーバーの応答速度の方がより重要なレスポンス改善要因となります。
3.IDE(:Integrated Development Environment)とは
IDEとは、統合開発環境と呼ばれるソフトウェアの開発環境のことです。プログラムエディタ、デバッガ、コンパイラを1つのGUI上で操作でき、さらにインテリセンスを始めとした開発を効率化するツールが用意されています。統合開発環境を使うことによって、効率的にプログラム開発することが出来ます。
4.フレームワーク
プログラム言語の派生製品のようなものです。プログラムを作成するにあたり、あらかじめ良く使う機能を該当言語で既にプログラム化したものを、部品(フレームワーク)として提供します。
フレームワークを利用することで開発を効率化できますが、フレームワークを利用するための独自の文法が用意されていることがほとんどで、通常のプログラム言語の知識に加えてフレームワークを操作するための知識が必要となり、プログラム開発人員の確保が難しくなったり、開発人員の教育に時間がかかったりする要因にもなります。
5.MVCモデル
ソフトウェアの設計手法の一つで、ソフトウェアの内部データと、ユーザーが直接参照・編集する部分を完全に分離することを目的とした手法です。機能を分離することで、役割分担、障害切り分けがはっきりし、依存関係の少ないプログラミングとなります。
要素 |
説明 |
Model モデル |
ソフトウェアの内部データにあたるビジネスロジック部分です。 具体的にはデータベースとコアプログラムです。 |
View ビュー |
表示を行う画面部分です。ユーザーの入力項目は表示するのみで、その入力されたデータの制御はControllerが行います。 具体的にはデザインを含むフロントエンドプログラムです。 |
Controller コントローラー |
ユーザーの入力に基づき,ModelとViewを制御します。 具体的には制御プログラムです。 |
一例ですが、WEBの典型的な構成、HTML、PHP、MYSQLを利用したサイトはMVCモデルと言えます。MYSQL内のデータをHTMLからは直接扱えず、PHPを介してその処理を行います。この場合、
・Model:MySQL
・View:HTML
・Controller:PHP
となります。
Javaのプログラミングにおいて、フロントエンド部分、データベース接続や業務ロジック、制御プログラムを明確に別モジュール化して構築していく場合もMVCモデルです。
6.Servlet、CGI、JSP、ASP.NET、アプリケーションサーバー
これらの用語は、サーバーサイドプログラムに関する用語です。
ServletとCGI
Servlet(サーブレット)とは、Javaで作成するサーバーサイドプログラムのことで、Java EEに含まれるServletコンテナを利用して作成するプログラムです。このプログラムをTomcatなどのJavaアプリケーションサーバー上で実行することで、ウェブページなどからのリクエストに、動的にレスポンスを行います。
CGIも役割は同じなのですが、CGIはリクエストの都度、新規でプロセスを生成しているのに対し、Servletはメモリに常駐して、リクエストの都度プロセスより軽量なスレッドを生成します。この仕様によりServletはCGIに比べて、より高速にレスポンスを返すことが可能になります。
ServletとJSP(:Java Server Pages)
Servlet、JSPどちらも、Javaで作成するサーバーサイドプログラムのことですが。MVCモデルにおいて、Servletはコントローラー、JSPはビューの役割を果たし、主にHTMLの生成を行います。
文法的にServletはJavaの文法でコーディングできますが、JSPはスクリプト言語的な書き方のため、別途学習が必要となります。
ASP(:Active Server Pages).NET
Microsoft Visual Studioで作成するサーバーサイドプログラムのことです。IISをアプリケーションサーバーとしてウェブページなどからのリクエストに、動的にレスポンスを行います。
アプリケーションサーバー
特定のプログラムをサーバーサイドで動作させるために必要となるサーバーのことです。上記でServlet、JSPのTomcat、ASP.NETなど上記でいくつか名前を挙げましたが、下図にまとめます。
アプリケーションサーバー |
対応するプログラム言語 |
備考 |
Tomcat、GlassFish、WildFly |
Java: Servlet、JSP |
|
mod_php(Webサーバー用モジュール) |
PHP |
※注 |
Tornado |
Python |
※注 |
Passenger(Webサーバー用モジュール) |
Ruby: Ruby on Rails |
※注 Linuxのみ対応 |
Unicorn |
Ruby: Ruby on Rails |
※注 Linuxのみ対応 |
※注:Webサーバーのプロセス上でプログラムを実行します。Webサーバーのプロセスとプログラムのプロセスを別に立てる時間的手間をなくします。