おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

Kaigi on Rails 2025で認証の話をしました #kaigionrails

2025年9月26~27日に開催されたKaigi on Rails 2025にて「rails g authenticationから学ぶRails8.0時代の認証」というタイトルで登壇してきました。スライドはこちら。

動画もたぶん近日中に公開されるのではないでしょうか。

スライドにもあるのですが、9月27日の誕生日は僕の誕生日(かつ結婚記念日)でした。Kaigi on Rails 2024の感想エントリを書いたときからなんとか登壇したいな〜と思っていたので無事希望通りになりよかったです。

どのようにして今回の発表内容に落ち着いたか

RubyKaigi 2025のあたりから今年のKaigi on Railsのネタどうしようと考え始めました。そのときは認証とは別の内容が頭にあったのですが、最終的にRails8.0でrails g authenticationが導入されたいまのタイミングで認証の話をするのがタイムリーで良かろうと思って認証を選択することに。選ばなかった内容*1は今のところKaigi on Railsでは話されていない手つかずのトピックなんだけどやや地味なのでどうやって供養するといいかな…、となっています。

また、締め切り直前でRails8.1で追加されるActiveJob::Continuationの話もいいなと思いつき*22つ目のプロポーザルも出していたのですがこちらはあえなく落選しました。締め切り直前でプロポーザルの作り込みが足りなかったのと、2024にSidekiqで実現する長時間非同期処理の中断と再開という似たトピックがあったのが敗因かと推測しています。

発表の狙い

近年では認証機能を実装するのに求められる知識量は増える一方です。そのためdeviseなどのオールインワンなgemをブラックボックス的に使わざるを得ないのではないでしょうか。しかし使うだけで実装について何もわからない状態でヨシ!!としてしまうと、脆弱性に関する何かが起きたときに妥当な解決策を考えることができません。困りましたね。

そこで僕が17年前に restful-authentication を通じてセキュリティに関する知識の下地を作り始めたのと同じことがrails g authenticationでできるんじゃないかなと思って今回発表してみました。この発表がセキュアな実装について考え始めるきっかけになってくれたら嬉しいです。

合わせて読みたい

Ruby on Rails Guidesの新しい章として、rails g authenticationを利用したRailsアプリケーションの上に自分の名前やメールアドレスを変更する、とか管理者しかアクセスできないページを作るなどの機能を追加するコード例が作成されています(執筆時点ではedge扱いですが、Rails 8.1がリリースされたら普通に読めるようになるはず)。初学者のひとでもrails g authenticationによって認証機能を簡単に作ることはできるようになりましたが、それだけだと実際にアプリケーションを作るには足りない機能はまだまだあります。その足りない分を埋める資料として良さそうです。

Sign Up and Settings — Ruby on Rails Guides

日本語訳の方も近日中に公開されそうです。

一緒にセキュアな実装について考えましょう

僕はセキュリティについて専門家ほど詳しいわけではないですが、gemの脆弱性情報をウォッチしたり、日々の開発の中でセキュリティ的に問題ない実装になっているかを気にするようにしています。自社のRailsアプリケーションをセキュアに運用したいぞ、というひとがいたら一緒にどのようにしたらいいか考えることができます。

もし興味があれば株式会社ウィルネットとして提供する技術顧問サービスについてをお読みいただいたうえで株式会社ウィルネットのお問い合わせフォームよりお問い合わせ*3ください。

*1:もっと詳細書いてもいいんだけどもしやっぱりこのネタで来年のKaigi on Railsでプロポーザル出すぞとなったときに個人が特定できてしまうとアレだなと思うので伏せてます

*2:2024のときほどプロポーザルが通る確信がなかったのもある

*3:Xでもfacebookでも連絡の付く方法ならばなんでも良いです