Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
推し活としてのrails new/oshikatsu_ha_iizo
Search
sakahukamaki
October 25, 2024
Programming
3
4.9k
推し活としてのrails new/oshikatsu_ha_iizo
in Kaigi on Rails 2024
sakahukamaki
October 25, 2024
Tweet
Share
More Decks by sakahukamaki
See All by sakahukamaki
自作しないゆるふわこだわりキーボード生活/keeb_at_matsue
sakahukamaki
0
55
Other Decks in Programming
See All in Programming
フロントエンドのディレクトリ構成どうしてる? Feature-Sliced Design 導入体験談
osakatechlab
8
4.1k
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
return文におけるstd::moveについて
onihusube
1
1.1k
The Efficiency Paradox and How to Save Yourself and the World
hollycummins
1
450
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
103 Early Hints
sugi_0000
1
230
선언형 UI에서의 상태관리
l2hyunwoo
0
170
Webエンジニア主体のモバイルチームの 生産性を高く保つためにやったこと
igreenwood
0
340
Effective Signals in Angular 19+: Rules and Helpers @ngbe2024
manfredsteyer
PRO
0
140
Mermaid x AST x 生成AI = コードとドキュメントの完全同期への道
shibuyamizuho
0
160
tidymodelsによるtidyな生存時間解析 / Japan.R2024
dropout009
1
790
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
65
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Statistics for Hackers
jakevdp
796
220k
Speed Design
sergeychernyshev
25
670
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Become a Pro
speakerdeck
PRO
26
5k
Making Projects Easy
brettharned
116
5.9k
Transcript
推し活としての`rails new .` Kaigi on Rails 2024 sakahukamaki / kotatsu
自己紹介 • 家に猫が三匹いる • Rails10年生 • 同人誌を書くタイプのオタク
このトークで持って帰れるもの • オタクへの何らかの気持ち • 知らない世界の断片 • 軽率なオタクという存在の知見
今日話すこと、話さないこと • 話す ◦ オタクが何をしたか ◦ 頑張らない開発体制 • 話さない ◦
rails new . 以上のRailsのはなし
前提知識
推し活とは • 家に猫が三匹いる • Rails10年生 • 同人誌を書くタイプのオタク https://kotobank.jp/word/推し活
今日の推し 魔界の一般人 シャレトン https://youtube.com/@shareton_sha
活動スタイル • いわゆる動画勢 • 匿名のお手紙とのコミュニケーション(大喜利) • オリジナルショートドラマ
普段の姿 なかみ https://x.com/sharepos_ hokori/status/15775943 35524450304
野球の話とか https://x.com/sharepos_ hokori/status/14033204 18723762179
週末は競馬予想 なかみ https://x.com/sharepos_ hokori/status/16398708 76253585408
恋愛や人生相談もある なかみ https://x.com/sharepos_ hokori/status/12917378 73180315648
その他の活動軸 • オリジナルショートドラマ 通称:本編 • 企画から発生した架空のVTuberの設定を追加募 集し、エイプリルフールには「存在するVTuber として活動する姿」も披露
オタクと距離が近い • オタクの発案が取り込まれる • 人生相談が拾われたりする
オタクと距離が近い • オタクの発案が取り込まれる • 人生相談が拾われたりする うれしい
きょりちか 匿名だからこそ成り立つ大喜利、コミュニケーション マシュマロで行われていた
サービス Ruby on Railsと Pythonで出来た Webサービス https://marshmallow-qa.com
マシュマロ #とは • 匿名のメッセージ • 受け手に優しい機能 ◦ 攻撃的なメッセージを弾く ◦ よくない言葉を伏字にしてくれる
◦ Pythonの実装はこのへん • 推しのコンテンツに深く関わるサービス
事件 ある日マシュマロに事件
事件 ある日マシュマロに事件 マシュマロ: 認証ユーザを優遇します ログイン必須にします
こまる… 匿名だけど不平等になった https://x.com/sharepos_hokori/status/1664066921707499520
困るね…… オタク間に差があると悲しいのは推しも同じ https://x.com/sharepos_ hokori/status/16641188 07580012549
マシュマロでは要件を満たせなくなった https://x.com/sharepos _hokori/status/166425 5928831729664 引越先探しの旅へ
一長一短 ほめて箱 × 伏せ字オープン https://x.com/sharepos _hokori/status/166428 1621493878837
一長一短 お題箱 × 画像化 https://x.com/sharepos_hokori/status/1664246739979882497
一長一短 wavebox × 画像化 https://x.com/sharepos_ hokori/status/16648190 30308577280
一長一短 質問箱 × 広告デカすぎ × 無差別お手紙が 届く https://x.com/sharepos_hokori/status/1664194206745899009
一長一短 Google Form × 画像化 × 利便性 https://x.com/sharepos_hokori/status/1664256673652035584
一長一短 Zabuu × 長文 × 安定性 https://x.com/sharepos_ hokori/status/16644769 73836668929
推し、落ち着かない • 長文が届く • ワンクリックで画像にしたい • 攻撃的な手紙は弾きたい 上記の要件にフィットするサービスがない
大変そう 推しが大変そうだとオタクはつらい
青天の霹靂 https://x.com/sharepos_hokori/status/1665196149136056320
エンジニアワイ、気付く ワイ、つくれるじゃん
そう、Ruby on Railsならね • 必要な機能はお手紙を送るだけ • 長文はDBでどうとでも • 画像出力もなんとでもなるやろ
聞いてみよ 「作っていい?」 「作るって何?」 「じゃあ作るね」 「作るって何??」 https://x.com/sharepos_ hokori/status/16655755 20510287873
方針が決まった • あとはやるだけ • 仕事の合間にさっさと実装
作るぞ
git init •
タイトル回収 •
そうして出来上がったのがこれ
とても平成 • 最低限の機能だけ
こころいき • 最低限の機能だけ • 出来ない事にこだわるとぽしゃる • とにかく出す
何はともあれリリース 👏
具体的に何したの
時系列 • 2023/6/5 `git init`, `rals new .` • 2023/6/6
開発環境整備(Docker回り) • 2023/6/8 Letterモデル爆誕 • 2023/6/9 管理画面、ロゴ爆誕 • 2023/6/10 お手紙の画像化を実装して本番投下
はやさ • 構想からリリースまで5日 • Ruby on Railsはすごい
作ったもの • LettersController ◦ new, create • Admin::LettersController ◦ index,
show
作らなかったもの • ユーザー管理
ユーザー管理を作らない • どうせ管理画面を見るのは推しだけ • 推し1人のためにUserモデル/テーブルを設計 ◦ オタク全員がアカウントを作るとかもある?
ユーザー管理を作らない? • どうせ管理画面を見るのは推しだけ • 推し1人のためにUserモデル/テーブルを設計 ◦ オタク全員がアカウントを作るとかもある? ◦ 様々な要件を考えるのだるい
推しのログインはざっくりと • BASIC認証でエイってやってバーン • authenticate_or_request_with_http_basic ◦ usernameとpasswordは環境変数に埋めた
これも作らなかった • マシュマロにある伏字機能 ◦ 「下ネタの為に課金したいわけじゃない」とい う発言から不要と判断
なかまあつめ
あの画面をもう一度
見た目、平成すぎ…? • 幸いなことに • オタクが なかまに なりたそうに こちらを うかがっている ◦ 気がした
ツイートしてみた • デザインもお絵かきもできん!
🐟🐟🐟 • オタク釣れた • やっぱり居る https://x.com/sharepos_hokori/status/1666773616602787846
どう集めるか • 求人を出す • 「こちら側」の人間をあぶり出す • やる気のある人間を引っかける
どこに集めるか • 元々Discordに推しのファン鯖 (オタクの集まり)があった • 同じプラットフォームを使う形でひとあつめ
求人掲載 • 探してみた • ページのヘッダでひとさがし Ruby、Rails、Docker、Git、HTML、CSS、UIデザイン、アイコン制 作、その他もろもろ心当たりある人は@shareton_postに連絡くださ い。
炙り出し <•><•> <•><•> <•><•> こっちを見たな? <•><•> <•><•> <•><•> 待ってたよ! 【流出するな】開発鯖のリンク:
https://xxxxxxxxxxxx【お前ら外秘】
紹介、突撃 • 推し経由で紹介されたユーザーにDM • 運営アカウントにDMしてきたユーザーを招待
ロゴもでてきた • とにかく手が早い • オタクすごい
OGPも出てきた • アイデアと仕上げは別人(感謝)
ひとあつめできた • 仕様の相談が出来る • なんかラフが飛んでくる • なんか実装が飛んでくる • めっちゃほめてくれる
いまの開発鯖 • 絶対に返事してくれる人誰かひとり • 基本的に3人以上の反応がある • 来るもの拒まず去るもの気づかず
ひと あつまる すごい 👏
Ruby on Railsってすごい • 何も考えずにサービスが作れた • リリースまでの障壁がない ◦ SaaSがあってうれしい ▪
さっくりデプロイ
爆速リリースを支えたSaaS • ユーザー管理を頑張らない人間は インフラを頑張る気がない • 思い出したのは古のRuby PaaS「MOGOK」 ◦ https://www.iij.ad.jp/dev/tech/activities/mogok/ ◦
MOGOKは、もう……
Heroku VS • よくある選択肢はHeroku • 強く選ぶ理由もなければ強く選ばない理由もない ◦ Rails Girlsとかコミュニティ活動なら選ぶ
国産でRailsが動くと嬉しい • 探してみたらあった • ロリポップ!マネージドクラウド by GMOペパボ ◦ https://mc.lolipop.jp/ •
サポートも日本語だし心強い • 英語頑張らなくてよい ◦ とにかく運用で頑張りたくない
頑張らないインフラ 完成 • ロリポップ!マネージドクラウドのDBがMySQL • Gemfileに `gem "mysql2", "~> 0.5"`と追記 •
~完~
インフラ やらないこと • 監視 • バックアップ
インフラ やらないこと • 監視 ⇒なんかあったらDMをくれ • バックアップ ⇒サービス移行もお祭りにしたオタクなら DBがぶっ飛んでも祭りになる説 あると思います ▪
(規約にも「祈れ」って書いてる)
維持費 • オタク金払いがち • 自費 • 実際各種サブスクとそう変わらん値段 ◦ 1400円くらい/月 •
(同人誌より安い)
無事運用開始 • 推し、オタクの様々な方向から要望が発生する
推しから要望もろた • ワンクリックで画像にしたい • お気に入りほしい • ブロックしたい
推しから要望もろた • ワンクリックで画像にしたい ⇒都度ダウンロード→クリップボード • お気に入りほしい ⇒is_favorite カラムを追加 • ブロックしたい
⇒rackでごにょごにょ
開発鯖、すごい アーと思ってた部 分を実装してくれ るひとがいる
開発鯖、すごい(2) 概念推しカラーリングのデザインが出てきた
開発鯖で考えた • 見た目を推しに合わせよう • コンテンツに合わせたタグを付けよう ⇒作った
出てきたバグ • 改行が反映されない ◦ safe_joinのやつじゃん、直します • 絵文字が投稿できない ◦ DBの設定見直してutf8からutf8mb64へ ◦
有識者のDMで「アッDBの設定見てないや」と思 い出せた
オタクの要望 • プレビューしたい • (推しが見てるらしい)手紙の総数を俺らも見たい ⇒作った
オタクの反応を見た • バグる→推しに報告する→推しからDMが来る • 要望がある→推しに連絡する→推しから以下略 • 推しに迷惑のかかる流れが生まれていた • (大体オタク隠れるのでエゴサも機能しない)
オタク、隠れがち • 推しとのやりとりも匿名が喜ばれるオタク • よくよく考えたらオタクが運営アカウントに凸る訳 がない • 運営宛の手紙も受け取ろう ⇒目安箱を作る
目安箱の通知 • Feedback#save後にDiscordのincoming webhook を叩く ◦
オタクの要望 • 金を払わせろと言われた ◦ オタク金払いがち • OFUSEにて送金受付対応 ◦ https://ofuse.me/ •
匿名で送金されがち ◦ (返信したいのでログインして送って欲しい)
お金もらったので • 定期的に収支を公開 ◦ 公開する度に何故か残高が増える謎 ▪ オタク金払いがち ◦ 元気な月だけ公開している ▪
兎にも角にもがんばらない
反響
朗報、「【朗報】」 • 推しの喜びは オタクの喜び https://x.com/shareton _sha/status/166745197 4365896705
プレゼントにもなった • 意図せぬプレゼントに https://x.com/sharepos_hokori/status/1667485783467651072
「教室の隅で埃食ってた」は内輪ネタ https://x.com/sharepos_hokori/status/1665691932918415360
運用体制
あるもの • サービス • 開発鯖 • 規約 • 祈り
ないもの • ドメイン • 監視・バックアップ • CI/CD • テストコード •
やる気
とにかくがんばらない • ゆるくやる • 息切れしないで運用する • 終わらせないのが大事
ちょっとしたオタクのがんばりで 推しの平穏が保たれた🎉
令和ちゃんにキレてるし なかみ https://x.com/sharepos_ hokori/status/18414938 66509467691
野球の話もしてるし https://x.com/sharepos_ hokori/status/18369392 51369578676
🏇の話もしてる https://x.com/sharepos_ hokori/status/18476620 54758580691
今後やりたいこと • もらったイラストのギャラリーページ • お手紙の柄を内容に合わせて変更 ◦ フッターに馬とか野球とか • キリ番踏み逃げを許さないイベント
やらかした感想
エンジニアとしてどう? • 平日にRailsを書いている知識が役に立って嬉しい
オタクとしてどう? • 平日にRailsを書いている知識が「推しのために」役 に立って嬉しい
Railsアプリ • 日々の仕事より楽なアプリだし、簡単に作って雑に メンテできててよい ◦ 実務経験あっての「簡単」 • 遊び場にしようかと思ってたけど、Wasmも ViewComponentもHotwireもなーんにもしてない
幸運 • 作ったはいいものの人が集まらないサービスはある • 最初からターゲットが居て公認で使ってもらえたの はラッキー
アレなおきもち • 休日にコード書いてる人に対して勝手にコンプ レックスがあった • 自分の同人趣味みたいなもんだと分かったのでど うでもよくなった ◦ 休日にコードを書くのは、休日にコードを書くということ ◦
同人誌をつくるのは、休日に原稿を書くということ
楽しんでやる • 趣味に仕事が役立つこともある • 休日に仕事を趣味にする必要はない ◦ やらなくても死なない • 推しの役に立てると嬉しい
いかがでしたか • オタクへの何らかの気持ちは芽生えましたか • 知らない世界は見えましたか • オタク金払いがち、覚えましたか
おしまい 👋