メインコンテンツへスキップ

PHP

    PHPは、Web開発に特化したオープンソースの汎用プログラミング言語(スクリプト言語)です。 

    PHPの主な特徴

    • サーバーサイド実行: ブラウザではなくサーバー側で動き、動的なWebページを生成します。

    • HTMLとの親和性: HTMLの中に直接PHPコードを埋め込んで記述できます。

    • WordPressでの採用: 世界中で使われているCMS(コンテンツ管理システム)のWordPressなどもPHPで動いています。

    • 初心者向け: 構文が比較的シンプルで、学びやすい言語です。 

    PHPの環境構築、基本構文、学習ステップ、おすすめ教材のすべてを初心者向けに分かりやすく解説します。

    1. 環境構築の方法(XAMPPの使い方)

    パソコン上でPHPを動かすには、Webサーバーやデータベースが必要です。これらを一括でインストールできるXAMPP(ザンプ)という無料パッケージを使うのが最も簡単でおすすめです。 

    STEP ①:XAMPPのダウンロードとインストール

    1. XAMPP公式サイトにアクセスし、お使いのOS(Windows / macOS / Linux)に合わせたインストーラーをダウンロードします。

    2. インストーラーを起動し、画面の指示に従ってそのまま「Next」を押して進めればインストールは完了します。 

    STEP ②:コントロールパネルから起動

    1. インストールされた「XAMPP Control Panel」を開きます。

    2. 画面内にある 「Apache」(Webサーバー)の横にある 「Start」ボタン をクリックします。緑色に変われば正常に起動しています。

    STEP ③:コードを実行する場所

    • XAMPPをインストールしたフォルダ内にある htdocs というフォルダ(例:Windowsなら C:\xampp\htdocs)が、Webサーバーの公開フォルダになります。

    • この中に test.php のような名前のファイルを作成し、コードを書いて保存します。

    • ブラウザを開き、アドレスバーに http://localhost/test.php と入力してアクセスすると、書いたプログラムが実行されます。 

    2. 基本的な書き方とコード例

    PHPのコードは、基本的に <?php で始めて ?> で終わるルールになっています。行の最後には必ず ;(セミコロン) を付けます。 

    ① 画面に文字を表示する(echo)

    最も基本となる、文字を出力する命令です。 

    php

    <?php
    echo "こんにちは、世界!"; // 文字列は "" で囲みます
    ?>
    

    ② 変数を使う(データの保存箱)

    頭に $ を付けると、データを一時的に保存しておく「変数」を作ることができます。 

    php

    <?php
    $name = "太郎";
    $age = 25;
    
    echo $name . "さんは" . $age . "歳です。"; //「.」で文字を連結できます
    ?>
    

    ③ 条件によって処理を変える(if文)

    「もし〜ならA、そうでなければB」という条件分岐を作ります。 

    php

    <?php
    $score = 85;
    
    if ($score >= 80) {
        echo "合格です!";
    } else {
        echo "がんばりましょう!";
    }
    ?>
    

    3. 学習の進め方(3つのステップ)

    1. 基礎文法の習得(1〜2週間)

      • 変数、条件分岐(if)、繰り返し処理(for, while)、配列の仕組みを学び、簡単な計算や文字操作ができるようにします。 

    2. Webでの仕組みを学ぶ(2〜3週間)

      • HTMLのフォームから送信されたデータ(名前やメッセージなど)をPHPで受け取って画面に表示する「動的なWebページ」の作り方を学びます。 

    3. データベースとの連携・アプリ開発(1ヶ月〜)

      • データベース(MySQL / MariaDB)と連携させて、データの保存・読み込み・削除ができるようにします。ここまで来ると、問い合わせフォームや簡易的な「ひとこと掲示板」などが作れるようになります。 

    4. おすすめの教材

    📖 書籍(しっかり本で学びたい方向け)

    • 『よくわかるPHPの教科書』(著者:たにぐちまこと)

      • プログラミングが完全に初めての人向けに、イラストや簡単な言葉で解説されている大ベストセラーです。最終的にTwitter風の掲示板を作るところまで体験できます。

    • 『初めてのPHP』

      • 基礎からセッション管理、セキュリティ、データベース連携まで、実用的な視点から体系的に網羅されている定番の入門書です。 

    💻 サイト・動画(手を動かしながら学びたい方向け)

    • プロゲート (Progate)

      • ブラウザ上で実際にコードを打ち込みながらゲーム感覚で学べる、初心者向けの大人気学習サービスです。環境構築なしですぐに始められます。

    • paizaラーニング

      • 1回3分の動画レッスンと、ブラウザ上の実行環境がセットになったサービスです。演習問題が豊富で、理解度をチェックしながら進められます。

    Facebook(Meta)は、初期の開発から現在に至るまでPHPと深い関わりを持っており、大規模なトラフィックを処理するために独自の高速化技術(HHVMなど)や派生言語(Hack)を開発してきたことで有名です

    1. FacebookとPHPの歴史

    • PHPでのスタート: 2004年のFacebook創設時、サーバー側のメイン言語としてPHPが採用されました。

    • 爆発的なスケールへの対応: ユーザーが急増するにつれ、通常のPHPの動作速度ではサーバー負荷が追いつかなくなりました。

    • C++への変換(HipHop): 初期にはPHPコードをC++に変換してコンパイルする「HipHop for PHP」という巨大なトランスパイラを開発し、処理を高速化しました。 

    2. HHVM(HipHop Virtual Machine)とHack言語

    • HHVMの開発: C++で実装されたJITコンパイラ(仮想マシン)である HHVM を開発し、PHPコードを驚異的なスピードで実行できるようにしました。 

    • 独自言語「Hack」: PHPをベースにしつつ、型安全性を強化した独自のプログラミング言語 Hack を生み出し、現在はFacebookの巨大なコードベースの多くがこのHack言語で動いています。 

    3. PHPから見たFacebook連携(API)

    • 自分のWebサイトに「Facebookログイン」を実装したり、FacebookページやInstagramのデータを取得・投稿したりする機能を作る際、PHPからMetaの Graph API を呼び出す仕組みが利用されてきました。 

    • 公式のSDKは仕様変更やメンテナンスの移行があり、現在はHTTPクライアント(Guzzleなど)を用いて直接APIを叩く方法や、コミュニティがメンテナンスしているラッパーライブラリを使うのが一般的です。

    「Facebookのコード」という言葉が指すものには、大きく分けて① Facebook自身を動かしている仕組み(ソースコード)と、② 私たちが自分のWebサイトでFacebook機能を使うための連携コード(API)の2つがあります。

    ① Facebookを動かしているコード(Hack言語)

    Facebook(現Meta社)のサーバー側プログラムは、PHPをベースに開発された独自言語 Hack(ハック) で書かれています。数百億行に及ぶ巨大なコードを高速で動かすために作られました。 

    通常のPHPと非常によく似ていますが、データ型(文字列、数値など)のチェックを厳格に行うのが特徴です。

    ▼ Hack言語のコード例(Facebook社内のイメージ)

    php

    <?php
    // Hack言語では、引数や戻り値に「string」や「int」といった型を厳密に指定します
    function getFacebookWelcomeMessage(string $userName): string {
        return "こんにちは、" . $userName . "さん!Facebookへようこそ。";
    }
    
    echo getFacebookWelcomeMessage("太郎");
    

    ② 自分のサイトにFacebookを連携させるPHPコード(Graph API)

    私たちがPHPを使って「Facebookの投稿データを取得する」「Facebookログインを実装する」といった開発を行う場合、Metaが提供する Graph API という仕組みにリクエストを送るコードを書きます。 

    以下は、PHPからFacebookのデータを取得する際の最もシンプルな標準コードの例です。

    ▼ PHPでFacebookからユーザー情報を取得するコード例

    php

    <?php
    // 1. FacebookのAPIを叩くための設定(アクセストークンなどが必要)
    $accessToken = 'YOUR_FACEBOOK_ACCESS_TOKEN'; // 事前に取得した鍵
    $url = "https://facebook.com" . $accessToken;
    
    // 2. Facebookのサーバーにデータをリクエスト
    $response = file_get_contents($url);
    
    // 3. 返ってきたデータ(JSON形式)をPHPの配列に変換
    $userData = json_decode($response, true);
    
    // 4. 画面に表示
    if (isset($userData['name'])) {
        echo "ログイン中のユーザー名: " . $userData['name'];
    } else {
        echo "データの取得に失敗しました。";
    }
    ?>
    

    💡 Meta(Facebook)のオープンソースコード

    ちなみに、Meta社は自社が開発した便利なコードやフレームワークを、Meta GitHub などのプラットフォームで世界中に無料公開(オープンソース化)しています。 

    • React (リアクト): 世界中のWebサイトで使われているフロントエンド(画面表示)の超有名JavaScriptライブラリ。

    • HHVM (HipHop Virtual Machine): 上述したHack言語やPHPを高速実行するための仮想マシン。 

    PHPの学習において、最も有名で実践的なステップが「ひとこと掲示板(BBS)」の作成です。

    これを作ると、「画面に入力された文字を受け取る(HTMLフォーム)」「データを保存する(ファイルまたはデータベース)」「保存されたデータを画面に一覧表示する」という、Web開発の基本がすべて学べます。

    今回は、環境構築(XAMPPなど)が完了していれば、コピペするだけで1ファイルで動く「簡易ファイル保存式掲示板」のコードを用意しました。

    📋 1ファイルで動く!PHP掲示板コード

    htdocs フォルダの中に bbs.php という名前で保存し、ブラウザで http://localhost/bbs.php にアクセスして試してみてください。

    php

    <?php
    // 保存するファイルのパス(同じフォルダに自動作成されます)
    $dataFile = 'data.txt';
    
    // ① 【投稿処理】送信ボタンが押されたときの処理
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        // 入力データの取得と安全対策(エスケープ処理)
        $name = isset($_POST['name']) ? htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8') : '名無しさん';
        $message = isset($_POST['message']) ? htmlspecialchars($_POST['message'], ENT_QUOTES, 'UTF-8') : '';
    
        // メッセージが空でなければ保存する
        if ($message !== '') {
            // 保存する行(名前, メッセージ, 投稿日時)を作成
            $date = date('Y-m-d H:i:s');
            $postedLine = "{$name}\t{$message}\t{$date}\n";
    
            // ファイルの末尾に追記して保存
            file_put_contents($dataFile, $postedLine, FILE_APPEND | LOCK_EX);
            
            // 二重投稿を防ぐためにページを再読み込み(リダイレクト)
            header('Location: bbs.php');
            exit;
        }
    }
    
    // ② 【読み込み処理】保存されているデータを取得
    $posts = [];
    if (file_exists($dataFile)) {
        // ファイルを1行ずつ読み込んで配列にする
        $lines = file($dataFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        // 新しい投稿が上にくるように順番を逆にする
        $posts = array_reverse($lines);
    }
    ?>
    
    <!DOCTYPE html>
    <html lang="ja">
    <head>
        <meta charset="UTF-8">
        <title>PHP簡易掲示板</title>
        <style>
            body { font-family: sans-serif; max-width: 600px; margin: 20px auto; padding: 0 10px; }
            .post { border-bottom: 1px solid #ccc; padding: 10px 0; }
            .name { font-weight: bold; color: #333; }
            .date { font-size: 0.8em; color: #666; margin-left: 10px; }
            .message { margin-top: 5px; white-space: pre-wrap; }
            form { background: #f9f9f9; padding: 15px; border-radius: 5px; margin-bottom: 20px; }
            input[type="text"], textarea { width: 100%; padding: 8px; margin-bottom: 10px; box-sizing: border-box; }
            button { padding: 10px 20px; background: #007bff; color: white; border: none; border-radius: 3px; cursor: pointer; }
        </style>
    </head>
    <body>
    
        <h1>ひとこと掲示板</h1>
    
        <!-- 投稿フォーム -->
        <form action="bbs.php" method="POST">
            <label for="name">お名前</label>
            <input type="text" id="name" name="name" placeholder="名無しさん">
            
            <label for="message">メッセージ</label>
            <textarea id="message" name="message" rows="4" required placeholder="ここにメッセージを入力してください"></textarea>
            
            <button type="submit">投稿する</button>
        </form>
    
        <h2>投稿一覧</h2>
        <div class="posts-list">
            <?php if (empty($posts)): ?>
                <p>まだ投稿はありません。</p>
            <?php else: ?>
                <?php foreach ($posts as $post): ?>
                    <?php 
                    // タブ区切りでデータを分解
                    list($p_name, $p_message, $p_date) = explode("\t", $post); 
                    ?>
                    <div class="post">
                        <span class="name"><?= $p_name ?></span>
                        <span class="date"><?= $p_date ?></span>
                        <div class="message"><?= $p_message ?></div>
                    </div>
                <?php endforeach; ?>
            <?php endif; ?>
        </div>
    
    </body>
    </html>
    

    コードは注意してご使用ください。

    💡 このコードから学べる重要なポイント

    1. $_POST(データの受信): フォームから送信された中身をPHPで受け取っています。

    2. htmlspecialchars(セキュリティ): 悪意のあるJavaScriptコードなどが書き込まれても、安全な文字列に変換して無効化します(XSS対策)。

    3. file_put_contents と file(データの保存と読込): 今回は手軽に試せるよう、テキストファイル(data.txt)を使ってデータを読み書きしています。

    次のステップ(本格的な開発へ)

    この簡易掲示板が動いたら、次は以下のような機能を追加してアップグレードしていくのが一般的なPHPの学習ロードマップです。

    • データベース(MySQL / PDO)への移行

      1. : テキストファイルではなく、SQLを使って本格的にデータを管理する。

    • 削除機能・編集機能の追加: 投稿ごとに削除ボタンをつけ、パスワードが一致したら消せるようにする。

    • ユーザー認証(ログイン機能): Facebookのように、アカウント登録した人だけが投稿できるようにする。

    PHPで「掲示板」や「Webアプリ」を作れるようになるための、挫折しない実践的な学習法を3つのフェーズに分けて解説します。

    プログラミング学習の最大のコツは、「教科書を丸暗記する前に、未完成でもいいから動くものを1つ作る」ことです。

    🗺️ PHP習得の3ステップロードマップ

    【基礎固め】Progateで文法をサクッと体験(1〜2週間)
          ↓
    【実践開発】1ファイルで動く簡易掲示板を作る(2〜3週間)
          ↓
    【本格開発】データベース(MySQL)と連携させる(1ヶ月〜)
    

    🛠️ 各フェーズで「やること」と「学習のコツ」

    フェーズ1:まずは基礎文法(目安:1〜2週間)

    本を最初からじっくり読むと高確率で挫折します。まずはゲーム感覚で手を動かせるオンライン教材を使いましょう。

    • やること:

      • 変数、条件分岐(if)、繰り返し処理(for)、配列を学ぶ。

    • おすすめツール:

    • 💡 コツ: 「なんとなくわかった」時点で次に進んでOKです。100%暗記する必要はありません(プロも毎回検索しています)。

    フェーズ2:小さな「成果物」を作る(目安:2〜3週間)

    文法が分かったら、先ほど紹介した「簡易掲示板」のように、実際に動くものを手元のパソコン(XAMPP環境)で作ります。

    • やること:

      • フォームから入力された文字を画面に表示する。

      • 送信されたデータをテキストファイル(.txt)に保存・読み込みする。

    • 💡 コツ: まずはコードのコピペで構いません。動いた後に「この1行を消したらどうなるか?」「文字の色を変えるにはどこを触ればいいか?」とコードをいじって実験するのが一番不具合(バグ)の解決能力に繋がります。

    フェーズ3:データベース(MySQL)との連携(目安:1ヶ月〜)

    本格的なWebアプリは、データをテキストファイルではなく「データベース(DB)」で管理します。ここをマスターすればWebエンジニアの基礎が完成します。

    • やること:

      • SQL(データベースを操作する言語)の基本(SELECT, INSERT など)を覚える。

      • PHPの 「PDO」 という仕組みを使って、データベースに掲示板のデータを保存する。

    • おすすめの教材(書籍):

      • 『よくわかるPHPの教科書』(たにぐちまこと著)※データベース連携の解説が非常に丁寧です。

    🚀 挫折しないための3つのアドバイス

    1. エラーは「宝の山」と知る

      • 画面が真っ白になったり、英語のエラー文が出たりしても焦らないでください。エラー文をそのままGoogleやAIに貼り付ければ、9割は一瞬で解決策が見つかります。

    2. 「完璧主義」を捨てる

      • 最初から「Facebookのようなすごいサイト」を目指すと挫折します。「お名前と一言だけが表示される世界一シンプルな掲示板」から始め、少しずつ機能を追加していきましょう。

    3. エディタにこだわる

      • メモ帳ではなく、VS Code(Visual Studio Code) という無料アプリを使いましょう。書き間違えを自動で教えてくれるため、タイポ(打ち間違い)によるエラーが激減します。

    PHPの文脈における「天才プログラマー」といえば、何よりもまずPHPの生みの親であるラスマス・ラードフ(Rasmus Lerdorf)氏が挙げられます。 

    彼が天才、あるいは「伝説」と呼ばれる理由は、その圧倒的な開発エピソードにあります。

    1. 始まりは「自分のオンライン履歴書」のためだった

    1994年当時、ラスマス氏は「自分のオンライン履歴書に、何人がアクセスしたかを簡単に数えたい」という非常に個人的な目的のために、C言語で小さなプログラムを作りました。
    これがPHP(当初の名前は Personal Home Page Tools)の原型です。 

    当時のWebは静的なHTMLが主流で、Webページを動かすには複雑なC言語やPerlのコードを「CGI」という仕組みで動かすしかなく、開発者にとって悪夢のような時代でした。そこに彼が作った「HTMLの中に直接埋め込める簡単なスクリプト」が登場したことで、世界中の開発者が熱狂しました。 

    2. 「プログラミング言語を作るつもりはなかった」

    驚くべきことに、彼は当初「PHPをプログラミング言語にするつもりは全くなかった」と公言しています。
    彼は「プログラミングを減らすためにプログラミングをしていた(プログラミングの手間を省くための道具を作っていた)」だけであり、ツールがあまりにも便利だったため、コミュニティの手によって自然発生的に本格的なプログラミング言語へと進化していきました。 

    🌐 PHPの世界を拡張した他の天才たち

    ラスマス氏が作った土台を、さらに化け物級の言語へと進化させた「天才」たちがいます。

    • アンディ・グトマンズ(Andi Gutmans) & ゼブ・スラスキー(Zeev Suraski)

      • 1997年、PHPの根本的な処理速度を向上させるために、コア部分を完全に書き換えた 「Zend Engine(ゼンド・エンジン)」 を開発した二人組です。二人の名前(AndiとZeev)を合わせて「Zend(ゼンド)」と名付けられました。このエンジンのおかげで、PHPは大量のアクセスに耐えうる言語になりました。

    • マーク・ザッカーバーグ(Mark Zuckerberg)

      • ご存知Facebook(現Meta)の創業者です。学生時代、彼はPHP(当時はPHP 4)を使って最初の「thefacebook.com」をわずか数週間で書き上げ、世界最大のSNSの土台を作りました。

    💡 天才たちの共通点

    彼らに共通しているのは、「最初から高尚なシステムを作ろうとしたのではなく、目の前の『不便』や『作りたいもの』を最速で形にするためにコードを書いた」という点です。

    あなたが今学ぼうとしている「掲示板」も、まさに彼らが初期のWebの世界で「こんなのあったら便利だな」と作り始めたシステムそのものです。

    PHPは、Web開発に特化したオープンソースの汎用プログラミング言語(スクリプト言語)。

    画像
     
     
    34old 🇯🇵 Engineer/Musician/Researcher/Author 科学と愛を融合させたい。日蓮、松本清張氏、三島由紀夫氏、東野圭吾氏の作品をよく読み様々な学問分野の執筆をします。 長編執筆中。AIと2500万文字突破。

    あなたへのおすすめ