テックキャンプ短期集中オンラインコース。学習65日目のふりかえり

学習時間:10:00

実装内容(オリジナルアプリ):タグの登録及び上書き機能

解決したことや学んだ単語:タグ機能の実装ではデータを配列で送るため、コントローラー側でも配列から要素を取り出して処理する過程が必要になる。

 

学習の振り返り:

 本日はタグを利用した食品の登録及び上書き機能の実装を行なっていた。JqueryUIとtag-itというライブラリ及びプラグイン を使おうと思っていたがj Queryのファイルが上手く読み込めず断念。それらのライブラリが使えないと登録もできないと思っていたが、別の方法で登録上書き、ついでに更新履歴変更機能も実装できた。現在発生している問題としてはN+1問題が解消できていないことが挙げられる。原因としては親である利用者モデルから子モデルである食事テーブルを挟み中間テーブルの先にあるタグテーブルへの連携がうまくいっていないことで、なんとか解決できる記述方法を探したい。

テックキャンプ短期集中オンラインコース。学習64日目のふりかえり

学習時間:9:00

実装内容(オリジナルアプリ):詳細検索機能の修正、食事提供表へのソート機能実装、READMEの修正、タグ機能への着手

解決したことや学んだ単語:throughを定義する場合、それに関連するもの通過するものは先に関連付けさせる。heroku無料枠では1時間当たりのクエリ数が3600までと制限されており、大量にデータを登録するとエラーが起きる。

 

学習の振り返り:

 本日は食事提供表の実装に伴って増えたデータの詳細検索機能への反映、食事提供表へのソート機能実装、READMEの修正作業、タグ機能への着手などを行った。詳細検索機能のレイアウトについてはデータが増えたことでテーブルが圧迫されてしまい、見た目が少々不格好になっているのが気になるが大きな問題ではないので置いておく。詳細検索機能の細かい変更点としては編集詳細削除ボタンを無くして、代わりに利用者の名前をクリックすることで詳細画面へと遷移することができるようにしたことが挙げられる。他にも細かいところではあるがリファクタリングを行ったり、ヘルパーメソッド を追加して処理を条件分岐させ、できる幅を増やしてみたりした。タグ機能にも着手することができたので、うまく行くようであればこのまま実装させたい。
 つまづいた問題として、いつも通りherokuにデプロイしseedファイルの読み込みを行った際にherokuがエラーを吐き出したことがあった。調べたところクエリ数が無料枠の制限を超えてしまったということで、1a時間後に再度処理を実行したところ問題なく行えた。完成間近というところで同様にハマる人も多いんじゃないだろうか。参考にした記事を載せておくので頭の片隅に置いておくといいかもしれない。

 

www.yukoku.work

テックキャンプ短期集中オンラインコース。学習63日目のふりかえり

学習時間:10:00

実装内容(オリジナルアプリ):食事提供表に着手 登録機能画面と編集画面の修正、共通の編集画面を使えるように処理を修正、foodモデルのテストコード、結合テストコード,詳細検索機能の修正など

解決したことや学んだ単語:sessionとヘルパーメソッドを活用することでリクエストをする際にも処理を行うことができる

 

学習の振り返り:

 本日は昨日に引き続き食事提供表の実装作業を行なっていた。今まではそれぞれの表から編集画面に移行した際、元の表ページへと戻るために編集画面及びedit,updateアクションを個別に用意していたのだが、sessionの仕組みの活用とヘルパーメソッドを記述しリンクを踏む前に事前処理を行えるようにすることで、一つの編集画面及びコントローラーに処理をまとめることができた。知識としては知っていても、それを実際に生かせるかどうかは別問題。だが今回は知識を実際に活用し、自ら工夫して実装することができたので、学んだ知識が着実に血肉になっている実感がある。今後もこの調子で頑張っていきたい。

 現在の課題について。詳細検索機能は検索結果との照合がしやすいように、専用のページを用いて全てのカラムを表示させていたのだが、foodテーブルの追加によってデータの種類が増えたため、全てを表示させることが難しくなってしまった。表示するカラムを絞るか、いっそ検索専用ページをなくして利用者一覧表に詳細検索ボタンを移動させてもいいかもしれない。要検討。

 

テックキャンプ短期集中オンラインコース。学習62日目のふりかえり

学習時間:10:00

実装内容(オリジナルアプリ):食事提供表に着手モデルの作成、アクティブハッシュの作成、コントローラーの一部修正、フォームオブジェクトの修正など。

解決したことや学んだ単語:(0 % 任意の数字)としたときの値は0

 

学習の振り返り:

 本日は午前中にカリキュラムの復習を行い、午後から最終スキルチェックテスト及び機能実装の続きを行った。最終スキルチェックテストではWebアプリケーション基礎と論理的思考力の二つの科目があり、Webアプリケーションに関しては自信を持って答えることができた。満点は取れなかったがそれに近い結果を得られたと思う。反面論理的思考力ではコードを読むのに時間がかかってしまい、未回答の問題を多く残してしまった。0%(任意の数字) の答えは0だという基本的な理解が抜けていたりもして、自分でコードを記述する、理解するという点において勉強が足りていないことを痛感した。今後はこうした方面の勉強も行っていきたい。オリアプの機能実装に関しては新しく食事提供表を増やすこととした。実装内容としては入浴形態表や水分提供表とそう多くは変わらないが、タグ機能などを追加し入力しやすいようにしていきたい。

テックキャンプ短期集中オンラインコース。学習61日目のふりかえり

学習時間:8:00

実装内容(オリジナルアプリ):顔写真機能の実装、プレビュー機能の実装、操作しやすように編集後の遷移先を工夫

解決したことや学んだ単語:sessionを用いることでページを跨いで値を受け渡すことができる。

【Rails】Sessionの使い方について - Qiita

 

seedファイルでActiveStrageを利用して画像をDBに保存する場合は、付与したいレコードを検索して改めて添付すれば良い。

guest = Guest.find(1)

guest.image.attach(io: File.open('public/images/test_man.jpg'), filename: 'test_man.jpg')

39mamon.hatenablog.com

 

 

 

学習の振り返り:

 本日はライフコーチとの面談を行い残り日数で行う作業の方針を決めた。選択肢が3つあり、ひとまず完成したオリアプに追加実装を行うか、製作途中だった別のオリアプに着手するか、0からアプリを作成するかで悩んでいた。相談の結果、就活に備え、ポートフォリオとして提出する一つに注力すると決め、追加実装を行っていくこととした。残りの日数できるだけのことをしていきたい。

 

 本日の作業内容としては顔写真機能の実装を行った。具体的には画像の登録上書き表示機能、画像選択時のプレビュー機能、画像の登録先をAWSのS3へ変更するなど。seedファイルへの記述でActiveStorageを使用してDBに画像を保存する際の記述方法などカリキュラム外の細かいところも実装していく中で学ぶことができた、この調子で今後も実装を進めていきたい。

 また編集後の遷移先をsessionの仕組みを使うことで操作しやすいように変更することができた。小さなことだがこうした工夫の積み重ねが使いやすいアプリの製作につながると信じ積み上げていきたい。

テックキャンプ短期集中オンラインコース。学習60日目のふりかえり

学習時間:10:00

実装内容(最終課題の追加実装):SNSアカウントでのログイン,コメント機能,画像のプレビュー機能実装

解決したことや学んだ単語:ActiveCable,Channel,stream_from,broadcast,file_fieldのacceptオプション,jQueryのappendメソッド

 

 

学習の振り返り:

本日は追加実装カリキュラム(SNS認証機能、コメント機能)を行い、就職活動に向けてキャリアアドバイザーと相談を行った。SNS認証機能は以前Twitter認証を自力で実装していたのである程度知識がある状態で進めることができ、理解も早かった。カリキュラムではdeviseを利用してgooglefacebookなど複数のAPIに対応しており、学ぶことが多かったように思える。またコメント機能の実装ではActiveCableを使用しchannelを作成したりbroadcastを設置するなどして非同期でのコメント機能を簡単に実装することができた。やれることが増えてきたことを嬉しく思う。
 キャリアアドバイザーとの面談ではアプリの感想を聞いた。READMEは問題なし。アプリの良い点として、工夫した点が明確でこれまでの経験を元にしている。仮設検証した経緯も書かれていて説得力があるとお褒めの言葉をいただいた。学習期間の終了が近づきナーバスになっている部分もあるが、自信を持ってこれからの学習も行っていきたい

テックキャンプ短期集中オンラインコース。学習59日目のふりかえり

学習時間:11:00

実装内容(最終課題の追加実装):フォームオブジェクトの実装、タグ付け機能、ウィザード形式のユーザー管理機能実装、SNSアカウントでのログイン

解決したことや学んだ単語:モデルに対応するテーブルのカラム名以外の属性を扱いたい場合はattr_accessorを用いて追加する。具体的な例で言うならフォームオブジェクトの実装時など。formオブジェクトの実装、デザインパターン=実装したい要望に対して最適な方法や手順をまとめたもの、formオブジェクトパターン=複数のモデルに関連するデータを更新する,first_or_initializeメソッド=whereメソッドと一緒に使う。whereで検索した条件のレコードがあればそのレコードのインスタンスを返し、なければ新しくインスタンスを作るメソッド、逐次検索機能=インクリメンタルリサーチ、登録したデータを探しやすくする=パンくずリスト,persisted?メソッド(DBに保存されているデータかどうか)

 

学習の振り返り:

本日は昨日に引き続き、まだ行なっていなかった最終課題の追加実装カリキュラム(フォームオブジェクトの実装、タグ付け機能、ウィザード形式のユーザー管理機能実装、SNSアカウントでのログイン)を行なった。デザインパターンやインクリメンタルリサーチなど新しく覚える単語が多く、またsessionの使い方など実装のヒントになるものも多く良い学習だった。最終実装はオリジナルアプリに比べてアピールの面から優先順位は下がるが、スキルアップにはぴったりなので実装するかどうかはともかく、カリキュラムは一通り終わらせていきたい。