Shohei Mitani

なないろ

YAPC::Fukuoka 2025の登壇振り返り #yapcjapan

YAPC::Fukuoka 2025で「競馬で学ぶ機械学習の基本と実践」という発表をしました。YAPC::Hiroshima 2024以来、2回目の登壇の機会をいただきありがとうございます。

競馬というキャッチーなテーマもあってか、当日はTrackDの教室に沢山の人が来ていただき、温かい空気感の中で発表することができました。

また、はてなブックマークのホットエントリでもトップに上がることができ、頑張って準備した甲斐がありました。

聞いていただいた方、見ていただいた方、YAPC運営の皆様、ありがとうございました。

なぜ、このテーマで話したか?

CfPが出た時にこの投稿を見かけたことで、昔ながらの機械学習の話をしてみたら面白いかも?と思ったのがきっかけです。

ただ、YAPCPerlが好きなエンジニアを中心にWebエンジニアが多く集まるカンファレンスです。なので業務で扱うような題材で、コテコテの機械学習のプロポーザルを出しても通らないだろうということで、キャッチーな題材と初心者をターゲットにしたこのテーマを選びました。

機械学習の基礎に重きを置いた内容にしつつ、競馬を通してざっくり機械学習の仕組みと面白さが伝わると嬉しいなという気持ちで臨みました。

発表準備

今回の資料は過去の登壇と比べても、なかなか準備に難航しました... 競馬で機械学習は昔やったことはあったのですが、その時のコードやデータはぐちゃぐちゃな状態だったので、改めてデータ集めたりコード書いたりして、1〜2ヶ月くらいは週末コツコツ資料準備をしてました。

やり始めると色々アイデアが出てくるので、資料そっちのけで競馬のアイデアを試したり、挫折したりと寄り道も多かったです。

また機械学習の基礎だけでも幅広い領域があるので、競馬と組み合わせながら40分で収めるのはなかなか難しく、作ったスライドの半分くらいは最終的に捨てました。20分ではなく40分で応募しておいてよかった...

発表への反響

ブースや懇親会などで、「競馬の人!」と声をかけていただき嬉しかったです。内容が分かりやすかったですとか、競馬じゃなくて競艇はどうですかとか、色々な感想やご意見をいただきありがとうございました。

また、発表資料で引用させていただいた方々から、YAPC後にXで反応いただく事ができ、当時勉強させてもらっていた人たちとちょっと繋がる事ができたことも嬉しかったです。

YAPCの影響力の広さに驚きます。

YAPC振り返り

ここからは参加者としてのYAPCの思い出振り返り。

Day0

木曜日は17時頃に福岡につき、Deltaさんのイベントに参加させてもらいました。

hack-at-delta.connpass.com

macopyさん、kobakenさん、Fujinamiさん達と談笑しながら美味しいクラフトビールを頂きました。Deltaさんありがとうございました!

Day1

初日はまだ資料が完成してなかったので、内職しながら色んなトークを聞いてました。

初日は同僚がたくさん発表してたので、それ優先しつつここら辺のトークを聞きに。どれも面白かった。

終わった後は飲みに行きたかったけど、発表練習と翌日の "仕込み" のために早々とホテルに。

Day2

inaoさんのエモいトークを聞いて、自分の発表が終わった後は会社のブースに基本いました。他のブースも全部回ってノベルティのお菓子もゲット。

途中、ご飯を食べながら踊り場でOSS開発者の企画を聞いてました。OSSを引き渡していく話は面白かったな。こういう企画自体あんまり固まってないものが、参加者の良しな力でいい場に変わっていくの他にはないYAPCの良さな気がする。

懇親会でも色々な人とお話しさせてもらい、Findyさんのイベントに移動。Day0と同じ場所で、美味しいクラフトビールをいただきました。Findyさんありがとうございました!

findy.connpass.com

その後は天神の方で、他の人達と合流して2時くらいまで飲んでました。

おわりに

来年は東京!!!ビックサイト!!!また発表できたらいいな。

書籍紹介「エンジニアリングマネージャーお悩み相談室 日々の課題を解決するための17のアドバイス」

7月7日にあらたまさんの「エンジニアリングマネージャーお悩み相談室 日々の課題を解決するための17のアドバイス」が発売されました👏👏👏

www.shoeisha.co.jp

私もいくおさんmiisanと共にレビュワーとして参加させていただいたのですが、全EMに読んでほしい本なので、私の推しポイントと一緒に紹介します!

続きを読む

RubyKaigi 2025 参加ログ

松山で開催されたRubyKaigi 2025にDay0 ~ Day4まで5日間参加してきたので、やってたこと・聞いてたセッション・Rubyistたちとの交流の記録を残しておきます。

Day0

今回は所属するスマートバンクがHack Space Sponsorとして参加することになったため、Day0はスペースの準備をしていました。キャンプ場っぽい雰囲気を出すために芝を引いたりキャンプチェアを置いたり、ブースの設営などをしてました。

準備が終わってからは、あっきーさん、矢野さん、かびさんとのDay0飲みへ

写真引用元

2次会はローカルオーガナイザーのらむさらさんに合流させていただいて、地元の美味しいご飯とお酒をいただきました。

Day1

トーク

ImaizumiさんのKeynoteでRubyKaigi開幕!!文字コードの歴史からunicodeutf-8の関係など細かく説明があった後、rubyunicodeの最新バージョン対応など、imaizumiさんが取り組んでるPJについて紹介があり非常に勉強になりました。過去のキャリアからRuby Commiterへのつながりの話はめっちゃエモくてよかったですね〜。

sinsokuさんの「Automatically generating types by running tests」は今回の中で一番刺さった気がします。rbs-trace早速試してみたい。

Hack Space & ブース

会社のHack Space & ブースにはたくさんの人が来ていただいて、盛況で良かったです!

Party

オフィシャルパーティで美味しいご飯 & 日本酒をいただけて大満足!会場のレイアウトから機材、食材・お酒、設営など全て自前で準備したと聞いてローカルオーガナイザーさんすごい!!!

その後2次会 ~ 3次会と色々なRubyistとお友達になれて楽しかったです!

写真引用元

Day2

トーク

前日のお酒はなんとか消化し切って気持ち良い朝を迎えたDay2。同僚のosyoyuさんのトークを聞いてました。Benchmark Driven Developmentやっていき!

この写真カッコ良過ぎる

スポンサーブース

今回は全部のブースを回りたいと決めてたので、トークはあまり聞かずに全てのブースを回り切りました。

hakomonoさんにいただいたサウナボーイのボトル&サコッシュがめちゃ嬉しかったです!これから常用します!primeNumberさんの素数スピードもめっちゃ面白かったです!

今回、アンケート | クイズ | Xフォローからの景品ガチャのブースが多かった気がします👀 休憩時間は人が多くてあまりブースの人と喋れなかったのでそこはちょっと残念。Day1からスタンプラリーができないのはなんでなんでしょうか?

Hack Space & ブース

2日目も合計1時間ほどブースに立ってました。今回12名くらいで参加したので、無理ないブースのシフトを作ってくれてスポンサーチームに感謝。

Drinkup

2日目はQiitaさんのDrinkupに参加させていただきました。「 しまなみ直送 真鯛・海鮮料理専門店 鯛将」さんで美味しい刺身やじゃこ天、鯛めしをいただきました。コース料理とは思えないほどボリュームが多くめちゃめちゃ美味しかったのでビビりました。Qiitaさんありがとうございました!!

2件目はgifteeさんのDrinkupの2次会組にちょっとだけ参加させてもらった後、シミュレーションゴルフでDay4の秘密の特訓をしてました。

ドライバーマン振りするころちゃん

Day3

トーク

流石に飲み過ぎの疲れが出始めたDay3... ペンさんの「Analyzing Ruby Code in IRB」と同僚のohbaryeさんの「On-the-fly Suggestions of Rewriting Method Deprecations」を聞いてました。どちらもPrismを使ってコード解析していたので面白かったです。こういう色んなところで使われるPrismみたいな技術、ゲームチェンジャー的な感じがして面白い。

Hack Space & ブース

最終日も30分ほどブースに立ってました。色々な方にブースに来ていただいて、Hack Spaceも活用いただいて大感謝!!

Drinkup

Day3はhacomonoさんのYakiniku Drinkupに参加させていただきました!「京城園 一番町本店」でめちゃめちゃ美味しい焼肉いただきました。特にタンがめっちゃ美味しかったです!hacomonoさんありがとうございました!

そこから2次会に同じDrinkupに参加してたRubyistと行って、ホテルに戻りました。

Day4

個人的なRubyKaigiの本番?(違う)のRubyKaigi 2025 Golf Competitionに参加!!この日のために前日は早々と2次会で切り上げてました。

RubyとGolf、同じ趣味を2つも持つ人たちとの時間が面白くないわけがなく、最高の時間を過ごしました!かびさん企画ありがとうございます!!!!

終わりに

この他、お昼ご飯だったりノベルティだったり廊下での会話だったり、書ききれないくらい楽しい5日間を過ごせました!来年の函館も行きたい!!

RubyKaigiのチームの皆様ありがとうございました〜〜!!!

EMConf JP 2025と3つの学び

2月27日に新宿で開催されたEMConf JP 2025に参加してきました。

2025.emconf.jp

ネームプレートからチェキ、アンカンファレンス、ブースなど、「増幅」と「触媒」というテーマに合わせて、トーク以外にも参加者が多くの人や学びに出会えるよう設計された非常に良いイベントでした。

参加して帰ってからもグルグルと頭の中を駆け回っていた様々な学びを、このブログを書くことで整理したいと思います。

続きを読む

ONCE: Writebookのコードを読んでみた 25年1月Ver

Writebookとは

37signals が提供するオンラインブックの作成ツール。24年7月に無料で公開され、Railsを開発している人たちが書いたRailsアプリケーションのコードを読めるとのことで話題になったやつ。

今でも開発は続いているようでRails8に対応していたりとリリースされた時にコードを読んだ人も、改めてダウンロードし直すと最新コードが読めて面白いかも知れません。

最近社内で最新のWritebookを見る会があったので、自分が気になったところを中心にまとめようと思います。

手元で見たい人はこちらから

once.com

Rails 8になってる

WritebookのGemfileで railsgithub: "rails/rails" が指定されているのでinstall時点の最新のRailsがインストールされます。実際にRails 8の新機能であるレート制限APIなども利用されてました。

#frozen_string_literal: trueが指定されてない

Ruby 3.4以降のデフォルト化を見据えてるんですかね?frozen_string_literalの指定は一切ありませんでした。

特定のモデル専用のConcernが多用してる

Concernは複数のモデルで共通で利用する処理を切り出すものと理解されてる人も多いかもしれません。WritebookのコードではBookクラス専用のBook::XxxableみたいなConcernが実装されてます。自分も職場ではよく使う方法でFat Modelを抑止しやすいので良いですね。

Delegated Typesを使ってる

Rails 6.1から入ったDelegated Typesが実際に使われてます。設計の妙みたいな使い方だったので社内の他メンバーからも好評でした。Delegated Typesがどんな感じで使えるのか知りたい方は見てみるといいでしょう。

before_actionでset_xxxがあったりcreated_atに依存してる箇所もあったりとよく言われるアンチパターンは普通に使ってる

Controllerのshowのbefore_actionでset_bookみたいにインスタンスを初期化する実装をしていたり、それをConcernで共通化したり、ActiveRecordで追加されるcreated_atの順序に依存したコードを書いていたりと、自分の周りではあまり使わないようにと言われるようなコードも見られました。

DBのトランザクションをほとんど貼ってない

一番驚いたのがこれで、複数のレコードを順に登録していく処理でDBのトランザクションを貼ってないコードが多かったです。INSERTが多い処理だとDBへの接続が途切れる以外で失敗することなんてほとんどないからデータ不整合などはあまり気にしてない感じなのでしょうか?

以上、また定期的に最新版をダウンロードして眺めたいなーと思います。