ボクとPHP・Laravel・Dockerとの約200時間

#始まりは突然に…
あれは、ある企業に面接したときの事でした。それまで、私はRubyでの開発を行っており、ポートフォリオもRailsで作成していました。その面接で、ポートフォリオの説明を行い面接終了時に次のようなお言葉を頂いた時から始まりました。
**あなたに課題を出します。それを期限を決めませんが行ってください。**とのことでした。課題とは以下の通りです。
[![Image from Gyazo](https://i.gyazo.com/d8831f7d2e8311d2bea7480b0cc4a1ed.png)](https://gyazo.com/d8831f7d2e8311d2bea7480b0cc4a1ed)
##:fire:それを成し遂げた理由:fire:
それは、至って単純な話です。
**やってみたい・挑戦してみたい**と思ったかです！
やりたいやってみせるという気持ちで望みました！

#で、一体何から着手したのか
プロセスは以下の通りです。
①プロゲートの初級（PHP基礎学習）
↓
②ドットインストールPHPに関するもの全て（PHP基礎学習）
↓
③ドットインストールDockerに関するもの全て（Docker基礎学習）
↓
④ドットインストールLaravel基礎の部分のみ（Laravel基礎学習）
↓
⑤Docker環境下でLaravel立ち上げYouTube等の動画を元に実践（Laravel実践学習）
↓
⑥ちょっとした掲示板を作成（Laravel実践学習）
↓
⑦ポートフォリオ作成（ErrorStocker作成）
この様な流れで実施
以下が着手時間です。学習管理に関しては、[Studyplus](https://apps.apple.com/jp/app/studyplus-%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3%E3%83%97%E3%83%A9%E3%82%B9-%E6%97%A5%E3%80%85%E3%81%AE%E5%AD%A6%E7%BF%92%E7%AE%A1%E7%90%86%E3%81%AB/id505410049)を利用しました。
・PHP基礎学習に費やした時間：31時間11分（2月6日〜2月11日）
・Docker基礎学習に費やした時間：8時間10分(2月7・11・12日)
・Laravel基礎学習に費やした時間：31時間24分(2月11〜18日)
・ErrorStocker作成に費やした時間：130時間4分(2月18日〜3月18日)
合計時間：約200時間

#📚作成したポートフォリオ
###題名：ErrorStocker
URL:http://error-st.com
GitHub:https://github.com/miyaseinto/ErrorStokcer

###何を目的に作成したのか??の前に軸を話させてください！
少し私の話になりますが少々お付き合いください！（どうでもいいんだよテメェの話なんかと思った人は飛ばしてください笑）
これは、私がエンジニアを目指した軸にあります。
【不便に感じたものをデジタル化でより楽ができるように便利に変えたい】これが私がエンジニアを目指した軸です。
なぜその様な軸ができたかというと、前職での公務員経験からこの様な考えが生じたからです。
前職の公務員は超田舎で勤務していました。そのため、デジタル化が都会より著しく劣っており何をするにもアナログで不効率でした。何より住民の方が大変な思いをすることが多々ありました。回覧物だったり、各種手続きだったり、仕方がないことだと考えていました。ですが、エンジニアという職業がそれらを解決に導く職業であるのでは無いかと調べるうちに、それを担ってやりたいという思いが日に日に増していきました。
で、それを勉強したいと思い勉強していく中で自分が書いたコードがブラウザ画面で変化していくことにとてもやりがいを感じ、これを仕事にしたいと考え公務員を退職しエンジニアを目指そうと思い勉強に励みました。
退職した職場には申し訳なかったのですが、自分の腹の中を上司の方々に話すとそれならば挑戦してみろと背中を強く押してくれました。ですので、その思いを全部背負っとるじゃいと思いながらエンジニアになりたいと考えてます。これがエンジニアを目指した軸のお話です。（長々と申し訳ないです笑）

###作成背景&目的
上記の軸を基に、プログラミングの勉強をしている時に不便に感じたことを便利に変えるために作成しました。
私が、エラーと遭遇した時にリファレンスサイトやQiitaの内容からエラー解決に導こうとします。そこで、いつもは一度エラーした内容をGoogleのブックマークの中にファイルごとに保存して、もう一度確認をしたい時に見直しをしておりました。しかし、情けない話そのファイルをどこに保存したのかがわからなくなり、探すことに時間を掛けることがありました。そこで、検索をかけてその内容を短時間で探せることはできないかと考え作成に至りました。

###工夫した・苦労したPOINT
・投稿内容をマークダウンで投稿できるようにしたこと（リンクを文字列内に入れたいと考えたため）
・上記と同じだが、コメント機能にもマークダウンを使用したこと(上記と同じ)
・投稿した時間を表記させたこと
・コメントした時間を表記させたこと
・Bootstrapを使用したが、Bootstrap感を排除したこと
・写真の圧縮を行ったこと
・タグを一覧でも表示させたこと
・閲覧用としてログイン簡略化させたこと（通常のログインと表示は異なる）
・ページネーションを導入したこと
・キーワード検索をタイトルの内容と本文の内容で検索できるようにしたこと
・キーワード検索で検索件数を表示させたこと


#📗機能一覧
**ユーザー機能**
・ユーザー登録（投稿用ログイン）
・ゲストログイン（閲覧用ログイン）
・マイページにて以下の投稿の一覧表示
・自分の投稿内容
**投稿機能**
・エラーのストックをログインアカウントが投稿・編集・削除
・一覧表示、詳細表示
・投稿一覧表示で10個の投稿数をページネーションを実施
・写真投稿及び圧縮（intervention/image）
・タグ付け（タグ検索）
・キーワード検索（タイトル・内容）
・投稿内容にマークダウンを採用（cebe/markdown）
**コメント機能**
・投稿にコメントを投稿・編集・削除
・投稿詳細ページにコメント一覧表示
・コメント内容にマークダウンを採用（cebe/markdown）

#📓使用技術
**フロントエンド**
・HTML / CSS / Bootstrap
**バックエンド**
・PHP 8.0.2
・Laravel 8.28.1
**データベース**
・Mysql 8.0
**開発環境**
・Docker 20.10.2
・docker-compose 1.27.4
**本番環境**
・AWS(VPC、EC2、S3、Route53)
・Nginx

#:computer:各種解説内容投稿
・[Dockerの内容解説](https://qiita.com/miyaseinto/items/0e30af8346d8df1a980d)
・[マークダウン導入内容解説](https://qiita.com/miyaseinto/items/f760d72b9998e55f4af1)
・[投稿内容の解説](https://qiita.com/miyaseinto/items/428c199ee6cad17aab51)