初学者が混乱した。Python・PHP・JavaScriptのライブラリについて

ある勉強をしている時にライブラリとフレームワークの違いに混乱してしまい、今回はライブラリについてしっかり理解をしたく今回こちらの記事を作成しました。


# ライブラリとは

プログラム言語において、ある特定の機能を持つプログラムを定型化して、他のプログラムが引用できる状態にしたものを、複数集めてまとめたファイルのことである。


https://www.sophia-it.com/content/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA


#  開発に使用するプログラミング言語ごとに"適切なライブラリは変わる"

今回はPython・PHP・JavaScriptのライブラリのそれぞれの特徴について調べてみました！！


### `Python`のライブラリ
Pythonをインストールすると最初から組み込まれている標準ライブラリと、pipというライブラリ管理ソフトでインストールする外部ライブラリに大きく分かれます。

※「関数やクラス、モジュールなどの他から呼び出せるものを総称して」ライブラリと呼ぶこともあるそうです。



##### ▼標準ライブラリと外部ライブラリの違う点

`標準ライブラリ`は、Pythonに標準で用意されたライブラリのことで、主に乱数の生成が可能なrandomモジュールや、数学の関数を備えたmathモジュールなど、さまざまなモジュールがあり、importで呼び出せるモジュールに加えてimportの必要がない組み込み関数などがあります。

[Python 標準ライブラリ一覧](https://docs.python.org/ja/3/library/index.html)


`外部ライブラリ`は、標準で用意されておらずインストールが必要なライブラリのことです。インストールしてからimportで呼び出す必要があります。
また、外部ライブラリは膨大な数が登録されています。常に新しいライブラリが登録されているので、リストアップするのは難しいですが、登録されている外部ライブラリを調べるにはPyPI（パイピーアイ）のサイトで検索可能です。

https://pypi.org/


初学者の私ではなにから検索したらいいかわからなかったので、調べて使用頻度が高そうなライブラリを発見しましたので三つほど紹介いたします。


## （1）　requests

HTTP 通信ライブラリです。Webサイトの情報取得や画像収集などを簡単に行うことができます。

```:インストール
pip install requests

※外部ライブラリはコマンドプロンプトやターミナルでインストールが可能です。
```


## （2）　Pillow
Pillowは、画像処理を行うためのライブラリです。例えば、画像の拡大や画像の読み込みをすることができます。画像処理の基本的なことを網羅しているライブラリです。

```:インストール
pip install Pillow

※外部ライブラリはコマンドプロンプトやターミナルでインストールが可能です。
```

## （3）　selenium
Seleniumとは、ブラウザを自動的に操作するライブラリです。主にWEBアプリケーションのテストやWEBスクレイピングに利用されます。
```:インストール
pip install selenium

※外部ライブラリはコマンドプロンプトやターミナルでインストールが可能です。
```


### `PHP`のライブラリ

PHPライブラリとは、PHPのコーディングにおいて使用頻度の高い便利機能をまとめたものです。複雑な処理が必要な機能を簡単に呼び出して使用することができます。

また、PHPのライブラリを使用する際には　`『Composer（コンポーザー）』`を使用した方が便利そうです。
インストール方法や使用方法は以下の記事を参考にさせてただきました。

https://qiita.com/sano1202/items/50e5a05227d739302761

https://codelikes.com/use-php-composer/#toc1 

またPHPのライブラリも調べて使用頻度が高そうなライブラリを発見しましたので三つほど紹介いたします。
※以下のインストール方法は全てComposerを使用した際のインストール方法になります。


## （1）　PHPMailer
PHPMailerを利用することでSMTPサーバを利用した送信やメールへ添付ファイルの追加などを行う事が出来ます。

```:インストール
composer require PHPMailer/PHPMailer
```

https://pointsandlines.jp/server-side/php/phpmailer

## （2）　Sentinel
ユーザー認証画面やユーザー登録やログイン認証を導入するのに適したライブラリです。

よく似たライブラリとして「cartalyst/sentry」がありますが、Sentinelの優れた点としては、永続的に追加データを保存できることやログイン情報を複数登録できるなどのメリットがあります。

```:インストール
composer require cartalyst/sentinel "^6.0"
```

https://cartalyst.com/manual/sentinel/2.0#native




## （3）　class.upload.php

「class.upload.php」を使用するとファイルのアップロードや画像操作を簡単に行うことができます。

```:インストール
composer require verot/class.upload.php
```
https://www.verot.net/php_class_upload.htm




### `JavaScript`のライブラリ

JavaScriptライブラリには多く分けて、2つあります。
1つ目は`「クライアントサイド」`2つ目は`「サーバーサイド」`になります。

クライアントサイドは、WEBページ上で動くJavaScriptで、クライアントサイドのライブラリは主にUIに関する機能を提供しています。

サーバーサイドはRubyやPythonと同じサーバーと通信を制御するJavaScriptです。
「サーバーサイドのライブラリ」は主にサーバーと通信を行う機能を提供しているため、UIを操作する機能は使えません。

JavaScriptはライブラリの種類も多いので混乱しないよう注意が必要です。


そして、JavaScriptでのライブラリとフレームワークの違いが難しすぎました、、、。
ある記事に、`フレームワークとライブラリの違いの境界線は曖昧なもので、区別しづらいので総じて「フレームワーク」と呼ぶことがある。`とあり、ようやく納得、、、。

初学者の私がよく耳にする以下の2つは→のような認識でよさそうです。

React　→ UI(ユーザーインターフェイス)に特化したライブラリ
Node.js　　→　サーバー通信専用のライブラリ

ただReactがフレームワーク！っていう意見もあり、プチパニック。
ですが、今回はライブラリの大まかな違いを見たかったので今回の記事では深掘りしなようにします。

https://ja.reactjs.org/

https://nodejs.org/ja/


# さいごに

ライブラリとフレームワークで混乱してましたが少しスッキリすることができました。
まだまだライブラリを使用しての開発経験が少ないので、これからの記事では実際に使用した時の手順や感想などが書けると良いかと思いました。
最後まで読んでいただいありがとうございました。