30代プログラム初心者がWEBエンジニアになる

30代プログラム初心者が、WEBエンジニアになるまでの奮闘を書いていきます。

Hamlでの記述

こんにちは、ぐっちと申します。

最終課題に入る前まで私は、Hamlでの記述に苦手意識を持っていました。

しかし、何度もHamlでビューを作成していくうちに、今ではむしろHamlの方が便利だと思います。

何事も回数をこなし慣れていけば、苦手意識も無くなっていくものだと実感しました。

 

しかし、クラスの命名はどうしても慣れないです。

自分が分かりやすいと思って命名した物でも、他の人には分かりにくかったりと毎回頭を悩ませます。

命名もすんなり出来る様に回数をこなして勉強していきます。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169

開発は順調

こんにちは、ぐっちと申します。

 チーム開発が始まり、7週間が経ち機能も充実して来て、完成が見えてきました。

最初は本当に期限内に完成するか不安でしたが、メンバー同士協力し合い順調に進める事が出来ています。

互いに困り事を相談し、解決し合いより良いものにしようと進めています。

スプリントレビューでも、ライフコーチに順調だと言われ安心しました。

 少しづつ指示書に無いオリジナル要素等も実装しようと思っています。

このチーム開発でこれまで学べない色々な事が学べました。

完成まであと少し頑張っていきます。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169

アクセスしたページ毎にリダイレクト先を変えたい

こんにちは、ぐっちと申します。

現在チーム開発中のアプリでは、ユーザーが住所登録をするのですが住所登録が出来るページが2箇所あり、アクションは全く同じなので使い回しをしたい、しかしそれぞれリダイレクト先が違うので、そこはうまく分岐をさせたいと思い色々調べました。

 

アドレスを登録する addresses#create アクションが動いた時に、アクセスしたページが分かれば分岐出来そうなので、

request.fullpath

 を使用したら出来るかと思いましたが、これは現在の path を取得するものなので、addresses#create アクションが動いた時のpathは '/addresses' でアクセスしたページに関わらず同じで、分岐させる事は出来ませんでした。

 

addresses#create アクションを動かした前の path が取得できれば良いのですが、そんな都合のいいものがあるのかと思っていると……ありました。

 

なんと、遷移元のcontrollerを取得する方法があり

Rails.application.routes.recognize_path(request.referer)[:controller]

と記述すると、例えばマイページで登録した場合

mypages コントローラで表示させているので、'mypages' が返って来て、

if Rails.application.routes.recognize_path(request.referer)[:controller] == "mypages"

 という様に条件に指定出来てリダイレクト先の分岐が出来ました。

 

調べると本当に色々な事がメソッドによって実現出来て、見つけられるかによってスマートなコードに変わるものだと実感しました。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169

通知に〇〇前表示をさせる

こんにちは、ぐっちと申します。

よくアプリの通知欄の下などに、「2日前」や「1時間前」などの時間表示がありますが、それを実装したく思い調べてみました。

 

やっぱり複雑なコードが必要なのかと思ったいましたが、簡単に実装出来てしまいました。

time_ago_in_wordsメソッドというものがあり、それを使用します。

 

まず、config/locales/ja.yml を作成します。そのファイルに

ja:
 datetime:
  distance_in_words:
   half_a_minute: "30秒前後"
   less_than_x_seconds:
    one: "1秒"
    other: "%{count}秒"
   x_seconds:
    one: "1秒"
    other: "%{count}秒"
   less_than_x_minutes:
    one: "1分"
    other: "%{count}分"
   x_minutes:
    one: "約1分"
    other: "%{count}分"
   about_x_hours:
    one: "約1時間"
    other: "約%{count}時間"
   x_days:
    one: "1日"
    other: "%{count}日"
   about_x_months:
    one: "約1ヶ月"
    other: "約%{count}ヶ月"
   x_months:
    one: "1ヶ月"
    other: "%{count}ヶ月"
   almost_x_years:
    one: "1年弱"
    other: "%{count}年弱"
   about_x_years:
    one: "約1年"
    other: "約%{count}年"
   over_x_years:
    one: "1年以上"
    other: "%{count}年以上"

を記述します

次に、config/application.rb に

config.i18n.default_locale = :ja

 を記述します

これでビューに

<%= time_ago_in_words(hoge.created_at) %>前

 を記述するだけでレコードが作成されてからの時間が表示される様になります。

 

調べると本当に色々な便利な機能が出てきて、驚きと共に勉強になります。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169

チーム開発の難しさ

こんにちは、ぐっちと申します。

チーム開発が始まり1ヶ月半が経ちました。最初の方は順調に進んでいた開発も、だんだんと進むにつれて思う様にいかない事が出てきました。

それはタスク管理で、最初の方はDB設計をする人・ビューを作る人・データを用意する人といった様にうまくタスクを振り分けられていたのですが、タスクも少なくなると、こっちを終わらせないとこっちは実装出来ないといった感じになり、なかなか4人でタスクを同時進行させる事が難しくなってきました。

個人個人で進み具合も違うので、そういった事も考慮して決める必要もあります。

一人が待ち状態になるのを避けて上手くタスクを割り振るのは、かなり難しいことです。

今の所は連絡を頻繁に取り合いながら、そこそこ上手く進められていると思います。

人が少ない場合は一人の負担が大きくなり、多い場合は連携を取るのが難しくなる。チーム開発は難しいと実感しました。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169

コードレビューでの学び その2

 こんにちは、ぐっちと申します。

今回もコードレビューでの学びを書いていきます。

私はマイページ関係の作成をしていたのですが、そこで自分の情報を更新する際にコントローラーで

def profile
 @user = User.find(current_user.id)
end

としてビューで

= form_with model: @user do |f|

という様に記述していました。

しかし、コードレビューを受けた際 「current_user はインスタンス変数に入れる必要はないです。直接記述すれば良いです。」と言われ

なるほど current_user はそれ自体が User のインスタンスなのでビューで

= form_with model: current_user do |f|

と記述すれば良いのだと気づきました。

 

もし変数に入れるとしても

def profile
@user = current_user
end

こうですね……

やはり他人に見てもらう事で色々勉強になります。

少し恥ずかしさはありますが、得るものの方が大きいので気にせず見てもらうのが良いですね。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169

コードレビューでの学び

こんにちは、ぐっちと申します。

チーム開発が始まり1ヶ月程が経ち、機能も少しずつ実装出来て来た所です。

各タスクで作業が完了した後、テストをしてチームメンバー及びメンターにコードレビューをして貰うのですが、そこで色々勉強になる事が多かったです。

 

今までは個人で好きなようにコードを書いて来ましたが、他人に見せるとなると綺麗で分かり易いコードを書くように意識するものです。

しかし、知識不足や勘違い等で分かり難いコードを書いてしまう事がありました。

 

まず、if文に関する勘違いです。

データを作成する際に、コントローラでcreateを行うのですが、

def create
 user = User.create(user_params)

 if user.save
 

こんな感じに書いてしまっていた……

私の感覚では、createを行い問題なくデータがsaveされたらという思いだったのですがこれは

def create
 if User.create(user_params)
 

 こう書くのが良い様です。

私はif文の条件式は、条件をみるだけだと勘違いしていました。

これでcreateを実行して、成功すればtrue失敗した場合はfalseとなり分岐が行われます。

 

他にも色々ありますが、ひとまずここまでにします。

 

ここまで読んでくださり、ありがとうございました。

 ツイッターで日々の学習をつぶやいています

@Yamaguc45844169