銀座Rails#34を開催しました

去る2021/6/18(金)、銀座Rails#34を開催しました。

ginza-rails.connpass.com

当日の様子は、togetterのまとめを御覧ください。

togetter.com

スポンサーセッション リンクアンドモチベーションさま

今回も前回に引き続き、リンクアンドモチベーションさまからは河野さんがご登壇されました。 「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コメントの有効活用について〜」

speakerdeck.com

毎度おなじみ森さん、今回は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より動画を視聴する事ができます。

techcon2021.dena.dev

普段今西さんが「業務でISUCONができる」というお話をされていますが、その成果を見ることが出来るとのこと。ぜひ御覧ください。

ゲストスピーカー 和田 卓人(@t_wada)さん 「がんばりすぎない設計判断を支えるリファクタリング/リアーキテクティング(仮)」

私が内容について、だいぶぼんやりとした要望を出してしまったのですが、和田さんはそれに答え、新作をお持ちいただきました。 ITはビジネスのコアとなった昨今、これをDXと表現することがありますが、その本質について「変更容易性の高いソフトウェア」と「アジリティの獲得」という説をまず説明。

f:id:ginkouno:20210702180309p:plain

この2つの間の距離をどう埋めていくか。 EMERGENT DESIGNからヒントを得て、CodeQualitiesがEmergentDesignに至るまでのピラミッドを図示。その各要素について解説頂きました。

以下キーワードや参考文献について列挙致します。

EMERGENT DESIGN

コードの質

講演「質とスピード」 speakerdeck.com

病理学

叡智

  • 先人の知恵
  • 巨人の肩
  • c2.com
  • FLOSS

原則

  • SOLID原則
  • Principles
  • DRY
  • KISS
  • Demeter

ラクティス

  • スタイル
  • 名前
  • 道具

ユニットテスト

リファクタリング

パターン

fukabori.fm

テスト駆動開発

パターン駆動開発

創発的設計

  • 第二版、20年で磨かれている
  • 究極的に表した言葉「Easier To Change(ETC)」

次回、銀座Rails#35について

次回銀座Rails#35は2021/07/30(金)、オンラインでの開催となります。

ゲストスピーカーには島田 浩二(@snoozer05)さんをお迎えし、「Railsと継続的アーキテクティング」をお話頂きます。

現在、参加者募集中です。 ginza-rails.connpass.com