こんにちは。
PHP & Laravelを使用する企業に内定したため、先取学習を始めました。
「独習PHP 第4版」を読んだ内容を、簡潔にまとめております。
最新の知見も合わせると情報に古い箇所もあるため、その点はアップデートしました。
早速、第1章_前編で学んだ内容をアウトプットしていきます。
第1章 イントロダクション 前編
PHPについて
PHPはWebアプリケーションの作成を容易にするために開発された、サーバーサイドのスクリプト言語です。
スクリプト言語とは、主にウェブ開発やタスクの自動化に使用される高水準(人間に読みやすい)のプログラミング言語です。
また、Webアプリケーションとは、インターネットを経由して利用できるサービスやアプリのことで、具体的にはGoogleの検索エンジンやAmazonのショッピングサイトなどがあります。
クライアントとサーバー
Webの世界では「クライアント」と「サーバー」という概念があります。
- クライアント:情報を受け取る側、つまりユーザーのデバイスやブラウザのことです。
- サーバー:要求に応じて情報を提供する側で、ウェブページやデータを配信します。
サーバーにはデータベースサーバーやメールサーバーなど、様々な用途に応じた種類があります。特にWebアプリの情報を提供するサーバーを「Webサーバー」または「HTTPサーバー」と呼びます。
通信について
ブラウザからインターネット上のコンテンツの位置を示すことで、対応するコンテンツを閲覧できます。
この位置を示す記法がURL(Uniform Resource Locator) です。
これらのコンテンツはHTTP(HyperText Transfer Protocol) というプロトコルで受け渡しします。
プロトコルとは、通信を行うためのルールや手順のことです。
静的なページと動的なページ
サーバーが要求されたページをそのまま加工せずに渡す状態を「静的ページ」と呼びます。
しかし、実際の場面ではユーザー名に合わせて表示を変更するなど、ページを動的に生成する必要があります。
このように、必要に応じて表示内容が変わるページを「動的ページ」と言います。PHPはこの動的なページを作成するための代表的な技術です。
クライアントサイドとサーバーサイド
クライアントサイド技術
クライアント側(ユーザーのブラウザ)に必要なスクリプト(プログラミングコード)やデータをダウンロードし、クライアント側で実行する仕組みです。代表的なものにJavaScriptがあります。
クライアントサイド技術での動的な操作は、カーソルを置いた際に色が変わるなどのアニメーションや、ユーザーの操作に応じてページ内容を変更することです。
クライアントサイドでもデータを保存する手段があります。CookieやWeb Storage(localStorage、sessionStorage)、IndexedDBなどを利用して、データをローカルに保存できます。
ただし、これらはクライアント側のデバイスに保存されるため、サーバー側のデータベースにデータを保存するにはサーバーサイド技術が必要です。
サーバーサイド技術
サーバー側で処理を行い、その結果を一般的にはHTMLとしてクライアント側に提供します。サーバーサイド技術では、サーバー側に用意されたファイルシステムやデータベースを活用できます。
これにより、クライアントから送信された情報を基に、コンテンツを動的に生成・拡張することができます。
技術の取り扱い
クライアントサイド技術では、必要なデータやプログラムをクライアント側にダウンロードして実行します。近年では、必要なときに必要なデータだけをロードする「レイジーローディング」や「コードスプリッティング」といった手法もあります。
しかし、クライアント側で機密情報を扱う場合、セキュリティ上のリスクがあります。また、ユーザーのデバイスやブラウザのバージョンによって動作が異なる可能性があるため、環境に応じた対応が必要です。
一方、サーバーサイド技術では処理をサーバー側で行うため、機密情報の管理がしやすく、クライアント側の環境に依存しにくいという利点があります。
しかし、全てをサーバーサイドで実現するのは現実的ではありません。ユーザーの操作ごとにサーバーと通信を行うと、トラフィック(データのやり取りの量や流れ) が増加し、ネットワークの負荷が高まります。
また、操作に対する反応が遅れるため、UX(ユーザーエクスペリエンス) が低下する可能性があります。
マウスカーソルを合わせたりクリックした際に変化するUI(ユーザーインターフェース) の部分は、クライアントサイドで処理する方が効率的です。
つまり、クライアントサイド技術とサーバーサイド技術のそれぞれの得意分野を理解し、適切に組み合わせて利用していく必要があります。
クイズ
クイズ 1
質問:
PHPは主にどのような目的で開発されたサーバーサイドのスクリプト言語ですか?
選択肢:
A) デスクトップアプリケーションの開発
B) モバイルアプリケーションの開発
C) Webアプリケーションの作成
D) ゲーム開発
クイズ 2
質問:
クライアントサイド技術の代表的な例として正しいものを選んでください。
選択肢:
A) PHP
B) Python
C) JavaScript
D) Ruby
クイズ 3
質問:
「動的ページ」とは何を指しますか?
選択肢:
A) サーバーが要求されたページをそのまま渡すページ
B) ユーザーの操作に応じて表示内容が変わるページ
C) 静的なHTMLファイルのみで構成されたページ
D) ブラウザ側でのみ処理が行われるページ
回答
クイズ 1
回答:
C) Webアプリケーションの作成
解説:
PHPは主にサーバーサイドで動作し、動的なWebページやWebアプリケーションの開発に使用されます。フォーム処理やデータベース連携が得意です。
クイズ 2
回答:
C) JavaScript
解説:
JavaScriptはクライアントサイドで実行され、ユーザーインターフェースの動的な操作やインタラクションを実現します。ウェブページの動的な要素を制御します。
クイズ 3
回答:
B) ユーザーの操作に応じて表示内容が変わるページ
解説:
動的ページはユーザーの入力やアクションに基づいて内容がリアルタイムで変化します。これにより、個別化された情報提供が可能になります。
まとめ
PHPはサーバーサイドのスクリプト言語として、動的なWebアプリケーションの開発を大幅に容易にします。
Webの基盤となるクライアントとサーバー間の通信はHTTPプロトコルを介して行われ、これにより静的ページと動的ページの両方を提供することが可能です。
さらに、クライアントサイド技術とサーバーサイド技術を効果的に組み合わせることで、効率的かつ安全なWeb開発を実現し、ユーザーに優れたエクスペリエンスを提供することができます。
感想
本書の重要な箇所を、簡潔にまとめてみました。特に自分が見返した際に見やすいことはもちろん、PHP初学者で情報収集をしている方にも役立つように情報を整理しました。
私自身、この本を読むことで今まで曖昧だった内容がより鮮明になり、大変勉強になっています。
引き続きアウトプットを頑張ります。
一緒に勉強を頑張っていきましょう。