フレームワーク

フレームワークとは、骨組みのようなものです。
アプリケーションを開発する際は、
お客様が要望される機能や画面を、
骨組みに肉付けするように作成することで、
提供しています。

アプリケーションフレームワーク - Wikipedia


WebであればApacheStrutsというフレームワーク流れが多かったのですが、
Strutsには脆弱性が見つかり、また多種多様なフレームワークが登場しています。

様々な特徴を持ったフレームワークが存在することで多様性があるということは
理解できますが、エンジニアにとっては学習コストが多くてなかなか大変です。


代表的なフレームワークを挙げます。


Apache Struts

Webアプリケーションフレームワーク。言語はJava
ApacheTomcatというWebサーバ上で動作します。
広く一般的だったが脆弱性により情報漏洩の被害が発生し、今では選択されない。

Welcome to the Apache Struts project


Spring

Webアプリケーションフレームワーク。言語はJava
様々な機能を持ったモジュールで構成されており、
ネットでも情報が豊富に存在しているので、
Strutsから選択されることも多い。

spring.io


Seasor

Webアプリケーションフレームワーク。言語はJava
一般的には骨組みと肉付けの対応は設定ファイルによって定義されるが、
Seasorは「設定よりも規約」という概念で作られており、
規約(例えばファイル名など)に従うことで動作するので
設定ファイルが少なくて済むのが特徴。
国産だが、2016年で終了(EndOfLife)。残念。

www.seasar.org


RubyOnRails

Webアプリケーションフレームワーク。言語はRuby
Railsとも呼ばれる。これも「設定よりも規約」タイプ。
サーバからクライアントまで一貫してカバーするフルスタックフレームワークの先駆者。

github.com


Express

Webアプリケーションフレームワーク。言語はJavaScript(Node.js)。
Node.jsと言われるJavascriptエンジンで動作するWebサーバのスタンダード。
MongoDB(Database), Express(WebFramework), AngularJS(MVCFramework), Node.js(JavascriptEngine)
の頭文字をとってMEANと言われる統合環境がフルスタックフレームワークとして成長しつつある
(サーバからクライアントまでJavaScriptJSONだけで統一できる)。

Express - Node.js web application framework


このほかにも数えきれないほどのフレームワークが存在します。
すみません・・・。


個人的には2006年くらいから開発業務している私にとって
コマンドひとつで環境が自動的に構築できるようになってきたことが脅威と感じます。
それはパッケージ管理システムが潤沢に機能するようになったことが要因です。
Linuxには早くから機能が実装され、BSD系であればports、Debia系であればapt、Redhat系であればyumというコマンドが代表的です。
(2006年当時はyumは無くてrpmを自分でかき集めてインストしていた…)

これがプログラミング言語でもサポートし、
RubyであればGems、Node.jsであればnpmのコマンドを使えばサクサク環境が構築できます。
便利な時代になりました。