未分類

パッケージ

投稿日:

今日は普段使っているパッケージについて学びました。いつもパッケージ管理ソフトのyarnを使ってインストールやら実行やらを行っているのですが、それが内部でどのような動きをしているのかなんて考えたこともありませんでした。詰まるところyarnも所詮コマンドなので順を追っていけば必ずやっていることがわかるのですが、実行速度が早すぎて理解しづらいだけなのです。コンピュータは電子の動きでオンとオフを表現できてしまうのでそのオンオフで膨大な数の文字列を使った命令でも秒で終わらせてしまう事ができるのです。これについていくことは不可能なので何をしているのかゆっくりでもいいので理解する事が大事だと思います。

yarn

yarnはfacebookが開発したパッケージ管理ソフトです。これはnpmと互換性があり同じように使用できるのですが、npmに対して大きな優位点があります。それはyarnはデフォルトでyarn.lockというパッケージのバージョンを管理するファイルを作成するという点と、プログラムを並列で読み込む事ができるという点です。特に後者の並列で読み込む事ができるという点はパッケージを読み込む速度が早くなるので大きな優位点です。yarn installでpackage.jsonに記載された依存オブジェクトのみを順番にインストールしていきます。

パッケージとは

プロジェクトそのものを指します。多くのプロジェクトはこのパッケージを組み合わせて作られており、その組み合わせるパッケージもまた膨大な数のパッケージを組み合わせて作られています。なので自分が作成している簡単なプロジェクトでも400MBを超える量のコードになっており、4億文字の文字列で作られていることになるのです。

npmとは

yarnと同じパッケージを管理するプログラムです。これを導入することによってパッケージを手動で管理する必要がなくなり、簡単なコマンドを打つだけで導入したパッケージに記述してあるプログラムを実行する事ができます。このパッケージ管理システムのおかげで便利なアプリケーションができているのです。npmにとってのパッケージはpackage.jsonファイルの親ディレクトリに含まれるファイル郡のことを指し、これらのファイルの中でnpmのコマンドを使うことによってパッケージの中のプログラムを実行して違うファイルでそのプログラムを実行して簡単にプログラムを組む事ができるようになります。npmではnpm installコマンドを実行して実行したディレクトリにpackage-lock.jsonがない場合にはpackage.jsonに記述してあるパッケージをダウンロードし、package-lock.jsonファイルがある場合にはその中に書いてあるパッケージをダウンロードします。プロジェクトを後悔する際にはパッケージをダウンロードした状態でgithubにコードをあげることはなく、そのパッケージのバージョン情報を記述したファイル郡のみをgithub上に上げ、そのアプリケーションを実行する際にnpm installなりyarn installでパッケージをダウンロードするようにします。なぜこのようにするのかというと、そのほうがファイルのサイズが小さくて済むという点と、もしバージョン違いなどでうまく動かなくなってしまった場合にそのバージョンを記述しているファイルのみを変更するだけで済むからです。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

プログラミング(就活編)

 最近将来のことで悩んでいます。なので今日はプログラミングではなく今考えていることを書きたいと思います。まず、なぜ働かないといけないのか。この答えとしては個人的な考えで述べると、生活できるのであれば働 …

no image

1日休み

 今日は1日休みだったのでダラダラしていました。linuxを勉強したのでそのことを書きます。コンピュータは大きくソフトウェアとハードウェアに大別することができて、ソフトウェアをさらに分けると基本ソフト …

no image

コンピュータは0と1で動いている

 今日もコンピュータの仕組みについての本を読みました。コンピュータは入力・処理・出力の順番に動くのですが、他の機械と違ってなぜ複雑なことができるのでしょうか。それはコンピュータがハードウェアとソフトウ …

no image

コツコツと

今日も汎用コンポーネントの作成に一日費やしてしまいました。ただ昨日よりも確実に書けるようになっているので地道にいくしかないと思っています。ただコードを書くだけではなく、スラックとかで他の社員の方達がど …

no image

typescriptの配列

今日は午前中ずっとコンポーネントへどのように配列として値を渡すのかを考えていました。配列で値を渡さなくてもデータを渡すことができるのですが、記述が助長になり、可読性が低くなってしまいます。可読性が低く …

PREV
typescript
NEXT
初担当