🦁

モジュール、パッケージ、ライブラリ、フレームワークの違い

に公開

モジュール、パッケージ、ライブラリ、フレームワークの違い

モジュール

最小単位のコードのまとまり。小さい部品の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の管理ができる。


参考文献

https://www.youtube.com/watch?v=xPalGYUpZPA
https://kino-code.com/introductory-and-applied17/#:~:text=モジュール、パッケージ、ライブラリの違い,-まず、モジュール、パッケージ&text=パッケージは、複数のモジュール,ライブラリということもあります。

https://qiita.com/bear05/items/f334a0fc5c449914e14e

https://www.pentasecurity.co.jp/pentapro/entry/framework_library#:~:text=フレームワークとライブラリを,ようにする要素です。

https://qiita.com/s_taki/items/1d94e5e9544ebbf32778
https://qiita.com/soraa24926/items/959a15672ef9e9bf561e

https://techplay.jp/column/529

Discussion