「1ヶ月でWebサービスを作る会」で出会った rails new, そして今に至る rails new
by
kiryuanzu
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
桐生あんず / id: kiryuanzu 「1ヶ月でWebサービスを作る会」 で出会った rails new そして 今に至る rails new
Slide 2
Slide 2 text
こんにちは
Slide 3
Slide 3 text
● 桐生あんず / kiryuanzu(@anzu_mmm) ● Classi株式会社のエンジニア ● 神奈川の南側の地域rb「三浦半島.rb」を やってます ● 趣味はポッドキャストと同人誌制作 自己紹介
Slide 4
Slide 4 text
Classiのメンバーも参加しています kozy4324 akinko1918 nekobitsdreams nkc_yuppy r_tommy1038 1momor1
Slide 5
Slide 5 text
三浦半島.rb (発足の「機運」を作ってくださった 東京Ruby会議12実行委員のみなさん ありがとうございます !!)
Slide 6
Slide 6 text
桐生あんず / id: kiryuanzu 「1ヶ月でWebサービスを作る会」 で出会った rails new そして 今に至る rails new
Slide 7
Slide 7 text
このトークで話すこと ● 生活の一部で rails new したくなった人間の体 験談 ● 自作のWebサービスを開発する上で「どうしたら ローンチまで辿り着けるのか 」の深掘り
Slide 8
Slide 8 text
このトークのねらい ● 「やるぞ!!」 という気持ちを(特に以下の方々 に)持ち帰ってもらう ○ サービスをこれから作る/作っていて、ローンチ を目指している人 ○ 久々に個人開発したいけれど、作る勢いがま だつかない人
Slide 9
Slide 9 text
導入
Slide 10
Slide 10 text
1ヶ月でWebサービスを作る勉強会
Slide 11
Slide 11 text
学生時代に参加した 初めての勉強会
Slide 12
Slide 12 text
RailsGirls Kyoto 7th の存在を 教えてもらった (Rubyコミュニティを初 めて知る)
Slide 13
Slide 13 text
上記を経て 個人サービス開発が趣味となって エンジニアのキャリアにたどり着いた
Slide 14
Slide 14 text
しかしここ数年の様子 ● あまり個人開発に触れない日々 ● 学生当時より技術知識は増えたはずなのに 中々ローンチまで辿り着かない
Slide 15
Slide 15 text
一念発起
Slide 16
Slide 16 text
やはり手持ちのサービスがほしい !
Slide 17
Slide 17 text
趣味のポッドキャストをテーマに個 人サービスを作ってみることにした
Slide 18
Slide 18 text
ポッドキャストとは 出典リンク : https://ja.wikipedia.org/wiki/ポッドキャスト
Slide 19
Slide 19 text
大まかにいえばネットラジオです
Slide 20
Slide 20 text
> Webサーバ上にマルチメディア・データファ イル(音声データ・動画データなど )をアップ ロードし、RSSを通してWWW上に公開する ことである
Slide 21
Slide 21 text
RSS(Rich Site Summary) ● ニュースやブログなどウェブサイトの更新情報 を配信するための文書フォーマットの総称 (XML形式で記述) ○ RSSフィードとも呼ばれる ○ ポッドキャストの主な規格はRSS 2.0 ○ RSSリーダーを使って対象サイトの更新情報 をチェックすることができる ○
Slide 22
Slide 22 text
(衰退の一途という説もあるけれど ……?)
Slide 23
Slide 23 text
ポッドキャストを複数プラットフォーム で配信したい時に便利 ● Spotify ● Apple Podcast ● YouTube Music ● etc… Amazon Music のポッドキャスト追加管理画面
Slide 24
Slide 24 text
ポッドキャスト界隈ではまだまだ使 われている
Slide 25
Slide 25 text
ポッドキャストの RSSフィードの主な 構成情報 ● ポッドキャストについての説明 ● 各エピソードの詳細情報 ○ カバー画像、説明、更新日時 ● 各エピソードの音声データ ● 一意で識別するためのuid
Slide 26
Slide 26 text
これ、自分でも作れるかも? テキストと音声ファイルのデータを登録し、RSS フィードの形式で出力できたらOK
Slide 27
Slide 27 text
自前で作る意味とは? Spotify等のプラットフォーム上でRSSフィードは発 行可能
Slide 28
Slide 28 text
そこにロマンを感じたので
Slide 29
Slide 29 text
先駆者たちの存在 Kaigi on Rails 2023 / mktakuyaさん(ゆるふわポッドキャストさん )の発表
Slide 30
Slide 30 text
Rails製の事例が複数ある yaslab さんのブログ
Slide 31
Slide 31 text
ゴール決定 ● ポッドキャストの RSSフィード発行 APIを 作る ● まずはこれだけを見据えてやってみる
Slide 32
Slide 32 text
やっていく
Slide 33
Slide 33 text
まずはやること整理から
Slide 34
Slide 34 text
Chat GPT を 補助線の役割 として使う
Slide 35
Slide 35 text
その上で自分でまとめる
Slide 36
Slide 36 text
最低限の機能をおさえる 1. 管理者用のユーザーを作成・認証画面でログイン ○ ユーザー情報はコンソールで作成 (他ユーザー作る機会なさそうと判断 ) 2. 管理画面でポッドキャストのエピソードを投稿 3. 管理画面でポッドキャストのエピソード一覧・編集画面 を表示 4. エピソード情報をRSSフィードで発行
Slide 37
Slide 37 text
最終的なroutes.rbはこんな感じ
Slide 38
Slide 38 text
主に必要だったところ
Slide 39
Slide 39 text
音声・画像ファイルを保存 →配信 ● ActiveStorageで音声ファイル・エピソードのカバー画像をS3(ク ラウドストレージ )にアップロードする ● S3で管理する画像・音声ファイルは CloudFront でCDN配信 Active Storage S3のファイルを CloudFront でCDN 配信 Amazon S3 Amazon CloudFront ActiveStorage で S3にアップロード
Slide 40
Slide 40 text
RSSフィードを発行 respond_to で format.rss を指定 コントローラー(Episode::RssController)内の定義は以下のみ
Slide 41
Slide 41 text
Builder テンプレートを使う Railsガイド Action View の概要より参照 フィード用のXMLを組み立てていく / 記述量は100行いかないくらい
Slide 42
Slide 42 text
インフラのはなし
Slide 43
Slide 43 text
VPS(Amazon Lightsail)を選択
Slide 44
Slide 44 text
判断基準: できるだけ AWS のサービスに 寄せるかとなった ● PaaS (Heroku や render.com、Fly.io 等)の選択肢も浮 かんではいた ● オブジェクトストレージ、CDN、ドメイン全てAWSだなあ となったので ● 業務でAWS が一番身近だったのでできるだけ AWS に 寄せることにした
Slide 45
Slide 45 text
せっかくなので Rails8のデフォルトに 乗っかってみる
Slide 46
Slide 46 text
Kamal2 ● config/deploy.yml で以下のセットアップをしたら kamal deploy一発でデプロイできる、便利 ○ ssh接続・パブリックIP・ホストの指定 ○ Docker Hub の認証情報・サービスのシークレットの設定 ● VPSと相性はよさそう
Slide 47
Slide 47 text
SQLite を本番DBに使う ● デフォルト設定そのままで使っている ● Rails8 で大幅強化という話もあるが、自サービスではあまり検 証できていないのが実情 ○ 今回のサービスでは同時書き込みが発生するタイミングが ないというのもある ● DBサーバを別で用意しなくて良いのはうれしい ○ VPSのコストだけを気にしたら良いので
Slide 48
Slide 48 text
(結果的に) あまり手間なく本番環境の構築・デ プロイができた
Slide 49
Slide 49 text
あとは RSSフィードの精度を 上げていくのみ ● Spotify で作った元のフィードと比較していく ● Chat GPT にも比較をお願いしたけど割と漏れがあった
Slide 50
Slide 50 text
Cast Feed Validator という 検証サイトにお世話になった
Slide 51
Slide 51 text
指摘された箇所を修正していく
Slide 52
Slide 52 text
全部通った 👏
Slide 53
Slide 53 text
Spotify に自作の RSSフィードの リンクを設定
Slide 54
Slide 54 text
(デモ)Spotify で再生
Slide 55
Slide 55 text
ローンチできた 🎉
Slide 56
Slide 56 text
どうしたらサービスをローンチまで 持っていけるか
Slide 57
Slide 57 text
1. 小さく作って出す ● まずはRSSフィードの発行 を目標とした ● その上で最低限必要な機能を確認し実装 ○ 3週間かけて運用開始まで到達
Slide 58
Slide 58 text
2. 様子を実況する プロポーザル提出後にまだ半分もサービスができてなかった時のツイート
Slide 59
Slide 59 text
3. 自分が最初のユーザーであること ● 自分がまず「あったらいいな」と思えるサービス ● ポッドキャストを週1くらいで更新するのでその度に使う ことになる
Slide 60
Slide 60 text
この3つの行動を意識していた
Slide 61
Slide 61 text
思い返すと昔作ったサービスも この条件を満たしていた
Slide 62
Slide 62 text
一例: 布教箱 布教してほしいお題を投稿してみ んなで布教するサービス
Slide 63
Slide 63 text
我ながら良い発想だな〜と思う ……
Slide 64
Slide 64 text
だがしかし
Slide 65
Slide 65 text
続いていないのである
Slide 66
Slide 66 text
サービスを続けるのって難しい
Slide 67
Slide 67 text
なぜ?
Slide 68
Slide 68 text
金 ● インフラ費用が気を抜くと3000円前後ぐらいになってい た ○ 構成をがんばって ALB でリクエストをさばくとかやっ ていた ● 使わないまま数千円を払うのはちょっと気持ちとして辛 い
Slide 69
Slide 69 text
ユーザー不在 ● 使われるタイミングがないと続ける意思が消えていく ● ある程度の「承認」がないとモチベが続かない……
Slide 70
Slide 70 text
外部要因 ● デプロイ先のプラットフォーム・外部APIの仕様変更 ● 例: Heroku の有料化、 Twitter API の仕様変更 ○ モチベーションがあれば代替できていたかもだが、そこ までには至れず
Slide 71
Slide 71 text
上記を意識しつつ運用継続中 ● ポッドキャストを定期的にアップロードするために 必要不可欠なツール ● Amazon Lightsail は月額固定制 ○ 3ヶ月無料/月1000円以下のプラン ● いろいろ追加したくなるが、最低限の機能を動かし続けるこ とを実践
Slide 72
Slide 72 text
まずは無理しないレベルで 続けてみる
Slide 73
Slide 73 text
再考「どうしたら個人サービスを ローンチまで辿り着けるのか」
Slide 74
Slide 74 text
まずは「作ろう」までに至る機運 好きなこと・趣味をたくさん持つこと ● 身の回りの習慣やコミュニティのための「道具」を自作する ● 作ろうと思うきっかけがないと意外と始まらない ポッドキャスト活動がまさにそれだった (やんちゃクラブ Advent Calender 2024 ってやつに感謝だ)
Slide 75
Slide 75 text
それでもまだ至れなかったら?
Slide 76
Slide 76 text
コミュニティで他の人の勢いを知る Kaigi on Rails 2024 での kotatsu さん・asonasさんの発表
Slide 77
Slide 77 text
「自分のサービス、やっぱり欲しい ……!」
Slide 78
Slide 78 text
そして今に至る rails new
Slide 79
Slide 79 text
再掲: このトークのねらい ● 「やるぞ!!」 という気持ちを(特に以下の方々 に)持ち帰ってもらう ○ サービスをこれから作る/作っていて、ローンチ を目指している人 ○ 久々に個人開発したいけれど、作る勢いがま だつかない人
Slide 80
Slide 80 text
(ポッドキャストでの )いつもの言葉
Slide 81
Slide 81 text
もし面白いと思ったら、 チャンネル登録・高評価 よろしくお願いします
Slide 82
Slide 82 text
ありがとうございました