プログラミング学習法

初心者がPHPを勉強するベストプロセス【2018年版】

フランジアのIT留学では、多くのベンチャー・スタートアッププロダクト開発で使われる2巨塔とも呼べる「Ruby/Ruby on Rails」や「PHP/Laravel」などを実践的に学べる海外プログラミングスクールを提供しています。
特に「PHP/Laravel」が学べるコースは、多国籍生徒を迎えるグローバルプログラミングブートキャンプとして開講しているため、一定の英語力を持たれているということを前提として、アジア各国の多国籍の学生と切磋琢磨しながらプログラミングを学べる環境となっています。
 
講師となるエンジニアも、セブ島トップ工学系大学のセブ工科大学(日本でいう東北大学工学部レベル)を飛び級×次席で卒業、セブ島私立トップのサンカルロス大学(日本でいうと慶應大学SFCレベル)のコンピュータサイエンス学部で学年で主席を取得、フィリピン大学(日本でいう東京大学)のコンピュータサイエンスで次席で卒業、というようなトップレベルエンジニアばかり。
 
彼らは日本のトップベンチャー・スタートアップ企業と仕事をしているフランジアの厳しい選抜試験と面接をくぐり抜け、さらにそんなフランジアの新人研修も通過して社員に選ばれた精鋭です。
 
そんな現役ハイレベルエンジニアを講師としてアサインしている弊社のグローバルテックスクールですが、実際にスクールに来る前に、できる限り生徒さんに自力での学習にトライした上で来てもらうようにお願いしています。
今回は、そんなハイレベルなプログラミングスクールを提供している弊社が考える、「初心者がPHPを勉強するベストなプロセス 2018年版」をご紹介したいと思っています。

プログラミング学習をするにあたって大切な3つのステップ

こちらは、先日紹介した『初心者がRuby on Railsを勉強するベストプロセス【2018年版】』でも紹介した内容と同じなのですが、大切なことなので再度紹介させて頂ければ、と思います。
 
私たちは、プログラミングの学習には(特に初期の学習においては)、下記3つのステップがあると考えています。
それは、
  1. 見よう見まねでとりあえず動かしてみるハンズオン学習
  2. 理論や概念などの理解を深める概念学習
  3. 理解した内容をベースに作りたいものを作り上げようとする実践・演習学習
という3段階のステップです。
 
 
第1段階のステップは、かなり入門的なオンライン学習サービスなどを使って、「言われたとおりにやってみたら動いた」ということを経験する中で、「なんとなくこうしたらこう動く」ということを感覚的に知っていくフェーズです。
 
第2段階のステップは、初心者向けのプログラミング教科書を用い、実際にコードを書きつつ勉強することで、「なんとなく動いている裏側ではこんなことが起こっているんだ」ということを学び、理解を深めていくフェーズです。
 
第3段階のステップは、「こういうサービス・こういう機能を実現したい」という状況のもと、自力でそのゴールを達成していくフェーズです。
たとえば弊社の新人研修などでは、「E-Learningシステムを作る」「Twitterクローンアプリを作る」「Airbnbクローンアプリを作る」など、有名なプロダクトのシンプルバージョンを実際に自身でで開発するなかで、自分自身で課題解決を行いながらゴールを達成していく、外部APIを利用することによってAPIをどのように使うのか、という演習学習を実施しています。
 
このように私どもは、プログラミングの学習には上記のような3段階のステップがあると考えています。
そして、現段階のスキルレベルから次の段階のスキルレベルへステップアップをするタイミングが訪れる度に、この3つの学習段階を経てステップアップしていくものだと思っています。
(おそらくこれはプログラミングだけではなく、あらゆる「学習」においても類似のプロセスを踏むのかもしれないですね。なんとなくやって見る中で感覚を掴み、それを理解し、さらに応用していく。「守破離」ということばを多くの日本企業の新人研修では聞きますが、ある種「守破離」とは、このような状況かもしれません。)

初心者がPHPを勉強するベストプロセス2018年版

さて、それではここからが本題の「初心者がPHPを勉強するベストプロセス 2018年版」です。
 
 

PHP学習の第一段階 - ハンズオン学習編

 
さて、ではPHP学習における第一段階のハンズオン学習では、現在最もオススメできるのは、やはりProgateでしょう。
ほんとにどこに行っても、最初の一歩としてProgateをされている人が沢山いると思うのですが、「最初の第一歩としてのProgate」は非常に正しいです。
他方で、逆にお伝えしておくべきかと思うのが、Progateだけ楽しくやったという状況では、「現場での戦力には全くなれない」ということも事実として認識しておいて頂く必要があります。
とはいえ、「初心者がプログラミングを学習する」という「初心者」という観点において、やはりProgateでの最初の一歩は最強である、と思います。
フランジアとしては、まずPHPプログラミングを理解していくにあたって、下記のコースをすべて、下記の順にやり切る、というのが良いプロセスかと思っています。

 

PHP学習の第二段階 - PHP理解・深化編

PHPハンズオン学習をProgateで実施した段階で、なんとなくプログラムってどう動くのか、PHPってどうすれば動くのか、についてのイメージが掴めているはずです。この段階でのPHPへの理解を深めるタイミングでは、下記の書籍をオススメしています。

よくわかるPHPの教科書 【PHP7対応版】

上記の書籍では、HTML上からフォームを使ってデータがPOSTされたときに、それをPHPでどのように扱い、データベースであるMySQLにどのように保存・編集・取得処理を命令するのか、という一連のWEB開発の全体像を順に理解していくことができます。

また、簡易ではありますが、ログイン機能があるアプリケーションをご自身のマシン上の開発環境で開発することができるため、「なんとなく準備された環境で言われたとおりに書けば動いた・正解できた」というProgateでの経験からさらに一段階進んだ学習ができるでしょう。

 

PHP学習の第三段階 - より応用的なPHPシステムの開発編

上記のような2段階を経ることで、PHPを利用したWEBシステムの開発の基礎的な要素は網羅的に学習が進んできています。その上で、様々な演習形式のアプリケーションを開発することで、さらにプラスアルファの経験値を積んでいく、というのがこの第三フェーズとなります。

その際に、現在形でおすすめするのは、ドットインストールでの様々なサンプルアプリを開発してみることです。

ドットインストールのレッスン一覧ページの中から、左記の「PHPでウェブサービスを作れるようになろう」を、やれる範囲でやりきってみることをオススメします。

作られているコースが2015年頃のものが多く、PHPのバージョンも少し古いものが開発環境となっているのが少し悲しいところではあるのですが、基本的には最新のPHPバージョンでも動くアプリケーションばかりですし、学習内容としては非常に有効なものばかりです。

「カレンダーを作ってみる」「ToDo管理アプリを作ってみる」というような、実際に使えるそれぞれの小さな機能をたくさん作っていくことによって、よりプラスアルファの知識・理解が複数の角度からの学習によって定着させることができ、「PHPでのプログラミングとはどういうものか」が身に付いていくでしょう。

※ 第二段階の学習プロセスで、XAMPP, MAMPで開発環境をみなさんはお持ちかと思うので、そちらで演習を実施してみてください。

これであなたもPHPエンジニア...??

さて、ここまでみなさんが独学で成し遂げることができた場合、みなさんはこれで自分もエンジニアとしてどんなものでも作れる、というレベルの自信を持てるようになっているでしょうか?
「ここまで独学でたどり着いたが、これらを元に今の世の中に出回っているようなプロダクト開発をどうやればよいのかわからない」
というのが、みなさんの現状となるのではないか、と思います。
 
 
実際のところ、ここまで学んだことを完璧に理解していたとしても、
現場で仕事ができるエンジニアのレベルに到達するまでには、ここからさらに大きな溝が待っています。
 
たとえば、
  • オブジェクト指向ってなんなの?というようなプログラミングの上では必須の概念への理解が深いわけではない
  • 実際の企業の開発現場ではフレームワークと呼ばれるツールを使った開発がほとんどだが、まだフレームワークを学んでいない
  • Gitというソースコード管理ツールをまだ使える状態になっていない
  • 個人でのプログラミング学習のみ積み重ねており、チームでの開発に関して何一つ知識がない
  • 実際の開発現場で必要とされる開発プロセスである、アジャイル・スクラムと呼ばれるような開発手法をまだ何も知らない
  • 現場の仕事で必要とされる「美しいコード」「他のエンジニアが読みやすいコード」というような作法はまだ学べていない
  • より深いプログラミング各種の概念への理解が足りない
というようなことです。
 
実際、上記のようなポイントは、
  • さらなるPHPプログラミングの学習として、フレームワーク学習を行う
  • 現役のエンジニアとして仕事をしている人からのメンタリング・フィードバック・コードレビューなどをしてもらう
  • 実際の開発プロジェクトにジョインすることによって、実開発の現場経験を体験してみる
  • 上記さらなる経験に基づいて、より深い学習題材やより演習的な学習プロセスを繰り返し実施して自己研鑽を重ねる
という、プロセスを踏んでいくことによってしか埋めることができない、というのが現実的なところとなります。

ではどうすれば良いのか??

そもそも今回ご紹介した「初心者がPHPを勉強するベストプロセス」の次に、フレームワークの学習を実施する必要があります。そして、そこまでは一定独学でも基礎学習ができるものだと私たちも考えています。
そのため、次回「初心者がLaravelを勉強するベストプロセス」という記事を書かせて頂き、現在PHPフレームワークの中で世界的に最も使われているLaravel学習法を紹介することで、みなさんが独学で学習できる範囲を広げるところに貢献できればと思っています。
 
ただ、やはり独学でたどり着けるゴールには限度があると私たちは思っています。
実践的な学習は、実際に近しい距離のメンターにフィードバックを受けて初めて身につく部分がありますし、多くのプログラミング学習者が独学では挫折していくので、集中的に学べる学習コミュニティがあること、も非常に重要なファクターとなるでしょう。
 
そのような実践的な学習には、実際に弊社が提供している学習コースのような、
  • 「現役のエンジニアから直接のメンタリングを受けられる」
  • 「きちんとGitでプルリクエストを投げてコードレビューを受けられる」
  • 「より演習的な開発課題をプロジェクト型で経験することで、実践度の高い経験を積む」
ということが必要になるかと思います。
 
もちろん、現在のご職業のステータスなどによって、日本国内の通学形式のスクールの方がライフスタイルとマッチしているケースも多いかと思います。
 
弊社としては、本当に活躍できるエンジニアが増えることで世の中がハッピーになるプロダクトが増えていく、ということに事業のゴールを置いていますので、みなさまの学習の動機やゴール設定に応じ、弊社以外のスクールをオススメさせて頂くこともございます。
まずはお気軽にキャリア相談のつもりでも大丈夫ですので、
など、お問い合わせ・個別カウンセリングのご予約等頂ければ幸いです。
 
カウンセリングは弊社の教育事業マネージャーが直接対応させていただきます。
25歳文系出身からエンジニアとしてキャリアを積み、起業家とのネットワークも広く、今や海外ブランチ運営を任せられているマネージャーです。
また、多くの上場IT企業の新人研修を日本語・英語双方で委託されるなど、エンジニア育成・研修のプロでもあります。
留学の詳細やセブ島での生活について、実際にエンジニアとして働いていたからこそのアドバイスなど多岐にわたるお話ができると思います。
 
今後プログラミング学習を開始されるみなさまの一助になれますと幸いです。
 
 フランジアのIT留学へのお問い合わせはこちら ⇒ https://framgia.com/study-abroad/