こんにちは、toraguitarです。
フロントエンジニア(以下、FE)として働いています。
今回は「パッケージマネージャー」についてまとめていきます。
この記事の目的
- 筆者が 「言葉は知っているけど説明できない」というものをピックアップする
- 調べなくても概要を説明できる、具体例を1~2つ出せるレベルに引き上げる
- 歴史的背景など踏み込んだ説明は省く
言葉の意味
まずは言葉の意味を押さえます。
パッケージマネージャーとは、以下のように説明をされています。
パッケージマネージャーとはその名の通りパッケージを管理するソフトウェアやシステムのことです。一言でパッケージマネージャーと言っても色々ありますが、大まかには以下の二種類に分けられます。
- OSレベルの機能やソフトウェアパッケージを管理するもの
- ソフトウェア開発時に使用する機能部品や実行部品を管理するもの
参考記事: パッケージマネージャーとは?わかりやすい仕組みの解説
ここで、FEが業務で耳にするパッケージマネージャーは主に、
「ソフトウェア開発時に使用する機能部品や実行部品を管理するもの」
を指していることが多いようです。
本記事ではこちらを掘り下げ、説明をしていきます。
パッケージマネージャーの具体例
「ソフトウェア開発時に使用する機能部品や実行部品を管理するもの」と説明をされても、あまりピンと来ません。
ここではイメージがつきやすいよう、具体例を挙げていきます。
npm
FEとして仕事をしていて一番目にしているものですね。
「Node package Manager」の略で、JavaScriptで幅広く使われているパッケージマネージャーです。
その名の通り、Node.jsにおいてデフォルトのパッケージマネージャーとなっています。
参考記事: 【JavaScriptの応用】パッケージマネージャー -Npm
yarn
npmの後継として登場したパッケージマネージャーです。
npmと互換性があり、ほぼ同じ感覚で使用することができます。
他にもありますが、この記事では割愛します。
パッケージマネージャーの役割・機能
先程上げた具体例のうち、主にnpmを例に挙げつつ、
パッケージマネージャーが持つ役割、機能についてまとめていきます。
パッケージの取得・更新・削除
インターネット上には、アプリケーションの開発に役立つパッケージが数多く公開されています。
パッケージは商用として公開されているもの、OSS(オープンソースソフトウェア)として公開されているものがあります。
パッケージマネージャーは、その開発に必要なパッケージを取得することができます。
パッケージをインストールしたいディレクトリにて、ターミナルで以下のように入力します。
npm install {パッケージ名}
もしくは
npm i {パッケージ名}
パッケージのアンインストールをする場合、以下のように入力します。
npm uninstall {パッケージ名}
パッケージの更新をする場合、以下のように入力します。
npm update {パッケージ名}
パッケージの管理
インストールされたパッケージは、設定ファイルで情報が管理されています。
npmの場合、package.jsonが設定ファイルに該当します。
例) React+TypeScript+microCMSでアプリケーションを作成した場合
"dependencies": {
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"@types/jest": "^27.5.2",
"@types/node": "^16.18.68",
"@types/react": "^18.2.45",
"@types/react-dom": "^18.2.18",
"microcms-js-sdk": "^3.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"typescript": "^4.9.5",
"web-vitals": "^2.1.4"
}
新たにパッケージをインストールした場合、package.jsonにパッケージの情報が記録されます。
パッケージの依存関係の解決
パッケージの中には、あるパッケージの存在を前提としたパッケージが存在します。
パッケージマネージャーはそれらの依存関係を管理しており、必要に応じてインストールやバージョンアップなどを行います。
npmの場合、npm install
コマンドを実行すると自動でバージョンアップなどを行ってくれます。
実際はそれだけで依存関係を解決できないこともしばしばです。
ターミナルにエラーメッセージや依存関係解決のために取得したパッケージ名などが表示されるため、解決しない場合はそこからさらに掘り下げて原因を探していきます。
まとめ
- パッケージマネージャーとは、web開発に役立つパッケージを管理するためのもの
- パッケージマネージャーには以下の機能がある
- パッケージのインストール、アンインストール、更新
- パッケージの管理
- パッケージ同士の依存関係の解決