package managerとは?
名前の通りパッケージを管理するもの。
そもそも、パッケージって?
パッケージとは?
ほかのプログラムなどから使用される目的で作成されたプログラム(モジュール)をまとめたもの。
package managerを使用する利点
- 依存関係:Aを動作させるにはBが必要。Bを動作させるにはAが必要みたいな
- 競合関係:AとBを動作させるには、Cが必要
他の人が作った便利なプログラムを簡単に自分のプログラムで使うことができるために、いろいろやってくれているツールなんすね。
パッケージってどこに?
パッケージマネージャが機能するには、どこからパッケージをインストールするかを知る必要があり、パッケージレジストリーの形で提供されます。
npmであれば、 npmjs.comにあります。
役割となぜそれを使用するのか?
手動でダウンロードして使用することも可能なんですが、
- すべての正しいパッケージファイルの検索
- 脆弱性チェック
- ダウンロード
- 依存関係チェック
などなどいろんなことをしないといけない。
めちゃくちゃ大変ですよね。
実装について
Tiny Package Managerm
というgithubのリポジトリがあったので、これを読んで理解していきたいです。
大枠の流れ
- コマンドラインからインストールするものを取得
- その情報を取得
- 一番上の階層をインストール
- 衝突しているパッケージのインストール
- package.jsonを更新する
index.tsを見た感じ、こんなことを大体していました。
おわり
来週はもっと詳細な部分を読んで、理解していきたいです。
それから、rustとかjavaとか学びたい言語でも似たようなものを実装できれば、いいっすね。
参考サイト