銀座Rails#34を開催しました
去る2021/6/18(金)、銀座Rails#34を開催しました。
当日の様子は、togetterのまとめを御覧ください。
スポンサーセッション リンクアンドモチベーションさま
今回も前回に引き続き、リンクアンドモチベーションさまからは河野さんがご登壇されました。 「Ruby on Railsを使っているため、Ruby on Railsを盛り上げられたら」という思いで、始まりからスポンサーしてくださっているとの事。ありがとうございます。
リンクアンドモチベーション社ではここ数ヶ月、社主催のMeetupを開催しており、6/23には「DXの落とし穴を考えてみる会(組織力向上編)」を実施。 lmi.connpass.com
そして7/14には「CTOが語るテックカンパニーに向けた未来の話」を開催を予定し、現在参加者を募集中との事でした。 lmi.connpass.com
森雅智(@morimorihoge)さん(BPS株式会社) 「出張Railsウォッチ in 銀座Rails 〜DBコメントの有効活用について〜」
毎度おなじみ森さん、今回はDBコメントの話。 まずはDBコメントは何かについて説明の上、schema.rbでも確認できることを示し、Railsでの身近な活かし方にも触れつつ、その使い方を簡単に解説。
「カラム名を日本語から英語に変換する際に、情報が抜け落ちることがすごく多い。それを防止できる」「特に人の入れ替わり時に効果を発揮」と利点を述べられていました。
そして使いこなしポイントとして、enum定義まで入れておく、DB定義書を要求されたときにschema.rbから置換する、そしてA5:SQL Mk-2がSIer的には神ツールである、などノウハウを共有頂きました。
岸本直樹さん 「ECS移設におけるShoryuken導入の経緯と葛藤について」
リンクアンドモチベーション社にお勤めの岸本さん。開発から、ここ半年でSREチームに移籍されたそうです。今回はECS移設のお話。 LeanとDevOpsの科学とCriteriaをベースに、開発組織メトリクスを作成、優先度を検討。 今回はECSへの移設と、Shoryukenの採用を決めたそうです。
課題としては、Loggingやtestingなどありましたが、ECS移設後には安定稼働を実現。 設定値の共有の煩雑さは環境変数を利用することで回避、恐れていたSQS費用の上昇は思ったよりも上がらなかった、など、運用上での検討事項を共有頂きました。
またShoryukenは個人の方が開発されたgemなので、どこまで頼ってよいのか悩んだそうですが、複数の企業で利用実績があること、またオープンソースなので必要なときに自ら修正できることが、採用の決めてになったとのことでした。
今回のECS移設などにより、リリース作業のリードタイムが2-3hから30minに、デプロイ頻度が20回/月(2倍)に、メンテナンス時間が6hから0になったそうです。
YusukeIwaki(@yi01imagination)さん 「Railsのsystem specからPlaywrightを使う」
今回はじめてご登壇頂いたIwakiさん。Playwrightのお話をして頂きました。
まずはsystem specについて、feature specとsystem specの違いから説明。 system specは本当に確認したいポイントを絞り、安定・高速にテストを行うことが特徴とのこと。
次にCapybaraについておさらいし、DSLとドライバの関係について解説。 標準であるSeleniumドライバを用いた際Dom変更の検知が不完全な点など、機能的な不都合を述べられ、その解決策としてPlaywrightを使う例を示されました。
そしてPlaywrightをRubyで使うため、clientをgemとして作成されたそうで、その利用例について説明頂きました。
なお実運用実績を、現在広く求められているとのことです。
徳丸 浩(@ockeghem)さん 「Rails周辺におけるHTTPヘッダインジェクション脆弱性の動向」
以前ゲストスピーカーとしてご登壇頂いた徳丸さん。今回は公募枠にご応募の上、ご登壇頂きました。 テーマはHTTPヘッダインジェクション。PHPでは完全に修正されるのに9年かかるところ、Railsは一体どうなのか? 大体のパターンでは大丈夫だったが、キャリッジリターンだけの場合には効果が出てしまい、脆弱性となるとのこと。
hackerone.comでバグバウンティ報告をしたところ、Aaronさんが対応し、結果としてPumaの脆弱性として修正されたとのこと。 報奨金が得られなかった…という悲しみを脇に置き、Rack単体などでの再現コードの例などを説明。
まとめると、RailsのHTTPヘッダインジェクションの条件は3つの条件が揃った時のみなのでレアであること、不安な場合はアプリ側でvalidationすると良いことなどを説明し、非常に危険とは言えないレベルだ、との事でした。
今回も楽しくわかりやすいお話を、ありがとうとざいました。
スポンサーセッション DeNAさま
今回も、Pocochaを開発されている今西さんがご登壇。
DeNA TechCon 2021 Summer 2021を開催されるとの事で、セッションの見どころを解説頂きました。 既に開催日は過ぎてしまいましたが、下記URLより動画を視聴する事ができます。
普段今西さんが「業務でISUCONができる」というお話をされていますが、その成果を見ることが出来るとのこと。ぜひ御覧ください。
ゲストスピーカー 和田 卓人(@t_wada)さん 「がんばりすぎない設計判断を支えるリファクタリング/リアーキテクティング(仮)」
私が内容について、だいぶぼんやりとした要望を出してしまったのですが、和田さんはそれに答え、新作をお持ちいただきました。 ITはビジネスのコアとなった昨今、これをDXと表現することがありますが、その本質について「変更容易性の高いソフトウェア」と「アジリティの獲得」という説をまず説明。
この2つの間の距離をどう埋めていくか。 EMERGENT DESIGNからヒントを得て、CodeQualitiesがEmergentDesignに至るまでのピラミッドを図示。その各要素について解説頂きました。
以下キーワードや参考文献について列挙致します。
EMERGENT DESIGN
コードの質
講演「質とスピード」 speakerdeck.com
病理学
叡智
- 先人の知恵
- 巨人の肩
- c2.com
- FLOSS
原則
- SOLID原則
- Principles
- DRY
- KISS
- Demeter
プラクティス
- スタイル
- 名前
- 道具
ユニットテスト
リファクタリング
パターン
- 語彙、形式、共有
- パターンは近年では、リファクタリングのターゲットになっている
テスト駆動開発
パターン駆動開発
創発的設計
- 「諦観」リファクタリング第一版にのみ残っている言葉が印象的
- 第二版、20年で磨かれている
- 究極的に表した言葉「Easier To Change(ETC)」
次回、銀座Rails#35について
次回銀座Rails#35は2021/07/30(金)、オンラインでの開催となります。
ゲストスピーカーには島田 浩二(@snoozer05)さんをお迎えし、「Railsと継続的アーキテクティング」をお話頂きます。
現在、参加者募集中です。 ginza-rails.connpass.com