PHPの学習が辛い……挫折しそう……
PHPの環境構築で詰まってどうしようもない
PHPの学習を進めてるけど、先が見えなくて辛い
こんにちは。プログラミングの挫折経験も7回ほどありますが、いまはフリーのエンジニアとして仕事をしている平山です。
プログラミングの学習というと挫折がつきものです。巷では独学での挫折率は9割なんて情報も出回るくらいに、挫折する可能性が高いのがプログラミングの学習です。
皆さんの中にも、PHPの学習で心が折れそうになってこのページに辿り着いた方がいるのではないでしょうか?
そこで、この記事ではプログラミングの学習段階ごとの挫折要因に対して、3つの対処法を紹介します。プログラミングに挫折する要因は学習の進捗ごとに異なるものです。
挫折しそうな人は、自分の段階にあった対処法を試してみてください。
PHPの環境構築で挫折しそうな人の対処法
PHPに限らずプログラミング全般にいえることですが、最初の一歩となる環境構築で挫折してしまう事が多いです。普段からよほどPCに慣れていないと、環境変数やパスの設定、バージョン管理ツールやパッケージマネージャーなど、よくわからない手順の連続に心が折れてしまうわけですね。
環境構築はある程度のレベルのプログラマになっても面倒な部分です。必要なツールを入れ忘れたり、設定をミスして2、3日ドツボにハマるなんてこともままあります。なので、初心者にとって難しいのはある意味当たり前なんですね。
そこで対処法ですが、PHPの環境構築にはXAMPPを使う方法が確実でオススメです。XAMPPはPHPをはじめるにあたって必要な仮想サーバ、データベース、PHP本体の設定を一気に行ってくれる便利なパッケージです。
Windowsであればインストーラーの指示に従っていけばインストールが完了し、その直後からPHPのプログラミングを始めることができます。上に書いたような環境変数や周辺ツールのインストールも必要ありません。
XAMPPはあくまでも手元のPCで開発するための仮想の環境であり、業務で実際に使うような本番の環境とは異なるので、最初から本番を意識した環境で学習を開始すべきだ、という意見もたしかにあります。
しかし、環境構築で力尽きてしまっては元も子もありません。本番環境と仮想環境の違いは、学習が進めばいずれ理解できるようになる問題です。
なので、まずはプログラミングの学習を始めるためのハードルを限界まで引き下げることが重要だというのが筆者個人の意見です。
なお、Macユーザーの方はMANPというXAMPPと似たような設計思想のツールがありますので、そちらを利用してもいいでしょうXAMPPはWindows、Mac、Linuxを問わず動作するので、ここらへんはお好みでどうぞ。
XAMPPの使い方については以下の記事で詳細に解説していますので、環境構築で悩んでいる方はぜひご覧ください。
また最近ですと、クラウド上の開発環境でプログラミングを始める、という選択肢もあります。クラウド上の開発環境とは、Google Chromeのようなブラウザからアクセスして、プログラムを開発できるWebサービスのことで、近年急速に発展してきたジャンルです。
有名所にAWS Cloud9がありますね。AWS Cloud9はまだ日本語でアクセスできる情報が少なめなのですが、そこを解決できる方であればおすすめできます。
Cloud9は2016年にAmazonに買収され、AWSの1サービスとして2017年に提供されるようになりました。AWSのサービスになるにあたり、インターフェイスや他のAWSサービスとの連携など、多くの部分に変更が入りました。
そのため2019年現在、日本語で読める情報だとまだ買収前のCloud9の情報のままというところが散見されます。新しい情報を得るには英語のソースに当る方が確実です。
なお、日本語ベースで使える日本製のクラウド環境にPaizaCloudがあります。こちらは初心者にも使いやすく、丁寧な日本語解説があるので、始めての方にはこっちがおすすめですね。
PHPの文法で挫折しそうな人の対処法
続いて、環境構築はできて、学習はスタートしたものの、文法の学習に心が折れそうになっている方向けの対処法です。こちらは2パターンに分けることができるので、それぞれ見ていきましょう。
使っている教材は適切なレベル?
まずは学習に使っている教材についてです。言語を問わずプログラミングの入門書は作られ続けています。
これは、それだけ入門者が多く、入門書で挫折している人が多いことの証明でもあるといえるのではないでしょうか?
プログラミングを説明する場合、きちんと説明しようとすると限りなく細かいところまで説明する必要があります。ですが、初心者には正確だけど細かすぎる説明よりも、ザックリと大枠を教えてくれて、一通り動くものが作れるようになる方がいい場合も多いものです。
もし、いま読んでいる教材が説明が細かすぎると感じたら、別の教材を試し読みしてみましょう。意外とそれで理解ができる場合も多いです。
プログラミング学習は最初から100%の理解を目指さない、というのもコツの一つです。自分のレベルにあった教材を試してみる。教材は1回で完璧にしようとせずに、何回も繰り返して理解していく、ということです。
理解は浅くでいいので何回も繰り返すと、プログラミングの感覚が体に染み込んで行くことでしょう。以下にいろいろな種類の教材を紹介した記事を掲載しましたので、教材比較の際にご利用ください。
また、徹底して詳細で正確な情報がほしい方は、ぜひ公式ドキュメントを読みましょう。公式ドキュメントをちゃんと読めるようになれば、プログラマとしては中級です。
PHP: PHP マニュアル
https://www.php.net/manual/ja/index.php
わからないことが多すぎて挫折しそうな人の対処法
プログラミングの学習はわからないことの連続です。もしかしたらあなたは、あまりにもわからないことが多すぎて心が折れそうになっているのかもしれません。
もし、あなたが参考書やドキュメントの内容を100%理解できないとプログラミングできない、と考えているのであれば朗報があります。
多くのプログラマはドキュメントの内容なんて50-60%ぐらいしか覚えていません。もしかしたらもっと低い割合の人もいるかも知れません。細かい関数の挙動や引数設定、戻り値や処理の仕様なんていちいち覚えようとすること自体が不毛だと考えている人がほとんどのはずです。
プログラミングがデキる人のイメージとして、何も情報を見ずに流れるようにコードを打ち込んでいくような光景を思い浮かべているのであれば、それはほとんど実在しない幻想です。
多くのプログラマはコードを書いては、ドキュメントを調べ、デバッグをしてはドキュメントを調べ、テストをしてはドキュメントを調べ……と、多くの時間を資料の調査に割いています。
つまり、基本的な文法や関数の挙動以外は調べて対処してくのが一般のプログラマです。(本当になにも見ずにコードをガリガリ書いて一切エラーを出さない人というのもいますが、これはある種の天才です。)
もし、覚えることが多すぎて辛い、というのであれば、まずはどういう動作なのかを理解することに重点をおいてみましょう。変数や配列、条件分岐ぐらいなら動作自体はそこまで難しくないはずです。
覚えるのではなく理解する、しかも100%は目指さない、というのが対処法の1つ目です。
次に、わからないことを調べる方法について考えてみましょう。いくら100%を目指さないとはいえ、目の前の課題をどうにかしないと先に進めないならば、解決策をすばやく見つける方法を知っておくべきです。
プログラミングに限りませんが、わからないことが合った場合、基本的な対処方法は以下の2つです。
- 調べる
- 人に聞く
当たり前といえば当たり前なんですが、この当たり前を効率よくこなすことで、プログラミングの学習速度も大きく変わってきます。
調べる方法を効率化
まずは調べる方法について。プログラミング関連で調べものをする場合、ほとんどは本を読むかネットで検索するかでしょう。
入門段階では、入門書に起こりやすいエラーや対処方法が載っているものです。現在学習中の項目をよく読み直してみると、ヒントが見つかるはずです。
ネット検索で調べる場合、いくつかテクニックとして体系化できるものがあります。まず手っ取り早いのが表示されているエラーをまるまる検索してみる、というものです。
たとえば、プログラミングをしていて以下のようなエラーがブラウザに表示されたとします。
この場合、この文字列をまるまるコピーして検索してみると、比較的上位のページに入力ミスを疑うべし、というアドバイスを発見できました。このエラーは’Hello World!’;とすべきところを’Hello World!;とクォーテーションマークを書き忘れていたことで発生しています。
この例から学べることは、
Parse error: syntax error, unexpectedと来ると、後ろの文字列が何かミスっているんじゃないか? という経験則です。
このような経験を積み重ねることで、次回以降入力ミスでsyntax errorが発生した場合も落ち着いて対処できるようになりますね。経験豊富なプログラマというのは、こういった経験をいっぱいしているので、適切なエラー対応がすぐできるわけです。
いろいろなエラーから経験則を学んでいきましょう。また、検索にオプションを付けることで狙った情報を見つけやすくする、という方法もぜひ覚えておきたいです。
Google検索には検索オプションといって、普通の検索以外に検索方法を変えるための手段が用意されています。代表的なものをいくつか紹介しましょう。
–キーワード |
マイナス記号をキーワードの前につけることで、その単語を含む記事を検索結果から除外できます。使いみちとして、たとえばPHPの情報を集めているのに、PHP文庫の紹介が大量に引っかかって困るようなケースで利用できるでしょう。 |
検索方法「PHP –PHP文庫」 |
“キーワード“ |
長めのキーワードを検索すると、Google側がよきにはからってくれて適当な場所で区切った検索結果が表示されます。
たとえば「東京特許許可局局長」というキーワードで検索した場合「東京特許許可局」の情報も検索結果に表示されてしまいました。「局長」の情報のみに限定したい場合は、上のようにキーワードをダブルクォーテーションマークでくくることで「東京特許許可局」の情報を除くことができます。 |
検索方法「“東京特許許可局局長“」 |
site:URL キーワード |
特定のページで情報収集をしたい場合ってありますよね。例えば、この侍エンジニアブログで、PHPの記事をまとめて調べたいときとか。そんな時に役立つのがsite:URLオプションです。
site:URL キーワード のURLに調べたいサイトのURLをいれて、キーワード部分に調べたいキーワードを入れることでURL内に限定したGoogle検索を行うことができます。 |
検索方法「site:https://www.sejuku.net/blog/ PHP」 |
なお、侍ブログの場合は右のカラムに検索窓があったりするので、こちらを使っていただいても構いません。
人に聞くを効率化
人に聞く、に関しては苦手な人も多いかもしれませんが、問題解決の一番強力な方法です。最近はエンジニア向けに特化したQAサイトというものもありますので、わからなかったらそこで聞く、というのも良い手段ですね。
teratail >>> https://teratail.com/
stack overflow>>>https://stackoverflow.com/
どちらのサイトも多くの初心者の質問が掲載されているので、すでにある質問を検索すれば探していた答えにたどり着けることも多いはずです。とくにstack overflowの英語情報は膨大な量があり、新しいバグなどにも適切な対応が書いてあったりします。英語に不便が無い方はぜひ有効活用しましょう。
また、身近にプログラミングの先輩がいるのであれば、どんどん質問しましょう。どんな調べ方のノウハウを極めるよりも、質問サイトを使いこなすよりも、手っ取り早く確実な回答を返してくれるはずです。
質問の際は、詰まっている箇所、やってみたこと、使っている環境やソフトの内容をまとめてから質問しに行くと相手も答えやすいのでおすすめです。
という人は、スクールの利用を検討するのも大いに有りかと思います。プログラミングスクールは、端的に言えばお金を払って質問し放題のメンターを付けてくれるシステムなので、そのことを理解して使う分には十分元が取れるように思います。
PHPの基礎はわかったけど、その先が見えない人へ
最後に、PHPの入門書は一通り終わって、基本的な文法部分はわかった気がするんだけど、そこから先をどう進めたらいいのかわからない人への対処法です。
この入門書終了後に進むべき道がわからなくなる人、意外と多いんです。書店を見てもPHPの入門書はいっぱいありますが、その次の段階を提示してくれる本になるとガクッと量が減る印象があります。そのため、ステップアップするように本を乗り換えていくことがやりにくいのです。
この段階で進むべき道を見失う場合、そもそもプログラミングで何をしたいのかがはっきりしていないことに原因があるケースが多いですね。
プログラミングを学び始める動機は人それぞれですが、おおよそ次のようなパターンに分類できるでしょう。
- なにか作りたい(Webサービス、ゲーム、アプリ)
- 将来エンジニアになりたい
- なんとなくPCに詳しくなりたい
何かを作りたい、という願望でプログラミングを学び始めた場合、入門書の終了段階での、できることとやりたいことのギャップが大きすぎて挫折してしまう、というパターンがあります。
入門書を一冊やり終えた段階では、おそらく皆さんが想像しているようなアプリ、サービス、ゲームを自由に作り出す力は身につきません。テキストベースのブラックジャックとか、五目並べが関の山でしょう。
ここから、作りたいものを作れるようになるには、ライブラリやフレームワークといったさらなる専門特化した知識が必要になります。そのため、作りたい目標がぼんやりしていると、できることの少なさにガッカリして道に迷ってしまう、というわけです。
そこで対処法ですが、作りたいものがあってPHPの学習を始めた人は、改めて何が作りたいのかをできる限り明確にしてください。
Twitterでも構いません。ブログサービスでも構いません。作りたいものを明確化することで、それに必要な技術がわかってきます。必要な技術がわかれば、それを習得して作りたいものを少しずつ作り上げていくだけです。
Webサービスの作り方については以下の記事で詳しく紹介していますので、Webに興味のある方はぜひご覧ください。Web技術の第一歩を踏み出しましょう。
Webサービスを作ろう
フレームワークを習得しよう
また、エンジニアになりたくてプログラミングの学習を始めた人は、この段階で1つWebサービスを作ってみましょう。
未経験からエンジニアに就職する場合、対象企業で求められる言語でつくった成果物があると、自分のスキルを有利に紹介できます。そのため、PHPであればPHPを使ったWebサービスを1から作ってみることで、スキルの証明となる成果物を作り上げるわけです。
Webサービスについては上で紹介している記事に入門方法が書いてありますので、是非ご覧ください。
また、成果物と同時にポートフォリオサイトの作成も進めておきましょう。ポートフォリオとは、自分の制作物や成果をまとめた自己紹介用のサイトです。
未経験の場合、ポートフォリオがあると就職に有利に働くこともあり、相手企業にやる気を見せる事もできるので、ぜひ制作することをおすすめします。
以下でポートフォリオの作り方を解説していますので、ぜひご覧ください。
最後に、手前味噌になりますが、何を作っていいのかわからない、就職にもスキル的に自信が持てない。そんな方はプログラミングスクールに通ってみるという選択肢があることを紹介しておきます。
プログラミングスクールは初心者のための物でもありますが、入門段階が終わって次のステップへ進もうとしている方にもおすすめできるサービスがたくさんあります。
とくに、弊社侍エンジニアではお客様一人ひとりに合わせた学習プランを作成し、エンジニアとしての就職や転職、フリーエンジニアとして独立するためのお手伝いをするサービスが充実しています。是非お気軽に無料相談へお越しください。
まとめ
いかがでしたか?
今回はPHPの学習者向けに、学習段階別の挫折要因と対処法をお伝えしてきました。最初にも書きましたが、プログラミングは挫折との戦いでもあります。ただ、その挫折を乗り越えた先には相応の見返りがあるのもまた事実です。
プログラミングスキルはあなたの人生を良くする一助となるはずです。
つらいとき・しんどいときは適度に休みつつ、人に頼りつつ、うまくプログラミングと付き合っていっていただければと思います。
お相手は、部屋を整理したらC言語の入門書だけで7冊あって、自分の挫折時代を懐かしく振り返っている平山がお届けしました。