-
10:00 - 10:10開会式Kaigi on Rails 運営
-
10:40 - 10:50休憩
-
10:50 - 11:10Railsパフォーマンス・チューニング入門 詳細を見る
RailsではActiveRecordや各種のgemを活用することで、低レイヤーの挙動を意識することなくわかりやすいコードを書くことが可能です。
一方で、こうしたコードは実際の内部的な挙動が把握しづらく、パフォーマンス上の問題を意図せず抱え込む可能性も秘めています。これはユーザの体験を損なうのみならず、場合によっては大規模な障害を引き起こす原因にもなりえます。
このセッションでは、パフォーマンス上の問題を把握するための計測手法や、見つかった問題を解決するためのアプローチについて、実例を交えてご紹介します。 -
11:30 - 11:40Rails 6.1's ActiveModel#errors Changes [EN] 詳細を見る
ActiveModel::Errors will undergo major changes in Rails 6.1. This talk presents the rationale and the new object-oriented architecture. The implementation and edge cases are explained, and the talk will showcase examples on how it can make your coding life easier.
-
11:40 - 12:40お昼休憩
-
12:50 - 13:10継承とメタプログラミング満載なアプリケーションコードでもアクションとフィルタに悩まないためのGemを作った話 詳細を見る
Rails のアプリケーションコードを書いていて、誰しも一度は覚えのないフィルタに悩んだことがあるのではないでしょうか。
あるいは、継承やメタプログラミングを重ねたコントローラーのアクションの実装がどこにあるかわからず探したことや、またはもっと端的に、リクエストが走る度にどのフィルタやアクションを経由したか一望したいと思ったことはないでしょうか。
TracePoint を使って解決する Gem を作っ(た|ている)ので、その Gem のお話と、作るのは楽しいというお話をします。 -
13:10 - 13:30Action Mailbox in Action 詳細を見る
Rails 6で追加されたAction Mailboxによってメールの送信だけでなく受信もRailsで扱えるようになりました。普段のRailsの延長でメールを扱えるため非常に便利な一方、これによってEメールの複雑性の最たる原因であるspamとの戦いに身を投じなくてはいけなくてはなります。
この発表では、RailsでEメールを扱う開発者が知っておきたいSMTPとドメイン認証技術(SPF, DKIM)の基礎とRailsでの扱い方の紹介、また実際に使ってみた例として電子書籍のソーシャルDRMシステムを組んだ例を紹介します。 -
13:30 - 13:40休憩
-
14:10 - 14:30新ミドルウェアActionDispatch::HostAuthorizationと学ぶDNSのしくみ 詳細を見る
Rails 6 から、新たに `ActionDispatch::HostAuthorization` というミドルウェアが追加されました。
DNS リバインディングという攻撃から Rails アプリケーションを守るためのものですが、そもそも「DNS リバインディング」という名前をあまり聞き慣れない方もいらっしゃるのではないでしょうか?
こちらの発表は DNS リバインディングのカラクリと Rails の `HostAuthorization` ミドルウェアのアプローチについてを知っていただくことができ、さらには DNS の基本的なしくみについても知れる、一口で三度おいしい!?技術トークです。
普段はもっぱらアプリケーションコードを書いている方へ、少しでも DNS のふるまいを理解するお手伝いができれば幸いです。 -
14:30 - 15:00休憩
-
15:30 - 15:50Ruby 3.0におけるドキュメンテーションと端末制御の未来 詳細を見る
リリースが徐々に迫りつつある Ruby 3.0 において、どのようにライブラリのドキュメンテーションが行われるべきなのか、Ruby core team の RDoc メンテナから、YARD との共存も含めて説明します。また、ドキュメンテーションとの連携を果たした Ruby 2.7 以降の新生 IRB 及びそれら新機能がどのように Pry とも連携可能なものとして計画されているのか、合わせて説明します。そしてこれらが rails console にどう影響するのか、その実際についても解説いたします。
-
15:50 - 16:00休憩
-
16:20 - 16:40TDD with git. Long live engineering. 詳細を見る
TDD が世の中に登場しておよそ20年が経ちました。その間に世の中を取り巻くメジャーなバージョンコントロールシステム (SCM) は CVS → Subversion → Git へと変遷しています。
CVS 時代より、TDD は Red → Green → Refactor の基本的なリズムがあり、テストがグリーンになったらコミットするという考えがあります。分散 SCM の Git 時代でもこのリズムは有効でしょうか?
本講演では TDDとしてのコミット粒度と、Pull Request として開くコミット粒度の違いを示し、Git であたかも最初から綺麗なコードで仕上げたかのようにするという、SCM が積み重ねてきた歴史と実践技術の話です。本編ではさらにその根底にあるセルフレビューと小さなリファクタリングの回帰への実現にも触れます。 -
16:40 - 17:00Sidekiq to Kafka 〜ストリームベースのmicroservices〜 詳細を見る
弊社のプロダクトであるReproはアプリケーションのイベントログやファーストパーティデータを収集しアプリ内マーケティングに活用するサービスです。大量のイベントデータがやってきますが、直接エンドユーザーに応答を返すことはありません。一方でReproの顧客がその機能を活用した結果はエンドユーザーに届くため、すぐに結果を確認することはありません。
こういった特徴のため、同期的なコールとレスポンスをベースにしたmicroservicesよりも非同期処理の複雑な連鎖を開発しやすくできるやり方を優先するべきだと考えました。Railsで非同期処理というとSidekiq(ActiveJob)が有名で弊社でも広範に活用されていましたが、弊社ではその役割をApache Kafkaを中心にしたmicroコンポーネントに置き換えようと計画しています。
まだ道半ばではありますが、この話では分散StreamBufferであるApache Kafkaを活用してRailsアプリケーションを分割していくにはどういった考え方が必要かを紹介します。 -
17:00 - 17:10休憩
-
17:40 - 17:50閉会式Kaigi on Rails 運営
-
19:00 - 23:00After Party