ポッドキャストは作れる!
吉祥寺.pm 37
Jan 30th, 2025
Profile
Profile
- id: Songmu (ソンムー)
- ♥
- OSS
- Blog / Twitter
- Agile
- Full Cycle Development
ヘンリーから来ました
- 電子カルテ・レセコンを中心とした病院向け業務システム開発
- 病院向け電カル・レセコンをクラウドネイティブで提供しているのは日本ではヘンリーだけ
代表的なOSS
- ghq (メンテナ)
- ecschedule
- tagpr
- gocredits
- prompter
- etc.
ポッドキャストはブログの拡張技術
- 静的サイトで実現できる
- オープンで枯れた技術
- "Podcasting Hacks" 2005年出版
- RSSを使って更新を通知
- RSSの
enclosure
要素のurl
属性に音声ファイルのURLを指定
- RSSを吐いていないのにポッドキャストを名乗るのは許せない
- 好きなポッドキャストクライアントで自由に聞ける
RSSサンプル
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd">
<channel>
<title>Podcast Title</title>
<link>https://example.com</link>
<language>en-us</language>
<description>This is a sample podcast description.</description>
<item>
<title>Episode 1 Title</title>
<description>This is a description of episode 1.</description>
<link>https://example.com/episode1</link>
<guid>https://example.com/episode1</guid>
<pubDate>Mon, 01 Jan 2024 00:00:00 GMT</pubDate>
<enclosure url="https://example.com/episode1.mp3" length="12345678" type="audio/mpeg"/>
</item>
</channel>
</rss>
Indie Web
https://indieweb.org/
私たちは、以下の原則に基づく独立した個人ウェブサイトのコミュニティです。
- ドメインを所有し、それをオンライン上の主要なアイデンティティとして使用すること
- まず自分のサイトで公開し(必要に応じて他の場所でも公開すること)
- コンテンツを所有すること
Indie Web Principles
https://indieweb.org/principles
- ✊ Own your data
- 🔍 Use & publish visible data
- 💪 Make what you need
- 😋 Use what you make!
- 📓 Document
- 💞 Open source
- 📐 UX and design is more important
- 🌐 Modularity
- 🗿 Longevity
- ✨ Pluralism
- 🎉 Above all, Have fun
ポッドキャストとIndie Web
- ポッドキャストは極めてIndie Web的な技術でもある
- ブログ同様に専用サイトを使わず、自作して自分のサイトで公開できる
私のこだわり
- 自分のコンテンツを自分で管理して公開したい
- 自分のメインブログもそう
- このスライドツールもそう
Podbard
- Go製の静的ポッドキャストサイトジェネレーター
- カスタムGitHub Actionsも提供
ディレクトリ構成
- podbard.yaml
- index.md
- episode/
- エピソードのMarkdownファイル格納ディレクトリ
- audio/
- template/
- Goのhtml/template形式のテンプレートファイル格納ディレクトリ
- static/
サンプルエピソードMarkdown
---
audio: 21.mp3
title: "21: スト6にハマれ! (yui_tang)"
date: 2025-01-30
subtitle: 引き続きyui_tangさんをゲストに迎え、ストリートファイター6の話をしました
chapters:
- 0:00 ストリートファイター6デビュー
- 22:40 スト6開発陣のすごさ
- 28:25 ストリートファイターリーグ
- 36:45 ゲームにのめり込むこと
---
## ストリートファイター6デビュー
- [nasne](https://www.buffalo.jp/nasne/)
- [ファイティングコマンダーOCTA](https://hori.jp/products/p5/fc_octa/)
## スト6開発陣のすごさ
- [盲目の格闘ゲームプレイヤー「BlindWarriorSven」がEVO2023『スト6』のプール予選で勝利し会場大盛り上がり。サウンドアクセシビリティ機能を利用しエドモンド本田が対空とコンボを華麗に決める](https://news.denfaminicogamer.jp/news/230805a)
## ストリートファイターリーグ
- [ストリートファイターリーグ](https://sf.esports.capcom.com/sfl/)
## ゲームにのめり込むこと
Podbardはもう少しシンプルにするつもりだったが
- RSSを吐くだけでサイト構築部分は最小限にするつもりだった
- 結果的にかなり類似点も多くなった
- Markdownのfrontmatterにエピソード情報を記述する部分など
Podbardのおすすめポイント
- リポジトリをforkするのではなく、テンプレートリポジトリを用意
- GitHub PagesだけではなくCloudflare用のテンプレートリポジトリを用意
- カスタムGithub Actionsによりデプロイ自動化が容易
- 手元のコンテンツ管理も
podbard
コマンドで色々できる
- 音声にチャプターを付けられる
- デフォルトテンプレートやRSSの内のタグ(要素)がモダンになっている
- 後発の強み
- ただしテンプレートはGoのhtml/templateなのでerbの方が好きな人も多いかも…
Podbard是非ご利用ください
"Use this template" ボタンからスタート!
実践編
趣味でOSSをやっている者だ #oss4fun
趣味でOSSをやっている者だ #oss4fun
- 毎週木曜更新 (今のところ)
- 豪華ゲストと楽しくおしゃべりしています
- 継続のため、省力運営
- これもアイコン画像はImageFXで生成
https://oss4.fun/
始めた動機
- 元々は社内ラジオをクローズドな社内ポッドキャストにしたかったこともありPodbardを作り始めた
- 詳細は下記の記事を参照
- Podbardが良い物になったので、ドッグフーディングも兼ねて自分のポッドキャストも開設
番組名の由来
- ワンパンマンの「趣味でヒーローをやっている者だ」オマージュ
- この台詞の英訳が "Someone who's a hero for fun."
One-Punch Man, Vol. 1 (English Edition) 位置No. 19/203)
Just for Fun: The Story of an Accidental Revolutionary
邦題: それがぼくには楽しかったから 全世界を巻き込んだリナックス革命の真実
11. 🎉 Above all, Have fun
Indie Web原則の最後。"fun" 大事。
- oss4.fun ドメインを取得
- ハッシュタグ: #oss4fun
- funドメインお値打ちです
アーキテクチャー
- 静的ファイル: Cloudflare Pages
- 音声ファイル: Cloudflare R2
- 音声ファイルのサイズが比較的大きいのでオブジェクトストレージを使えるのは嬉しい
- この構成だと、生のアクセスログを保存ができないのが難点
- Workerを咬ましてログを取る様にすること等も検討中
- お金がかかってしまうかもしれないが
- 今のところ無料でいけているし、実際にお金がかかるレベルに到達するのはかなり難しい
リポジトリ公開中
https://github.com/Songmu/oss4.fun
- PodbardのLive Showcase的な意味合いもある
- (一応)ネタバレ防止のために
oss4.fun-private
というプライベートリポジトリで作業しています
- 自動で同期するようにしています
- その辺りの仕組みもリポジトリを見てもらえれば分かります
自動化
- pull requestに "auto-merge" ラベルを付けておくと、GitHub Actionsがマージしてくれる
- ワークフローをscheduleトリガーで週次実行 (毎週木曜11時)
- mainブランチにマージされると、Cloudflareにデプロイされる
サイトデザイン
ChatGPTにサイトのHTMLを食わせ、「vimのmolokaiカラースキームっぽくなるようにCSSを生成して」と伝えてベースを生成してから調整した。便利。
ポッドキャスト登録
自前配信でもRSSのURLを指定して各種ポッドキャストサービスに登録できる。
- 登録サービス
- Apple Podcast
- Spotify
- Amazon Music
- LISTEN
- この辺りを丁寧にやったのは結構リスナー獲得に利いた気がする
- 世の中的にSpotifyでポッドキャスト聞いている人が多い
- Spotifyのサイト上で詳細な分析が見られるのも便利
収録環境
良く言われることを気にしすぎない程度に。
- USB コンデンサマイク + ヘッドフォン
- 静かな部屋
音声収録 (Riverside)
https://riverside.fm
- Multi-track recording対応
- リモート収録で話者ごとに音声ファイルを録音してくれる
- 収録時にそれぞれがローカルで別に録音する方法もあるが手間もかかるし事故るリスクもある
- 有料なので、安く済ませたい場合はCraigというサービスもある
音声編集 (Auphonic)
https://auphonic.com
- 音声の後処理を自動的にやってくれる
- ノイズ、エコー、呼吸音削除
- 声の大きさのレベル調整と正規化
- 長い空白のカット
- etc. (他にも色々機能がある)
- Multi-trackの後処理は有料
rebuildやOssan.fmなどでも使われている。
手動編集は基本していない
- 手動である程度編集をしてからAuphonicにかけるのが一般的
- 私は録り終わった音源をそのままAuphonicにかけている
- どうしても編集が必要な場合はAudacityを使う
音声確認とチャプター付け
- 一応倍速で聞いて音声確認している
- 聞きながらチャプター付けと公開用show noteを書いている
- 最近、文字起こしサービスのNottaを導入した
- とにかく楽をしていくスタイル
全体像
展望
- Auphonicをさらに活用した自動化
- アクセスログ取得と解析
- 投げ銭機能
宣伝2
OSS活動を支援してくれると嬉しいです。
- GitHub Sponsor
- ghq handbook