データベース(MySQL)を利用するメリット

WordPressなどのCMSを利用するには、MySQLのデータベースが必要となります。

一方で、静的なHTMLファイルとCSSのみでホームページを作成する場合には、データベースは特に必要ありません。データベースを利用しないプランの場合、月額100円前後で利用できるレンタルサーバーもあるため、静的なホームページで作成すると費用を抑えられるメリットがあります。

けれども、静的なホームページで作成する場合でも、データベースがあれば、サイト内検索やランキング表示など様々な用途で利用できて便利です。

以前まで、データベースを活用するにはJavaScriptやPHPなどのプログラミング言語の知識に加え、データベースを操作するSQL言語なども必要でしたが、最近ではChatGPTなどのAIの登場により、簡単にコードを書いてくれるようになりました。

個人でのデータベース活用のハードルが大幅に下がりましたので、今後、レンタルサーバーを契約する際には、データベースを利用できるプランを選択することをおすすめします。

静的ホームページでのMySQLデータベースの使用例

例えば、当ホームページ内では用語集のページにてMySQLのデータベースを利用しており、各用語の読み方や説明文、タグ、正式名称などを、行と列の表形式で登録しています。

用語集の例

データベースに用語を登録

これらはデータベース管理画面のphpMyAdminから検索できますが、ホームページ上からもデータを検索して表示できるようにしています。

データベース利用のサイト内検索

上記は用語のみですが、これをページ単位でデータベースに登録した場合にはサイト内検索を作成することもできます。

また、用語リストとは別のテーブルの表も用意し、そちらには検索されたクエリをデータベースに送信して保存し、どのような用語で検索されているのかをデータとして保存しています。

検索クエリの保存

この蓄積したデータについては、検索クエリの出現回数を取得して降順にソートし、上位10件などを表示することで、人気の検索キーワードをランキング形式でサイト上に表示することもできます。

WordPressの場合

WordPressの場合はテーブルがより複雑になっていますが、記事ごとにそれぞれ「post_title」や「post_date」、「post_content」などに分けられ、上記と同様に行と列の表形式でデータベースに保存されています。

仮に、このページをWordPressで投稿すると以下のようになりますが、サイトにアクセスがあるとデータベースからこれらの情報を呼び出し、サーバー側で各パーツを組み合わせ、動的にHTMLを生成して表示することになります。

WordPressのデータベースの中身

このデータベースの行列の表は、エクセルなどの表計算と似ていますが、同じキーワードに同じIDを使用すれば、それぞれの表を相互に関連性を持たせて操作できる点で違いがあります。

このような複数の表テーブルの間で関連性を持たせて操作できる点から、リレーショナルデータベースと呼ばれており、上記のMySQLのほか、Oracle DatabaseやPostgreSQLなど様々な種類があります。

商用データベースの際は有料ですが、個人がサイト運営で使用する際には、レンタルサーバーに付属のMySQL(マイエスキューエル)を使用するのが一般的です。

サイト運営におけるデータベースの活用例

サイトでデータベースを使用することにより、主に以下のような機能を実現することができます。

WordPressなどのCMS:

CMSではユーザー情報、投稿記事、コメント、投稿日時などがデータベースに分けて保存されます。サイトにアクセスされると、サーバーサイドで組み合わせてHTMLを表示します。

サイト内検索:

訪問者がサイト内検索をした際、検索クエリがデータベースに送信され、ヒットしたページがあれば結果が表示されます。

コメント表示:

通常の静的なHTMLサイトでは、一方的にHTMLを表示するのみのため、リアルタイムでコメントを保存して表示する動的な機能はありません。そのため、コメントはデータベースを利用して保存するのが一般的です。

「いいね!ボタン」などの表示:

静的なホームページでも、JavaScriptを使用すれば、動的にホームページを操作して、ボタンを押した回数をカウントできます。一方で、JavaScriptの場合にはアクセスしたユーザーのブラウザのみでカウントされ、ページを更新すれば、また回数が0に戻ります。累計回数を保存するには、データベースに回数を保存してカウントするのが一般的です。

ランキング表示:

コメントや評価、アクセス数などを基にランキング表示するには、データベースにデータを保存する必要があります。クリック数の列を降順でソートし、表示する数を10個などに指定するSQLコードを書き、その結果を取得することでランキング表示をすることができます。

ECサイト:

オンラインのECサイトでは、商品の価格、画像、説明、在庫数、あるいは顧客の氏名や住所、連絡先などの情報をデータベースに保存する必要があります。購入履歴などから、マーケティング活動などにも利用されます。

アカウントとパスワード:

.htpasswdのファイルを使用すれば、簡易的にアカウントとログインを認証することができますが、データベースを利用することで、より高度なユーザー管理機能を実装することができます。

上記のうち、ECサイトなどデータベースで個人情報を扱う場合には、セキュリティ対策などの知識が必要になり、難易度が高くなりますが、サイト内検索やランキング表示については個人のホームページでも活用はしやすいです。

phpMyAdminのSQL言語でデータベースを操作する

データベースは、上記のphpMyAdminのような管理画面から操作できますが、その際にはSQL(Structured Query Language)言語を使用するのが一般的です。

手動で直接編集することもできますが、膨大な量のデータがある場合、SQLの文法を利用して一括で操作します。

例えば、phpMyAdminでidの列から<div>タグを削除する場合、以下のように対象の表テーブルなどを指定し、空白で置換してアップデートします。

SQL言語

データベースのシステムによって違いはありますが、MySQLの場合はこちらのサイトなどで、文法を確認することができます。

「チュートリアル」→「クエリーの入力」の箇所には、「mysql> SELECT VERSION(), CURRENT_DATE;」などとありますが、mysql>の箇所はSQLステートメントの一部ではないため、phpMyAdminで入力する際には、mysql>や->の箇所を除いて実行すれば、チュートリアルどおりの結果が表示されるはずです。

MySQLのバージョン確認

このSQLのデータベース言語については、データベースを操作する文法のため、PHPやJavaScriptなどのプログラミング言語と比較すると比較的簡単です。また、CSSほど覚える項目もないため、それほど難しいことはありません。

せいぜい、SELECTやUPDATE、SET、REPLACE、INSERT、DELETE程度かと思います。

このphpMyAdminの管理画面にて、SQL言語で操作してクエリを検索できる場合、同様のことをホームページ上からも操作することができます。

ただし、HTMLやCSS、JavaScriptなどは、ブラウザなどのクライアントサイドで機能する言語のため、それらのファイルからはデータベースを直接操作することができません。

そのため、データベースをホームページ上から操作する場合には、サーバーサイドのプログラミング言語であるPHPファイルなどを別途に作成する必要があります。

データベース活用はサーバーサイドのプログラミング言語が最大のネック

PHPなどのサーバーサイドのプログラミング言語は、サーバー上で動くプログラミング言語のため、クライアントサイドのブラウザではPHPコード内の内容を直接閲覧することができませんが、データベースを間接的に操作できます。

例えば、上記のサイト内検索の場合、HTMLファイルからPHPファイルに検索クエリをポストし、PHPファイルがデータベースに接続してキーワードを検索します。

検索結果でヒットした場合、サーバー経由でホームページにデータを返し、サイト上に結果を表示する流れになります。

上記のうち、SQL言語については、それほど難易度は高くはないものの、データベースをホームページ上から操作するには、PHPなどのサーバーサイドのプログラミング言語が必要となります。さらに、セキュリティ対策も必要となります。

このプログラミング言語の習得とセキュリティ対策が、データベースを利用する際の一番のネックになるかもしれません。

  • HTML → 比較的、簡単(クライアントサイド)
  • CSS → 難易度は普通(クライアントサイド)
  • SQL → 習得は容易(サーバーサイド)
  • PHP → 難易度は高い(サーバーサイド)
  • セキュリティ対策 → 難易度が高い(両方とも必要)

よく「LAMP」という呼ばれ方がされますが、これはLinux、Apache、MySQL、PHPの略語となっており、OSがLinuxのサーバに、ApacheのWebサーバーソフトを入れ、MySQLのデータベースとPHPのサーバーサイドプログラミング言語を使用するのがオーソドックスな方法になります。

このLAMPの「P」は、PHPのほか、PythonやPerlの意味で使用する場合もありますが、WordPressはPHP、MovableTypeはPerlのサーバーサイドのプログラミング言語が使用されています。

また、上記のようなサイト内検索の場合、検索結果のPHPページに遷移して結果を表示できるため、JavaScriptは特に必要ありません。ただし、「いいね!」ボタンをクリックした際にデータベースに回数を送信するなど、ページの遷移を伴わない操作をサイト上でする場合には、クライアントサイドでJavaScriptも必要となります。

データベースを利用するには、HTMLやCSSのほか、これらPHP、SQL、あるいはJavaScriptの知識も必要となるため、以前までは難易度が高い傾向にありました。

けれども、ChatGPTなどのAIにプログラミングコードを書いてもらえる時代になりましたので、ハードルが大幅に下ったと感じています。

具体的なサーバーサイドのプログラミング言語の書き方については、PHP:データベース関連のマニュアルなどを参考にしつつ、ChatGPTなどに書いてもらうことをおすすめします。以前までは敬遠されていた方も、データベースを活用することでサイト運営の幅が格段に広がることでしょう。

個人向け格安レンタルサーバー

法人向けや独自ドメインの取得