2月17日、オンライン開催された【iCARE Dev Meetup #18】技術顧問が語る、Ruby on Rails実践開発 - connpassに参加した。
所感
RailsバージョンアップやSQLなど興味のある話題が多かったので参加してみた。
「Railsバージョンアップを実践してみて」では、テストの大切さを再認識した。バージョンアップの難しさをあまりイメージできていなかったが、Gem同士の依存関係の具体的な話もあり、作業のイメージができた。思っていたより大変そう。やはり、テスト大事。
「SQLとActiveRecordについて」は、SQLをゴリゴリ書いていた人がRailsに入門するときに、SQLを組み立ててからそれをどうRailsで表現するかという内容。例がこのMeetupの参加者や登壇者だったのでわかりやすかった。
自分の場合、SQLの理解が浅くActiveRecordに頼りっきりだが、SQLをわかっている人の考え方を知るのは興味深かった。ActiveRecordは便利で、SQLを知らなくても大概のことができてしまうが、SQLを意識せずにいるとパフォーマンスが悪くなってしまうことがあるので、SQLについても勉強したいと思った。
「HotwireからDHHが考えるこれからのRailsとJSとの付き合い方を知る」では、TurboとStimulusの詳しい話を聞くことができた。Stimulusは、「控えめなJaveScriptフレームワーク」としてパーフェクト Ruby on Rails 【増補改訂版】に載っていたので理解していたが、Turboについてはまったく知らなかったのでとても勉強になった。
Hotwireを使うと、ロジックをサーバーサイド側に集中させ、フロントエンドをわかりやすく書けそうだと思った。モバイルにも一応対応できるようなので、今後使われることが増えるかも?
全体的に勉強になったので復習したいが、発表スライドを1つしか見つけられず残念。
YouTube にアップされていたのでリンクをはった。
内容メモ
Railsバージョンアップを実践してみて
本日の
— yotuba@Railsエンジニア (@yotuba_eng) February 17, 2021
【iCARE Dev Meetup #18】技術顧問が語る、Ruby on Rails実践開発
にてRailsバージョンアップについてLTしました!
聞いてくださった方、有難うございます!
昨年7月からイベントも担当していて、ここまで参加してくださる方が増えて嬉しいです!https://t.co/GEXBCddTsJ#icare_meetup
バージョンアップ前の状況
- Gem更新など3年ぐらい止まっていた
- 新機能開発が優先になっていた
- 使用しているGem、150以上
- 管理画面側はテストが少なく人力で確認しないといけない状態
バージョンアップ
- Railsガイドがわかりやすかった
- Rails アップグレードガイド - Railsガイド
- リリースノート
- Change log
- dependabotの導入
- CIを通す
- Gemをアップデート
- Gem同士の依存関係によりスムーズにいかないことも多い
- bundle outdatedで確認
- 使っていないGemは削除
- 本番環境に影響が出るものは1個ずつ
まとめ
- テスト大事!
- 不要なGem入れない
- 使わなくなったら削除する
- メンテナンスされているGemを使う
Rails APIモードにおけるToken認証機能について
認証Tokenをどこに保存するか?
- LocalStorage
- 実装が簡単
- XSS脆弱性があった場合、Tokenを容易に盗むことができる
- Cookie
- In-memory
- JavaScriptでブラウザのメモリ内に保存する方法
- 永続化されない(リロードすると消滅)
- Auth0のSilent Authentication
- In-memory方式だが、リロードしてもログアウトしない
- HTMLのiframeで実現
- ドキュメントが充実している
- ユーザー数が一定規模を超えると課金が発生
- Auth0: Secure access for everyone. But not just anyone.
- それぞれの目的や扱う情報に応じて選ぶ
SQLとActiveRecordについて
SQLからActiveRecordの使い方を考える。
HotwireからDHHが考えるこれからのRailsとJSとの付き合い方を知る
先日発表したHotwireの話、資料公開しましたー(\\( ⁰⊖⁰)/) https://t.co/HhddCIky4c
— willnet (@netwillnet) February 19, 2021
Hotwireは、Basecamp社製のjsフレームワーク。複数のフレームワークから構成されている。
“最小限の労力でユーザが求めているサービスを提供すること”に特化しているライブラリ。Railsと同じ方針をフロントエンドにも持ち込んだものといえる。小〜中規模のサービスに向いている。
Hotwireを使うと、
- サーバサイドにロジックを寄せることができる
- クライアントサイドのコードは最小限におさえることができる
- それでいて、それなりにSPAができる
- 結果として
- ひとつのチームですべてを担当できる(かも)
- 好きな言語を使える(Rails以外でも使える)
- VueやReactと比べると細かいことはできない
Hotwireのアーキテクチャ
- Turbo
- Stimulus
- 学習コストが低い
- ファイルが自然と整理される
- 特定のページだけで発火させたいjsが書ける
- Strada(未発表)
Turbolinks
- 全てのリンクをAjaxに置き換えるライブラリ
- E2Eテストやformの挙動がわかりにくい
- ハマる人が多く、基本消されるライブラリに...