logo header
logo header
logo header
logo header
  • 2015.09.29
  • 技術ブログ開発

フレームワークについて

こんにちは、農道JSです。

現在のアプリケーション開発でフレームワークは良く使われていますので、
フレームワークについて少しお話をしたいと思います。

■ フレームワークとは?
thinking
フレームワーク(厳密に言うと、「ソフトウェアフレームワーク」)とは、一般的な機能を提供するソフトウェアです。
それだけだと「ライブラリ」と変わらないのですが、一般的に「フレームワーク」と「ライブラリ」の違いは:

● プログラム全体の制御構造を管理する

● 拡張できる

拡張できるだけではなく、拡張すべきです。そして、拡張する事によって、
一般的な機能やコードの上で自分のやりたい事を乗せてアプリケーションを作ります。

■ フレームワークを使うメリットは?
box_run
ケースによりますが、一般的にいうと、主なメリットは:

● 開発期間の省略:あなたの作ろうとしている機能は既にフレームワークの中にあるので、作らなくても良い

● バグが少なくなる:フレームワークの機能はあなたの作ろうとしていた物と違って、世界中に使われている物である為、バグがあれば既に知られているはず

簡単に言うと、車輪の再発明の必要がなく、既に使われている問題なく動いている使いたい機能をゼロに近いコストにもらうのはとても大きなメリットです。

■ フレームワークを使うデメリットは?
box_fall
メリットと同じくケースによりますが、色々あります:

● 柔軟性がないところもある:そのフレームワークで(とんでもなく複雑な事をやらない限り)できない事もある

● フレームワークの不具合:フレームワーク自体の不具合があれば、自分でフレームワークを修正するという大変な作業を行うのか、次のバージョンで修正されることを祈りながら待つしかない

● フレームワークを使う程、開発者はフレームワークのやってくれる事を知らない状態になる

● 適切なフレームワークを選択するのは難しい:自分のやりたい事はこのフレームワークで実現できるかどうか、ライセンス的に問題ないのか、フレームワークの現状(不具合、サポートは停止になったかどうか、等)はどうなっているを調べる為に時間もかかる

● フレームワークのバージョンアップ対応の作業が発生するリスクがある

● オーバヘッド:フレームワークを使う事によって、あなたのアプリケーションで必要ないのコードも実行されている可能性が高いので、ゼロから作るのはコスト的に高いが最大のパフォーマンスを出せる

■ 結論
teacher
上記のメリットとデメリットはどれ程大きい・そもそもあるかどうかは、あなたの作りたいアプリケーションとあなたの使いたいフレームワークによります。

● 私は何をやりたいですか?

● そのニーズに沿ったフレームワークはありますか?

● そのフレームワークの評価はどうですか?どこで使われていますか?まだ開発中ですか?知られている不具合やデメリットありますか?

● フレームワークを使わなかったらどうなりそうですか?

残念ながら世の中で何も考えずにフレームワークを使う人がいるからVanilla JSのようなギャグフレームワークがあるので、上記のような事を考えた上で、フレームワークを使うと判断すると、コストを省略できる可能性も高いですが、フレームワークと自分のやりたい事との兼ね合いを考えないと逆効果になるリスクもあります。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!