プログラミングブログ

文系大学生がwebエンジニア目指してプログラミング

TECH::EXPERT 4週間目を振り返ってみた

TECH::EXPERTに通い始めてから4週間٩( 'ω' )و
4週間目は、ミニアプリ開発、chatspaceのフロント実装、ユーザー・グループ・メッセージ機能の作成、テストについての学習を行いました。


22日目(日)学習休み

23日目(月)ミニアプリ開発、夜にミニアプリ発表会

夜のミニアプリの発表会に向けて1日中ミニアプリを開発していました。21日目(土)に丸1日使って必要な機能などは全部つけたので、この日はビューで、ツイートやコメントの投稿を作ってくれるform_forメソッドを記述したり、mechanizecssを使ったときに思い通りの見た目にならなかったので四苦八苦しながら見た目を調節したりしました。ビューを作るって意外と本当難しい。特にform_forメソッドを使ったときにエラーが出まくりで、今日発表なのに〜泣と焦りながらエラーを解決しました。夜には同期でミニアプリ発表会がありました。同期の発表を見ていると、時間のない中作ったということで完成しきれていない部分がありながらも、pictweetを参考にしつつデザイン面や機能面で少しオリジナルを加えたミニアプリが多かったです。勉強になりました。


24日目(火)chatspaceのフロント実装

ミニアプリ開発に時間を割いてしまったため21日目(土)以降中断していた、chatspaceのフロント実装を再開しました。


25日目(水)charspaceのフロント実装

この日もchatspaceのフロント実装を行いました。固定すべきところがうまく固定できていなかったりと不完全な部分はまだあったのですが、限界を感じとりあえずgithubでプルリクエストをしてメンターさんからレビューをもらうことにしました。
しかしここでハプニング。フロント実装していたブランチを間違えてmasterブランチにマージしてしまった😱masterブランチにマージしてしまうとプルリクエストが消えてしまうのです。。マージを取り消すためメンターさんからのアドバイスをもとに、revertとというものをしました。しかしこのrevertの非常に面倒な点が、作業していたブランチで変更したことが全て消えてしまう点です。なので、chatspaceのフロント実装をもう一度やりました。と言っても変更したコードは見れるので、それをコピペするだけでよかったのが救いでしたが。。
全部コピペし終えて「さあプルリクエストだ」とプルリクエストをしてメンターさんのレビューをお願いしました。のですが、、メンターさんから「フロント実装で変更したコードが全てのっていません。revertして全て載るようにしてみてください。(意訳)」とコメントをもらい、、えっさっきrevertしたんだけどなあどうしようと色々悩んだ結果、重大な過ちを犯したことに気づきました。その重大な過ちとはrevertしたものをmasterにマージしていなかったことでした。言葉で説明するのが難しいのでこれ以上は割愛させてもらいますが、そのせいでとにかくややこしい問題が起きてしまいました。一人ではどうすることもできずメンターさんにヘルプを頼みましたが、メンターさんもすごく悩まれていて。。でもどうにか解決してくださいました。本当にありがとうございます。。解決してくださったメンターさんを見て私もこんな問題解決ができるエンジニアになりたいと強く思いました。
その後はプルリクエストをし、フロント実装のレビューをもらい、手直しをして最終的にOKをもらえました。進捗的に2日遅れていたので💧本当今日中にOKもらえて良かったです。


26日目(木)chatspaceのユーザー機能、グループ機能

この日はchatspaceのユーザー機能とグループ機能をつけました。1.モデルを作る 2.アソシエーションを定義する(has_manyやbelongs_toを使って) 3.ルーティングを設定する 4.コントローラーやビューを編集 こんな感じの流れで機能をつけました。基礎カリキュラムのpictweetやmooviでやったことのおさらいが多かったですが、
初めて登場してきたものとしては、フラッシュメッセージの機能(サインアップしたときに「サインアップされました」、ログインしたときに「ログインされました」といったメッセージがビューの一番上に表示される機能)や、user_idsといったカラムや、redirect_toとよく比較されるrenderや、formで出てくるチェックボックスの記述などでした。問題→解答を見るという流れで機能をつけていくのですが、解答を見るといきなりこれらが書いてあって、意味などは自分で調べました。


27日目(金)chatspaceのメッセージ機能、テストについて学ぶ

chatspaceのメッセージ機能をつけました。機能をつける流れは上記と同じで、pictweetやmoooviのおさらいが多かったです。
初めて出てきたこととしては、画像を投稿するときに CarrierWaveというgemを使ったこと。
後少し細かいことですが、グループとメッセージは入れ子構造になっていて(グループが親、メッセージが子)、 メッセージコントローラーでグループコントローラーで定義した変数(@groupとか)を使いたいな〜って思ったときに、@group = Group.find(params[:group_id])をメッセージコントローラの一番最初に実行するようにしたら良いということを学びました。
次に、テストについて学習しました。プログラムが意図した通りに動くかなってチェックするテストです。Rspecという言語を使ってテストするためのコードを書きました。テストには単体テストと統合テストがあります。単体テストでは、一つのプログラム単体が正常に動くかを確かめます。例えばモデル1つ、コントローラー1つでテストをします。
統合テストは複数のプログラムが連動して正常に動くかを確かめます。
この日は単体テストを実際にやってみて学びました。


28日目(土)テストについて学ぶ

この日も単体テストについて学びました。
なんだこのコードは?というものが結構出てきて、調べても分かったような分からないような。。特にfakerというgemを使って書いたコードが分かりにくいです。


最後に

内容的に難しいとこに差し掛かってきたり、少し飽き性が出てきたり、体調を少し崩したこともあって集中力が続かないということがありました。なので一度休む時間を多くし回復させつつ、自分はエンジニアになりたいんだという気持ちはもう一度思い出しました。5週目からは気持ちを入れ直して学習に臨みます。
あとは朝起きる時の疲労感で朝起きれない問題を解決することができていないので、寝る1時間前にはブルーライトを浴びない、これだけでも効果があると思うので実践していきます。