なんとなくいつも利用してるけどフレームワークを使うメリット・デメリットって何があるんだろ?
フレームワークとライブラリって何が違うんだろ?
こんにちはJun(@JunNomad)です。
プログラミングで開発を行う際、ほとんどの方は多かれ少なかれフレームワークを利用しているかと思います。
いつも何気なく利用しているフレームワークですが、実際にどういったもので、メリット・デメリットは何なのかを把握出来ているでしょうか。
今回はフレームワークの基本的な情報からメリット・デメリット、よく混合して考えられるライブラリとの違いについてご紹介していきたいと思います。
フレームワークとは
フレームワークとは、人気プログラミング言語には必ずと言って良いほど用意されている「ドキュメント」や「テスト済みのコード」をパッケージ化して、プログラマーが利用できるようにしたソフトウェアを指します。
なぜフレームワークを利用する?
フレームワークを利用する理由としては、同じような目的のシステムを開発する際にコードを再利用したり、頻繁に起こる問題を回避するためです。
システム全体に起こる低レベルの問題をフレームワークが解決し、開発者はビジネス上の問題やクライアント固有の問題にフォーカスすることが可能となります。
フレームワークを使うメリット・デメリット
フレームワークを利用することはメリットばかりでなく、デメリットも少なからず存在します。
メリット・デメリットをしっかりと理解した上で利用することを意識しましょう。
メリット
フレームワークを利用するメリットしては一言で表すと「開発効率が大幅に向上する」ことです。
- プロトタイプやシステム開発スピードの向上
- プロジェクトの基本構造としての役割
- 世界中の企業や個人が利用している
- フレームワークのバグ修正やセキュリティアップデートは製作者がカバー
- 透明化された高度な設計
デメリット
フレームワークを利用するデメリットを一言で表すと「自分で制御出来ない部分が生まれる」ことです。
- 適切なフレームワークを利用しないと開発効率が下がる
- アプリ自体が重たくなる
- 一度開発されたシステムはフレームワークの変更が難しい
- フレームワークに見つかったバグが自身のシステムにも影響する
フレームワークとライブラリとの違いとは
よくフレームワークと混同されるライブラリとの違いについてもしっかりと確認しておきましょう。
フレームワークの役割
フレームワークの役割としては、システム全体の構造を透明化し、システムのルールとなるようなソフトウェアを指します。
つまり開発者はルールに沿った上で、自分自身が開発したいシステムに拡張していくといったイメージです。
ライブラリの役割
対してライブラリの役割は、特定の部分における解決策を提供するためのソフトウェアとなります。
例えば円周率を計算することに特化したライブラリや日本語訳を行うことに特化したライブラリなど様々です。
IoCの考え方
フレームワークとライブラリの考え方には「Inversion of Control」と呼ばれる概念が存在します。
「フレームワーク」がテンプレートやルールを「開発者」に提供し、「開発者」が拡張コードを実装する中で、必要な際に「ライブラリ」を呼び出し利用するといった構造です。
フレームワークを選択する際に意識すべきポイント
フレームワークは多くの方が、企業や案件で既に決まったものを利用するだけのものといった認識があるかもしれませんが、ご自身がフレームワークを選定する側になった場合を考慮して、フレームワークを選択する際に意識すべきポイントを確認しておきましょう。
デファクトスタンダードはある程度決まっている
システム開発はある程度カテゴリ毎に利用すべきフレームワークである「デファクトスタンダード」が決まっています。
公式ドキュメントなどにもどういったシステムでの利用を想定して作られているのか記述されていることも多いため、まずは公式ドキュメントと作りたいシステムのデファクトスタンダードを調べてから、適切なフレームワークを選択するようにしましょう。
無駄に機能の多いものを使えばよいわけではない
フレームワークは大規模開発用のものから軽量フレームワークまで様々な種類のソフトウェアが提供されています。
大は小を兼ねるとも言いますが、フレームワークに関してはある程度見極めて利用した方が良いでしょう。
フレームワークのメリット・デメリットでも紹介したとおり、フレームワークは多機能なものほどアプリ自体が重くなってしまう可能性も高まります。
これから開発するシステムにどのような機能が必要なのかを洗い出し、最低限カバーされているフレームワークを選定することで、アプリケーション自体のパフォーマンス向上にも繋がります。
さいごに:フレームワークを活用して開発効率を向上させよう
本記事では、フレームワークに関する基本的な情報からメリット・デメリット、ライブラリとの違いに到るまでご紹介してきました。
フレームワークはプログラマーとしては必ず利用することになる高性能なソフトウェアです。
フレームワークそれぞれの特徴をしっかりと把握して、ご自身の開発に最適なフレームワークを選択して開発効率の大幅アップに活用しましょう。