タイトルの通りの内容です。
仕事を続けながら9月よりスクールにてRubyを中心に学んでいます。先日Ruby on Railsで簡単なウェブアプリを作ったので、苦労した点と反省点をメモとして残しておこうと思います。
仕事続けながらスクール入って1か月、RubyonRailsで簡単なブログ投稿サイトを作成。反省点は無限にあるし、そもそも公開するようなレベルではありませんが、次の1か月でもっといいもの作るぞと自分に喝を入れる意味で。 #RubyonRails #駆け出しエンジニアと繋がりたい pic.twitter.com/ct5Ue2Y6le
— hiro koba (@hirostf) October 3, 2020
#実現したこと
・データベース(postgreSQL)を作成してメッセージを管理
・投稿一覧ページ、新規投稿、編集、削除機能
・新規投稿と削除の際に確認メッセージ表示
・投稿の数をパラメーターから取得して表示
・投稿時間をパラメーターから取得して表示
・JavaScript(jQuery)でトップページやサイドバーのイラストをフェードインさせる
#やりたかったけど実現できなかったこと
・ログイン機能
・Bootstrapを使ってのデザイン
・その他もう少し高度な機能を盛り込みたかった・・・がそもそもどんな高度な機能があるのか分からない!
#自分で気づいた改善すべき点
・そもそも誰が使うサービスなのかを想定していなかった(今回のサイトで言うとつぶやくのが動物園なのか訪問客なのか判然としていない)
・デザインをもっと洗練されたものにしたい
・不明な点を調べるときに公式リファレンスを活用しきれていない
#挑戦してみたこと
まだスクールで学習していない要素で、①投稿の数と②投稿時間をパラメーターから取得するというのをやってみた。
#####①投稿の数をパラメーターから取得
indexページで、投稿の数を自動的にカウントして表示する機能を作成しました。コンソールでやってみたところ、投稿の総数は
Blog.all.count
で取得できる。なのでblogs_controller.rbファイルのインデックスメソッドのところで
def index
(他のコード省略)
@count = Blog.all.count
end
・・・で@countに投稿の総数の数字を代入。その後index.html.erbファイルにて
<h2>つぶやいた数:<%= @count %></h2>
・・・といった感じで受け取って表示しました。
#####②indexファイルの各投稿に投稿した時間を表示
これが少し苦労しました。なぜかRailsのmigrationファイルにtimestampsメソッドが記述されておらず(実はデフォルトで作成されるもののはずなのですが)、最初コンソールの中をいくら探しても投稿時間のパラメーターが表示されてこなかったのです。
・・・で、テキストやネットを駆けずり回った結果ようやく問題に気付いて、migrationファイルをrollbackしてtimestampsを追加する処理をして、、、とえらく遠回りをする羽目になりましたが、パラメーターの見方や、migrationファイル、migrate、rollback処理に習熟するいい訓練になったと思っています。
この時間を取得するパラメーターは
blog.created_at.strftime('%Y/%m/%d %H:%M:%S')
・・・日付表現もRailsの公式リファレンスでははっきり分からず、ネット記事などを参考にいたしました。できれば公式リファレンスだけで乗り切るようになりたいところですが、この辺りも今後数ヶ月の課題だと思っています。
#今後の課題
######スクールのテキストで教わったこと + αができるようになる
スクールで教わったことができるのは当然。それ以上の「実現したいこと」を明確にして、どうやって実現するかを考えて、自分で(できるだけ公式リファレンスを中心に)調べて実現することができるようになること。今回パラメーターから数値を取得するというのはこれを意識してやったことですが、まだ初心者の域を出ていないと思っているので、もっと貪欲に目標設定→実現のための戦略立案→実現、のサイクルを回していければと思います。