PHPを習得したいけど具体的にどんな流れで何を勉強するのが良いの…?
という方に向けて、この記事では
僕が実際に独学でPHPを習得するまでに取り組んだ勉強内容や利用した本・サービス
を紹介していきます。
僕はスクールを利用せず、コツコツと独学を続けることで合計で約1年ほどをかけてPHPを習得することができました。
今回はその過程を時系列でご紹介し、最後に独学を経て感じたことをお伝えしたいと思います。
- これからPHPを独学で習得したいと考えている方
- PHPを独学で習得するまでにどのような勉強が必要なのかを知りたい方
- PHPの勉強でおすすめの書籍やサービスを知りたい方
- これから何かしらのプログラミング言語を学びたいと考えている方
プログラミングを習得するためには本当にたくさんのことを学ばなければいけません。
この記事を読むことで、具体的にどのような流れで、どういったことを学習する必要があるのかが分かるため、PHPを習得したいと考えている方はぜひ参考にして頂けると嬉しいです。
PHPの学習を終え、次はフレームワークの勉強がしたいという方はこちらをご覧ください。
PHPを独学で習得するまでの学習過程(ざっくり)
そもそもPHPって?
という方は以下をご覧ください。
そもそもPHPって?
PHPとは、Webアプリ開発ができるプログラミング言語の1つです。
HTML/CSSとの親和性が高く、見た目はHTML/CSS、プログラム的な処理はPHPといった組み合わせにより、インターネット上で動作するWebアプリケーション・サービスの開発ができます。
(例)ECサイト、掲示板サイトなど
また、PHPの特徴として以下のようなものが挙げられます。
- 他の言語と比較して習得難易度が低め(※個人的な意見ですが、簡単ではありません。)
- 仕事の案件が豊富
- Webサイト制作が可能なCMSの1つ、WordPressで利用されている
まずは僕が実際に取り組んだ勉強内容の流れをお見せします。
- HTML/CSS
- jQuery
- PHP
- SQL
- 【開発演習】予約システム
- その他(セキュリティ対策、綺麗なコードの書き方)
独学の場合、スクールに通うのとは異なり勉強するべき流れが不明確です。
僕も例にもれず、まずは思いつく流れで学習を進めていき、実際に開発をしようとしたときに
「これも知ってないと作れない!」
と気が付いては、学習内容を追加しつつ先に進んだという感じでした。
ちなみに、ですが!
上に並べた学習内容の中には、後回しでも良かった勉強や逆にこのときに取り組んでおけばよかったと感じた勉強がありました。
そうした「独学あるある」の非効率的な側面もお見せしつつ、勉強した内容や本などをお伝えしていきたいと思います。
PHPを独学で習得するまでに取り組んだ勉強
冒頭でもお伝えしましたが、僕が独学でPHPを習得するまでに費やした勉強期間は合計で1年ほどになる計算です。
会社に勤めながら学習をしていたのと、モチベーションが一時的に低下した時期もあったため、最終的にこのぐらいの期間を必要としてしまいました。
独学でもプログラミングを習得することは可能です。
それは断言できます。
しかし、そのためには多くの時間と努力を必要とします。
もし独学で学習するべきか悩んでいるという方がいたら、こちらの記事も参考にしてみて下さい。
HTML/CSS
一番最初に取り組んだのはWebアプリ開発においても不可欠となるHTML/CSSの学習でした。
プログラミング学習の第一弾の言語選びで悩まれる方も多いかと思いますが、僕は以下の記事でもお伝えしているように、最初はHTML/CSSを選択するのが良いと考えています。
このとき利用したのは、Progateという、恐らくプログラミング学習者ならばほとんどの方がネット上で目にするであろう有名な学習サービスでした。
スライド形式で学習 → 課題に挑戦
を繰り返すのが基本的な流れとなっているのと、HTML/CSSコースには「道場レッスン」と呼ばれる大きめの課題があり、僕は
- スライド学習×2週
- 道場レッスン初級×1回
- 道場レッスン中級×2回
- 道場レッスン上級×1回
という内容に3週間ほどかけて取り組みました。
その後、progateで学習した内容の総仕上げ&実践力の底上げとして、実際に存在するWebサイトの模写コーディングを4~5回ほど行いました。
ちなみにHTML/CSSに関しては参考にした書籍は特になく、progateと模写コーディングでスキルを磨きました。
jQuery
続いて学習したのはJavaScriptのライブラリの1つ、jQueryです。
こちらもProgateでスライド学習を2週ほどして、ようやくイメージを掴めたかなという手応えでした。
しかし実を言うと、このタイミングでjQueryを学習したことについて、PHPを習得するという観点からすると「後回しでも良かった」と感じています。
理由としては、PHPでWebアプリを開発する際、jQueryは必ずしも必須ではなく、プラスαの意味合いが強いためです。
当時はPHPのことをそこまで意識していなかったことに加え、アニメーションに関心があったことからjQueryに手を出しました。
しかし、PHPの習得という観点においては最適なルートではなく、まずは簡単なWebアプリを作成できるようになり、その後、表現力の幅を広げる目的でjQuery、厳密に言えばJavaScriptの学習に着手するべきと感じています。
また、このときはまだjQueryを使用するタイミングではなかったため、興味本位で勉強したけど結局使う機会を得られず、気づけばせっかく学んだことを忘れてしまいました。
興味が赴いたままに勉強できるのが独学のメリットですが、実際に使わないスキルはどうしても忘れてしまうのが人間なのだなと痛感しています。
使わないなりにも覚えておく工夫が必要と思いました。
そういうわけなので、jQueryの工程はPHPの習得において必須ではなく、どちらかと言えば寄り道に近いというのが正直なところです。
PHP
次にいよいよPHPの基礎学習に取り組みました。
このとき利用したのがPHP本格入門(上)という書籍でした。
PHPの書籍というといくつも出版されていてどれを選んでいいか悩む方も多いと思いますが、僕がこの本を手にしたひとつの基準が
基礎文法から始まり、オブジェクト指向やDB連携など実際のWebアプリに必要な知識を網羅的に学べる
という点でした。
この本を通じて
- 基礎文法
- クッキーとセッション
- DB連携
- セキュリティ対策
など、Webアプリ開発における必須知識を一気に学び通すことができ、個人的には良い本を選択できたと感じています。
独学あるあるですが、選ぶ書籍やサービスによってはいわゆる「知識の取りこぼし」が発生しがちです。
「知識の取りこぼし」というのは知識を完璧に理解することを指しているわけではありません。
その知識(概念)の存在をなんとなくでも知っているかどうか
ということを指しています。
「知識の取りこぼし」がある状態だと、「存在を知っていれば簡単に実装できるのに、知らないがゆえに遠回りな実装をしてしまう」ということが起こりがちなのです。
IT界隈ではこれを「車輪の再開発」と言ったりしています。
そして、独学でプログラミングを学んでいると情報源にどうしても偏りが発生してしまうため「知識の取りこぼし」が発生しやすいです。
これは仕方のないことではあるのですが、僕は出来る限り「とりあえず知っている」という状態を多く作っておきたかったのもあり、PHP本格入門を通じて網羅的に学習できて良かったと感じています。
SQL
PHPの学習を進めていく中で、Webアプリの開発にはデータベース(DB)操作が必須、つまりSQL文をある程度理解しておくことが必要だと気が付きました。
Webアプリに限らず、すべてのシステム・ソフトウェアでは必ずデータを扱っています。
このデータを管理するための仕組みがデータベースです。
そして、データベースを操作してデータの抽出・追加・更新・削除を行う為に使用されるのがSQLです。
PHPでWebアプリを作成する際にもSQLの記述が必須であることを知り、再びprogateに戻ってSQLのレッスンをひと通りこなしました。
このとき特に意識したのが、CRUD(クラッド)と呼ばれるデータ操作に関わる4つの文法です。
- Create …… INSERT文
- Read …… SELECT文
- Update …… UPDATE文
- Delete …… DELETE文
また、Progateと並行して以下の書籍で学習をすればSQLへの理解がより深まるかと思います。
【開発演習】予約システム
ここまでに
- HTML/CSSで見た目を作成する方法
- SQLによるDB操作方法
- PHPの基礎文法や必須知識
を学んできました。そして次はいよいよ実践練習の意味で「予約システム」の開発に挑戦しました。
いきなり「予約システム」…?
と思われた方もいるかもしれません。
というのも、ネットで調べていると「最初はTODOアプリや掲示板サイトを試しに作る」といった内容がよく見受けられるためです。
TODOアプリでもなく、掲示板サイトでもなく、いきなり予約システムを選んだのには理由があります。
実を言うと、PHPの勉強に取組む前に、PythonとそのフレームワークであるDjangoを勉強しており、このときにDjangoの練習課題としてTODOアプリを開発していたのでした。
※DjangoではSQLが書けなくてもDB操作ができるためこのときはまだSQLは未学習
(PythonもDjangoも結局ほとんど使わなくなったため現在はほとんど忘れてしまっています……)
そのため、PHPでは「TODOアプリではなく別のものに挑戦したい!」と考え、悩んだ末に僕がカラオケ好きなこともあり「カラオケ店を想定した予約システム」を開発してみました。
簡単ですが、実装した内容は以下の通りです。
- 会員登録機能
- ログイン機能
- カレンダーによる日付選択機能
- 予約機能
本来であれば予約機能に確認メール送信機能なども盛り込むべきだったのですが、このときはそこまで実装せず、「メールも送信する想定」で開発を行いました。
正直言うと、初めて学習した言語やフレームワークで開発するならTODOアプリのような最小単位のアプリがオススメです。
※最小単位=DB操作の基本であるCRUD(クラッド)が最小限に含まれる規模
このときもPHP本格入門を参考に、ログイン機能やセッション関係の処理も実装していきました。
【番外編】その他の学習について
以上がPHPを習得するまでに取り組んだ勉強内容です。
しかし、ここまで学習をする中で、他にも並行して学習していたことであったり、あるいはするべきだったことがいくつかあると感じており、ここからはそれらについてお伝えをしていきたいと思います。
セキュリティ対策
セキュリティ対策をしなくても、確かにWebアプリは作れます。
しかし、セキュリティ対策はWebアプリ開発における必須知識です。
大事なことなのでもう一度言います。
セキュリティ対策はWebアプリ開発において必須知識です。
僕もPHP本格入門で学習を進める中でその必要性に気が付き、PHPで開発演習に取り組み始める少し前あたりからセキュリティ対策についても勉強を進めていました。
ネット記事を少し見ているだけでも分かるのですが、Webアプリが普及するようになってから、いわゆるサイバー攻撃が急増しています。
Webアプリでセキュリティ対策を怠った場合、その被害の対象は、運営者や開発者に留まらず、Webアプリを利用しているユーザ、さらにはそのWebアプリをまったく利用したことがないユーザにまで及びます。
その一方、独学でプログラミングを勉強する場合、Webアプリにおいて最も重要と言っても過言ではないセキュリティ対策を疎かにしてしまう場合があります。
しかし、そうしたWebアプリを開発してしまうことは、個人情報漏洩など不特定多数の方々に甚大な迷惑をかけることに繋がってしまいます。
そのため、PHPに限らず、これから独学でWenアプリ開発ができるようになることを目指している方はセキュリティ対策の重要性について念頭に置くことをおススメします。
セキュリティ対策ってどうやって勉強するのが良いの…?
という方には以下の書籍が非常にオススメです。
こちらは通称「徳丸本(とくまるぼん)」と呼ばれており、Webアプリケーションセキュリティの第一人者である徳丸浩さんが手がけられた本です。
Webアプリへのセキュリティ攻撃についてサンプルコードを用いて分かりやすく解説されており、こちらを一読すれば、ひとまず最低限必要な対策については理解することができます。
600ページを超える、もはや辞書のような風貌の書籍ですが、Webアプリを開発したいのであれば必ず目を通しておきたい1冊です。
当ブログでもセキュリティシリーズと題してWebアプリで必要なセキュリティ対策方法について解説していますのでご興味のある方はぜひ一度ご覧ください!
綺麗なコードの書き方
こちらもリーダブルコードという書籍を読んでPHPと同時並行で学習を進めていました。
学習と言ってもリーダブルコードは比較的砕けた印象があり、またこの本でも記載があるように「ちょっと読み物に触れる」ぐらいの感覚で読み進めることができたため学習負荷は少なかったです。
綺麗なコード=読みやすいコード
と聞くと、「自分は個人開発しかしない予定だから関係ない」と思われる方もいるかもしれません。
しかし、実際にプログラミングをするようになると必ず起こるのが「1週間ぐらい前に自分で書いたコードが読めない」という現象です。
これは実装内容が複雑化するほど起こります。
身近な例で例えるなら「自分で書いたメモの字や構成がぐちゃぐちゃで読めない」に近いです。
リーダブルコードでは「一目見てそのプログラムが何を意味しているのかが分かる」ということに重点をおいて、綺麗なコードを書く方法が、比較的簡単に導入できる方法から「初学者にはちょっと難しいよ……」というものまで様々な切り口で解説されています。
そして、これは僕の体感ですが、この「綺麗なコードを書く方法」は
少しずつでしか自分の中に取り込めない、つまり時間がかかる部分
です。
そのため、ある程度プログラミングに慣れた、例えばPHPの基礎学習を終えた辺りから少しずつ読み進めると効率よく吸収できるのかなと考えています。
Git/GitHub
聞いたことがあるという方もいるかもしれませんが、Gitとはバージョン管理ツールのことです。
プログラミングをしていると、ふとしたときに過去のバージョンに戻したくなるときがあります。
あるあるなのが、「機能を追加しようとして他のプログラム部分までいじっていたら、直前まで正常に動作していた機能が動かなくなった」という状況です。
こうしたときにGitでバージョン管理を行っていると簡単に過去のバージョンに戻すことができて便利です。
また、最近では実際の仕事でもGitは必須ツールとなっており、将来的にIT企業への転職も考えているのであれば早い内から扱いに慣れておくのがオススメです。
僕もPHPの学習期間内には学習しなかったのですが、PHPの開発演習に入る少し前ぐらいに軽く触れて、Gitを使いながら開発を進めるのが理想的だったかもしれないと感じています。
ちなみにGitHubというのは、ものすご~く簡単に言うと、世界中のエンジニアがウェブ上で自身のソースコードを共有し合うためのサービスのことで、バージョン管理機能にGitを採用しています。
GitとGitHubの両方を学習できる書籍として、以下がオススメです。
独学でPHPを習得して感じたこと
独学でPHPを習得することができ、いくつか感じたことがあるためそちらをご紹介します。
一度にすべてを理解するのは不可能
これはPHPに限った話ではなく、前述したPythonやDjangoを学習した際にも感じたことでした。
プログラミングで学ぶべきことは非常に多く、その1つ1つがそれなりに「重い」です。
それらをすべて一度に理解しようとすると、少なくとも僕は頭がパンクしそうになりました。
そのため、これから何かしらプログラミングの学習に取り組もうという方にお伝えしたいのが
いきなり完璧を目指さない
ということです。
まずはこれから学習することの全体像を把握し、それから実践練習を通じて少しずつ具体的に穴を埋めていくというのが、無理なく勉強を継続する上で大切だと感じました。
独学は色々な意味で時間がかかる
独学は時間がかかります。
これには純粋な勉強量に加えて、モチベーションの維持などその他の要因も関わってきます。
冒頭でもお伝えしたように、僕はPHPを習得するまでに計算上では1年ほどかかっています。
さらに言うと、僕の場合は目的が明確でなかったこともあり、PHPの前にPythonとDjangoに興味本位で手を出してしまいました。
その後PHPにシフトしましたが、全体で見ると1年どころでは済まない時間を費やしています。
独学でプログラミングを習得することは可能だと断言できます。
しかし、その前提として、多くの時間を要するということはしっかり理解し、目的を明確にした上で焦らず地道に勉強することをおススメします。
焦りは挫折の原因になってしまいます。
逆に僕は、どれだけ時間がかかってもいいからコツコツ続けることを大切にしていたためPHPを習得するまで学習を継続できました。
プログラミングは楽しい
結局のところ、僕がPHPを習得できたのはプログラミングが楽しいと感じることができていたからなのかもしれません。
何もわからないところから始まり、コツコツと勉強を積み重ねることで実際に動くプログラムを組めるようになる。
この「実際に動く瞬間」が、独学の中で何度もやってきます。
僕はその瞬間がとても嬉しく、ひとりで学習する中に楽しみを見いだせていたからこそ、独学でも挫折せずに継続できたのだなといま振り返ってみてそう感じます。
学習内容のまとめ
いかがだったでしょうか。
ここまでに僕自身がPHPを独学で習得するまでに実際に取り組んだ学習内容を、しなくて良かったこと、逆に取り入れるべきだったことも含めてお伝えをしてきました。
最後に、学習内容を時系列で改めて整理します。
- HTML/CSS
- jQuery ※無くても良かった
- SQL
- PHP ※同時にセキュリティ対策と綺麗なコードを書く方法も学習
- 【開発演習】予約システム ※初めて作るならTODOアプリでも◎
今回は独学でPHPを習得するまでの流れということで、敢えて無くても良かったこと、逆にやった方が良かったこともすべて含めてご紹介しました。
初学者が独学でプログラミングを習得するのには根気が必要です。
特に、会社に勤めながらとなると多大な努力が必要となります。
しかし、冒頭でもお伝えしたように、独学でプログラミングを習得することは決して不可能ではありません。
その一方、ご自身の状況や目的によっては、独学ではなくスクールが向いている場合もあります。
独学で学習をするべきか迷われている方は、是非こちらの記事を参考にしてみて下さい。
また、PHPの基礎学習後、実際にアプリ作成をしてみたいという方に向けて掲示板アプリの作成方法の記事を公開しました。
ご興味のある方はぜひご覧ください。
最後までご覧いただきありがとうございます!
これからもプログラミングに関する知識や情報を発信していきますので今後ともよろしくお願いいたします。