Kaigi on Rails 2026で「Event is what happens」というトークをしました

この時代の大きな転換期の中のカンファレンスに参加できてとても楽しかったですし、 そこで自分も発表できたこと、とても嬉しく思います。 関係者の皆様ありがとうございました。

発表資料はこちらです。

speakerdeck.com

また、発表ノートに埋まっていたトークスクリプトもMarkdownにしました。

Kaigi on Rails 2026でのトーク、Event is what happens のトークスクリプトです。 · GitHub

アプリケーション設計の話をすると、なかなかどうして、個々で携わっているコードベースが違いすぎて、「ふーんそちらはそうなんだー」となりがちなんですよね。

とはいえこの大AI時代、スライドとトークスクリプトをAIに入力して、それをみなさんのアプリケーションに適用したらどうなるかを議論するのなんかに使えていただければとても嬉しいです。

AI君に食わせるとたぶん「発想としては面白いところはありますが、実際にイベントの通信経路して扱うには注意が必要です。それを想定した機能ではないはず。ナントカカントカ」みたいに言われるんじゃないかと思います。トークの準備をしながら私もかなり言われました。それはそうなんですけど、でも『わかっちゃった』から仕方がないね、というテンションでお話しさせてもらったわけです。楽しんでいただけてるといいのですが。

参加者としての立場だと、やはりRESTのトークが2篇あったのが楽しかったですね。堪能しました。懇親会でもRESTfulな設計を実世界でどう適用するか、みたいな議論に参加させてもらって楽しかったです。時代はREST。

セマンティックを解しすぎたAIが、GET /user/42/profileしたらプロフィールGETできたけど、43にしたらどうかなとかやっているきらいがありますが、そこはハイパーメディアを尊重して、URLを不透明に扱ってほしい。AIはもっとRESTを学ぶべき。

さて、プログラマが3人集まればAIの話をする昨今、DHHとMatzのキーノート、そして松田さんの話も面白かったです。

懇親会なんかで、p45のイベントをサブスクライブするやつを、どのファイルに書くといいですかねえと言う質問を受けました。個人的には下記のようなふうに考えています。

  • イベントとサブスクライバの構成は config/initializers/events.rb とかに書いておく
  • イベントや、特にサブスクライバの実装は models でよいのでは
  • chirin を使うアイディアだと、実装の多くは jobs や mailers になると思うので、それはそこに
  • そのうえで、jobs のロジックが厚くなったら models に抽出する。これは昔からそう

こうしておけば、Railsに習熟した人間とAIのプログラマーにとっては割と探しやすいかと思います。

で、このようにしておくと「これが起こると、続きの処理は何が走るの?」「このメールが送られる契機はどんなのがある?」という質問に答えるための知識が凝集できて嬉しいんですよね。

2026年10月の感触では、やはり簡単な自然言語から、仕事で携わるようなスケールのソフトウェアを一息に生成できるイメージはまだありません。 そもそも自然言語は曖昧なもので、またその用語を厳密に定義していけば、結局プログラミング言語に近いものになると思います。

「注文が入ったら在庫引き当て処理が走る、ただし元の注文をブロックしないように非同期ジョブを使うこと。非同期ジョブは標準の仕組みを使う。」よりも「InventoryReservationJob.subscribe(Event::OrderPlaced)」のほうが、私は、わかりやすいし信用できるので、そう書きたい。かつ、AIはInventoryReservationJob.subscribe(Event::OrderPlaced)の羅列を解読して、人間向けに自然言語の解説を生成するのは得意そう。

そんなふうに、決定的に動いてほしいプログラマーの気持ちと、自然言語でそれを任意解像度で取り出したい人たちとの、ちょうど良いインターフェースに Ruby がなりうるんじゃないかと思っており、その表現の一つに、このイベントの観点が役立つといいなと思っています。

Kaigi on Rails 2025で「dynamic!」という基調講演をしました

去る9/26-27に開催された Kaigi on Rails 2025 にて、オープニングキーノートを努めさせていただきました。

参加者の皆様、他の登壇者の皆様、オーガナイザーの皆様、スポンサーの皆様などなど、関わった皆様に感謝いたします。ありがとうございました。 無事に終えることができてホッとしていますし、感想Tweetやブログ記事を見ては、とてもとても喜んでいます。

speakerdeck.com

今回の話は、文脈や行間や語りたい意図を、できるだけ明示しようと構成したつもりです。 自問自答しながら「実はこういうモチベーションで話したんですよ〜」っていうのを思いついたら、それをスライドや説明に戻すみたいなことを繰り返しました。その過程で、 @snoozer05 (敬称略、以下同)にもたくさん相談に乗ってもらいました。ありがとうございます。

おかげで、話したかったことはホントにすべて出し切ったつもりでいます。 テキストも多く、(私なりには)早口でしたが、聞いてくださってありがとうございました。

仄めかしは、タイトルのビックリくらいですね。これも拾ってもらえてよかったw

多くの方に好評をいただいたいっぽう、ハッピーパスを切るのも、変更できるような仕組みやBizとの関係性を作るのも、どれもこれも難しいことばかりだと思います。 もちろん私自身も、何かできるようになったなと思ったら次の課題が見つかる、なんでもそうですが、ボトルネックが移動する毎日です。

とはいえ、Rubyの楽しい感じを心の頼みにして、継続的に、動的に研鑽していきましょう。 大事なのは、個別のハッピーパス切り出しテクニックではなく、変化すること/させることと、楽しむことです😀。

またRubyコミュニティなどでお会いした時に、こういうことやってみて、うまく行ったり行かなかったりしているんですよーって、近況を教えてもらえたらとても嬉しく思います。

いち参加者として

参加者としても、 いの一番に自分の発表が終わるといいですね😆!!

長い付き合いの @nay3 や @joker1007 の話に延々と頷いていたり、@takahashim の高座を聞いてなんか新年めでたい気持ちになってきたりと、とても楽しめました。 私自身もですが、昨年の @snoozer05 の話への参照が多かったのも印象的でした。いい話でしたよね。繰り返して見ていますが、いつもいろんな発見があります。

そして、ReActionView やクロージングの Falcon の話も圧巻。絶句。軽率に導入してみたい気持ちでいっぱいです。いやーほんと面白かった。

改めて、本当に楽しい時間でしたね。 オーガナイザーの皆様には大変お世話になりました。ありがとうございます。 2026も楽しみにしています!!

私としては割と珍しいことに、すでに2026にプロポーザル出したいネタがあるので、 それを向こう1年間かけて思索を深めていきたいと思います。 たぶん今度は割とテクいはず。 引き続き、日々のソフトウェアとの付き合いも、みなそれぞれに楽しんでいきましょう。

クックパッドを退職します

いわゆる退職ブログです。入社エントリの次のエントリとかではなくてよかった。。。 「で、誰?」向けリンクはこちら→ http://d.hatena.ne.jp/moro/

昨日6/6を最終出社とし、6/30付けでクックパッド株式会社を退職します。2015年8月入社ですので、おおよそ3年弱つとめていました。

在職中はたくさんの皆様にお世話になりました。直接ご挨拶すべきところ、インターネットでのお知らせとなった方もたくさんいらっしゃいますが、ご容赦ください。

クックパッドでは、プログラマ/エンジニアだけでない、いろんな職能とパッションをもった方々と、一つのサービスに当事者意識を持って向き合う、という貴重な経験ができました。

チーム感の話はRubyWorld Conference 2017で話をしました。

またその後も、ブラッシュアップ版 https://speakerdeck.com/moro/an-alive-team-grows-software などもお話する機会がありまして、こういうチームでのありようを経験できたのはすごく大切な経験でした。

技術的なところでは

techlife.cookpad.com

のような取り組みを通じて、チームや、チームを超えたソフトウェアに住まう人たちみんなにとって、同じものに向き合う挑戦などできました。 (この記事は、気分的には卒論みたいな感じです。ご覧いただけた皆様に Accept されてるといいんですが。)

入社エントリで触れていたクックパッドの技術的なところでも、たとえば hako ファミリーの良さを通じて( 感動している様子 )コンテナの良さがわかってきたり、あるいはよりテッキーなレイヤにおける "そこにすまう人たちにとってのナイスなソフトウェアのあり方" の適用などを、当事者として目撃できたのはすごくよかった。勉強になりました。

そのうえで、いろいろ思うところがあり、次の現場で挑戦しようかなと思ったのでした。社内ブログの退職エントリでも引用したのですが、

XP の鍵は誠実性(integrity)だ。本当の価値と調和のとれた行動をすることだ。誠実性を目標にした途端、私は実際の自分の価値が世界から持っていると思われたい自分の価値ではないことに気づいた。この 5 年間は、実際の自分の価値を自分の持ちたい価値に変える旅だった。 この旅は、完璧からはかけ離れていた。理想からほど遠いことを痛感させられることもある。だが、すべてがうまくまとまることもある。価値と理想が一致して、 そこから自然と行動が流れてくるような瞬間だ。そのときは旅を続けてよかったと思える。

-- エクストリーム・プログラミング 第25章 「結論」

クックパッドでの 3 年間は私にとってもこういう期間だったと思います。イキリ Rails おじさんが、もうちょっと広い social change への門を見つけた感じ。

「完璧からはかけ離れていた」ので、負担をかけたりがっかりさせてしまった方々もたくさんいますが、それでも、貴重な経験ができました。この場を借りてお礼を申し上げます。ありがとうございました。


6 月は有給消化しながら過ごし、また 7 月から働く予定です。次も Ruby 界隈です。先の RubyKaigi 2018 では、前職と現職と次の職場の 3 社すべてがスポンサーブースを出していて、興味ぶかい状況だなと思いつつ、よく考えるとそういう界隈の中で転職していたのである種の必然なのでした。RubyKaigi すごい。

今後も、松江や福岡やリージョナルないろんなところや各地の浅草などで、皆様にお会いするかと思います。どうぞよろしくお願いします。

楽しくいいきいきとソフトウェアにすまえる場を作るぞ!

2017年のこと

2017年内、あるいはせめて正月休みの間に書きたかったのだけどダメでした。ふだんから日記を書く習慣は大事ですね。

2017年は自分の中でだいぶ「わかってきた」年として、たぶん今後の当面の仕事において思い出深い年になる予感がしています。


ひとつめかつ最大のポイントは手探りながら「チームでのソフトウェア開発」を続けられたこと。チームのみんな始め、周囲の方々には感謝するばかり。 「って、書いてある本を読みました」という状態から、だいぶ実感を持って語れるようになった、ような気がします。

却ってうまく言語化できないことも増えたので、それを咀嚼するのは今年がんばりたいですね。


そしてそのチームをRubyWorld Conferenceで自慢できて本当によかった。

今年の基調講演は @kakutani さんだというのを夏頃に見かけて、ぜひそこで自慢したい! と発表応募したのですが、ほんと良い機会でした。

自分の話の翌日、完全にリラックスして聞いた角谷さんの話ももちろん良くて、とてもよいアーキテクチャパターンだなあという気持ちになりました。あ、そうそう私の「たのしい」連呼をもう少しカラフルに抽象化するとそういう感じ、という。たぶん。自分でもよく考えてみます。

自画自賛しながら言い換えると、そのアーキテクチャパターンのイチ実装として(A Storyだ)、やはりなかなかよいチーム活動を紹介できたのじゃないかな。

その後の @june29 さんのペパボさんのショートプレゼンでも話の内容の重なりがあったり、帰りのバスでも色々話ができたりと、よいイベントでした。

2018年もきっと参加したいです。


日々の仕事を「ナイスを伝えるメディアとしてポエム化する」という観点をお土産に貰ったものの、「ナイス」さをどう語ればいいかは難しく。そんなときに、福岡Ruby会議02での @snoozer05 さんの話の資料を見て、理解が深まった気がしました。メガネであり、ペンであり、言語であるけど、自身ではなくパートナーである、という。その「ナイスさ」を私自身が受け取ったぶんに色をつけて周囲に届けたり、またもらったりする、というのが私にとっての「たのしい」ヤツなのだなあ、と。

そういうのが繋がった気がして、とても嬉しくなったのを覚えています。


で、そういう話をまたチームのみんなとしつつ、コアチームのみんなとお隣チームといい感じに働いて大きめの施策をリリースできたり(この様子はまたどこかで語られると良いのだけど)、前述の角谷さんの話をチームで鑑賞会したりしながら2017年が暮れたのでした。


2017年といえば、モアナよかったですね。おじさんとしては素直に感情移入するのはなかなかこっ恥ずかしいですが。

And the call isn't out there at all. It's inside me.

( I Am Moana (Song of the Ancestors) )

私も『遠くへ旅をしてわかってきた』気持ちになった2017年でした。

2018年もよろしくお願いします。

論理削除 Casual Talks #1 で「論理削除しない」という話をしました

互いの前職での先輩後輩である @kenchan と企画した論理削除 Casual Talks #1で、「論理削除しない」という話をしてきました。

話す内容が各話者で面白いほどかぶっていたのでなかなか大変でしたが、普段から言っている「論理削除するな」「削除じゃないからちゃんと機能を設計しましょう」という内容を話してきました。 他の方の話も、かぶっているようで新しい視点もあって、いち参加者としてもたいへん勉強になりました。

RESTful#とは勉強会で(Railsでの)ルーティングの考えだし方の話をしました

RESTful な設計って、ってマスタメンテ作るにはいいけどまともなサービス作れるの? という疑問に対して、結構やればアプリケーションできるので安心してください、という話をしました。

「独自研究」セクション以外はだいたいふつうに経験したことです。「独自研究」セクションはたぶん、今流行りのオーケストレイションレイヤをどうするかというところになるのかな、と。APIといいつつ、HTMLを返す話ばかりですが、これはAPIとHTMLをあえて区別せずそれは単にリプレゼンテーションが違うだけです、という意図でした。

転職してから初の社外発表が前職オフィスでやるというのが面白かったです。永和メンバーも結構たくさん会えてよかった。来てくださった方、開催をアレンジしてくださった方、ありがとうございました。

クックパッド株式会社に入社しました

2015年8月1日付けでクックパッド株式会社に入社しまして、本日、初出社をしました。

入社を志したきっかけはたくさんあるのですが、とりわけ RubyKaigi 他イベントでよく拝見するエンジニアの皆さんが一生懸命作って運用しているサービスがどのようなものか、間近でヒリヒリする距離感で見てみたかった見てみたかったという理由が一番大きいです。このごろでは松田さんの The Recipe for the World's Largest Rails Monolith // Speaker Deck は大変興味深かったです。がんばろ

とはいえ、中途で入る以上、周りのみなさんすげーすげーと言ってるだけじゃなくて、ちゃんと値打ちを出していかないとなあ、と思っているところです。

技術イベントを始め、社外へのアウトプットもこれまで以上にやっていきたいと思っていますので、今後ともどうぞよろしくお願いします。