『週刊』オリジナルアプリ奮闘記②【第5号】
こんにちは!
テクノシップブログです!
今回が第5回目の記事になります!
私は現在ITエンジニア養成スクールの『TechCamp』の第109期生として
プログラミングを勉強しています。
その中で、学習の総仕上げとして
「オリジナルアプリの実装」
という課題があります。
その実装の過程をこれから「奮闘記」として週刊でお送りしたいと思ってます!!
さて、今回は前回の記事から1週間ということで、
前回立てた目標の確認と、この1週間で学んだことのアウトプットです。
前回の目標の成果の確認
前回立てた目標は以下の通りでした。↓↓↓
結果はどうだったのか。
目標未達成です💦💦
現時点での進捗状況は以下のようになっています。
目標未達成の原因
目標未達成の原因を自分なりに分析してみると、
①一括登録機能の実装に関して、エラーが多発したこと
②それぞれのページのフロント実装に時間をかけすぎたこと
この2点が挙げられます。
①については、「コレクションモデル」というクラスを使用した新しい
実装に取り組んだため、不慣れな部分もあり、多発するエラーに対処するまでに
時間がかかってしまいました。
主なエラーは以下の通りです。
[1] エラーハンドリングができない
→エラーメッセージを記述したファイルを呼び出すための記述が間違っていた
という単純なエラーから、そもそもモデルにおいてバリデーションが
効いていなかったという根本的な問題まで、様々でした。
これに関してはまだ未解決です。
現在Qiitaで質問中です。↓↓↓qiita.com
[2]フォームに入力した値をデータベースに保存できない
→これは至極単純なエラーであり、<form>要素の特性が
マイナスに働いていました。どういうことかと言うと、
「form要素の入れ子構造は禁止!!」というものをやってしまっていました。
form要素を二重構造にしてしまうと、中側の要素は無視されてしまうという
ようになってしまい、その結果formに入れたデータが
送信できていませんでした。
Qiitaで質問し、解決しました。↓↓↓
次に②についてですが、フロント実装にあまり時間をかけないようにしたい
と思っていたので、便利なWebフレームワークが揃っている
「Bootstrap」というサービスを利用することにしましたが、
できることが多すぎてこだわり過ぎてしまい、結構時間をロスしてしまいました。
今回の実装では、バックエンドの実装に力を入れているので、フロント実装に
あまり時間をかけるべきではないと判断し、途中で切り上げ次の実装に
移るようにシフトしました。
ただこのBootstrapはまだ触りの部分しか扱っていないものの、すごく便利なので
よかったらぜひ!!↓↓↓
難しかった点のアウトプット
この1週間で難しかったのは、やはり
「一括登録機能の実装」です。
しかし、非常に便利な機能だと思うので、復習の意味も込めてここで一度
アウトプットしておきます!!
一括登録機能の実装の流れを図にすると以下のようになります。↓↓↓
指定した数分のフォームを作って、指定した数分のデータを保存するという
処理をコントローラーに記述せず、コレクションモデルとして作成することで、
コントローラーとモデルを繋ぐ橋渡しの役割を担わせることができる
ということですね。
実際に実装していくにあたっては、以下のサイトを参考にさせていただきました。
この実装に関してのキーワードは、
「fields_forメソッド」です。
実装する機会があれば、ぜひ使ってみてください。
この1週間のまとめ
この1週間を一言でまとめると、
「油断大敵」です。
いくら一括登録機能の実装が新しいこととはいえ、
これまで学んできた技術の延長だから、1週間もあればできると甘く考えていました。
しかし、一から十までの工程があるカリキュラムに沿って実装するのと、
インターネットに散財している参考サイトを自分で見つけて参照しながら実装
するのとでは、難しさが天と地ほどの差がありました。
特に参考にできるとしても、そのサイトが想定している
Rubyのバージョンが古かったりする場合も多く、吟味に苦労しました💦💦
計画の見直しが必要ですね。
次回の目標
次回(2/12ごろ)の目標は、
「出荷記録表示機能のバックエンド実装を完了」
とします!
余りフロント実装にこだわりすぎることもなく、かつ伝票作成機能の残りが
あることも考慮し、これくらいのペースにしたいと思います。
次回もお楽しみに。
テクノシップ第5号プチ編集後記
〜この1週間で少々太りました。
エラーが続くと暴飲暴食に走りやすいのか💦💦
なんとかしないといけませんね。
いいストレス解消法あれば教えてください🙇♂️〜