エンジニア未経験が初めてイベントに参加した話　〜SimDev WebApp by DONUTS〜 備忘

## 概要
DONUTSと一般社団法人未完の共同開催のオフラインイベントに参加してきました
学習したこと・感想などの備忘録的です

参加したイベント

https://connpass.com/event/309297/

## 

## イベント概要
ビジネス要件をもとに参加者で要件定義〜開発までのフローを体験できるハンズオン研修で要件定義・設計（DB設計、画面設計）、開発を2〜3名のグループに分かれて要件に沿った開発を進めていこー的な内容でした。
作成するものは、勤怠管理システムで言語はphp、研修は２日間の開催で参加者８名でした。
イベントを見つけた時に、phpでの学習経験が無かったり開発の学習はやっていたものの１年くらいしてなかったことやイベント自体参加したこと無かったので躊躇していましたが、開発体験できるっぽいし現役のエンジニアさんが教えてくれるみたいだし初学者向けの内容みたいだし、何より楽しそう！と深夜テンションのノリで参加を決めました！



## 学習内容　1日目
### 【要件定義】
設定されたビジネス要件を満たすために、どのような機能が必要か、画面はどのように作成したら良いかなど議論する時間でした。
この時間が1人で開発しかやってこなかった自分にとってはかなり有意義で楽しい時間でした。
グループのメンバーと意見を出し合うことで必要事項を洗い出す作業はチーム開発することでしから得られない経験かと思うので、グループで要件定義できたことですでにイベントに参加してよかったと思いました。

この時にアドバイスいただいたこととして、議論の中で作成したメモ書きは残しておくことが大切だということでした。
議論で出たメモ書きが後々必要だったりすることがあるらしいっす。理由としては、この後のフェーズで設計・開発の際に要件を満たせないなどの事象が発覚するケースが珍しくなく、その際にメモ書きが重要になってくるとのことでした。
議論の中で出た結論などや不要と判断したことなどをメモに残しておくことで、再度議論する工数を減らせるまたは、違う設計・開発方法のヒントになるのかなと想像しました。
正直手戻りの可能性はこちらに非がなくても起こりうることなので、日頃から議論する時間は自分なりの考えやその場の決定事項をメモ取る習慣は重要だなと再認識しました。

### 【設計】DB設計・画面設計
要件定義で洗い出した必要な機能を実現するためにどのようなDBの設計が必要なのか、画面はどのように表示できていればよいかなどを議論する時間でした。
ここのDB設計がかなり苦戦しました。理由はシンプルにDB設計の経験がなくテーブルはいくつ必要で、カラムは何が入っていればよいか、格納されるデータ型のイメージできず時間を要したところでした。設計の経験も自分からしたら貴重な体験で、特にDB設計は作業が詰まることが多く、難易度は高かったです。
設計の課題の中で
どのようなデータを格納する必要があるかを書き出し→書き出したデータを抽象化できないかを考える→カラム名、データ型などを決定していく　
といった上記の流れがなんとなく作業イメージを自分の中で持つことができたので、今後のDB設計の考え方を学ぶことができました。
また、DBの設計がいけてないと開発の段階で手戻りが発生することも経験できDB設計の重要性について理解が深まりました！

### 【環境構築】PHP SQL
自身のPCにそれぞれツールの環境構築を行い、開発に入る準備をする
これは、なんとなく理解はしていたものの環境構築の後実際に確認する手順であったりエラーが出た際に状況を把握し的確に対応されていたメンターの方々がすごかったです
エラーや不具合に対して片っ端から的確な対応していく様子がカッコよくて惚れました。不具合の修正に全てのWindowsPCでファイルの変更が必要？となったみたいで、その処理を行うファイル？を短時間で作成して対応していたのが特に印象的でした。なんだかやっていることが意味不明でしたが、エラーの内容しっかり読む癖をつけないとなと痛感しました。

環境構築が完了したら、マイグレーションを行いDBとPHPを連携する作業を行いました。
マイグレーションは自分が過去、Djangoで開発する際に躓いて挫折した箇所だったので実際に手解きを受けながら作業を自分で完了することができたので、個人の開発でも試してみようと思います。

ここまで18時となり1日目の研修が終了しました。

### 1日目の感想
職業エンジニアの方々の対応力、知識すごすぎぃの一言でした。
質問に対して、すぐ回答が来ることと原因不明なエラーに対しても仮説を立てて対応したり、エラー原因を調べることで不具合を解消していく様子はプロだなーと尊敬の極みでした。惚れた（再喝）
研修時間もかなり余裕を持って設定されているように感じ、全員が同じ作業を完了するまでサポートしてくださり不明点の解消やタスクの進め方のヒントを質問する時間があったため理解を深めながら研修を進められたと感じました。
自分もエラーの対応とか即時解消できるように知識と経験を積みたいと改めて感じたのと、研修の内容が業務に近いことを行っていただいたことで実際に働いている現場をイメージすることができてエンジニア転職のモチベーションが湧きました。
オフラインイベント童貞だった自分は会場に入るまで不安や緊張もあったものの、蓋を開けてみれば楽しく充実した１日となりました。


## 学習内容　2日目
### 進捗の確認
２日目の始まりは実際に業務の流れに似てチーム内での進捗の確認からスタートしました。昨日までにできているところ、できなかったところ、確認事項などをチーム内のメンバーと会話し共有しました。このような、業務を再現していただくようなタイムスケジュールは実際の現場をイメージしやすくありがたかったです。

### 開発
進捗の確認などを５分くらいで済ませて、早速開発に入って行きました。開発の際に詰まったポイントとしては、controllerにviewとmodelを接続して、controllerからrouteに接続してブラウザに表示させる、この一連の接続作業の目的と各ファイルでの処理（接続させるために各ファイルのどこに何を記載するか、ブラウザに表示させるための加工処理をどのファイルに記載するかなど）に時間がかかりました。MVCモデルの思想の考え方は初めて聞く内容だったので苦戦しながらなんとか、DBをViewに接続まではなんとか完了することはできましたが、打刻した際にDBにデータを格納する機能の作成まで辿り着かず、未完成のまま研修終了となりました。
開発はわからないことが多く、自分のレベルを知る良い機会となりました。何がわからないかわからない状態からは脱しただけでも良かったなと


### 終わりに
今回の研修で、得るものは多かったとノリで参加を決めて良かったと思いました。特に誰かに教わったりメンバー同士で教えあったりすることで自分の知識レベルがわかったりわからないところがわかるようになって学習するべき領域がはっきりしたことが一番良かったす。あと、実際に現役のエンジニアの方々と話す機会が無かったので貴重な時間でした。参加者の方々も主に学生さんが多く、刺激になりました。楽しかったー
今まで苦手意識で参加してなかったイベントも今後は積極的に参加して行きたい！！

改めて運営の皆様、参加者の皆様お疲れ様でした。充実した時間を過ごせました、ありがとうございました！！
またどこかでお会いしましたらお声掛けいただければ嬉しいです〜　あざした