🦁
モジュール、パッケージ、ライブラリ、フレームワークの違い
モジュール、パッケージ、ライブラリ、フレームワークの違い
モジュール
最小単位のコードのまとまり。小さい部品の1つ。
関数・クラスをまとめたもの。
Rubyではクラス・メソッドをまとめた仕組み。名前空間など。
パッケージ
複数のモジュールをまとめたもの。プログラムを整理するためのフォルダ的な存在。
Rubyには「パッケージ」という概念はあまり使われず、その役割を Gem が担う。 Python のパッケージのように複数のモジュールをまとめる仕組みではなく、Gem を通じてライブラリを管理する。
ライブラリ
他のプログラムから呼び出されるものの総称。
特定の機能を提供するプログラムの集合。(必要な機能のみ)
便利な機能を集めた道具箱。
開発者が呼び出して使うことができるコードの集まり。
便利な機能を再利用しやすくまとめたもの!
プログラムの特定の機能(例:グラフ描画、データ処理)を簡単に利用できるようにする。
- React(UIライブラリ)
- jQuery(JavaScriptのDOM操作ライブラリ)
フレームワーク
アプリケーションの基本構造を提供するもの。開発者がそのルールに従って開発する。
アプリケーション全体の骨組みを提供し、開発を効率化する。
ライブラリよりも広範な設計や規約を持つ。決められた流れに沿って開発する。
ライブラリは開発者が好きなように使うが、フレームワークはそのルールに従って開発する。(Rails は「Model-View-Controller(MVC)パターン」が前提になっているため、開発者はその流れに従う必要がある。)
- Django(PythonのWebフレームワーク)
- Ruby on Rails(RubyのWebフレームワーク)
- Spring(Javaのフレームワーク)
Gem
Rubyのライブラリ・パッケージの総称。Rubyプログラムで使われる拡張機能。
Rubyではパッケージが使える機能をGemと呼ぶ…というイメージ?
「bundler」は、パッケージ管理ツール
bundlerもgemの一種。bundlerで、複数のgemの依存関係を保ちながらgemの管理ができる。
参考文献
Discussion