最近は就活のために企業探しをしていますが、並行してアルゴ式を進めているのと、チェリー本でRubyの基礎を学びなおしています。
ブログでRailsチュートリアルを読んでいたらRailsを触りたくなったので、RUNTEQカリキュラムのやっていなかったRails API編を先日から始めました。楽しい。
それらが終わったらJavaScriptの基礎を復習してReact,TypeScriptに進んで行こうと思います!(多分)楽しみですね。
Railsチュートリアル完走者向け基礎力向上テスト〜第四段〜
それでは、Railsチュートリアルの『基礎力向上テスト』を深堀りしていこう企画第四弾です。
Q7.第7章「http vs. https」
Q.第7章の最後のセクション「プロのデプロイ」で Sample App の本番環境を https 対応にしましたが、Web界隈では http のサービスもあれば https のサービスもあります。あなたがこれからRailsで新規Webサービスを公開する場合、最初は http で公開しますか? それとも最初から https で公開しますか? あなたの考えとその理由を述べてください。
(おおの)A.最初からhttpsで公開する。個人情報等を扱う場合、httpsで暗号化されていないと危険がある上に、Google等がhttpsを推奨しているのでhttpの場合、警告が出たり、SEOが良くないなどデメリットも多い。
A.可能な限りhttpsにしていくべき。
Chromeだと「安全ではありません」。safariだとNot Secureと表示されてしまう。AppleのIOSアプリのWebビューはhttpsしか表示されなくしている。そういった大企業の活動もあってhttpsの世界を広めている。そしてクレジットカードの登録等しても問題ないぞと、WEBの世界は安全なんだぞと広めている。
# config/environments/production.rb
config.force_ssl = true
上記設定をするだけで、誤ってhttpでアクセスした場合でもhttpsで表示できるサイトの場合で表示されるようになります。例えば、httpの時にWEBサイトをブックマークした場合でもhttps化を後でしたときhttpsが表示してくれます。
本番環境用のWebサーバー
余談ですが、herokuのデフォルトではWEBrickという軽量な扱いができるWebサーバーを使っていますが、リクエストが多くなると耐えられないので、本番環境には適切ではないです。
なので、RailsチュートリアルはPumaというWebサーバーを推奨しています。
個人開発ではWEBrickのままになっているので今度変更するので詳細はそのときに記事にしようと思います。
Q8.第8章「Session モデルは実装すべきか」
Q.Sample App では基本的なログイン機構を実装する際、Session モデルを作らずに session や cookies メソッドを使って実装しました。なぜ Sample App では Session モデルを作らずに基本的なログイン機構を実装したのは正しかったのでしょうか? それとも Session モデルを作るべきだったのでしょうか? あなたの意見とその理由を簡潔に述べてください。
(おおの)A.(お、覚えてない…)チュートリアルでsessionメソッド等はコントローラーを作って扱っていたと思うので、Sessionモデルはつくらない方が良いと思いますが、理由までわからないので確認してみます。
A.sessionモデルを使うべきではない。
セッションの情報は頻繁に変わるものなので、DBに都度問い合わせや書き換えが必要になり負荷が大きくなってしまう。そのためDB以外のところに情報を保存するように実装していく。
sessionsメソッドはハッシュのような形(厳密にはハッシュではない)でRailsサーバーに保存ができる。それは再起動するまで保存される。(永続的ではないが変数より長く残る)
session[:user_id] = user.id
このような形でcookiesに暗号化済みのユーザーIDが自動で作成してくれます。
おわりに
本日はここまでです!
近況としては模擬面接をしたところ、元々喋りは得意ではないですが緊張のあまりボロボロでした。
なので毎日面接の練習をしています。
毎週やっている輪読会でもつよつよアジャイルコーチに(すごすぎて)参考にならない就活トークを聞けたりもして、RUNTEQコミュニティに、同期に、感謝。。!
このままではそわそわして落ち着いて勉強ができないので、まず面接対策をしっかりやります!