前回解説したように、Laravelを使うとWebアプリの枠組みだけは比較的簡単に作成できます。しかし、Webアプリを開発するためには、PHPやLaravelだけを学ぶだけでは足りません。
PHPはWebアプリの開発に使われる言語なので、Webについての関連技術を併せて学ぶことで、よりスムーズに学びを活かすことができます。そこで、今回はPHP以外に学んでおくとよい技術を紹介します。
HTML/CSS
静的なWebサイトであっても、動的なWebアプリであっても、Webブラウザで表示するためにはHTML(Hypertext Markup Language)という言語で記述する必要があります。そして、HTMLで記述したWebページの見た目やレイアウトを制御するにはCSS(Cascading Style Sheets)も使います。つまり、PHPでWebアプリを開発する場合も、HTMLとCSSの知識は必須です。
HTMLは、Webページの構造を記述します。これは、ページのタイトルや見出し、段落、箇条書きなどを「タグ」と呼ばれる記述で囲って表現します。たとえば、次のように書いたとき、「<title>」と「</title>」という間がページのタイトル、「<h1>」と「</h1>」の間が見出し、といった具合です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>サンプルページ</title>
</head>
<body>
<h1>サンプル</h1>
<p>
これはサンプルです。
</p>
</body>
</html>
一方のCSSは、上記のHTMLで作成されたWebページの見た目を変えるために使われます。文字のフォントの色やサイズ、要素間の空白の量、背景画像、色などさまざまな要素を細かく調整できます。
たとえば、見出しのデザインを変えるには、次のようなCSSが考えられます。
h1 {
padding: 0.5em;
color: #484848;
background: #fffaf4;
border-left: solid 5px #ffaf48;
}
上記で作成したHTMLに、このCSSを適用すると、次のようなWebサイトとして表示されます。
最近はBootstrap(https://getbootstrap.com)などのCSSフレームワークを使うことで、CSSを書く量は減りましたが、それでもCSSについての知識はWeb開発者にとって必須です。
Web技術(HTTP)
PHPはWebサーバー上で動作するプログラミング言語として使われることが多いため、Webブラウザとのやりとりが発生します。このときにWebブラウザとWebサーバーの間でデータを送受信するプロトコル(通信規約)として「HTTP(Hypertext Transfer Protocol)」があります。
この連載の第1回で解説したように、WebアプリではWebブラウザからのHTTPリクエストに対してWebサーバーがHTTPレスポンスを送り返します。このHTTPリクエストには、メソッド(GET、POST、PUT、DELETEなど)やURL(リソースの場所)、ヘッダー(メタデータ)などが含まれます。Webアプリは、このリクエストの内容に応じてレスポンスの内容を変えるため、PHPのアプリではリクエストの内容に応じて処理します。そして、HTTPレスポンスとして「200(OK)」や「404(Not Found)」などのステータスコードやヘッダー、応答内容(HTML文書など)を返します。
また、HTTPはステートレスなプロトコルであり、それぞれのリクエストは独立して扱われます。同じ利用者から複数のリクエストが送信されてきても、別々のものとして扱います。これでは商品の購入などで不便なため、Cookieと呼ばれる仕組みも用意しています。
これらについても正しい知識がないと、他者の情報が見えてしまったり、第三者が情報を書き換えられたりする可能性があるため、HTTPの仕組みを知ることは重要です。
Linux/Docker
Webサーバーやメールサーバーを構築するときに使われるレンタルサーバーなどでは、一般的にはUNIX系のOSが導入されています。特にLinuxが使われていることが多いため、普段はWindowsやmacOSを使っている人にとっては少しハードルが高いものです。
それでも、大規模なシステムから小規模なレンタルサーバーまで幅広く使われており、事実上の標準となっています。PHPのプログラムを動作させるときにも一般的に使われているため、最低限のコマンドは覚えるとともに、その運用について知っておく必要があります。
最近では、Linuxを軽量な「仮想マシン」のように動作させるコンテナとして使用する「Docker」を導入することが増えています。Dockerは、アプリケーションとその依存関係を1つのパッケージ(コンテナ)にまとめることで、どの環境でも一貫して動作させることができます。
Dockerを使うことで、仮想マシンよりも手軽に動作させられるだけでなく、複数の開発者の間での実行環境の共有や、本番環境へのデプロイをスムーズに行えるようになります。
DockerやLinuxについて詳しくは、エンジニアスタイルの他の連載などを参考にしてみてください。
データベース
Webアプリでは、会員情報の登録や商品の購入、メッセージの投稿など、利用者に応じて表示を変える仕組みが使われます。これを実現するためには、データを整理してサーバー側に保存し、検索や更新を容易にできるシステムが必要です。
このため、一般的にはデータベースが使われます。Webアプリで使われるデータベースには、関係データベースとNoSQLの2種類があります。
関係データベースは、データを表形式のテーブルに保存する方法で、代表的な製品としてMySQLやPostgreSQLなどがあります。それぞれのテーブルは行(レコード)と列(カラム)から構成され、カラム単位で格納できるデータの種類(型)が決められています。そして、データベースを操作するためにSQLという言語が使われます。
一方のNoSQLは表形式ではなく、その用途にあわせてさまざまな形式でデータを保存する方法で、代表的な製品としてMongoDBやRedisなどがあります。たとえば、キーバリューストアやドキュメントデータベース、グラフデータベースなどがあります。
作りたいWebアプリによって最適なデータベースは異なるため、製品を選定することはもちろん、PHPのプログラムからこれらのデータベースに接続して操作できるようになる必要があります。
SQLについても、エンジニアスタイルの他の連載を参考にしてみてください。
▼PHP学びの入口
1: PHPはどんなところで使われている?
2: Laravelってどんなの?フレームワークを実例で紹介
3: PHPと一緒に学んで効率UP?関連技術を知ろう