ユーニックス総合研究所

  • home
  • archives
  • programming-framework

フレームワーク?プログラミングで使うあれ、知ってますか?詳しく解説します

プログラミングのフレームワークとは何なのか?

プログラミングに触れているとちょいちょい耳にするもの。
それが「フレームワーク」です。

いったいこれは何なのでしょうか?
結論を言うとフレームワークとは「プログラミングで使う大きなブルドーザー」です。

中大規模プロジェクトではフレームワークが必須です。
このフレームワークについて具体的に解説します。

関連記事

魔法の壺、プログラミングのライブラリ(Library)とは
頭悪い人にプログラミングは可能か?可能です
開発を3倍速にするプログラミングの考え方4つ
英語できないけどプログラミングはしたい。そんな人はこの方法がおすすめです
意味のないプログラミングの特徴3つ

フレームワークの意味

フレームワークの意味はどんな意味があるのでしょうか?
フレームワークは英語です。

英文にするとフレームワークは「framework」になります。

これの意味は「骨組み、枠組み、構成、体制」などになります。

フレームワークはどんな時に使う?

フレームワークはどんな時に使うのでしょうか?
フレームワークの使いどころとは?

これは↓になります。

  • フレームワークはWebアプリの開発などで使う

他には業務用アプリを作るときもフレームワークは使われることがあります。
世の中のサービスはフレームワークで作られていると言ってもいいでしょう。
目には見えないものですがそれぐらいフレームワークは私たちにとって身近なものです。

フレームワークはWebアプリの開発などで使う

最近のWebアプリはほとんどがフレームワークWordPressによって作られています。
それほどシェアが多いのがこの2つです。

たとえばブログやSNSや動画サイトなどを作りたいとなった場合。
ブログはWordPressなどでも作れます。
しかしSNSや動画サイトはフレームワークで作るのが普通です。

  • SNSや動画サイトなどはフレームワークで作る

たとえばYoutubeなどは開発当初はDjango(ジャンゴ)というPythonのフレームワークで作られました。
おそらく今でもDjangoで動いていると思います。

つまりフレームワークはそういった大きなWebアプリを作るのに使われる、ということですね。
ですがフレームワークはそういう大きなWebアプリ専門というわけでもありません。
掲示板のような小さいアプリもフレームワークで作れます。

しかしフレームワークが真に向いているのは中・大規模サイトです。

フレームワークはなぜ必要か?

なぜフレームワークが必要なんでしょうか?
フレームワークの存在理由は?

フレームワークなんて無くたってWebアプリ作れるじゃないですか。
フレームワーク本当に必要なんですか?

というところですが、どうなんでしょうか。

フレームワークが求められているのはつまり↓こういうことです。

  • フレームワークは土台の役割をする
  • 中・大規模開発ではフレームワークが必須

フレームワークは土台の役割をする

フレームワークは「アーキテクチャー」と呼ばれる設計によって作られているライブラリです。
このライブラリを使うことでアプリに土台を作ることができます。

たとえばDjangoというフレームワークは「MVT」というアーキテクチャーで作られています。
アーキテクチャーはMVTだけでなく他には「MVC」などもあります。

  • 有名なアーキテクチャー
  • MVT
  • MVC
  • etc...

アーキテクチャーとはアプリの土台となる設計のことを言います。
たとえばDjangoをアプリ開発に選択すると、自然とMVTのアーキテクチャーに沿ってアプリを開発することになります。

アプリにアーキテクチャーが入っているとそのアプリは安定します。
つまり中・大規模になってもアプリが破綻する可能性がぐっと下がります。

ですのでアプリ開発にフレームワークを導入してアーキテクチャーを使うということは、中・大規模開発では必須ということになります。

中・大規模開発ではフレームワークが必須

中・大規模開発ではフレームワークが必須です。
というのもアプリにアーキテクチャーが入ってないとそのアプリは安定しません。
ですので設計的に難が出る可能性がぐっと高くなってしまいます。

またフレームワークには便利なライブラリも備わっています。
それらのライブラリはフレームワークを形作っているものです。

こういったライブラリを使うことでアプリ開発を効率よく行うことができるわけです。

  • フレームワークには便利ライブラリも備わっている

逆に中・大規模開発でフレームワークを入れないとどうなるでしょうか?
おそらくそのアプリは将来的に破綻するかもしれません。
アーキテクチャーを採用していれば可能性は下がりますが、アーキテクチャーを採用するならフレームワークを導入した方が楽だからです。

フレームワークは大きなブルドーザー?

フレームワークは「枠組み」とかそういう意味です。
ですが私はフレームワークはあえて言うなら「巨大ブルドーザー」と言えると思います。

Webアプリ開発は色々な要素が絡むのでアプリ開発としては難易度が高いです。
ガシガシと開発していくにはフレームワークのようなブルドーザーが必要になります。

  • 効率よく開発するにはフレームワークが必要

またフレームワークはセキュリティ的にも優れています。
OSSによる開発で色々な視点でセキュリティが検証されているからです。

OSSとはオープンソースソフトウェアのことで、GitHubなどのSNSでソースコードを公開して開発することを言います。
ひと昔前はソースコードは秘密にするのが普通だったんですが、最近ではOSSが一般的になってきています。

  • フレームワークは色々な人が検証している

話はそれましたがフレームワークは巨大ブルドーザー。
Webアプリなどをぐいぐいと開発したいなら必須のアイテムと言えます。

代表的なフレームワークは?

それで代表的なフレームワークは何があるのでしょうか?
ここでは2つだけ紹介したいと思います。
つまり↓の2つです。

  • Django
  • Laravel

Django

Django(ジャンゴ)はWebアプリを開発するためのフレームワークです。
Python(パイソン)というプログラミング言語で書かれています。

もちろん外国のフレームワークなのでドキュメントなどは英語です。
しかし有志の方によって日本語に翻訳されてるものもあります。

Djangoはこれ1つで色々なアプリが開発できます。
開発のためのツールが豊富でこれ1つあれば大抵のことは困りません。
周辺ツールもOSSによって開発されていて、充実しています。

関連記事
Django入門: 簡単な一行掲示板アプリを作る その1【Windows10】
Djangoのバージョンの確認方法4つ: pip, モジュール, VERSION, django-admin

Laravel

Laravel(ララヴェル)もWebアプリを開発するためのフレームワークです。
PHP(ピーエイチピー)というプログラミング言語で作られています。

Laravelも外国のフレームワークです。
しかし有志の方によって日本語のドキュメントも充実しています。

GitHubのスター数ではDjangoより多くなっています。
そのため大変人気のあるフレームワークと言えそうです。

Laravelもこれ1つあれば大抵のアプリを開発することができます。
周辺ツールも充実しているので開発で困ることもほとんどないでしょう。

フレームワークのコードはどういうものになるのか?

フレームワークのコードはどういうものになるのでしょうか?
どんなコードを書くとフレームワークを使っていると言えるのか?

ここではサンプルとしてDjangoのコードを紹介したいと思います。

from django.http import HttpResponse  


def index(request):  
    return HttpResponse("こんにちは世界")  

↑のコードはDjangoのビューと呼ばれる領域のコードです。
このコードは開発者が自分で書く必要があります。

DjangoではURLがビューに繋がっていて、特定のURLを開くとビューが呼ばれるという仕組みになっています。

↑のコードはWebページに「こんにちは世界」と表示します。

フレームワークのメリット

フレームワークのメリットはどんなものがあるでしょうか?
使うと得られるものは?

フレームワークを使うと得られるものは↓です。

  • アプリの拡張性の獲得
  • アプリのセキュリティの確保
  • 複数の開発者による開発の容易さ

フレームワークは拡張性にすぐれています。
つまりコードを書き足してアプリを大きくするなども可能だということです。

それからフレームワークはセキュリティ的にも優れています。
XSSなどの有名な攻撃にも対応できるように設計されているので安心して使うことができます。
もっとも、セキュリティを完全に無視できるというわけではありません。
やはり開発者にはセキュリティの意識は必要とされます。

そしてフレームワークは複数人の開発者で開発しやすい特徴があります。
ドキュメントもそろっていてフレームワークを学べばすぐに開発に参加できます。

こういったところがフレームワークのメリットになります。

関連記事
クロスサイトスクリプティング(XSS)とは: 悪意のあるスクリプトを実行させる

フレームワークのデメリット

逆にフレームワークのデメリットは何があるのでしょうか?
それは↓になります。

  • 学習コストが高い

フレームワークは覚えることがけっこう多いです。
そのため使い慣れていない人が学ぶのは少し大変かもしれません。

プロなどは複数のフレームワークを使う人もいるので大変そうです。

これから開発するならフレームワークは必須?

これからWeb開発するならフレームワークは必須?
ということですが、実際どうでしょうか?

今でもフレームワークを使わずにWebアプリを開発している人はいます。
けっこういます。

ですが特に理由がないのであればフレームワークを使った方がいいでしょう。
フレームワークを使えばおもにセキュリティ的に安心できることが増えます。

サイトが改ざんされたとかそういう被害を受けたくない場合はフレームワークを使ってください。
ただしセキュリティを学ぶ必要がないとかそういう意味ではありません。
フレームワークも使い方を間違えるとセキュリティ的に脆弱になることがあります。
ですのでその辺は注意が必要です。

  • フレームワークを過信しすぎるのは危険

フレームワークを使ってみた感想は?

私がフレームワークを使ってみた感想を紹介します。
私はDjangoを仕事で使っていました。

Djangoは覚えることも結構多くて習得するのに数カ月はかかりました。
しかし使い慣れると非常に楽にアプリを開発できるので非常におすすめです。

おわりに

今回はプログラミングのフレームワークとは何なのか?
簡単に解説しました。
フレームワークを使えばアプリ開発もはかどるのでぜひマスターしておきたいところです。

🦝 < サンキュー、フレームワーク

🐭 < アプリ開発がはかどる!