【PHP入門徹底ガイド】初心者のための学習ロードマップ


【PHP入門徹底ガイド】初心者のための学習ロードマップ

6年前に PHP 学習で失敗した私、大島。

その時経験した "時間的ロス"、 "Bigストレス"、 "モチベーション急降下" を踏まえ、 PHPの学習ロードマップを作成。 皆様には私と同じ過ちを踏まないよう、 "いい感じの学習ロード" をお進み頂ければと思います。

一度は挫折しかけたプログラミング(PHP)も、今では API を操作して、欲しいデータを取得したり、保存したり、基本的なことはできるようになりました。 現在は "テクニカル Web ライター" として、 "プログラミング" のある生活を送っています。

目次
  1. [PHP入門徹底ガイド]初心者のための学習ロードマップ
  2. PHPと私達の関係を確認しよう
  3. PHPとデータベース(MySQL)は同時に学習すべき?
  4. PHPの学習ロードマップ
  5. PHPってどんな言語?なぜ人気があるの?
  6. PHPとは
  7. PHPプログラム
  8. PHPの特徴
  9. PHPを学ぶメリット
  10. PHPを体験する
  11. まずはPHPの開発環境を整えよう
  12. 初心者が効率よくPHPを学習するための順番
  13. ステップ1.無料学習サイトでPHPに触れてみる
  14. ステップ2.PHPでとにかくコードを書いてみる
  15. ステップ3.プログラミングスクールでPHPを極める
  16. まとめ
  17. 番外編
  18. PHPとPythonとRuby
  19. GitHubとPHPとRuby...
  20. 本稿でご紹介したPHPプログラム

[PHP入門徹底ガイド]初心者のための学習ロードマップ

PHPと私達の関係を確認しよう

image

少し本題のロードマップに入る前に、 私達と "PHP" の関係を確認。 "PHP" と聞くと、 「WordPress」 や 「Webアプリケーション」、 「エンジニア」 というキーワードを連想する方が多いと思います。

そして 「WordPress」 を連想した方は 「PHPできたら WordPress を自由にカスタマイズできるんだろうな...」、 「Webアプリケーション」 を連想した方は 「PHP できたらショッピングサイトとかも作れるんだろうな...」、 「エンジニア」 を想像した方は 「PHPできたら安定した職に付けるんだとうな...」 と思われたかも。

確かにこれらのイメージは間違っていないでしょうが、 現地点のスタートから "ゴール" までの道のりはどうでしょうか? 「参考書を元に学習を進めればOK」 と思われていませんか?

スタート地点のスキルには個人差があると思いますが、例えば "WordPressをカスタマイズできるようになる" レベルになるためには、以下の項目をクリアしておく必要があるでしょう。

image

「あれっ、 PHP だけマスターすれば WordPress をカスタマイズできるようになるんじゃないの?」 と思われた方もいらっしゃいますか。 WordPress は、確かに PHP を元に駆動していますが、データの保存や読み込みには "データベース(MySQL等)" を使用していますし、 WordPress 自体にも特有の 機能Function があります。

つまり "PHP" だけをマスターしても WordPress を自由にカスタマイズできませんし、 PHP や WordPress の参考書を見るとほとんどの場合で 「PHP + データベース」 となっています。 要は、 PHP と MySQL はセット。確かに PHP と MySQL はセットでよく使われますし、 セットで学習する方が実用的なスキルを身につけられます。しかし、この進め方、本当に正しいでしょうか?

少し "PHP" と "自分" の関係を整理して、次のセクションに進んでみましょう。

【余談 PHPのマインドリセット】

Java や C++ というと "難しい言語" というイメージをお持ちの方も多いと思います。一方、 PHP は WordPress や Yahoo!、 Facebook などでも使われているので、なんか身近な感じがして自分でも扱えそうな気がする...と思われている方も。。。実はこの思考パターン、危険です。

理由は、 PHP はどちらかというと Java や C++ よりなコード、 Ruby や Pytho、 Swift に比べてコードに馴染みにくい特徴があります。

「あれっ、 PHP 簡単そうに思えたのに、思ったほど頭に入らない、分からない、エラーが出る」 となると、精神的ストレスを抱えてしまいますので、できればこうならないように予め警戒して PHP をはじめる方が、低ストレスで学習を進められるでしょう。要は気持ちの持ちよう。

PHPとデータベース(MySQL)は同時に学習すべき?

image

私は過去に 「PHP + MySQL」 の本で失敗していますので、 「 PHP + データベース 」 を一緒に学習する方法をあまりオススメしません。個人的には PHP が "楽しい" "おもしろい" と思えてから、 MySQL を学習してもいいと思います。

【データベースの勉強を後回しにしてもイイと思う理由】
  • データベースに対して慣れていない
  • データの保存・読み込みには、 PHP や MySQL をはじめ、 HTML の知識も必要
  • PHP だけでも楽しめる
  • PHP と MySQL を同時に学習すると、大きなストレスがかかる

1番目の「データベースに対して慣れていない」は、日常生活でエクセルを使うことはあっても、データベース、使いませんよね。内容的には "エクセル" も "データベース" も似ていますが、 「データの保存」 や 「データの読み込み」 となると... データベースの取り扱い、ちょっとイメージできないと思います。 つまり "PHP" もはじめて、 "データベース"もはじめてとなると分からないこと、知らないことの領域が広すぎて、初期学習には大きな負荷が...この点を踏まえると、 MySQL は後回しで、まずは "PHP" を楽しめばいいと思いますね。

2番目の "HTML知識も必要" というのは、例えばユーザー登録画面を想像してみて下さい。 画面上で「名前」や「パスワード」などを入力して、それがそのサイトのデータベースに保存されます。この時入力データがデータベースに送信されるわけですが、そのデータの受け渡しには <form> タグが使用。そして 「名前」 や 「パスワード」 の情報であることをデータベースに伝えるために name = "user_name" などの属性が使われます(下図参照)。

HTMLの入力フォーム例

どうですか、スッと理解できましたでしょうか? データベースを使用しない PHP だけの処理でも上図の様なコード構成になりますが、ちょっとストレス掛かりますよね、実際には CSS の Class や id などの情報も <form> 内に加わってきますので、もっと分かりにくくなるでしょう。つまりデータベースの取り扱いには、 HTML の "常識化" は必須、ただしいきなり誰でも HTML マスターに成れるわけではないので、少しずつ慣れていけば OK でしょう。

3番目の "PHP だけでも楽しめる" 、多くの参考書が 「PHP + データベース」 を使って ユーザー管理システム や SNS 、ショッピングサイト などの事例を紹介していますが、個人的にはこれハイレベルです。まずは "PHP" を楽しんでから、「じゃあ、そのデータ、保存したり、引用したりして自由に扱いたいよね」 と思えてから "データベース" をはじめても OK と思います。 株価や 天気などの APIデータを使うと、今の情報を Webサイト内に取り組むことができ、取り扱える情報の "質" と "幅" が一気に広がります。

Yahoo API を使って京都市上京区の降水確率予測データを取得&表示している例

以上の点から本稿では "PHP" に絞って学習ロードマップをご紹介させて頂きます。

PHPの学習ロードマップ

  1. PHPのことを知る
  2. PHPを試す
  3. PHPの開発環境を整える
  4. PHPのコードを自分で書いてみる
  5. PHPの基本文法を理解
  6. たくさんのPHPプログラムを体験してみる
  7. サンプルを元に自分なりにアレンジしてみる
  8. 何か問題解決できそうなことがあれば試してみる

どの言語にも言えることと思いますが、 「この通り学習すれば大丈夫」 という保証はありません。この学習ロードマップ、一度は PHP で失敗し、克服できた人(私)の一例としてご参照下さい。

まず上記リストの "1.知る"" と "2.試す" で、 PHP に対するモチベーションを UP 。そして少々時間と手間のかかる "3.PHPの開発環境" をクリア。

開発環境はいくつかありますが、情報量が多く扱いやすい "XAMPP" というソフトで PHP を実行できるようにし、 "Visial Studio Code" でプログラムを編集できるようにすれば OK とします。

そして PHPコードを編集できる、実行できる環境になったので "4.PHPを書いてみる" と、 PHP の特徴や楽しさを実感でき、さらにモチベーションが上がるはず。あとは PHP の基本文法を確認し、学習サイトやサンプル集を元に PHP を試したり、アレンジし、ナニができて、ナニができないか整理。その上で 「これ、 PHP でできないかな?」 ということにチェレンジできれば PHP の基礎はクリアで、データベースを試したくなると思いますね。

【余談 データベースって、そんなに大変なの?】

今回参考書ではよくセットになっている "データベース" の項目を飛ばし、 なんだか難しいイメージを発信している感じがしますね。 私は今まで PHP をはじめ、 Java や Ruby、 Python、 Swift、 JavaScript などの言語を学習してきましたが、 PHP ほど早い段階で "データベース" を扱う言語はありません。

まず各プログラミング言語の基礎レベル参考書に "データベース"、ほとんどのケースで出てきません。多くの参考書は、各言語の基本文法や関数、クラス、オブジェクト指向、サンプルコードのことで一杯。例えば Ruby でデータベースが登場してくるレベルといえば、 Ruby on Rails というフレームワークの参考書で登場してきたり、 Python でも Django などのフレームワーク・レベルで登場。

このように他の言語と比べると、 「PHP + データベース」 って当たり前のように参考書で紹介されますが、実はそれスゴくレベルの高いことをやっているんですね。なので 「PHP + データベース」 の参考書をクリア出来た方は凄いと思いますし、クリアできなくてもダメじゃない。参考までにデータベースに"名前"と"年齢"を追加するだけのフローを考えると以下のように。

"名前"と"年齢"をデータベースに追加するだけのフロー

どうでしょうか、HTML、 PHP、 phpMyAdmin と複数の要素が関連し、上手く連携することでデータベースに "Data" が追加されます。 1箇所でも間違っていればデータベースに "Data" を追加することはできません(´口`)

データベースを扱えるようになると、確かに処理できる量や幅も広がりますが、まずは PHP を楽しむこと、楽しいと思えることも大事ですよね。 WordPress でも 「PHP+データベース」 がセットで使われているので PHP の基礎というとこの調子かもしれませんが、 "PHP" というプログラミング言語自体を楽しむことを忘れないようにしたいですね。

それでは学習ロードマップを順番にご紹介していきたいと思います。

PHPってどんな言語?なぜ人気があるの?

PHPとは

image

PHP の元を作った ラスマス・ラードルフさん(img: wikipedhia

"PHP" は Ruby や Python と違って、 "PHP" という新しいプログラミング言語を作ろうと思って作成されたのではなく、 C言語で書かれたプログラムの延長線上で登場した言語。

時は 1994年、グリーンランド出身のラスマス・ラードルフさんは、 「Webページをもっと動的に扱えないかな...」 と考え、 C言語製の CGIプログラム: Personal Home Page Tools を開発。 そして 1995年に GPL ライセンスのもと PHP Tools を公開し、それを利用する人が増えて、改良が繰り返される中、 PHP 言語が完成。 1995年に最初の PHP が登場して、現在(2020.01)はバージョン 7.4が最新で、 2021年にはバージョン8がリリース予定と時代と共に進化している言語になります。

各言語の開発意図を復習
  • PHP ・・・ Webページをもっと動的に、アクティブにしたい
  • Ruby ・・・ たのしいプログラミング言語にしたい
  • Python ・・・ 読みやすい、扱いやすいプログラミング言語にしたい

PHP も Ruby も Python も Webアプリケーションを作ることが可能ですが、各言語のコンセプトって全然違ってきますよね。それに伴ってプログラムの書き方が違ってきたり、開発手順が違ってきたりします。

PHPプログラム

image

PHP の if文 の例

PHP は、 C言語をベースにした "PHP Tools" がスタートで進化し、今の PHP という状態。 "C" 由来ということで PHP には、 Ruby や Python に比べて "ちょっと読みにくい" "イメージしにくい" というところもあるでしょう。例えば、 PHP のコード内には $ドルマーク;セミコロン=>やじるし といった記号が頻繁に登場してきます。

どのプログラミング言語でも記号は意味を持つものですが、 PHP はコードを改行する毎に ;セミコロン が必要だったり、 PHPコードの最初と最後には <?php ... ?> が必要だったりと、 Ruby や Python 経験者からするとやや煩雑に感じるところも。

しかし、それでも PHP が広く普及しているのには以下のような理由があるからと考えられます。

PHPの特徴

image

  • HTMLコードも機能する
  • レンタルサーバー(Apacheサーバー)上で動く
  • データベース管理ソフト phpMyAdmin が使える

最初の PHP の特徴は、 "HTMLコードも機能する" という点。 Ruby や Python の中で 「 <p>Hello World</p> 」 と書いても へっ? って感じですよね。 PHP の場合は HTMLファイル同様に 「 <p>Hello World</p> 」 を処理・出力できます。 この機能によって Webページを動的に、アクティブに操作でき、 Webアプリケーションの開発を容易にしています。 同じ "アクティブ" という点では、 JavaScript も似た意味を持ちますが、 PHP の方は処理内容を面に出さずに実行可能。また JavaScript に比べると、コードは簡潔。

上図は現在時刻を取得する JavaScript と PHP コードの比較

上図はブラウザ上の処理コード、 PHPは処理過程を隠せます。

"2.レンタルサーバーで動く" については、 当たり前のように思うかもしれませんが Ruby や Python をレンタルサーバー(Apache) で動かそうと思うと一手間、二手間必要に。 PHP に限っては、 HTML のように 〇〇.php ファイルを保存し、その URL にアクセスすれば OK という手軽さ。

レンタルサーバーに PHP ファイルをセットして、実行した様子。 WordPress プロジェクトがあっても 〇〇.php は個別に動かせます。

また自分のパソコンでプロジェクトを開発する時、 PHP の場合は "XAMPP" という開発キットが無料で利用でき、 PHPコードの変更内容が即ブラウザに表示されます。一方、 Ruby や Python の場合は、 rails serverpython 〇〇.py runserver という方法でコードの変更を確認するのが一般的。つまり PHP を使った開発は、スピーディー。

最後の "phpMyAdmin"、これはデータベースをブラウザ上で管理する非常に優れたソフトで、データベースの取り扱いを劇的に簡単にしてくれています。

image

phpMyAdminの例。SQL文を使わなくてもテーブルの追加や編集、セルのデータ操作ができる。

Ruby や Python でデータベースを扱う場合は、コマンド画面でテーブルを作ったり、列や行を操作したりするようになり、 SQL構文を知る必要も出てくるんですね。 PHP には、 phpMyAdmin があるので SQL文 を知らなくてもOK。学習初期でもデータベースの取り扱いが容易で、 アプリの開発もスムーズに。 また多くのレンタルサーバーから phpMyAdmin が利用できるので、直ぐにデータベースを構築することができます。

他にも PHP の特徴あると思いますが、主だったところは上記のような感じでしょう。

こうした PHP の特徴を踏まえ PHP は広く普及していると考えられますし、 2003年からリリースされていますコンテンツ管理ソフトの WordPress の影響も PHP 普及&需要に強い影響を与えていると考えられますね。現在 WordPress は、世界の Webサイトの 3割強で採用され、 Webサイトやブログなどの開発基盤を助けてくれています。

PHPを学ぶメリット

image

これまでの PHP に関する情報を整理して、改めて PHP を学ぶメリットを確認してみましょう。

  • Webページ上で動的な処理、動的なデータを扱えるようになる(演算や株価取得など)
  • レンタルサーバーなどで直ぐに試せる
  • データベースと連携できる
  • 広く普及しているので仕事にできる
  • 社会に浸透しているので、当面は技術を活かせる
  • WordPressをカスタマイズできるようになる
  • 社会問題に挑戦できる

大抵の場合は "学ぶ目的" = "学ぶメリット" になると思いますが、こちらではなんとなく "PHP" という方用に情報整理。

まず PHP のスキルを身につけたら、 Web上に表示するデータや画像を"静的(同じ)"なものではなく、 "動的(変化)"なモノを取り扱い可能。世の中の多くの情報は常に変化していますので、動的なデータを表示することでコンテンツの "質" を高めることができるでしょう。

例えば常に動くお天気の情報。

image

Map: Yahoo 天気 数値リストは、 Yahoo API を使って降水予測のデータを取得した様子。

例えば上図は京都市上京区の 5分毎の降水確率を出力していますが、これだけだったら Yahoo!天気 ですよね。 PHP の凄いところは、この降水確率や日付といった "データ" を自動的に記録したり、演算できること。いろいろ活用はあると思いますが、例えばお店のホームページを想像。 「イオンモールの駐輪場はどこだ? 有料?」 といったことをユーザーがスマホで検索。一定情報の表示、通常はこれで終わりですが、ココで 「もうすぐ雨が降りそうです、雨具をお忘れなく」 とポップアップ表示してくれたらユーザーは天気を調べなくても安心して買い物に出かけられます。

PHPで店舗エリアの降水確率データを取得し、雨が降りそうだったらポップアップで雨予報を表示する例

こんなふうにチョットしたことかもしれませんが、必要な情報が追加されることでユーザーのストレスを軽減し、お財布の紐も... つまり売上アップに期待できますね。こうした "今はない新しいサービス" の発想って、 Web のことやプログラムのことが分かっていないと思いつきませんよね。つまり PHP に限った話ではありませんが、ホワイトカラーを始め全社会人は "プログラム" 知っている方が社会が良くなると個人的に考えます。

「もう Web って必要なものは揃っているでしょ、"ホームページ"も"ブログ"も"ネットショップ"も...」 いえ、まだまだ社会には問題が山積していて、大きい事例で見ると南アフリカの失業率 50%超え。この問題を Web で解決しようと南アフリカの青年たちが、 Web アプリ の Zlto を開発。

2019年第一四半期、 南アフリカの若者(15-24)の失業率は 55.2%、日本は 約4%。若者の高失業率は国の衰退化と治安悪化を招きかねません。幸せになれる人が少なくなります...

若者の失業率の上昇は南アフリカの問題だけではなく、スペインやイタリア、ギリシャも抱えている問題で、そして将来的には日本も"失業率の高騰"... ゼロではありませんよね。 PHPを学び、 Web サイトや Webアプリを開発できることのメリットは無限大、ということですね。

その他には PHP プログラミングができるようになると、他の Python や Ruby、 Swift も習得が早いと思います。 変数やデータ型、配列に辞書型、関数にクラスなどは、どの言語でも書き方さえ違えど扱い方は似ています。感覚的には車の普通免許を取ったら、乗用車を始め、軽四やミニバン運転できますよね、それと同じ感じです(個人談)。

あとはご承知と思いますが、 PHP は Java や C言語の様に、既に広く社会に普及していますので、働き口が豊富です。

image

求人サイト indeed で、各言語を検索キーにセットした結果の案件数比較(2020.02.01時点)

indeedで検索したところ、 PHP は現時点で 2番目に求人案件が多い結果。統計推移は分かりませんが、 2017.05 時点の 22,173件(*)と比較すると 1.5倍の求人案件増、すごいですね。

参考までに 60年前から今も現役で動いている "COBOL" という言語の求人案件もピックアップしましたが、 6,000近くの求人案件があります。人間、目新しい物に興味がいく一方で、こうした技術的なものは一度定着すると長く使える、使われることが分かりますね。 つまり PHP スキルを身につけると、安定して職につける確率が上がる、ということでしょう。

それでは PHP についての知識はこれぐらいにして、少し実際に PHP を動かしてみましょう。

PHPを体験する

降水確率のデータ取得をPHPで体験

こちらは住所(町名)を入力すると、そのエリアの降水確率を知らせてくれる内容。これをアレンジして、住所を入力するのではなく、お店の住所をセットしておけば "降水確率 30%" 以上の時は 「雨降るかも」 と Webページ上に表示すると、顧客満足度も UP しそう。

ビットコイン価格のデータ取得をPHPで体験

こちらは特に入力とかはないのですが、現在のビットコイン価格を表示してくれる内容。ブラウザを更新すると、その度に価格データを取得します。

仮想通貨ではなく、株価や為替などを取得したり、何か換算処理しても面白いかもしれませんね。

体重の計算をPHPで体験

非常にシンプルな内容ですが、 PHP の基本的な処理になりますので、こうした処理マスターしたいですよね。 HTML の基礎があれば大丈夫と思います。

こちらで紹介した PHPコードについては、文末に掲載しますので、よろしければ自分のパソコンで実際に動かしてみて下さい。

まずはPHPの開発環境を整えよう

image

さて先ほど "PHPを体験しよう" でご紹介したプログラム、自分のパソコンで動かしてみたいですよね。

PHPを自分のパソコンで実行しようと思うと "開発環境(実行環境)" が必用になります。 "XAMPP" というソフトをインストールすると PHP 動くようになりますので試してみて下さい。 Skype など使用していなく、スムーズにセットできれば 30分ぐらいで作業完了できると思いますよ。

合わせてテキストエディタがまだの方は、 Visual Studio Code いかがでしょうか?


【Windows】にXAMPPをインストールする様子(長いです)

Cortanaの検索画面に "xamppザンプ" と入力し、 "ダウンロード" をクリック。もしくは XAMPP公式ページにアクセス。

XAMPP ダウンロード・ページに移るといくつかのバージョンが紹介されていて、今回は新しい PHP 7.4.1 に対応したタイプをダウンロード。

実行ボタン。

XAMPPのインストールはシステムに影響を与えるよ、という内容の注意書き、 OK を押します。

インストールする範囲の選択で、 Perl や Tomcat は不要かもしれませんが、デフォルトのまま NEXT を押しました。

XAMPPのインストールおよび管理ディレクトリの設定です。デフォルトのまま Next。

WordPressなどのセットアップ方法を見ますか?の案内。 NEXT。

インストール中、 3、4分で終わると思います。

インストール中に 「セキュリティ的に Apache 使っても大丈夫?」 という警告が表示。 Apache の使用範囲を定めるものなので、プライベートとパブリック両方にチェックを入れて "アクセス許可"。

Finish!

XAMPP のインストールが無事完了すると、 XAMPPのコントロールパネルが登場。上図のように "Apache" と "MySQL" の項目を Start。すると再びセキュリティに関するダイアログが(下図)。

MySQL通信の使用範囲を許可する内容のダイアログになりますので、プライベートだけ、もしくは両方にチェックを入れて "許可"。すると上図のように Apache と MySQL が緑色になり、起動。ダメだった時は、赤色のエラーが表示されます。

Apacheが起動しましたので、ブラウザに ```127.0.0.1:80``` もしくは ```localhost``` にアクセス。すると上図のような XAMPP のウェルカム画面が登場。この画面は、 ```C:\xampp\htdocs``` の中の ```index.php``` が反応した結果。

試しに ```index.php``` を上図の様に変更してみると、変更が反映されていることが確認できます。

データベースの phpMyAdmin へのアクセスは、 ```http://localhost/phpmyadmin``` にアクセスすれば OK。 XAMPP 初期時はユーザーのパスワードがないので直ぐにログインできます。


【XAMPP初期のユーザー情報】
ユーザー名: root
パスワード: なし

試しに何か適当なファイルをセットしてみると、 PHP が動いていること、確認できました。

これで Windows10 への PHP設定は OK でしょう。

【MAC】にXAMPPをインストールする様子(長いです)

まずは XAMPP の公式ページにアクセスして、 「XAMPP for OS X」 をクリック。アプリケーション・ソフトをダウンロードします。

ダウンロードした 「xampp-osx-7.4.1-1-vm.dmg」 をダブルクリックするか、上図のように XAMPPソフトをアプリケーション・エリアにドラッグ&ドロップして Mac PC に XAMPP をインストール。

上図のようにアプリケーション・フォルダを開くと 「XAMPP」 が追加されていますので、ダブルクリック。

XAMPP起動にあたってアクセス許可を求められますので、PCログインパスワードを入力して "OKボタン"。

すると XAMPP のコントロールパネルが起動しますので、 「STARTボタン」 で XAMPP を起動。 1分ほど待つと Status の色が緑色に変わり、 XAMPP が動き出したことが確認できます。 Status の下に表示された番号を使って、 XAMPP の Apacheサーバーにアクセスできます。 IP Address をコピーしましょう。

先ほどコピーした XAMPP の IPアドレスをブラウザにコピペ、すると XAMPP のウェルカム画面が登場。このウェルカム画面を制御しているファイルは、 フォルダ: XAMPP/htdocs の下に。先ほどの XAMPP コントロールパネルから確認していきます。

XAMPP コントロールパネルのメニュータブを "Volumes" に選択し、 「Mount」 ボタンをクリック。

すると上図のように XAMPP 内のフォルダにアクセスできるようになり、 lampp フォルダが登場。 lampp の中に入ります。

lampp の中のフォルダ: htdocs 内に先ほどの XAMPPウェルカム画面の制御ファイルがあります。 htdocs に入りましょう。

index.php が XAMPP ウェルカム画面を制御中、こちらを Visual Studio Code などのエディタで開きます。

試しに元々書かれてあったコードをコメントアウトし、 echo "hello PHP"; などに書き換え。そして再び XAMPP の IPアドレスにアクセスすると、コードの変更が反映されたことが確認できます。つまりこちらに PHP ファイルを保存すればブラウザで確認可能、ということ。

データベースを制御する phpMyAdmin にもアクセスしようと、 http://IPアドレス/phpmyadmin にアクセスすると、上図のようなエラーが。これはネットワーク設定をまだ行っていないため。


【MacでXAMPPのphpMyAdminにアクセスしようとして発生したエラー】
アクセス禁止!
新しいXAMPPのセキュリティコンセプト:

は、要求されたオブジェクトへのアクセスは、ローカルネットワークから入手可能です。

この設定は、ファイル"で設定することができますのhttpd - xampp.conf " 。

ã‚µãƒ¼ãƒãƒ¼ã®éšœå®³ã¨æ€ã‚ã‚Œã‚‹å ´åˆã¯ã€ã‚¦ã‚§ãƒ–ç®¡ç†è€…ã¾ã§ã”é€£çµ¡ãã ã•ã„ã€‚

Error 403

Mac で XAMPP の phpMyAdmin にアクセスするには、上図のように XAMPPコントロールから 「Network」を選択し、リストに書かれている上部の 「localhost:8080 -> 80 (Over SSH)」 を選択し、 「Enable」 をクリック。

数十秒すると赤色マークが緑色に変わりますので、改めて http://IPアドレス/phpmyadmin にアクセスすると phpMyAdmin を開けました。尚、最初のユーザー設定は、 username: root 、 password: なし 、です。

これでレンタルサーバーがなくても自分のパソコンで PHP を操作したり、データベースを操作できますね。



初心者が効率よくPHPを学習するための順番

さあこれまで 『PHPの基礎知識』 『PHPの体験』 『PHPの開発環境』 を整えてきました。

次は実際に PHP でプログラムを作成したり、エラーに遭遇した時の対処法など学習進捗のコツをお伝えします。

ステップ1.無料学習サイトでPHPに触れてみる

PHPの学習、参考書もいいですが、コードがバラバラだったり、どこが大事か分かりづらかったりして "シンドイな" 、と思われた方もいらっしゃるでしょう。

そんな時は Web 上の学習サイトが分かりやすかったりしますよね。以下に無料で PHP を学習できる Webサイトをご紹介させて頂きます。

学習サイト 形式
ドットインストール 動画(PHP旧バージョン 5系を使用)
Progate タイピングモード(無料部分は限定的)
CodeCampus テキスト
Paizaラーニング 動画&インプット
Akichonプログラミング講座 YouTube

学習サイト 形式
PHP FOR KIDS タイピングモード
W3School テキスト
Learn-php.org テキスト
The Net Ninja YouTube

いくつか見て、試して自分にあったものを中心に利用してみると良さそうですね。個人的には英語サイトの 「PHP FOR KIDS」 が分かりやすいと思いました。説明文が少なく、テンポよく学習を進めていける感じです。

ステップ2.PHPでとにかくコードを書いてみる

参考書や学習サイトを元に PHP を書き始め、恐らく最初のうちは写経的にコードを写して、特に問題なく学習を進められると思います。 しかし、下図のようにテキスト通りコードを書いたつもりなのに上手くいかなかった時、どうしますか?

9行目の末尾に ; がないためにエラー

このエラー、 原因わかりますか?

エラー発生時の対策
  • エラー文を読んで、問題の行を確認する
  • もう一度最初からコードを見直してみる
  • もう一度テキストを見直してみる
  • 一晩寝て、翌日もう一回頑張ってみる
  • "teratail" や "Stack Overflow" で質問してみる

世の中には数多くプログラミング本やチュートリアル動画がありますが、エラー対策の参考書やチュートリアルってありませんよね。殆どの場合、自分でエラーを解決する、もしくは teratail や Stack Overflow からの返信に期待する、ということになりますが、時間かかりますし、モチベーション下がりますよね。

こうしたプログラミング学習では避けて通れない "エラー・ハンドリング"、最初のうちは 「先生」 を頼ってみるのはどうでしょうか?

ステップ3.プログラミングスクールでPHPを極める

スクール名 形式 タイミング 料金(税抜) 無料体験 ゴール その他
CodeCamp オンライン いつでも 148,000円〜 Web App の作成 入学金 ¥30,000 必要
TECH ACADEMY オンライン 定期募集 139,000円〜 PHP/Laravelで App開発 学割あり
Winスクール 教室 ? 96,000円〜 基礎から応用までコース多彩 入学金 ¥18,000 必要、 教材費別途要
ヒューマンアカデミー 教室 325,823円〜 CakePHP 入学金 ¥10,000必要

プログラミングスクールってたくさんあるイメージですが、 PHP については少ない印象を受けました。ザッと調べたところ全国対応のスクールは上記のように。

同じ PHP の学習でも、安いところと高いところでは "3倍" 近く値段が違ってきますね*。 また PHP の基礎をマスターした後の目標地点がスクール毎に異なり、 TECH ACADEMY では PHPフレームワークの Laravel までマスターしよう、という内容。実務に近い印象を受けますが、まったくのプログラミング初心者がフレームワークをマスターするまでは、それなりの覚悟が必用と思います。

「一人で学習していても、なかなか進まない...」 「データベースに挑戦しているが、上手くデータベースに接続できない...」 そんな時は "プログラミング・スクール" を頼ってみるのもいいかもしれませんね。どのスクールも無料体験を行っていますので、自分のニーズが達成できるか一度尋ねてみてはいかがでしょうか?

プログラミング・スクールによって受講期間が異なり、期間が長いほど割高傾向に。上記表では "受講期間" を無視して単純に受講に必用な最低金額を表示。尚、侍エンジニア塾の掲載は控えさせて頂きました。

まとめ

PHP学習ロードマップということで、 「PHPの基礎」 「PHPの体験」 「PHPの開発環境」 「PHPの学習ステップ」 をご紹介させて頂きました。

あとは個人個人、成したいことへの挑戦、となるでしょう。

  • 「PHPをマスターして、フリーランスとして受託開発したい」
  • 「PHPマスターして、 Webアプリをいろいろ作ってみたい」
  • 「エンジニアになりたい」

実際に CodeCamp というスクールで PHP をトライしている方は、

  • プログラミング難しいけど楽しい(2019.11.24)
  • プログラミング楽しくなって来た(2020.01.09)
  • codecamp楽しかった。なんとか転職先が決まりました(219.11.29)

という書き込みも(via テキストのひとこと掲示板より)。

ちょっとプログラミング・スクール気になっている方、一度 CodeCamp 覗いてみませんか? また無料体験については 公式ページ よりチェックしてみて下さい。

最後にプログラミング・スクールを利用する・・場合と利用しない・・・場合を図に書いてみました。イメージ的にご参考下さい。

image


Webサイト担当者としてのスキルが身に付く

無料カウンセリングはこちら

番外編

PHPとPythonとRuby

「なんとなくエンジニアになりたい」 「なんとなく Web を開発したい」 と思っている方にとっては、 「本当に PHP でいいのか?」 という迷いがあると思います。

個人的な意見になりますが、 Webアプリの開発については PHP 強いです。例えば現在 Webアプリを開発しようと思うと同時に、どのフレームワークを使おうか、という風に連想されるでしょう。 主だったフレームワークの特徴を比較すると以下のように。

フレームワーク プログラミング言語 特徴
Laravel PHP VueやBootstrap標準装備
Ruby on Rails Ruby プロジェクトファイルが扱いやすい
Django Python AI App開発できる

PHPの人気フレームワーク: Laravel には最初から Vue や Bootstrap が搭載。これは Rail や Django にはないことで、開発時間の短縮に寄与。 また今回いくつかのサンプルプログラムを作成していて、「 PHP は、 Rails や Django の "View & Control" の部分を普通にやってくれる」と実感。小規模な Web テストだったら PHP 使えるとムチャクチャ便利そうです。

以上より Web開発を楽しむのなら、やはり Web と相性のイイ PHP がベストと思いましたね。

Rubyについては、 PHPより簡単な言語で Webアプリをサクッと作れる、という印象。どちらが自分にあっているかは、実際に各言語を実行して確かめることをオススメしますね。

また個人的には日頃 Python を扱う時間が多いのですが、改めて PHP を実行してみると、楽しいです。 Python や Ruby とは違う "扱いやすい" 楽しさがあります。最初は $; 面倒だな、と思っていましたが、それはテキストエディタが補完してくれるので大丈夫。純粋に PHP 楽しく、アレコレ試してみたくなりました。

GitHubとPHPとRuby...

image

GitHubで公開されている言語別のリポジトリ数推移です。 PHP は JavaScript や Python のような派手さはありませんが、安定していますね。

data

GitHubのリポジトリ数を自動で調べたPythonコード

  # source   https://colab.research.google.com/drive/1VVKX_R1oZ8U1l0RsUCnOviiNpQlxxk4a#scrollTo=cvkXhYqwNEUM

import json
import requests
import csv
import time

year = ["2015","2016","2017","2018", "2019","2020"]
month = ["01","02","03","04","05","06","07","08","09","10","11","12"]
language = ["PHP", "Java","python", "ruby", "JavaScript"]

for l in language:
  print(l)
  for y in year:
    for m in month:
      check_point = y + "年" + m + "月"
      print(check_point)
      # https://api.github.com/search/repositories?q=created%3A2018-01-01+language%3ADart
      # https://api.github.com/search/repositories?q=created%3A" + 2018-01 + "+language%3A" + Dart
      url = "https://api.github.com/search/repositories?q=created%3A" + y + "-" + m + "+language%3A" + l
      response = requests.get(url)
      data = json.loads(response.text)
      x = data["total_count"]
      print(x)

      with open("5language_Data.csv", "a") as csvFile:
        fieldnames = [ "Language", "date", "count"]
        writer = csv.DictWriter(csvFile, fieldnames=fieldnames)
        writer.writerow({ "Language":l, "date":check_point,"count":x})
        csvFile.close()
        time.sleep(7)

本稿でご紹介したPHPプログラム

降水予測のPHPプログラム
  • Yahoo API Key が事前に必用

フロー: my_weather.html で住所を入力 → my_weather.php で入力された住所を 緯度経度に変換し、 Yahoo API Weather で降水予測を取得。そしてその結果を表示。

my_weather.htmlのコード

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
<h3>これから 1時間の降水確率を確認する</h3>
<form method="POST" action="my_weather.php">
<p>住所は?(町名まで)</p>
<input type="text" name="input_data" maxlength="20" placeholder="京都市上京区閻魔前町" size="25">
<br>
<button type="submit">確認する</button>
</form>
</body>
</html>
my_weather.phpのコード

<!-- 住所 -> 緯度、軽度 https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html -->

<h3>5分ごとの天気予測</h3>
<?php
$api_yahoo = "Yahoo API Key をセット";
$user_town = $_POST["input_data"];

$url_1 = file_get_contents('https://map.yahooapis.jp/geocode/V1/geoCoder?appid='. $api_yahoo. '&output=json&query='. $user_town);
$response_1 = json_decode($url_1, true);
$keido_ido = $response_1['Feature'][0]['Geometry']['Coordinates'];

$city = $response_1['Feature'][0]['Name'];
print '<h2> '.$city.' の 5分毎の降水確率</h2>';

$url_2 = file_get_contents('https://map.yahooapis.jp/weather/V1/place?coordinates='. $keido_ido. '&appid='. $api_yahoo. '&output=json&interval=5');
$response_2 = json_decode($url_2, true);
$data = $response_2['Feature'][0]['Property']['WeatherList']['Weather'];
$data_length = count($data);
print "<ul>";
for ($i=0; $i<$data_length; $i++){
    //print $i;
    $date = $response_2['Feature'][0]['Property']['WeatherList']['Weather'][$i]["Date"];
    $rainy = $response_2['Feature'][0]['Property']['WeatherList']['Weather'][$i]["Rainfall"];
    print "<li>";
    //print "日時: ".substr_replace($date,":",2);   結果 0255 、分かりにくい
    $hour = substr_replace(substr($date,8),":",2);
    $minute = substr($date,10);
    print $hour."時".$minute."分 ";
    print "予測雨量: ".$rainy."mm/h <br>";
    print "</li>";
}
print "</ul>";
?>
<!--
京都市上京区 緯度 35   経度 135
-->
ビットコイン価格を取得するPHPプログラム

フロー: bitFlyer の API にアクセスして、ビットコイン価格を取得。そして結果を表示。

btc.phpのコード

<h3>現在のビットコイン価格</h3>
<?php
$url = file_get_contents('https://api.bitflyer.jp/v1/ticker/?product_code=BTC_JPY');
$response = json_decode($url, true);
$btc_jpy = $response["ltp"];
echo "<h2>".$btc_jpy." 円</h2><small>(bitFlyer価格)</small>";
?>
体重を計算するPHPプログラム

フロー: weight.html で体重を入力し、 その入力データを weight.php で換算。

weight.htmlのコード

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>
<h3>PHP 入力結果を表示するサンプル</h3>
<form method="POST" action="weight.php">
<p>今、体重は何kg??
<input type="text" name="input_data_now" maxlength="3" placeholder="64" size="3"></p>
<p>目標は何kg??
<input type="text" name="input_data_goal" maxlength="3" placeholder="60" size="3"></p>
<hr>
<button type="submit">計算</button>
</form>
</body>
</html>
weight.phpのコード

<h3>入力頂いた体重</h3>
<?php
$weight_now = $_POST["input_data_now"];
$weight_goal = $_POST["input_data_goal"];

print '<h3>現在: '. $weight_now. 'kg</h3>';
print '<h3 style="color:red">目標: '. $weight_goal. 'kg</h3>';

$weight_plus_minus = $weight_now - $weight_goal;
print '<hr><h3>目標体重との差:'. abs($weight_plus_minus). ' kg</h3>';
?>


オシママサラ
この記事を書いた人
オシママサラ
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp