Slide 1

Slide 1 text

dely株式会社 Kaigi on Rails 2024 スポンサー LT クラシルの現在とこれから

Slide 2

Slide 2 text

松嶋 瑛奈 dely株式会社 バックエンドエンジニア ● 2019年11月にSREとして入社 ● 2022年10月にバックエンドエンジニアに転向 ● Rails歴3年目 💎 ● 長年クラシルの開発・運用に携わってきました 󰠉 自己紹介

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

クラシルが始まったのは2016年...

Slide 5

Slide 5 text

おかげさまで 9年目を迎えることができました 🎉

Slide 6

Slide 6 text

クラシルは知ってるけど... 実際どれくらいの規模感の アプリケーションなの 🤔?

Slide 7

Slide 7 text

クラシルの開発って 今どんなことに取り組んでるの 🤔?

Slide 8

Slide 8 text

クラシルの「現在」について ダイジェスト版でお届けします 💨

Slide 9

Slide 9 text

rails stats

Slide 10

Slide 10 text

※ specは省略

Slide 11

Slide 11 text

※ specは省略 ● 総コード行数約41万の大規模なアプリケーション 💎 ● Rails Engineを活用し、一部をモジュール化 ● ビジネスロジックはサービスレイヤに集約 ● 3年前と比較してコード量が約2.4倍に増加

Slide 12

Slide 12 text

クラシルを支える アーキテクチャの紹介

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

自前運用していたものが障害の温床になっていたこともあり、大部分 をマネージドサービスに移行し、安全かつスピード感持って開発可能 に⚡ 📹 動画変換基盤 ffmpegを用いた自社基盤から MediaConvertによる動画変換に 統一 🔍 検索基盤 ElastisearchをEC2上にセルフホスト し運用していたが、現在はElastic Cloud上で運用 🐝 バッチ処理 wheneverでcron jobを管理して いたが、現在はEventBrige, Step FunctionsでECS run task 実行 󰠼 DBマイグレーション スキーマ変更時は、デプロイフローが 異なっていたが、現在はGithub Actionsで自動検出し、ECS run taskで実行 アーキテクチャの背景

Slide 15

Slide 15 text

最近の技術的な取り組み

Slide 16

Slide 16 text

抱えていた課題 レシピの品質担保の仕組みづくりを推進 AWS Bedrock API(Claude3 sonnet)を用いて、コンテンツがレシ ピの基準を満たすか判定し、レシピデータを構造化する仕組みを構築 🍳 品質管理 レシピ以外のコンテンツや情報が不足 しているレシピが投稿されることがあ り、品質管理が困難になってきた データ構造 フリーフォーマットで投稿可能なた め、データが構造化されておらず、レ シピの特徴が理解しづらい、分類でき ない

Slide 17

Slide 17 text

これはレシピ? 「病みつきになるおつまみ麻薬卵!とろ〜り半熟卵を薬味たっぷ り醤油ベースの甘辛タレに漬け込むだけ♪…【材料】卵6個分...」 レシピです 構造化してください {:first_comments=>["病みつきになるおつまみ麻薬卵!", "とろ〜り半熟卵を薬味たっぷり醤油ベー スの甘辛タレに漬け込むだけ♪", "ごはんがめっちゃ進みます 😋🍚🥢"], :servings=>"卵6個分", :cooking_time=>nil, :ingredients=> [{:name=>"卵", :quantity=>"6個"}, {:name=>"長ねぎの白い部分", :quantity=>"12cm"}, {:name=>"長ねぎの青い部分", :quantity=>"6cm"}, {:name=>"にんにくチューブ", :quantity=>"1cm"}, {:name=>"白いりごま", :quantity=>"大さじ1.5"}, {:name=>"醤油", :quantity=>"100ml"}, {:name=>"水", :quantity=>"100ml"}, {:name=>"三温糖", :quantity=>"大さじ3"}, {:name=>"鷹の爪", :quantity=>"2本(※お好みで1本 or 1/2本でも)"}], :steps=> ["① 半熟ゆで卵を作る♪ 沸騰したお湯に卵をそっと入れて6分20秒茹でる。冷水にとり、殻をむく。 (水の中でむくと綺麗にむけます)", "② 長ねぎをみじん切りにする。卵が6個入る大きさの容器に、長ねぎ、白いりごま、にんにくチュー ブ、醤油、水、三温糖を入れてかき混ぜる。砂糖をよく溶かす。", "③ 種を除いた鷹の爪をキッチンバサミで輪切りにして加える。加える量はお好みの辛さで♪", "④ ゆで卵を加えて、卵がひたひたになるくらいがベスト。少し顔が出るならばラップを被せてお く。容器に蓋をして、冷蔵庫で一晩漬ける。", "あったかごはんにのせていただきます♪ タレも一緒にかけながら 😋"], :other_comments=> ["半熟卵の茹で時間は6分20秒〜30秒が個人的にベストなとろとろ加減になる具合でした ✨ 殻もむき やすく扱いやすい柔らかさです♪", "お砂糖はよくかき混ぜて溶かしてください 🥄"], :hashtags=>["#おつまみレシピ", "#麻薬卵", "#ごはんのお供", "#簡単れしぴ"]}

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

クラシルのこれから ● 材料や手順、人数(個数)、調理時間等のレシピ情報を構造化すること で、レシピの分類が容易になるだけではなく、UI/UXの改善にも寄 与。その結果、ユーザーの滞在時間が向上 ● 構造化データは、クローラーに理解しやすい情報を提供し、インデック スの制御が可能になったことで、SEO評価の向上にも貢献 ● マルチプロダクト化を進める上でも、クラシルというブランドを守り、 信頼されるサービスであり続けることが重要 公式レシピ・UGCレシピのどちらでも「きちんとおいしく作れる」体験を ユーザーに提供し続けられるプラットフォームでありたい

Slide 20

Slide 20 text

We're hiring! 💎 ブース出展しているので、 是非遊びに来てください! 󰠉