はじめに
社内にて営業や人事といった技術以外の部署の人間を巻き込んで、
リテラシー向上のためのIT講習会を行いました。
その際の事前質問で、フレームワークについて教えて欲しいと言われたので、その時の内容です。
眠らせておくのも勿体無かったのでQiitaにも載せておきたいと思います。
※この記事には、私の独断と偏見が結構含まれています。
資料
30分という枠の中で、Zoomの画面共有で資料のスライドを進めながら質問や解説を入れていたので、
少し説明が足りない&分かりづらいところもあるかもしれません。
フレームワークってなに?
そもそもフレームワークとは?
フレームワーク(framework)とは、日本語で「骨組み」「枠組み」と訳され、特定の規則・構造・アイディア・信念・思想の集合のことである。
参考文献:
つまりフレームワークとは、土台となる「テンプレート」のことである。
ちなみにシステム開発において、ソフトウェアフレームワークやアプリケーションフレームワークとも呼ばれる。
フレームワークを使うとどうなるの?
システムをフルスクラッチで(ゼロから)作ると、
当然ながらとても大変で時間も掛かる。
フレームワークを使えば、あらかじめシステム開発に必要な汎用的な機能が用意されているので、それらを利用するだけで、システムの枠組みを簡単に組み上げることができる。
似たようなものにライブラリやモジュールが挙げられるが、ライブラリは開発者が記述したコードから定義された機能を呼び出すのに対して、フレームワークはフレームワーク側のコードから開発者が記述した機能を呼び出すという違いがある。
これを「制御の反転」と呼ぶ。
フレームワークのメリット・デメリット
メリット
・よく使う機能が用意されており、それを呼び出すだけで使えるので開発スピードが早い。
・フレームワークのルールにしたがって開発するので、チーム開発においても中身の統一化ができる。(重要)
・ルール化されているので、比較的メンテナンスしやすくなる。
デメリット
・使い方を覚えなければならないので、学習コストが掛かる
・フレームワークで出来ない処理があった場合に、フレームワークのルールが弊害になり、普通に実装するよりも面倒になることがある。
・未経験でいきなりフレームワークから入ると、中身がどう動いているか分からないままになりかねない。※SQL等。
Q.フレームワークだけしか知らないと、どうなりますか?
A.カレー屋さん(プロ)を目指す場合、カレーのルーでしか作り方を知らないのだと話にならないと思います。
必要に応じてスパイスを組み合わせて、カレーを作れるようになることが大事だと思います。
言語別のフレームワークを一部紹介
・Ruby
Ruby on Rails
・JavaScript
Vue.js, React
・TypeScript
Angular
・PHP
Laravel, CakePHP, Symfony
・Python
Flask, Django
・Java
Spring Framework, Play Framework
などなど…
Q.フレームワークと言語って、全部同じ人が作っているの?
A.そんなことはありません。A社が出した言語にB社がフレームワークを出すこともあります。
例えばRubyは、日本のまつもとゆきひろ氏により生み出されましたが、RubyのフレームワークであるRuby on RailsはデンマークのDavid Heinemeier Hansson氏により作られました。
まとめ
フレームワークは、あくまでテンプレートなので上手く扱えれば、非常に便利なものです。
しかしちょっとした小規模のシステム開発や独特な処理を多く実装する開発の場合は、フレームワークが逆に煩わしいものになることもあります。
導入するしないは、そこを上手く見極めて行う事が大切でしょう。
おわり
第一回目
第二回目
第三回目