CakeFest 2024: The Official CakePHP Conference

用語説明

このセクションでは、PHP アプリケーションの開発で MySQL データベースを扱う ときの選択肢について説明します。

API って何?

API は Application Programming Interface の略で、 何らかのタスクを実行するためにアプリケーションから呼び出す必要のある クラスやメソッド、関数、変数などを定義したものです。 データベースとの通信を必要とする PHP アプリケーションが使うための API は、通常は PHP の拡張モジュールとして公開されています。

API は手続き型にすることもできるし、オブジェクト指向型にすることもできます。 手続き型の API の場合は何かの処理を実行するための関数を呼ぶことになり、 オブジェクト指向型の API の場合はクラスのインスタンスを作ってそのメソッドを呼ぶことになります。 通常は、後者の方法をおすすめします。後者のほうがよりモダンであり、 きっちりとしたコードを書けるからです。

MySQL サーバーとの接続が必要な PHP アプリケーションを書く場合に 使える API はいくつかあって、その中から選べます。 このドキュメントでは、どんな API が使えてどれを選ぶのが最適なのかを解説します。

コネクタとは

MySQL のドキュメントで使われている コネクタ という用語は、 何かのアプリケーションから MySQL データベースサーバーに接続するためのソフトウェアのことを指します。 MySQL はさまざまな言語用のコネクタを提供しており、PHP もその中に含まれます。

PHP のアプリケーションでデータベースサーバーとの通信が必要になったときには、 データベースサーバーへの接続やデータベースへの問い合わせなどの関数を呼ぶ PHP コードを書くことになるでしょう。つまり、PHP アプリケーションから使える API を提供するソフトウェアが必要になるということです。 そのソフトウェアは、アプリケーションとデータベースサーバーの間の通信も処理しないといけません。 おそらくは中間ライブラリも利用することになるでしょう。 このソフトウェアのことを一般的にコネクタと呼びます。というのも、このソフトウェアのおかげで アプリケーションがデータベースサーバーに 接続 (connect) できるようになるからです。

ドライバとは

ドライバとは、特定のデータベースサーバーとの通信をするために作られたソフトウェアのことです。 ドライバはライブラリと呼ばれることもあり、 MySQL Client Library や MySQL Native Driver というように使われます。 これらのライブラリが実装するのは低レベルのプロトコルで、 これを使って MySQL データベースサーバーと通信します。

例を挙げると、データベース抽象化レイヤーの PHP Data Objects (PDO) は各データベース専用のドライバの中からひとつを選んで使います。 数あるドライバの中のひとつに PDO MYSQL ドライバがあり、これが MySQL サーバーとのインターフェイスとなります。

人によっては、コネクタとドライバを混同して使うこともあって、混乱の元となります。 MySQL 関連のドキュメントでは、 コネクタ という用語はデータベース固有の機能を提供するソフトウェアという意味で 予約されています。

拡張モジュールとは

PHP のドキュメントを読んでいると、 拡張モジュール という用語がよく出てきます。 PHP のコードには、コア機能とは別に オプションの拡張モジュールが用意されています。 PHP で使える MySQL 関連の拡張モジュールには mysqli があり、 PHP の拡張モジュール用フレームワークを使って実装されています。

拡張モジュールは一般的に PHP プログラマー向けの API を公開しており、 その機能をプログラムから使えるようになっています。 しかし、PHP 拡張モジュールフレームワークを使って書かれた拡張モジュールの中には、 PHP プログラマー向けの API を公開していないものもあります。

たとえば PDO MySQL ドライバは PHP の拡張モジュールですが、 それ自体は PHP プログラマー向けの API を公開していません。 さらに上位にある PDO レイヤーへのインターフェイスを提供しているだけです。

API と拡張モジュールとは同じ意味ではありません。 拡張モジュールが必ずしもプログラマー向けの API を公開しているとは限らないからです。

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top