XAMPPに同梱されてるソフトを調べてみた

<h2>この記事の意図

　プログラミング初心者が最初に迎える試練は環境構築。手っ取り早く、この難所を突破するためにXAMPPを候補に入れる。でもパソコンに何でもかんでもソフトを入れるのは抵抗がある。

　そこでXAMPPにパッケージされているソフトウェアを調べて、安心してダウンロードできるようにしたい。もし必要のないソフトが多ければ、XAMPPを入れずに個々に入れた方が後々苦労せず済むはずだし、XAMPPで入ったソフトと同じ機能が欲しくなった時、新しいソフトを調べてダウンロードする手間を省けるかもしれない。

　XAMPPのメインのソフトであるApache、MariaDB、SQLite、phpMyadmin、OpenSSLやPHP、Perlは他の詳しい記事を調べてください。なんかよくわからないソフトだけを調べました。

<h2>調べるバージョン

![スクリーンショット 2021-01-28 3.20.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951693/074af0a5-eacb-4893-2990-a6b41dff4cf2.png)

<h2>調べたソフト一覧

Sablotron：XMLプロセッサ。XML形式の中身を解析して、中の情報を使いやすくする。エディタで書いたコードをメモ帳に貼り付けると読みにくくなる。を防止するとか。Sablotron自体の情報はほとんどない。

FreeType：PC内にインストールされているフォントファイルを表示するためのライブラリ。テキストのレイアウトとか、フォントの追加、編集はできない。フォント関連の操作をサポートしている。

libpng：png規格の画像を別のデータに変換したり、元に戻したりするライブラリ。

gdbm：dbmとはDatabase Managerの略。MariaDB、MySQL、SQLiteとかはdbms(Database Management System)でデータベース管理ソフトと言うらしい。dbmはそれより単純で、通信し合うのではなく、一方的にデータを送ることに長けている。

zlib：データの圧縮、伸張を行うための可逆圧縮アルゴリズムが入っている。zipなどの圧縮、解凍をするためのライブラリ。画像ファイルのpngはDeflateという可逆圧縮アルゴリズムが不可欠で、今でも多くのソフトで使われている。

expat：C言語用のXMLプロセッサ。プロセッサは一度読み込んでから動くDOM型とファイルを先頭から読み込んでその都度処理するストリーム型があって、expatはストリーム型。

libxml2：C++、C#、Ruby、PHP、Pythonなどでは標準で定義された関数を使う事ができるXMLプロセッサ。

Ming：C++、Python、PHPに対応するSWF(Flashのフォーマット)に出力するためのライブラリ。元々はC言語用だが、他の言語でも使えるようにした(ラッパーした)ライブラリでもある。Mingだと中国の「明」が出るので、検索するときは「Ming SWF」とかつけるとヒットしやすい。

Webalizer：webアクセス解析をするソフト。年月月日の国別の閲覧数や訪問者の入り口になったページをみたり、どのブラウザを見たのか等をまとめてくれる。google Analyticsみたいなもの

pdf class：PHPを使ってpdfを動的に生成する事ができるソフト。PHP4を最後に更新されてない。同じ機能のソフトとしてTCPDFがある。何故か重複して2回what's included?に記載されている。

ncurses：これを使うと、ターミナルとかCUI上でテキストを使ったユーザーインターフェイスが作れる。簡単に言うとvimを使ってミニゲームを作れるみたいな。初期のcRPGとか、つくれそうだ。

mod_Perl：ApacheHTTPサーバに入れる事で、Perl言語でwebサーバを記述、動的に構成できる。CGIに関わっている。

FreeTDS：webサーバにDBに格納されているデータを送信したり、サーバ側からDBのデータへアクセスしたりする事ができる。

gettext：ソフトウェアの国際化、地域化に対応させるために用いられる。これを使えば、英語で返信されたチャットを日本語に表示し直したり、標準語で書かれたページを関西弁に変えたりできるかもしれない。

IMAP C-Client：IMAPとはInternet Message Access Protocolの略。対義語?はPOP(Post Office Protocol)で両方ともメール設定で使われる。前者はサーバにメールを保管して管理する。後者は転送した先でメール管理する。このソフトはクライアント側(メールサーバ)を構築する時に使われる。

OpenLDAP：LDAPはLightweight Directory Access Protocolの略。ディレクトリサービスへアクセスするために用いられる。主な使用用途は、ログイン認証、アカウント管理とか。複数人が一つのアカウントで入れるようにするとか、逆に特定の人だけが閲覧できます、といったシステムを管理できる。

mcrypt：PHPで使われる暗号化、復号化するソフト。PHP7.1までは使われていたが、それ以降のverでは非推奨。PHPはその代替としてOpenSSLとsodiumを提示している。エニグマ暗号に近いアルゴリズムを使っているらしい。

mhash：hash値、hash関数は暗号化で用いられる。パスワードを安全に管理するために暗号化する時に使われ、mhashはこのhash値を計算するためのソフトである。

cURL：HTTP、HTTPSや上に挙げたLDAP、IMAPといった通信規格をクライアント側に通信するライブラリとcurlで知られるプログラミング言語、コマンドラインツールを提供している。xamppで一番求められている機能、コードのアップロードに使う。

libxslt：libxml2のライブラリを拡張させてXSLTファイルを使えるようにするライブラリ。XSLはExtensible Stylesheet Languageの略でTはTransformationの意味。XMLファイルを他の形式に変換可能な形式に変え、また変換したファイルをXMLファイルとして出力できるようにする。

libapreq：ApacheHTTPサーバを介してクライアント要求データをやり取りするためのライブラリ。HTTPクッキー、クエリ、POSTデータの解析を行う事ができる。

FPDF：PHPデータからPDFファイルを生成するためのライブラリ。pdf classやTCPDFと同じ。

ICU4C：International Components for Unicodeの略。ソフトウェアの国際化、地域化に対応するために用いられる。gettextとは違って、コード内で生じる言語による障害を取り払うために使うようだ。

APR：Apache Portable Runtimeの略。Apache HTTPサーバを使う際に、OSやソフトウェアの環境の違いを小さくする。このOSにしかない機能を他のOSで使えるように調節でき、クロスプラットフォームなソフトウェアを作る事ができる。

APR-util：APRを扱うためのインターフェースを提供している。

GD：GIF Draw或いはGraphics Drawの略。動的に動く画像GIFを作る事ができる。ANSI CやC、PHP、Perlに対応している。

ProFTPD：FTPサーバで使われる常駐プログラム(デーモン)。FTP接続をするために待機して、接続する時に応対する。デーモンは悪魔(demon)ではなく、その語源であるギリシャ語の守護神を意味するdaemonの綴り。

<h2>まとめ

　XAMPPに同梱するソフトウェアやライブラリ、XAMPPは時代とともに、必要に感じた便利機能を組み込んで、より使いやすくする努力が続けられた。一方で、同じ機能でバージョンが遅れているようなソフトをまだ同梱し続けている事もわかった。XAMPPを調べることは、Apacheとその周辺の変遷、歴史を知る事ができ、プログラミング初心者にとって有用だと思います。

　お役立ちライブラリも多く、調べている間も、「ncurses使ってゲームブック作りたいな」とか、「チャット中に標準語を関西弁に変える機能いいな」とか、「ログイン認証にLDAPってどうだろう」、「エニグマ... ...だと」など色々アイデアが浮かんできました。

　噛み砕いて理解しようとしましたが、誤解している機能とかはあると思います。優しく指摘していただけるとありがたいです。

　最後に、私は不安があってXAMPPを調べましたが、調べる作業だけで１２時間くらい掛かりました。理解するには１０倍、１００倍は時間がかかるでしょうし、それに時間を取られてはやるべき事が疎かになりますね。大人しく、XAMPPダウンロードしに行きます。