search
LoginSignup
0
Help us understand the problem. What are the problem?

posted at

updated at

【初心者向け🔰】パッケージマネージャとは

概要

プログラミング初心者向けに、「パッケージマネージャ(パッケージ管理システム)」についてのまとめ。
また、「ライブラリ」「パッケージ」「モジュール」などの違いについても、ごく軽く触れる。

ざっくりと説明するため、厳密には語弊がある表現をするかもしれません。

パッケージマネージャとは

「パッケージマネージャ(パッケージ管理システム)」とは、簡単に言うと、

  • インストールできるプログラムを検索する
  • プログラムを簡単にインストールする/アンインストールする
  • 「今、PCに何インストールしてたっけ?」を一覧ですぐに確認できる

などの、プログラムを簡単・便利に管理するツールのこと。
これらの 管理 =マネジメントを、「 パッケージ (または、ライブラリ)」という単位で行うので、 パッケージマネージャ と呼ぶ。
※「パッケージ」という言葉の説明は、後述する

「ソフトのインストール」と聞いたら、通常はWebやアプリストアで検索をして導入するイメージだが、パッケージマネージャを使う場合は、ターミナル等を使って、コマンド操作を利用する。
パッケージマネージャとは_03.png

世の中には色んなパッケージマネージャが存在し、自分が開発で使う言語やOSに合わせて、専用のものを利用する。
パッケージマネージャとは_02_.png

インストール/アンインストールが簡単な理由

通常インストールする場合、
Webサイトからインストーラをダウンロード👉ダブルクリックしてインストール
という手順で、PCのどこかにソフトが導入されるが、インストールするソフトによって手順ややり方が変わることもあり、インストール場所もソフトでバラバラになる可能性がある。
しかし、パッケージマネージャなら、これがコマンド一行を叩くだけで完了する(場合によっては、更に PATH を通す作業が発生)し、格納場所も1箇所に集約される。

また、アンインストール時も、ソフトによってアンインストール方法が違うが、パッケージマネージャなら共通コマンドで名前を変えるだけで一発で削除できる。

パッケージ

パッケージは、色んな機能や処理がまとまったプログラムのかたまり。
おもちゃやお菓子が袋に詰まったものを「パッケージ商品」と言うように、処理がたくさん詰まって1つの便利な商品となったプログラムみたいなイメージ。

こういったツールで管理される大体のパッケージには、実際に利用するプログラムの他に、「パッケージ名」「開発者名(個人・団体)」「依存関係」などの情報も一緒に含まれている(そういう概要情報がまとまったファイルに記載されている)。

他にも、「ライブラリ」「モジュール」という横文字が出てくることがあるが、要するに、 プログラムのかたまりに対する呼び方 に種類があると思えば、今は一旦OK。具体的には下記のようなイメージ
パッケージとは.png

ライブラリ > パッケージ > モジュール という関係になっている。
各言語や技術における、これらの言葉の定義は、また別の機会に触れていく。

「依存関係」って何?

あるパッケージ(or ライブラリ)が動作するために必要な、中で動く他の細かいソフトウェアのこと。
つまり、パッケージの中のプログラムは 100% オリジナルではないことが多く、既存のプログラムや技術を色々と組み合わせながら動いているケースがほとんど。

それら他のソフトウェアも一緒にダウンロードしたり、バージョンを勝手に更新してくれたりして、パッケージ全体として正常に動くように解決することを 「依存関係の解決」 と言う。
「依存関係の解決」をしてくれる所も、パッケージマネージャの大きな特徴の1つ。

大体は Webサイトがあって、パッケージ検索する画面が用意されている

パッケージマネージャ自体は、コンピュータ上でターミナルなどを使ってコマンド打って使用するのがほとんどだが、多くはWebサイトも用意されていて、主にパッケージ検索をする画面などが用意されている。

パッケージ検索は、コマンドでも可能だが、Webの方が見やすいので使われることも多い。

開発で使われる代表的なパッケージマネージャ

パッケージマネージャ 言語/OS 概要
Homebrew macOS
Linux
コンピピュータにインストールするソフトを管理するパッケージマネージャ
npm JavaScript 「Node.js」というソフトをインストールすると同時に導入されるパッケージマネージャ
他に yarn なども人気
pip Python Python の標準的なパッケージマネージャ
Condaと違いマシン単位で依存関係を管理する
Conda Python 科学計算のための Python プラットフォーム「Anaconda」の一部として提供されている Python パッケージマネージャ
Composer PHP PHP の標準的なパッケージマネージャ
PEAR PHP 以前まで PHP でよく利用されていたライブラリ提供サービス。PHP 7.4 から PEAR はデフォルトツールではなくなり、現在は Composer の方が標準的な立場になっている
GoMod Go Go言語用のパッケージマネージャで、Goのプログラムとライブラリ(mod)の配布用標準フォーマットを提供
RubyGems Ruby Ruby 言語用のパッケージマネージャであり、Ruby のプログラムとライブラリ(gem)の配布用標準フォーマットを提供
Bundler Ruby こちらも Ruby パッケージマネージャだが、RubyGems では解決できない gem 同士の依存関係を解決したりするので、こっちがよく使われる。
Bundler自身は RubyGems で導入し、使用するには「Gemfile」(+Gemfile.lock)というファイルを用意する必要がある
Pub Dart Dart言語製ソフトウェアプロジェクトの CUI のビルドツールであり、パッケージマネージャの機能をも持つ
Pub の依存ライブラリのダウンロード先は Pub.dev
Cargo Rust Rust 言語製ソフトウェアプロジェクト(crate)のCUIのビルドツールであり、パッケージマネージャの機能をも持つ
Cargo の依存ライブラリのダウンロード先は crates.io
CocoaPods Objective-C
Swift
Objective-Cランタイムで動作するパッケージマネージャ
RubyGems に影響を受けている

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0
Help us understand the problem. What are the problem?