Railsチュートリアル基礎力向上テスト③

2022/04/02

Railsチュートリアル完走者向け基礎力向上テスト〜第三段〜

就活モードに入り、Rails開発から少し離れることになるので、Railsチュートリアルの『基礎力向上テスト』を深堀りしていこう企画第三弾です。
ブログを書くというモチベーションで継続できていています。本ブロク自体の機能やSEO対策を先にやったほうがいいような気がしますが今日もやっていきます。意外とこの時間が心安らぐ時間となっています(楽しい)
それでは問題に入ります!

Q5.第5章「Partial の無い世界」

Q.第5章では Rails の Partial 機能を紹介し、以降の章でもいくつかのコードをパーシャル化しました。また同章では、Sample App の header や footer セクションを例にとり、必ずしもパーシャル化しなくてもWebアプリケーションとして問題なく動くことも確認しました。もし Rails に Partial 機能が無かった場合、Sample App の開発はどうなっていたでしょうか? Sample App 内のパーシャル化したコードを1つ例にとり、もし Partial 機能がなかったら具体的にどんな問題が起こりうるか、あなたの考えを簡潔に説明してください。

(おおの)A.例えば下記_user.html.erbのパーシャルを使った場合、userをビューで表示させている箇所全てで同じ記載をしなければならない。その場合、何かを変更する時に全てのファイルを変更する必要が出てくるため、ミスが起きる可能性が高まる。
パーシャル化しておけば、その部分のコードを変更するだけで全てに適用されるので、ミスや手間がなくなる。

# app/views/users/_user.html.erb
<li>
  <%= gravatar_for user, size: 50 %>
  <%= link_to user.name, user %>
  <% if current_user.admin? && !current_user?(user) %>
    | <%= link_to "delete", user, method: :delete,
                                  data: { confirm: "You sure?" } %>
  <% end %>
</li>

なんかいい感じの回答できた気がする・・?

A.一例として、チームで開発をおこなっていると、色々な人が対応する場合があるので、パーシャル化しておくとコンフリクトが起きにくくなるメリットもある。

どこをパーシャル化させるのかは自由であるが、わかりやすさ、論理的に考えやすい部分をそうさせるのが良い。header,footer等が良い例となる。また、ひとつのビューファイルの可読性が上がるのもメリット。

とのことです。 確かにチーム開発をした際にコンフリクトを経験しましたが、変更するファイルが明確化されていると少しでも防げる気がしますね。

Q6. 第6章「has_secure_password の無い世界」

Q.第6章では has_secure_password を使って User モデルのパスワード部分を実装しました。もし Rails に has_secure_password メソッドがなかった場合、User モデルのパスワード部分は実装できたでしょうか?has_secure_password を使わずにパスワード部分の実装できるかどうかを回答し、その理由についてあなたの意見を簡潔に述べてください。

(おおの)A.無くても実装できる。has_secure_passwordはユーザーが入力したパスワードをハッシュ化してDBに保存するためのメソッドなので、その部分を自分で実装すれば同じようになると思う。(どうやるのかは知らないけど)

ちょっと単語は調べちゃったけど、そんな感じでは。

A.bcryptを使って自作することは可能。ただし、自作でセキュアなコードを書くのは確認することが多すぎるので、Railsのレールに乗っかれば安心。

※bcryptとは、Blowfish暗号を基盤としたパスワードハッシュアルゴリズム(暗号学的ハッシュ関数)のこと。
ハッシュ値は暗号文と違い、元に戻すことが不可能な値なので、よりセキュアにすることが出来る。

参考 https://medium-company.com/bcrypt/

Rails wayに乗るってよく聞きますね。Railsの”よしなに”やってくれる力が強すぎて他のフレームワーク勉強した時にどうなるか不安感はある。

おわりに

安川さんの声を聞くと、Railsチュートリアルで苦しんでいた時期が懐かしいですね。 見返す度に学びがあって本当に良い教材だと思います。
でも思ったより理解が進んでいるなと感じたのは、mybestさんでもおすすめランキング一位になった良質なプログラミングスクール「RUNTEQ」で学んだからだと思います。
下手くそな宣伝も挟めたところで終わりにします!(RUNTEQは本当に良いコミュニティです)
最後まで読んでいただき、ありがとうございます。


Profile picture

Written by おおの SalesTechのスタートアップでWebエンジニア
Twitter GitHub