文系未経験からアプリケーションエンジニアに就職してからの勉強の流れをまとめてみた。

昨年の3月頃にweb系自社開発会社に内定をもらってからはや1年半。
サーバーサイドからフロントまで幅広く学んできたのでここまでの学習の流れをまとめておきます。

これからWebアプリケーションエンジニアになることを考えている人、または自分と同じくエンジニアになってまだ日が浅い人、そんな方の参考になれば良いと思います。（技術に関しては結構抽象的に書いています。）

大まかな流れとしては
``「言語の基礎的な学習」→「CRUDができるアプリケーション作成」→「apiを活用したアプリケーション作成」→「フレームワークでの実装」``という流れを辿ってきました。

## Progateで一通り学習
それまでプログラムを一行も書いたことがなかった私はProgateで学習することから始まりました。

会社のアプリケーションがphpで書かれていることもあり、phpの講座を一通り受けました。
また、それに加えてHTML,CSS,SQL,コマンドライン、gitの講座を受けた記憶があります。
細かいところが理解できなくてもとりあえず進んでいくことを意識しました。

スライド形式で授業が進んで、エラーも詳しく出してくれるのでサクサク進みました。←理解は曖昧
でも皆さんおっしゃるように一番力がつくのは自分で何かを一から作る時だと思うので、ここでそんなに時間をかける必要はないかもしれないです。

## オリジナルアプリケーション
Progateを1ヶ月くらいで終わらせた後はオリジナルのアプリケーション作成に入りました。

PHP を使ってCRUD処理を行うアプリケーションを作る。というのが会社から与えらた課題で、ネットに転がってる記事を参考に簡易掲示板のようなものを作成しました。

この味気に読んでいて参考になったのは以下の本でした。
[いちばん分かりやすいphpの教科書](https://www.amazon.co.jp/%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8BPHP%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E3%81%9F%E3%81%AB%E3%81%90%E3%81%A1-%E3%81%BE%E3%81%93%E3%81%A8/dp/4839933146)
[これから始めるmysql入門](https://www.amazon.co.jp/%E3%81%93%E3%82%8C%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B-MySQL%E5%85%A5%E9%96%80-%E5%B0%8F%E7%AC%A0%E5%8E%9F-%E7%A8%AE%E9%AB%98/dp/4774197599)
[プログラムはなぜ動くのか](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AF%E3%81%AA%E3%81%9C%E5%8B%95%E3%81%8F%E3%81%AE%E3%81%8B-%E7%AC%AC2%E7%89%88-%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98-%E7%9F%A2%E6%B2%A2-%E4%B9%85%E9%9B%84-ebook/dp/B00HRN7VK0/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1584AWPYEO5B1&dchild=1&keywords=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AF%E3%81%AA%E3%81%9C%E5%8B%95%E3%81%8F%E3%81%AE%E3%81%8B&qid=1601561955&s=books&sprefix=puroguramuha%2Cstripbooks%2C274&sr=1-1)


Progateで学んだ断片的な知識が具体的に``アプリケーションを作る＋本を読む``、ことによって体系的に理解ができるようになりました。

ただこの頃はクラスとかメソッドとかいまいち分かってません。笑
オブジェクト指向もクソもなく、ただただつらつらと書いた、今見ても恥ずかしいコードです笑

ただ、実際に動くものが一から作れたということは素直に嬉しかったです。

## api連携したアプリケーション
その次は``外部apiを利用したアプリケーションの作成``を行いました。

毎日一定の時間になったらIDCFに接続しサーバーの稼働状況を取得。
スラックにそれらの情報を投稿するという簡単なアプリケーションでしたが、そもそもapiとは？どんな使い方をするのか？という学習につながりました。

jsonとか初めて知りました。笑

毎朝8時に気象庁のapiを用いて天気を取得し、LINEを送ってくれるボットも会社の課題とは別に個人的に実装しました。

##広告レポート自動収集
社内の広告運用チームが様々な媒体から手動で日々取得している成果レポートを自動集計するアプリケーションの作成に関わりました。

とはいえ、このプロジェクトで自分がやったことは``phpspredsheet``を用いて収集したデータをスプレッドシートに出力するという部分だけです。笑

とはいえ、初めての複数人での開発だったので先輩社員のコードを読んだら、それを参考にコードを真似て書いてみたりと勉強になりました。

プロジェクト自体がlaravelだったこともあり、MVCの流れやlaravelでの基本的な書き方はここで理解が進みました。
Laravelの学習には下記のサイトをハンドオン形式で進めたのが勉強になりました。
[入門Laravelチュートリアル](https://www.hypertextcandy.com/laravel-tutorial-introduction/)

Laravelこれから書くって人にはもってこいです。

[リーダブルコード](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3BPSV5V49F52E&dchild=1&keywords=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89&qid=1601562293&s=books&sprefix=ri-daburu%2Cstripbooks%2C268&sr=1-1)も大変参考になりました。読む前と後では全然コードが変わります。

ここまでで12月。約8ヶ月くらいです。

その後入社までは海外旅行をしまくっていたので勉強のペースは少し落ちます。
会社に行っていない間はHTML/cssに関して勉強しました。
下記の本を実装しながら読んで学習を進めました。
[HTML5/CSS3モダンコーディング フロントエンドエンジニアが教える3つの本格レイアウト スタンダード・グリッド・シングルページレイアウトの作り方](https://www.amazon.co.jp/HTML5-CSS3%E3%83%A2%E3%83%80%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0-%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B3%E3%81%A4%E3%81%AE%E6%9C%AC%E6%A0%BC%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88-%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%80%E3%83%BC%E3%83%89%E3%83%BB%E3%82%B0%E3%83%AA%E3%83%83%E3%83%89%E3%83%BB%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%AC%E3%82%A4%E3%82%A2%E3%82%A6%E3%83%88%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9-%E5%90%89%E7%94%B0%E7%9C%9F%E9%BA%BB-ebook/dp/B0176GNY26)

#管理画面
入社した今年の4月からは会社の広告配信アプリケーションの管理画面リニューアル案件にアサインされました。
この案件では学んだことが数多すぎて書ききれません。

ここでもまたlaravelが登場するのですが、コードを書くだけでなく設計や、アプリケーション全体の作りまで様々なことを経験しました。

デザインパターンやオブジェクト指向、単に実装するのではなく、拡張性、保守性、改修性が高いのはどんなコードなのかということを少しずつ考えられるようになってきました。でもやっぱり難しい…
フロントに関してもデザイン書に基づいて実装しなければいけなったため、フロント周りの技術も身につきました。

参考になった本
・[PHPフレームワークLaravel Webアプリケーション開発](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel-Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-%E7%AB%B9%E6%BE%A4%E6%9C%89%E8%B2%B4-ebook/dp/B07SPT6XJV/ref=sr_1_4?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=laravel&qid=1601562484&s=digital-text&sr=1-4)
・[オブジェクト指向でなぜつくるのか](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A7%E3%81%AA%E3%81%9C%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%AE%E3%81%8B-%E7%AC%AC2%E7%89%88-%E5%B9%B3%E6%BE%A4-%E7%AB%A0/dp/4822284654)
・[オブジェクト指向における再利用のためのデザインパターン](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF-%E3%82%AC%E3%83%B3%E3%83%9E/dp/4797311126/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3&qid=1601562734&s=books&sr=1-2)

疲れてきたのでこのくらいで終わります。
webエンジニアを目指すという方はぜひ参考にして学習を進めてみてください。
理解した！→やっぱり全然わからない！の繰り返しだと思いますが、やればやるだけできることは確実に増えてきて楽しくなってくると思います。

それでは！