laravelを初体験の私がWEB初心者掲示板をlaravelで作った件

こんにちは。
今回はlaravel初体験の私がWEB初心者掲示板を作成するまでの勉強法と作成時の苦労話などをさせていただきます。
作ったサイト
https://web-beginner.net/
これからlaravelやるよーって方や、WEBアプリ何か作ってみたい方などは参考にしてみてください。

## WEB初心者掲示板を作った背景
最近では、コロナや、終身雇用が崩壊しつつあり、自分で手に職をつけたい、できれば在宅で仕事をしたい、最終的にはフリーランスになりたい、自分で起業したい方などが増えているように思えます。

そこで、タイピングも自信ない、PCなんて普段ほぼ触らないなんて人も、相談できる掲示板があればいいなと思い作りました。
私もそうでしたが、最初なんて、何から始めたらいいか、何をしたらいいか、何を聞いたらいいか、どのように勉強を始めたらいいか、どのサイトで質問したらいいか（質問をしたらしたで、少し調べてから質問してください。なんて返答をもらうことがありますが。）などを多少でも解消できるような掲示板を作りたいと考えたからです。

WEB初心者の方にぜひ利用してもらいたいと思います。

## 勉強法
laravel初心者の私が一つのアプリを自分で作成できるまでのロードマップです。
html、php、javascript、wordpress、の知識が多少あるくらいの状態でした。
Ruby on Railsは昔本一冊やったけど挫折経験あり、、CRUDの機能がうまくできずエラー対処ができなかった、環境構築段階でつまずき、諦めていました。

### まずは環境構築

環境構築では、Dockerと呼ばれる仮想環境を導入しそこで、laravelを動かしてPCに表示させるローカル環境を構築する必要があります。
ここからまず戦いが始まると思う、、が、根気強く頑張りましょう。
PCに関する知識がある方は割とすんなりいくかもしれません。

詰まったところは
+ windowsとMACの違いによるコマンドの違い
+ laravelのバージョンの違いによる違い、エラー
+ pcの初期設定などによるエラー？
などです。

私は環境構築に2日くらい要しました。
原因は、上記に記載のある三点で記事の内容と自分のpc環境や、laravelのバージョンの違いによるところが大きかったです。
port何それ状態でした。

私の環境はwindowsだったため、MACの記事を読んでもコマンドでエラーが出まくっていました。
そこで参考させていただいたのが、下記の本です。

> Laravel 9 実践入門: ～開発環境・実装・アプリ公開までの流れを完全網羅～
> https://chigusa-web.com/blog/kindle-laravel9/

laravel9の最新バージョンでwindowsの説明があり、丁寧な解説があるため、割とすんなりいきました。（わからないところは随時検索必要）

kindle unlimited で無料で読めるので、pcにkindleを入れて、参考にしました。
よくよく調べてみると著者様は、いつもお世話になってるcliborの作者様でした…！！

## 本一冊でコード写経
環境構築で参考にした下記本をまず写経しました。


> Laravel 9 実践入門: ～開発環境・実装・アプリ公開までの流れを完全網羅～
> https://chigusa-web.com/blog/kindle-laravel9/

ここで、環境構築とlaravelの全体像をつかめました。

それでもエラーが出てくることもありここまでで大体２－３日くらい？

### サイトで写経2－3件
laravelのアプリ開発は、丁寧に説明してくれるサイトがいくつかあります。

私が参考にしたのは下記三つ
>TODOリストの作成
>https://www.kamome-susume.com/laravel-todo1/

>掲示板の作成
>https://aburasoba.org/laravel-docker-1/

>twitterのような機能作成
>https://qiita.com/namizatork/items/d79017aa474966244073

まずこの三つのサイトで写経しました。

ただわたしは最新バージョンのlaravelを使用（dockerはlaravel sail という最新？のもの）していたので、バージョンの違いによる書き方のエラーなど、たくさんのエラーにであい、戸惑いました。

２つくらい写経をすると、大体～のために今～を書いたんだなーくらいは理解できてきました。

## 実際作っているときの苦労話
ここからは実際に作成した時の苦労話です。

### 写経の限界
ほぼほぼ写経のみで勉強を進めたため、実際に自分のアプリを作るときに、DB設計など、自分で考えて進めなければいけません。
正直写経のみでは、アプリ作成するための考え方（DBの設計方法、モデル、コントローラーなど何が必要でどのように記載すればよいのか）などはなかなか身に付きません。

なので、最初のアプリを作るときはかなり苦労すると思います。
これこれがこうだから、このテーブルが必要、この機能をつけるために、このテーブルとこのテーブルのリレーションが必要、このコントローラーでは～を処理したいので、～をuseしないといけない。
など正直最初は頭が破裂しそうになりました。

### 初めてのDB設計
CRUDの機能（読み書き削除編集など掲示板に必要な機能）や、今回WEB初心者掲示板を作成する際、お気に入りや、いいね機能を実装したかったので、必ず自分でDB設計する必要があります。
本を読んでも、サイトを参考にしても自分で考える力はなかなかつきません。
なので私はDB設計からだいぶ頭が沸騰しました。

正直この段階では、何がわからないかわからない状態だったので、調べながらまずやってみる。
完璧主義者の自分は捨てる必要があります。
必ずエラーが出ますが、エラーが出たら勝ちだと思います。だって、何がわからないかわかるから。
ひとつづつエラーを解消することで、完成に近づきましょう。

### sqlの知識

私はwordpressでテーブルの概念は何んとなーくわかっていましたが、sqlなどは正直使ったことがありませんでした。

>SQLはデータベース(RDBMS)を操作するための言語です。データベースにデータを挿入したり、検索したりする際に利用します。データベースのなかには、数万・数百万件ものデータが保存されていますが、SQLを使うことで効率的に操作をすることが可能なのです。
>https://products.sint.co.jp/topsic/blog/sql

sqlとはデータベースを操作するための言語です。
正直laravelではsqlの書き方などはほぼ必要ないと思います、が、sqlで何ができるかなどの知識は必須です。
例えば検索ができる、ソートができる、などです。
こちらは調べながら進めました。

### デザイン
苦手なところとするデザイン。
bootstrap（フロントエンドを簡単にできるフレームワーク） を組み込むことが可能なlaravelですが、初めてのアプリなのでやはり多少は自分の色を出したいですよね。。
ただ私はデザインが苦手なので、こちらに関しては私が知りたい。今後の課題です。

## まとめ
いかがでしたでしょうか。
IT業界は毎日勉強が必要とよく耳にしますが、本当に必要なものは勉強よりもアウトプットだと思ってます。

正直今回のWEB初心者掲示板は会心のできとは思っていません。
ただ、今回自分で考えて作れたので、次はもっといいものができると自信がつきました。
個人開発で色々調べてみると、２０－３０個作る人も多いみたいです。

自転車の乗り方の勉強をするより、実際乗ってみて感覚をつかむほうが大事だと思います。
プログラミングも同じだと思います。一緒に頑張りましょう。