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

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

gonのv6.6.0をリリースしました

gemたちをRails8.1に対応させた - おもしろwebサービス開発日記の続き。CIを頑張って整備してRails8.1でも動くことを確認したので新しいバージョンv6.6.0をリリースしておきました。テストやCI以外の修正はないのでシュッとアップグレードできるはずです。ど…

RubyWorld Conference 2025でメタプログラミングRuby問題集について登壇してきました

先日開催されたRubyWorld Conference 2025にて、「メタプログラミングRuby問題集の活用」というタイトルで kinoppydさんと一緒に登壇してきました。スライドはこちら。 SmartHR Tech Blogにてkinoppydさんも同様に登壇してきましたエントリを書いています。…

ginza.rb 第93回を開催してKaigi on Rails 2025の振り返りをした

Ginza.rb 第93回 - Kaigi on Rails 2025の振り返りをするぞ - connpass 第93回はKaigi on Rails 2025の振り返りをしました。 何を振り返ったか 僕含めて2人の登壇者が参加していたので、まず登壇者からの発表に関する話(どういう観点で登壇内容を決めたのか…

gemたちをRails8.1に対応させた

自分のリポジトリ配下にあるRails関連gemのCIにRails8.1を足す作業をしてバージョンアップしました。どのgemも特別な対応は不要でスッと対応できました。 Release v0.4.0 · willnet/a-nti_manner_kick_course Release v3.1.0 · willnet/seed-do Release v1.0…

Rails8.1のマイナーフィーチャーをまとめました

今日Rails8.1.0がリリースされましたね。めでたい。前回Rails8.0がリリースされたときはginza.rb駆動でマイナーフィーチャをまとめましたが、早くまとめたほうがお手伝い先含めてみんなでワイワイできて便利、ということで取り急ぎgistにまとめておきました…

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

2025年9月26~27日に開催されたKaigi on Rails 2025にて「rails g authenticationから学ぶRails8.0時代の認証」というタイトルで登壇してきました。スライドはこちら。 動画もたぶん近日中に公開されるのではないでしょうか。 スライドにもあるのですが、9月2…

ながらRuby会議01に参加してスポンサーLTをしました #nagara01

2025年9月6日に開催されたながらRuby会議01において、お手伝い先のSmartHRさんのスポンサーLTとして登壇させていただきました。岐阜は初めて訪れましたが自然が豊富でありつつも街もそれなりに大きくて良い場所だなと感じました。 天命反転してきました #nag…

Sidekiqを利用しているときにテストで気をつけること

Testing · sidekiq/sidekiq Wiki にあるように、sidekiqをテストで利用する際には3つのモードがあります。 fake(デフォルト) inline disable これらを切り替えるメソッドとしてSidekiq::Testing.fake!などがあります。これらのメソッドはブロックを受け付け…

株式会社ウィルネットはプログラミングRuby 第5版の翻訳を支援します

日本語で読めるRubyの本をもっと増やしたいので、プログラミングRuby 第5版 翻訳支援の募集に応募して企業スポンサーをすることにしました。 いまどきはAIにプログラミングに関する質問ができますが、正確性や網羅性という点でまだまだ書籍の価値は高いと思…

ginza.rb 第92回を開催してアプリケーションサーバについて学んだ

Ginza.rb 第92回 - アプリケーションサーバについて学ぶぞ - connpass 第92回はRubyから使うアプリケーションサーバについて学びました。 アプリケーションサーバ2025 実は第75回や第76回でもその当時新しかったアプリケーションサーバについて学ぶというの…

続・wkhtmltopdfの次どうするか問題

wkhtmltopdfの次どうするか問題 - おもしろwebサービス開発日記の続き。 上の記事でも書いていますが、令和の今RailsアプリケーションでPDFを生成する基本的な方針としては次の2択だと思っています。 chromeを使ってHTMLからPDFに変換する Thinreports など…

gon v6.5.0をリリースした

gonのメンテナになった - おもしろwebサービス開発日記 の続き。 新しいRubyで出るwarningやエラーなど一通り対応できたかな、という状況になったので作者からrubygems.orgにpushする権限をもらってv6.5.0をリリースしました。使ってみてなにかおかしいとこ…

gonのメンテナになった

gazay/gon: Your Rails variables in your JS お手伝い先で使っているので見てみたら最終コミットが4年前でIssueやPRが積み重なっており、CIはTravisCIという状況。メンテされないgemとどう向き合うか。“普通のOSS開発者” willnetさんの取り組み で書いたよ…

ginza.rb 第91回を開催してGumroadについて学んだ

Ginza.rb 第91回 - Gumroadのソースコードを読むぞ - connpass 第91回はOSSになったGumroadのコードを読みました。 Gumroad 実際にお金を稼いでいるアプリケーションのコードをOSSにして、外部コントリビュータのPRをうけつつその上で開発を進めるというのは…

Action MailboxをAWS SESで利用する

「メール受信をトリガーにしてなにかする機能」であるAction MailboxはRails6.0からRailsに追加された機能です。なかなか実際に使うことがなかったのですが、最近機会に恵まれてAction Mailboxを導入したので簡単に概要を書き残しておきます。ingress*1にはA…

seed-fuをforkした

昨日Findyさんに寄稿した記事が公開されました。もしまだ読んでない方いたら読んで記事下部にある「応援」ボタンをポチッと押してください。Ruby Associationへ応援の数 * 100円寄付されます。 メンテされないgemとどう向き合うか。“普通のOSS開発者” willne…

ginza.rb 第90回を開催してWasmについて学んだ

Ginza.rb 第90回 - Wasmについて学ぶぞ - connpass 第90回はWasmについて学びました。 Wasm y-yagiさんの作ってくれた資料を見ながらワイワイしました。 Wasmはいろんな環境で動くけど、個人的にはやっぱりRubyがブラウザで動くぞというところに魅力を感じま…

OmniAuthを利用しているプロジェクトのSystemテストでログインを可能な限り省略する

大抵のwebサービスのSystemテストは、ログインしてから何かをすることになると思います。ログイン機能のテストはちゃんとある前提で、ログインのために「トップページ→ログインページ→ログイン処理→ログイン画面」までの遷移を毎回やるのは時間がかかる。 de…

rails g authenticationで生成されるコードを眺めて気になったこと

Rails8からrails g authenticationで簡単な認証用のコードが生成できるようになりました。これまで認証といえばdevise gemが定番でしたが、rails g authentication(以下認証ジェネレータと呼びます)もこれから一定使われるようになるのではないかと想像して…

RackアプリケーションをLambdaでホスティングしてみた

最近、Lamby というRackアプリケーションをAWS Lambda上で動かすためのGemを使って、RackアプリケーションをAWS Lambda上で動かしてみました。簡単に使えて良い感じだったのでメモしておきます。 前提 もともとm3 tech blogの記事 を見てLambdaでもRailsを動…

prependとaliasは混ぜるな危険

これはRubyKaigi 2025のLT用に出したプロポーザルの内容をブログエントリにしたものです。プロポーザルは落選したのでここに書くことで供養しておこうと思います。 導入 既存のメソッドの定義を再利用しつつ新しい振る舞いを追加する方法としてはModule#prep…

ginza.rb 第89を開催してHanamiについて学んだ

Ginza.rb 第89回 - Hanamiについて学ぶぞ - connpass 第89回は、8年ぶり2回目*1のHanamiについて学ぶ回でした。 Hanami 2.2 y-yagiさんが用意してくれた資料を見ながらワイワイしました。 前回のHanami回は1.0のときに実施したのですが、今回は2.2。1.0のと…

Railsで使うビューテンプレートエンジンのベンチマーク2025

Railsでよく使われるテンプレートエンジンとしてerb(erubi)、haml、 slimがあります。パフォーマンスの観点だけをとりあげたとき、約5年前に パーフェクトRuby on Rails【増補改訂版】 を書いたときには、速い実装を選べば速度差は特にないという認識でした…

ginza.rb 第88回を開催してKamalとOmakubについて学んだ

Ginza.rb 第88回 - KamalとOmakubについて学ぶぞ - connpass 第88回は、Rails8.0から標準採用されたデプロイツールKamalとDHH製ubuntuセットアップツールOmakubの2本立てでした。 Omakub Omakubはy-yagiさん進行で The Omakub Manual をみつつワイワイしまし…

株式会社ウィルネットは設立8周年を迎えました

1週間前の2月21日は弊社の設立記念日でした。去年はエントリ書くのを忘れていた模様。こういうのは気づいたときに勢いで書き上げないとだめですね。 2年前のエントリ ではアウトプットを増やすぞと書いていますが、ブログの投稿数を見る感じちょっとは増えて…

ginza.rb 第87回を開催してRuby3.4について学んだ

Ginza.rb 第87回 - Ruby3.4について学ぶぞ - connpass 第87回は、去年のクリスマスにリリースされたRuby3.4についてみんなで話し合う回でした。プロと読み解くRuby 3.4 NEWS - STORES Product Blog をみながらみんなでワイワイしました。 気になったポイント…

東京Ruby会議12に参加した

東京Ruby会議12 に参加していました。ざっとメモ書きレベルですが感想をエントリに残しておきます。 前夜祭 すでにいろんな人が言及していますが、@makicamelさんの makicamel/erd_map: Visualize, explore, and interact with your Rails application's mod…

技術顧問として提供するサービス内容をまとめた

僕がRails技術顧問という形態で働き始めたのは2016年の1月のことでした。すると今時点でおよそ9年ほど技術顧問をしていることになります。だいぶ長くやっていますね…。2年が経過した時点でブログエントリとしてどんなことをしたかまとめましたが、そこからさ…

ginza.rb 第86回を開催してRails8.0について学んだ

Ginza.rb 第86回 - Rails8.0について学ぶぞ - connpass 第86回は、11月にリリースされたRails8.0についてみんなで話し合う回でした。y-yagiさんが作ってくれた資料を使ってワイワイしました。 About Rails 8.0 - Slidev 気になったポイント メジャーフィーチ…

`config.active_support.hash_digest_class = OpenSSL::Digest::SHA256` とはなんなのか

時折、仕事でRailsのconfig.load_defaultsのバージョンを上げていく作業をしています。具体的には上げるバージョンに含まれるそれぞれの設定の意味を理解して、影響範囲を把握したうえで一つづつPull Requestを作るようにしています。実際にやってみた感想と…