What you'll learn:
- どのような技術が組み合わさってWEBシステムが動いているのか、その基礎を体系的に学びます。
- 開発に欠かせないWEBの基礎知識について学びます。
- PHPの基本的な文法について学びます。
- 開発で頻出する正規表現の使い方について学びます。
- PHPの名前空間、クラスを使った記法について学びます。
- データベースの実践的な設計手法について学びます。
- SQLを使ったデータベースの操作方法について学びます。
- Apacheの設定方法について学びます。
- サーバーとブラウザのやり取りを可視化し、その仕組みを学びます。
- Apacheの設定を通してパフォーマンス改善の基礎を学びます。
- 避けるべきセキュリティーホールの基礎について学びます。
- CSS、Sassの基礎について学びます。
- Sassと組み合わせたBootstrapの使い方を学びます。
- JavaScriptの基礎について学びます。
- JavaScriptを用いたフォームのバリデーションチェックについて学びます。
- MVCアーキテクチャの思想を取り入れて、一からWEBアプリを作成します。
- WEBアプリの作成を通してプログラミング力の底力を底上げします。
「WEBシステムがどのようにして動いているのかきちんと理解していますか?」
今日ではAWS(Amazon Web Service)、AzureやGCPなどのホスティングサービスの登場により、基本的なサーバーの設定をWEB開発者が行う機会は少なくなりました。
また、LaravelやRuby on Railsなどの高機能なWEBフレームワークを使えば、WEBシステムの基本的な知識がなくても、高機能なサイトを作れるようになります。
もはや、データを格納するテーブルでさえも、フレームワークが自動で作成してくれます。
一方でこのような技術の進歩により、WEB開発者はWEBシステムの基礎について学ぶ機会を失ってしまいました。
WEBシステムの基礎を学ぶことは短期的なプログラミングの上達においてはそれほど重要ではありません。
短期的な成長を望むのであれば、「Laravel」や「Ruby on Rails」、「Spring Boot」、「Django」などのWEBフレームワークの具体的な使い方を学ぶ方が目に見えた成果を実感できるでしょう。
しかし、基礎を疎(おろそ)かにしていると、3年、4年と月日を重ねていったときにそれはボディーブローのように効いてきます。
私はこれまで数えきれないほどのWEB開発者を見てきました。
その中で優秀な開発者とそうでない人の決定的な違いとして基礎を理解しているかどうかということがあります。
優秀なWEB開発者はその根本的な仕組みについて驚くほど深く理解しています。
もちろん彼らも実際の開発を行う際にはLaravelやAWSなどの実用的な技術を使用します。
しかし、彼らは裏でどのようなことが起こっているのかを理解したうえでそれらの技術を使用します。
そのため、不具合やバグにあたっても自身で解決の糸口を見つけ、あっという間に解決してしまいます。
WEBの仕組みを知らずに構築したシステムというのはとても危ういのです。
何の変哲(へんてつ)もない一行のコードがWEBシステムのパフォーマンスに大きな影響を与えたり、システムに致命的なセキュリティーホールを生むこともあります。
私も初学者の頃はかっこいい画面や最新の技術に目が行きがちでしたが、WEB開発者として9年目を迎えた今思うのは基礎を理解しているという事は本当に大切だということです。
スポーツ選手でも、料理人でも演奏家でも、どんな職業の人でも基礎をおろそかにして大成している人を見たことがありません。
一見、高度なことをしているように見えることでも、それは基本的な事が組み合わさって複雑に見えているだけなのです。
少し視点を変えてみましょう。
今日のWEB開発ほど技術の移り変わりが激しい分野はありません。
日々新しい技術が生まれ、世界中の企業やコミュニティが次から次へと新しいフレームワークやライブラリ、サービスを作成します。
そんな中で特定のフレームワーク、サービスの使い方だけを暗記して学ぶことは大変非効率です。
なぜならその知識は数年後には必要がなくなっているかもしれないからです。
少し残酷に聞こえるかもしれませんが、これは事実です。
私自身何度もそのような状況に遭遇してきました。
実際、その当時は有名でそのフレームワークがないと開発できないと思われるようなものでも、5年後にはレガシーな技術(古い技術)として扱われることも少なくありません。
そのため、WEB開発においては表面的な知識の暗記よりも基本的なシステムやプログラミング言語への理解というのが特に重要になってきます。
DBの設計や構築、サーバーの設定方法、プログラムのデザインパターンやオブジェクト指向型プログラミングなどの普段の開発ではフレームワークが代替して行ってくれているような知識を学ぶことは、プログラミング技術やWEB開発技術の底上げをしてくれます。
そして、実はそれさえあれば、フレームワークが変わろうとプログラミング言語が変わろうとそれほど苦労なく習得できるようになります。
こちらのコースの後半では演習としてMVCアーキテクチャの考え方を用いたサイトをPHPとMYSQLを用いて一から作成します。それはフレームワークを用いる開発が主流の今日では意識して学ばないと体験することのないものです。
おそらく、フレームワークを用いれば初学者の方でも1日くらいでできてしまう簡単なシステムです。
しかし、フレームワークを使わないで開発を行うとなると話は変わってきます。これまでフレームワークが代わりに行ってくれていた、コードの再利用性や保守性の担保、認証の仕組みやセキュリティーホールを生まないための実装、またはパフォーマンスにかかわる処理までご自身の手で実装していく必要があります。そして、そのような経験は、後の実践的なWEB開発の学習に入っていく際に大変重要なものになります。
初学者の頃はフレームワークを用いた実用的な開発に目が行きがちなのはわかります。
実際、私もそうでした。しかし、いくら新しいフレームワークの使い方や新しい言語を覚えても根本的な事がわかっていなければプログラミングやWEB開発のスキルは早い段階で頭打ちとなってしまいます。しっかりとした土台がなければレンガを高く積み上げることはできないのです。
しかし、逆に言えば基礎をしっかり学んでおけば、その上に何を積み上げても容易に吸収できるようになります。
こちらのコースではWEBシステムの動きを理解し、根本的なWEB開発技術の底上げを目指します。
こちらのコースの最後に作成する練習アプリは初学者の方には少し難しく思えるかもしれません。しかし、落ち着いて一つづつ読み解いていくと、その実態はこちらのコースで紹介している基礎的な技術の組み合わせで構成されていることに気付くはずです。
是非、最後まで諦めずチャレンジしてみてください。
最後に、皆様のWEB開発者としてのキャリアの一助になれば大変うれしく思います。
では、本編でお会いできるのを楽しみにしております。
*** 補足 ***
このコースの以下のセクションはそれぞれ他のコースの教材を流用しています。あらかじめご了承ください。
セクション17「CSSの基礎」:【JavaScript&CSS】ガチで学びたい人のためのWEB開発徹底実践(フロントエンド編)
セクション21「JSの基礎」:【JS】ガチで学びたい人のためのJavaScriptメカニズム