PHP初心者の方にオススメの勉強方法[後編]

こんにちは!むちょこです。
PHPが大好きで、かれこれ10年くらいwebエンジニアをしています。

今日はリクエストいただいたオススメの勉強方法について詳しくお話してみます。
長いので前編後編に分けました。前編はこちら

SQLを学ぼう

PHPと仲の良い言語はいろいろとありますが、特に連携必須なのがSQL。
中でもMySQLが親友レベルで仲良しです。

インストールは、ApacheやPHPのときと同様「mysql インストール OS名」で調べてください(OS名のところはご自身の環境に合わせて変更してくださいね)。

MySQLの勉強は、私は珍しく書籍からやりました(たまたま学校指定だったので)。

初心者向けの内容なので、「全くのはじめてだから分かりやすいのが良い!!」という方には良いかもしれません。
「mysql 入門」等で調べるとネットで学習できるサイトも出てきますので、そちらで事足りる方は購入の必要はありません☆

あとは最近この本を買いました。

こちらは中級~向けになります。基本が身についたらぜひ。
特に独学やフリーランスでやっていると、うっかりアンチパターンを使っていた(誰も指摘してくれない)ということもままありますので、一度は”べからず集”を読んでおいて損はないと思います。

フルスクラッチで開発してみよう

MySQLが使えるようになったら、早速PHPで扱ってみましょう。
扱い方は、「php mysql 接続」等で調べると出てくると思います。

漠然と練習しても面白くないし身につきづらいので、今回も課題を出しますね☆
よかったらやってみてください!

【上級】掲示板
  • フルスクラッチで開発する
  • ログイン、テキスト投稿、画像投稿、本人による投稿の削除ができる掲示板を作成する
  • ユーザのメールアドレスは一意である
  • ユーザは140文字以内の任意のテキストを投稿できる
  • ユーザが入力したテキストや画像の他、投稿日時を表示する
  • 各投稿には、投稿時と同様の条件でコメントがつけられる

ちなみに、この課題の難易度は作りこみ具合によって変わります。
多くのことに気づける課題だと思うので、ぜひたくさん試行錯誤してください。

フレームワークを使ってみよう

実際の現場では、工数やクオリティ、メンテナンスの観点からフレームワークが使われることがほとんどです。
先ほどフルスクラッチで開発したものと同じものを、今度はフレームワークを使って開発してみましょう。
利用するフレームワークはなんでも良いですが、最近はLaravel人気が高いので今やるならLaravelがオススメです。

【上級】掲示板
  • なんらかのフレームワークを利用して開発する
  • ログイン、テキスト投稿、画像投稿、本人による投稿の削除ができる掲示板を作成する
  • ユーザのメールアドレスは一意である
  • ユーザは140文字以内の任意のテキストを投稿できる
  • ユーザが入力したテキストや画像の他、投稿日時を表示する
  • 各投稿には、投稿時と同様の条件でコメントがつけられる

おそらくフルスクラッチと比べてとても簡単に実装できると思います☆

「なんで実務で使わないし大変なフルスタックをやらせたんだ!」というクレームが怖いので、先の課題を出した理由を説明しておくと
一度フルスクラッチで作っていただくことで、内部処理のブラックボックス化(なにが起こっているかよく分からないけど動く🤔)を防止しています。これにより、”特定のフレームワークでしか開発できない”エンジニアにならずに済みます。

特にご紹介した今流行りのLaravelはフルスタックフレームワークと言って、よく使われる機能がほとんど予め用意されているフレームワークなので、正直Laravelだけ知っていればそれなりのサービスを作ることが可能です。
しかしフレームワークの流行り廃りは早く、案件によって採用されるフレームワークも様々なので、1つのフレームワークを極めるだけでエンジニアとして長く食べていくのはかなり難しいでしょう。

また、フレームワークの内部でどんなことが行われているかを知っていると、特殊なカスタマイズが必要な機能を実装するときにも適切な対応ができるようになります。

以上のことから、私はフルスクラッチ→フレームワークの順で学ぶことをオススメしています。


というわけで、課題が終わった皆様、お疲れ様でした!これで入門編は修了です✨
そして、ようこそエンジニアの世界へ!

この後はデザインパターンを学んだり、OSSのコードを読んだり、実務経験を積んでいくと次のステップに進めると思います☆
私も冒頭で10年やってると書きましたが、まだまだ知らないことだらけで勉強中です。
ぜひ一緒に切磋琢磨できるエンジニア仲間となれたら嬉しいです🙌