こんにちは。デジタルラボのらいちです。
ここを訪れた方はPHPの基本構文やルールを一通り学び終わり、次のステップとして何かを作っていこうと考えているのではないでしょうか。
しかし、何か作ろうと思っていても、そもそもPHPで何を作れるかイメージがわかず、次に進めずにいることでしょう。
僕もPHPの基礎を学習し終えた当時、具体的に作れるものまでは教材で学べなかったために、制作へ進めず立ち止まってしまいました。
そこで本記事ではPHPで何が作れるのかを紹介し、上記のような方が次のステップへ進めるよう手助けをしていきます。
PHPについておさらい

PHPは(Hypertext Preprocessor)は、Webサイト上の動的なコンテンツの生成に使えるサーバーサイドスクリプト言語です。
項目 | 内容 |
---|---|
特徴 | ・Web上での動作に特化した言語 ・HTMLに直接埋め込み可能 ・多くのデータベースに対応 |
使用するメリット | ・OSに依存せずWebであれば実行可能 ・ネット上に情報が多くある ・シンプルな構文で記述できる |
ライブラリ(一部) | ・PHP Mailer ・Request for PHP ・pChart |
フレームワーク(一部) | ・CakePHP ・Laravel |
ユーザーからのリクエスト(クリックや入力内容)に従って、コンテンツの作成や表示、処理を実行することができます。
また、インタプリンタ言語でもあることからコンパイルの必要はなく、phpファイルにコードを書いてサーバー上で実行すれば、即時にWebページへ反映させることが可能です。

HTMLやCSSで書かれた表示するだけの「静的サイト」とは違い、ユーザーに合わせた表示や処理をする「動的サイト」を作成できます。
PHPが活躍するシーン


実際にPHPが活躍できるシーンについて、下記に沿って紹介していきます。



できることだけでなく、できないことも理解しておきましょう。
活躍できるプロジェクト
そもそもPHPが活躍できるプロジェクトは以下の5つがメインになります。
- Webサイト制作:情報を表示するWebページの制作
- WordPressテーマ開発:ブログの見た目や機能のカスタマイズや作成
- Webアプリ開発:ブラウザで動作するシステムの開発
- ブラウザゲーム開発:ブラウザ上で動作するゲームの開発
- PHPスクリプト作成:決まったタスクを定期・自動実行スクリプトの作成
動的なWeb上のコンテンツを生成することに特化した言語であることから、Web上のちょっとした制作から複雑な開発まで、幅広いプロジェクトに可能です。



比較的古い言語であることから、既存のWebサイトやシステムにPHPが使われていることも多いため、改修や保守も対応できます
具体的な活躍シーン
活躍できるプロジェクトに対し、具体的にPHPが活躍するシーンは以下の5つです。他にもありますが、主な部分を挙げています。
- ユーザー操作による表示や処理:クリックや入力内容に合わせた処理の実行や表示
- セキュリティ対策:バリデーションやセッションの管理など
- ファイルやフォルダの操作:作成や変更、サイトへのアップロードなど
- データベース連携:データベース上にあるデータの作成や変更、削除など
- API連携:外部システムのデータを取得したり、送信するなど
特に、HTMLやJavaScriptでは扱えなかったデータやファイルの操作、セキュリティ対策の部分で活躍します。



データやファイルの「送信」・「取得」・「保存」ができるPHPがあることで、初めてシステムを作っていくことができるようになります。
できないこと
Web上では幅広いシーンで活躍できるPHPですが、活躍できないシーンもあります。それが以下の5つです。
- リアルタイムのUI操作:アニメーションやリロードを挟まない動作
- デスクトップアプリの開発:デスクトップPC上で動作するシステムの開発
- モバイルアプリの開発:スマホやタブレット上で動作するシステムの開発
- 組み込みシステムの開発:家電や機器のコンピューターを制御するシステムの開発
- クライアントデバイスの直接操作:Webカメラやマイクなど物理的に接続された機器の制御
基本的にWeb以外のシステムや制御をするのはできません。Web上の処理に特化している分、UI操作やハードウェアへの干渉ができないためです。
そのため、Web上の処理部分をPHPにまかせて、Webサイトの見た目の動作はJavaScript、PC上の操作はC言語に任せるといった別の言語との連携が重要になります。



PHPはデータべースの連携もできると伝えましたが、実はデータベースの中にあるデータの操作自体もSQL言語という別の言語で行います。
PHPで実際に作れるもの
PHPそのものやPHPが活躍できるシーンを紹介したところで、PHPを使って実際に作れるものを以下の5つ紹介します。
ブログシステム


ブログシステムは、管理するユーザー(個人や企業)が記事を作成し、サイトに訪れた人に情報を表示するシステムです。
- 記事の操作機能:投稿や編集、削除などの機能
- カテゴリー・タグ機能:記事をジャンルやラベルで分ける機能
- コメント機能:サイトを訪れた人が記事に対するコメントを投稿できる機能
- ログイン機能:管理画面へログインしたり、一部操作を管理者に制限する機能
- 検索機能:記事をキーワードで検索できる機能
PHPを使うことで必要な機能をすべて実装できるのはもちろん、会員機能やAPI提供などでさらに高度なシステムを開発できます。



ブログシステムは1から作る場合もありますが、基本的にはWordPressを使って実装することが多いです。
予約管理システム


予約管理システムは、ユーザーが予約情報を入力することで指定の日付に予約をし、管理者への通知や情報の管理を行うシステムです。
- 予約作成機能:入力内容を予約としてデータベースに登録する機能
- カレンダー表示機能:予約情報を指定の日付に表示する機能
- リマインド機能:予約日が近づいたら自動で通知を送る機能
- ユーザー認証:システムへログインしたり、ログイン情報に合わせて予約情報を表示する機能
- 管理者機能:一部操作を管理者のみができるよう制限する機能
PHPとデータベースを連携したり、定期実行することで、予約情報の管理やリマインドなどの便利な機能を実装できます。



個人間の相談予約から飲食店やイベント会社などの企業単位まで使われているため、作れると対応できる案件の幅もかなり広がります。
お問い合わせフォーム


お問い合わせフォームは、Webサイトやシステムに訪れたユーザーが、管理者や窓口に相談や質問できるシステムです。
- 入力内容受け取り機能:入力内容をシステムが受け取れるようにする機能
- バリデーション機能:入力内容が不正でないかを確認する機能
- メール送信機能:自動返信メールや、管理者への通知メールを送信する機能
- セッション機能:二重送信や不正な送信を防止する機能
- データ保存機能:入力内容をデータベースに保存する機能(必須ではない)
個人サイトから企業のサービスまであらゆるWebページに設置されており、その多くがPHPで作られています



WebサイトやWebシステムを作成する場合は必ずといっていいほど実装するため、必ず作れるようにしておいた方が良いものになります。
チャットボット


チャットボットとは、ユーザーが送信した質問に対し、自動で回答したり情報提供を行うシステムです。
- 自動応答機能:質問が入力されたら、入力に応じた回答を表示する機能
- 質問内容解析機能:特定の単語や、AIによる解析をする機能
- 回答登録機能:あらかじめ用意する回答をデータベースへ登録する機能
- 質問保存機能:入力された質問をデータベースへ登録する機能
質問の特定に応じてあらかじめ登録した回答を表示する「非AI搭載型」と、質問に対する回答をシステム(AI)が考えて表示する「AI搭載型」が存在します。



ChatGPTと連携すると、質問者にすぐ情報を提供できるかつ、管理者は何もしなくて良いといった自動化のメリットがあります。
社内情報検索システム


社内情報検索システムは、企業で取り扱っている資料やテキストを保存し、検索によって表示できるシステムになります。
- 情報登録機能:文書やテキストをデータベースやサーバーに保存する機能
- 情報検索機能:キーワードで保存されている文書やテキストを検索する機能
- アクセス権限機能:権限に合わせて閲覧できる文書やテキストを制限する機能
- お知らせ機能:お知らせの投稿や編集、削除をする機能
- 閲覧履歴管理機能:閲覧した文書やテキストの履歴を保存したり表示する機能
企業で取り扱う情報をシステムに登録しておくことで、膨大な情報を管理しつつ、欲しい情報をピンポイントで確認できます。
本システムもデータベースを連携やファイルを操作をPHPに任せることで、実装することが可能です。



主に大企業が使うイメージがありますが、フリーランスにとってもルールや文書をまとめておくツールとして非常に便利なシステムになっています。
PHP実践学習ロードマップ


PHPで具体的に作れるものを確認したらそこで終わるのではなく、開発や処理の作成など学習を進めていくのが重要です。学習の進め方は以下の順序に沿って進めていくのがおすすめです。



それぞれについて説明するので、ぜひ学習を進めてスキルアップを目指しましょう。
【STEP1】PHPコードでの簡単な開発
まずは外部との連携はせず、これまで学んできたPHPの基本構文を駆使して、簡単なシステム開発をしていきましょう。
- お問い合わせフォーム
- 計算機
- ToDoリスト
基本構文を組み合わせて処理を作ったり、学習時には出てこなかった関数やテクニックが適度に必要になるため、PHP単体での開発もすごく勉強になります。



ここではPOSTとGETを使った開発がメインになり、今後たくさん使う技術なので、ぜひ実践して使いこなせるようになりましょう。
【STEP2】データベース連携を使った開発
PHPの基本を使った開発を終えたら、次はデータベースと連携し、データの保存や取得などができるシステムを開発していきます。
- ブログシステム
- ユーザー管理システム
- タスク管理システム
PHPとの連携方法だけでなく、SQLの書き方やデータベースの基礎を学習する必要があるため、難易度はそれなりに上がります。
しかし、データベースはPHPを使う上では外せない要素であり、逆にここができれば一気に実用的なスキルが身に付くため、ぜひ頑張りましょう。



テーブルやカラムの概念、列ごとのデータ型など学習することが多いため、ここが正念場になります。
【STEP3】API連携を使った開発
データベースとの連携を実践できたら、次は外部サービスのAPIを使った開発をしていきましょう。
- 天気情報表示システム(OpenWeatherMap API)
- 情報収集ツール(PinterestやYoutube)
- 自動回答システム(ChatGPT API)
APIを使うことで、すでにある膨大なデータを扱ったり、個人では到底作れない機能を使えるようになるため、より便利なシステムを開発できるようになります。
扱うAPIごとによって連携方法やパラメータ設定が変わることがほとんどですが、URLを作成したり、JSON形式のデータを扱うといった共通部分もあるため、1度は開発しておいた方が良いです。



APIごとに使い方が変わることから、公式のドキュメントを確認する必要があるため、堅い説明書から情報を得るという経験もできます。
プログラミング言語を学ぶ上で出てくるAPIとは?APIの基礎と使い方について解説!
【STEP4】オリジナルシステムの開発
最後のステップとして、STEP1~STEP3を実践して手に入れたスキルを使い、自身で考えたオリジナルのシステムを開発していきます。
- これまで開発したシステムに機能や表示量を増やして複雑にする
- コンセプトを明確にした設計のシステムにする
- ユーザーが操作しやすいような細かで便利な機能を詰め込む
自分でシステムを設計してコーディングをするのはもちろん、バグがないように念入りなテストやデバッグを行っていく必要もあります。
自分なりの工夫を入れつつも、「ちゃんと使えるシステム」の開発を目指していきましょう。



ここで開発できればポートフォリオになるため、今後案件を獲得していくことも踏まえ、ぜひしっかり作っていきましょう。
早速【STEP1】を実践しよう(ChatGPTを使用)
ここまで読んでいただいた方は、ぜひ「PHP学習ロードマップ」の【STEP1】から開発をしていきましょう。今回はChat GPTを使用した実践方法を紹介します。



ぜひ記事を読みながら手を動かしてみてください。
あらかじめ用意しておくもの
今回の開発で事前に用意しておくものは以下のとおりです。PHP単体を使ったものなので、必要なものは少なく済んでいます。
- VSCode:コードを書くために使用
- XAMPP:PHPを実行するための環境づくりに使用



まだ用意できていない方は自身で調べながら用意しましょう。
また、今回作成するToDoリストの設計は以下のとおりです。
- トップページにタスクを一覧表示
- 一覧の下にタスクを入力するための入力欄があり、入力して送信ボタンを押すと、テキストファイルにタスクを保存。
- タスクは、名前の横にある「削除」ボタンを押すことで削除できる
かなりざっくりとした設計ですが、最初の開発なので本当に簡単なもので構いません。次の見出しではこの設計に従って開発を進めていきます。
実際に開発を行う
まずは開発をするためにフォルダを作成しておきます。XAMPPのhtdocsフォルダに「todo」というフォルダを用意しましょう。


次は設計に沿ったコーディングをChatGPTにまかせます。ChatGPTに以下のプロンプトを入力します。
PHPを使って以下のとおりにToDoリストを開発してください。
・トップページにタスクを一覧表示
・タスク一覧の下にタスクを新規追加するための入力欄があり、入力して送信するとテキストファイルにタスクを保存
・一覧表示されているタスクは、タスク名のとなりにある削除ボタンを押すことで個別に削除できる


すると、問題なくコードを記載してくれたので、ファイルを用意しつつコードをコピペします。今回はindex.php、tasks.txtを用意し、index.phpにコードをコピペしていきます。






<?php
// タスクが保存されるファイルのパス
$task_file = 'tasks.txt';
// タスクの追加
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_task'])) {
$new_task = trim($_POST['new_task']);
if (!empty($new_task)) {
// 新しいタスクをファイルに追加
file_put_contents($task_file, $new_task . PHP_EOL, FILE_APPEND | LOCK_EX);
}
}
// タスクの削除
if (isset($_GET['delete'])) {
$task_to_delete = $_GET['delete'];
$tasks = file($task_file, FILE_IGNORE_NEW_LINES);
// 削除するタスクを除外してファイルを更新
$tasks = array_filter($tasks, function($task) use ($task_to_delete) {
return $task !== $task_to_delete;
});
file_put_contents($task_file, implode(PHP_EOL, $tasks) . PHP_EOL);
}
// ファイルからタスクを読み込む
$tasks = file($task_file, FILE_IGNORE_NEW_LINES);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ToDoリスト</title>
</head>
<body>
<h1>ToDoリスト</h1>
<!-- タスクの一覧表示 -->
<ul>
<?php foreach ($tasks as $task): ?>
<li>
<?php echo htmlspecialchars($task, ENT_QUOTES, 'UTF-8'); ?>
<a href="?delete=<?php echo urlencode($task); ?>" onclick="return confirm('このタスクを削除しますか?');">削除</a>
</li>
<?php endforeach; ?>
</ul>
<!-- 新規タスク追加フォーム -->
<form action="" method="post">
<label for="new_task">新しいタスク:</label>
<input type="text" name="new_task" id="new_task" required>
<button type="submit">追加</button>
</form>
</body>
</html>



phpファイル名については、今回のように指定がない場合はindex.phpを用意しましょう。一番最初に表示されるページになるからです。
そしてコピペまで完了したら、実際にコードを実行して操作をしてみましょう。試しにタスクを2つほど追加したところ、問題なく一覧表示されました。




しかし、削除ボタンを押してすべて消してみると、本来なにもないはずなのに削除ボタンだけが残ってしまいました。


おそらくすべてのタスクを削除した後、テキストファイルにスペースが残ってしまったのが原因のため、「タスク名からスペースを削除した上で、空欄でなければ表示する」というようにコードを追加。




<?php
// タスクが保存されるファイルのパス
$task_file = 'tasks.txt';
// タスクの追加
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_task'])) {
$new_task = trim($_POST['new_task']);
if (!empty($new_task)) {
// 新しいタスクをファイルに追加
file_put_contents($task_file, $new_task . PHP_EOL, FILE_APPEND | LOCK_EX);
}
}
// タスクの削除
if (isset($_GET['delete'])) {
$task_to_delete = $_GET['delete'];
$tasks = file($task_file, FILE_IGNORE_NEW_LINES);
// 削除するタスクを除外してファイルを更新
$tasks = array_filter($tasks, function ($task) use ($task_to_delete) {
return $task !== $task_to_delete;
});
file_put_contents($task_file, implode(PHP_EOL, $tasks) . PHP_EOL);
}
// ファイルからタスクを読み込む
$tasks = file($task_file, FILE_IGNORE_NEW_LINES);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>ToDoリスト</title>
</head>
<body>
<h1>ToDoリスト</h1>
<!-- タスクの一覧表示 -->
<ul>
<?php foreach ($tasks as $task): ?>
<?php if (!empty(trim($task))): ?>
<li>
<?php echo htmlspecialchars($task, ENT_QUOTES, 'UTF-8'); ?>
<a href="?delete=<?php echo urlencode($task); ?>" onclick="return confirm('このタスクを削除しますか?');">削除</a>
</li>
<?php endif ?>
<?php endforeach; ?>
</ul>
<!-- 新規タスク追加フォーム -->
<form action="" method="post">
<label for="new_task">新しいタスク:</label>
<input type="text" name="new_task" id="new_task" required>
<button type="submit">追加</button>
</form>
</body>
</html>
再度コードを実行し、すべてのタスクを削除したところ、無駄な削除ボタンが問題なく表示されなくなりました。




以上で開発は終わりです。このまま「PHP学習ロードマップ」の【STEP2】に進むのはもちろん、今回のToDOリストに機能をつけ足していくのもおすすめです。



今回はすんなり開発を終えていますが、実際はエラーや実装方法がわからずつまづくことも多いです。そうなったら、「PHP 空白を取り除く」など検索で解決方法を調べていきましょう。
プログラミングのエラーでChatGPTは使えるの?メリットやリスクを解説!
さいごに


本記事では、PHPでどんなものを作れるのかについて紹介しました。
PHPはWeb上のサイトやシステムに特化したプログラミング言語であることから、ブラウザ上のものであれば幅広く対応できます。
ここまで読んだ方は何を作れるかをイメージできている状態のため、これからPHPを使って簡単なものから作っていき、実践的なスキルを身に着けていきましょう。



今後の学習は、記事中で紹介したロードマップを参考にするのがおすすめです!