派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【イベントレポート】初心者がつまづきやすいポイントを解説!PHP入門

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。2018年5月11日のイベントでは「10年使える最大効率の学習法~PHP学習から基礎作りの大切さを考える~」を開催。

プログラミングを学ぶための複数の環境が整いつつあるなかで、レガシーな書き方で無駄に回り道をしないためには、どうすれば良いのでしょうか。『PHPしっかり入門教室 使える力が身につく、仕組みからわかる。』の著者でもある小原隆義さんが、PHPの学習を題材に、効率的な学習方法を詳しく紹介してくださいました。

f:id:itstaffing:20180625105141j:plain

■今回のイベントのポイント

1. どれが正解?コードの書き方
2. 最大効率の学習法
3. キャリアの積み上げ方


【講 師】小原 隆義さん
▲【講 師】小原 隆義さん
塾講師として働いた後、独学でプログラミングを学びエンジニアに。その時の苦戦した経験をもとにプログラミングスクールのオンラインチューターを立ちあげる。長い間の教育経験からITにおける教育方法に疑問を持ち、一からカリキュラムを構築。現在は株式会社トレノケートでプログラミングからデータベースまでの企業研修を担当。著書に『PHPしっかり入門教室 使える力が身につく、仕組みからわかる。』(翔泳社)。

どれが正解?コードの書き方

小原さんは、最初に次のようなクイズを出しました。

f:id:itstaffing:20180625105154j:plain
▲あなたはどれに頼る?

会場内でAを選ぶ人は6割り近く、Bを選ぶ人は1割程度、Cを選ぶ人はチラホラという感じでした。小原さんはCを選ぶそうです。その理由として、80%外れるなら、70%当たるよりも予測が的確と言えるからだそうです。

しかし、小原さんは「では、本当にCなのか?」とさらに疑問を投げかけます。もし、これが商品ならば「80%も外れるって、どういうことなの?」と、メーカーの姿勢を疑うこともできますし「後々、バージョンアップされることを考慮すれば、Aが最も信頼できる」という考え方もできます。したがって、正解は無いのだそうです。

次は、どちらのコードが正しいか? という問題です。

f:id:itstaffing:20180625105158j:plain
▲どちらも3つのメッセージのうちの1つがランダムに表示される「おみくじ機能」を持つWebページ

大きな違いとして、Aは「おみくじ機能」を実装したPHPのコードが上のブロックにくくり出されているのに対して、BはHTMLのコード中に「おみくじ機能」を記述しています。

これはAが正解。なぜでしょうか?

Aは、ページデザインを変える人はHTMLブロックを見れば良いし、おみくじ機能を変えたい人はPHPブロックを見れば良い。つまり、立場の違う複数の人が手を入れる際に合理的だからです。

さらに言えば、次のように「おみくじ機能」を別ファイル(functions.php)に収め、それをWebページを記述しているファイル(fortune.php)に読み込むようにしておくのが望ましいそうです。

f:id:itstaffing:20180625105201j:plain
▲「おみくじ機能」を別ファイルにくくり出しておく

ファイル数も増え、コードの記述も増えますが、リファクタリング(改善)を考慮すれば、こちらが断然合理的です。

たとえば、新たに別ページを作り、そちらにもおみくじ機能を持たせる場合を考えましょう。後から「メッセージを4つに増やして」と言われたときに、毎度各ページを修正しなくとも、functions.phpの中身を修正すればよいからです。

この「一度作ったものを使いまわす」という考え方が重要で、それこそがプログラミングの歴史を形成しているのだそうです。

最大効率の学習法

では、こうしたプログラミングをどのように学んでいけば良いのでしょうか。まずは、書籍等の教材選びから。

会場の参加者からは、教材選びの基準として「ジャケ買い(表紙の見た目)」「通販のランキングを参考にする」という意見が挙げられました。小原さんがお勧めするのは「著者のプロフィール」だそうです。

f:id:itstaffing:20180625105204j:plain
▲異なるプロフィールの著者Aと著者B

著者Aが執筆する書籍は、ページ数も少な目な傾向にあり「理解するために最初に読む本」としておすすめだそうです。一方、著者Bが執筆する書籍は、ページ数は多い傾向にあるものの、現場で求められるコードの書き方をしていることが多いです。したがって「業務に入る前に1冊は読んで欲しい本」として、小原さんはおすすめします。

書籍以外に、ビデオ学習など、インターネットサービスを利用した学習方法もあります。小原さんはおすすめするサービスとして次のものを挙げました。

「ドットインストール」( https://dotinstall.com/
「Schoo」( https://schoo.jp
「Udemy」( https://www.udemy.com/jp/

Udemyは有料サービスですが、プロのエンジニアが講師を務めているのが特徴とのことです。

f:id:itstaffing:20180625105207j:plain
▲小原さんが実際に試したものの中からお勧めのサービスを紹介

勉強していくうちに「エラーが出たが直せない。どうすれば?」という状況に陥ったら、エンジニアの質問サイト「Teratail」( https://teratail.com )で質問するのもおすすめ。また、エンジニア向けブログサイト「Qiita」( https://qiita.com )で「こういうコードを書いたが、これでいいのだろうか?」と記事を掲載すると、経験豊富なエンジニアがアドバイスをくれることも多いそうです。

また、「ストアカ」( http://street-academy.com )で自分に合うセミナーを探す方法や、クラウドソーシングを使ってプロジェクトマネージャーを1時間雇い、質問しまくるという勉強法も紹介してくれました。

教材のサンプルコードは一部を書き写し、あとは、ひたすら読むのが良いそうです。コードを試して疑問に思ったことを調べ、検索する習慣を身につけていきます。このとき、PHP付属のドキュメントを読む習慣を付けることが大切だそうです。

f:id:itstaffing:20180625105210j:plain
▲ドキュメントには、PHPのステートメントの凡例や、プロのエンジニアが書いたサンプルコードが載っている

「実務でドキュメントを参照しながらコードを書く」ためにも、ドキュメントを読むクセを付けておきましょう。

キャリアの積み上げ方

小原さんは「この先も、ずっと使い続けられる技術は無い」と考えるべきだといいます。

その上で「一つの技術を専門レベルまで身につけることが大切」だと提言します。決して、いろいろな言語を学ぶのがダメというわけではなく、むしろ、いろいろな言語を習得するためにも、どれか一つを深く理解しておくべきだそうです。

f:id:itstaffing:20180625105213j:plain
▲PHPを深く理解しておけば、他言語にもすぐに移行できる

たとえば、PHPの基礎を勉強した後は「オブジェクト指向」について勉強し、その後、PHPで機能拡張が可能なCMS「WordPress」について勉強したり、PHPの「アプリケーションフレームワーク」について勉強したりして、段階的に掘り下げて勉強していくのだそうです。

また、実践を意識した技術を持つことが大切です。たとえば、バージョン管理ツール「Git」や、継続的インテグレーションツール「Jenkins」など、開発実務で使われる周辺技術についても幅広く知っておくべきだと言います。

最後に小原さんは「基礎を築くには最初の一歩が大事です。何をどう学んでいくかは人それぞれですが、常にいろいろな選択肢を考えながら学習を進めてほしい」と締めくくりました。

f:id:itstaffing:20180625105216j:plain
▲基礎を築くには最初の一歩が大事です

今回のイベントで、現場で求められるコードの書き方を学ぶ重要性と、「いろいろな言語を理解するために、まず一つを深く理解しておく」という考え方が、とても印象的でした。ぜひ、皆さんの学習にも採り入れてみてください。