MENTAで活動はじめてしばらくたったので記事でも投稿してみようと筆をとってみました。
特に RubyやPHPなどをスクールで習っている人向けに、WEBアプリケーションが難しい理由と
自分なりの効果的な勉強・復習方法を書いてみます。

難しい理由

良くスクールなどでは、「ポートフォリオとしてWEBアプリケーションの作成」をゴールにしているところが多いです。
なのでWEBアプリケーションはプログラミングの延長線上みたいに思われている方が多いと思いますが、実はWEBアプリケーションは似ているようで異なる3つのベース知識が必要です。

  1. やりたい処理をロジックとして表現するアルゴリズム、プログラミングの基礎の知識
  2. WEBの仕組み(クライアント、サーバー役割など)の基礎知識
  3. 各プログラミング言語ごとのWEBを実現するための仕様やフレームワークの知識

これら3つのベースが絡むことでWEBアプリケーションを実現しているので、知識に偏りがあると思わぬところでつまずきをしてしまいます。
これらの3要素で自分が足りないところを意識して学ぶことで、ほかの部分とのかかわりや詰まる部分の特定などが自分でできるようになり、そのあとの伸びがとても速くなるので、ぜひ自分の苦手分野を鍛えてみてください。

アルゴリズムの知識について

スクールでの課題はサンプルを効率よく見つけてクリアしたけど、なんでこのプログラムが動いてるのかわからない、、

こういうタイプの方は改めてアルゴリズムの勉強をしましょう。
アルゴリズムの勉強というとソートアルゴリズムやらハノイの塔やら色々出てくると思いますが、
個人的におすすめの勉強法はプログラムを書く前にフローチャートを書く方法です。
https://it-koala.com/flowchart-2241

きれいに電子ファイル化などをする必要はありませんが、
簡単なプログラミングをするときもまずフローチャートにしてアルゴリズムを考えてみると、
以外と最初は抜け漏れが多くて思ったようにいきません。
ですがこの作業を繰り返すことで、頭の中の引き出しが増えたりロジカルシンキング力が鍛えられるのでプログラミング能力が激的にあがります。
また、アルゴリズム構築能力はどのプログラミング言語でも基礎となるので応用も効きやすいです。

おすすめの勉強は

  • スクールで習った問題集などをフロー図化してみる
  • 住宅ローンシミュレータ、自動販売機、電卓、などの日常的なもののアルゴリズムをフロー図にして考えてみる
  • 基本情報処理試験のアルゴリズム問題を解いてみる(過去問がIPAの公式ページで公開されているため)

問題設定が苦手な人は問題集などを買ってみるのもおすすめです

WEBの仕組みについて

スクールで作ったポートフォリオを自分で環境構築するときにつまずく方は、この部分が不足している可能性が高いです。

こちらに関しては大枠はこちらの書籍をおすすめしています。
 プロになるためのWeb技術入門 小森 裕介 著

プログラムのことは一旦置いておいたWEBの仕組みについて重点的に解説している良書ですのでぜひ読んでいただきたいです。
また、自分で環境を構築する際は、サーバーがどこにあるか、インフラ構成図を自分書いてみるのをおすすめします。
サンプルをベースにプログラミングをしていると、localhostに全部乗せで環境を構築するパターンが多く、いざ本番環境をつくるとこんがらがった結果どこに問題があるのかわからなくなることが多いです。あらかじめ図に書いておくことで頭の中を整理し、問題発生源を切り分けやすくなります。
Qiitaにわかりやすい記事を見つけたので張らせていただきます。
https://qiita.com/11anbai/items/8a01da9f8271ecdf5c8d

WEBを実現するための仕様やフレームワークの知識

アルゴリズム、WEBの基礎知識を付けたら実装するために仕様やフレームワークの知識を勉強しましょう。こちらは身も蓋もないことを言えば公式ドキュメントを参照するのが一番効率よく勉強できます。

例えば

また、フレームワークを利用する場合は、現状ではMVCをベースにしているものが多いので、
MVCデザインパターンについて覚えておくと理解が早くなります。
こちらもQiitaにわかりやすい記事を見つけたので張らせていただきます。
https://qiita.com/s_emoto/items/975cc38a3e0de462966a

この分野については実戦経験もモノを言ってくる部分ですので、メンターさんに協力を仰ぐのもおすすめです。

最後に

ITは軌道に乗るまでは取っ付きずらい分野ですが、ある程度のベース力がつけば一気に視野が広がり、できることが増える分野でもありますのでぜひとも頑張って勉強してみてください。
また、勉強方法や詰まったときのモチベーション維持、課題解決などにはぜひとも経験豊富なメンター様のサポートを利用し、ショートカットしましょう。
自分も微力ながらお手伝いできますので、お気軽にメッセージお待ちしています。