id:Songmu です。この記事は株式会社ヘンリー Advent Calendar 2024 5日目の記事です。
ヘンリーは北海道から沖縄まで、何なら上海から働いている社員さえいるフルリモートの会社です。フルリモート環境においては特に、社員の相互理解、そのためのそれぞれの自己開示が大事です。リモートに限らず、一部の人の声が大きくなりすぎて多様性が損なわれないよう、メンバーに自己開示を促し、支援することも必要です。
ヘンリーではその促進のために、Notion上に自己紹介やユーザーマニュアル、社内ブログ等を書いてもらう取り組みをしています。それに加えて Henry FMという社内ラジオがあり、広報メンバーを中心とした有志のギルドで運営されています。社員へのインタビューや雑談の録音を元に、30分程度の音声コンテンツが週に2本程度更新されています。これもNotion上で社内公開されており、Notion上で音声公開されています。
ポッドキャスト化の道のり
Notionに音声ファイルをアップロードするとHTMLのaudio要素として埋め込まれ、ブラウザのプレイヤー上で再生できます。ブラウザにもよりますが最大倍速再生できるのでそれなりに便利です。ただ、業務端末だったりスマートフォンでNotionを開いたままにしておく必要があるため、隙間時間で聞くには不便です。
普段から隙間時間でポッドキャストで多くの番組を聞いている私個人としては、同様に隙間時間で使い慣れたポッドキャストクライアントで聞きたいと思い、ポッドキャスト化することにしました。
プライベートコンテンツをポッドキャスト化する難しさ
ポッドキャストは、配信サービスを利用せずとも、独自のホスティング環境で始めることはそれほど難しくありません。ポッドキャストは単にブログで使われているRSSが拡張されたオープンな規格です。その反面、インターネットで公開されたオープンコンテンツを前提とした規格であるため、プライベートコンテンツを配信するには向いていません。RSSは音声ファイルのURLに認証をかけてしまうと、使い慣れたポッドキャストクライアントで聞けなくなってしまいます。
プライベートポッドキャストの現実解
今回は現実解として推測が困難なURLで配信することとしました。Basic認証をかけ、それに加えて多層的に防御することとした。完璧にはできませんが、コンテンツも最悪漏洩しても良い情報に限り、機密情報を扱わないようにすれば許容できます。
具体的には以下のような対応をしました。
- サイトコンテンツ (ポッドキャストサイト及びRSSフィード)
- 推測しづらいURLにする
- Basic認証をかける
- robots.txtやHTTPヘッダ、メタタグで不要なクローリングやインデックス登録を防ぐ
- HTTPヘッダやメタタグでリファラを送らないように
- 音声ファイル
- 推測しづらいURLにする
- robots.txtは置く
- 認証はかけずURL直打ちでアクセスできてしまうことは許容する
- RSSフィード
<itunes:block>yes</itunes:block>
要素を指定する
Basic認証を使うことにしたのは、ポッドキャストサイトはシンプルな静的サイトとして構築して、ホスティングサービスで配信しつつ、それにBasic認証をかぶせる方式が手軽だと考えたからです。Basic認証であれば、社員ごとに個別に認証情報を追加で発行することも容易です。
iPhone標準のポッドキャストアプリや、私が利用しているOvercastはBasic認証に対応しており、問題なくポッドキャストを購読できます。
この辺りの技術的な詳細は私の個人ブログの以下の記事に解説を譲ります。
Cloudflare Pagesで配信する
ポッドキャストサイトを配信する静的ホスティングサービスにはCloudflare Pagesを利用しています。最近のホスティングサービスはもはやBasic認証に対応しているものは少ないのですが、Cloudflare Pages Functionsを使うことでBasic認証のミドルウェアレイヤを追加できること、音声ファイルの配信にオブジェクトストレージのCloudflare R2を利用できる点、非常に廉価にお手軽に始められる点などが魅力的で選定に至りました。
Cloudflare PageでのBasic認証のかけ方はこれもまた私の個人ブログの以下の記事を参考にして下さい。
Cloudflare PagesにそれなりにちゃんとBasic認証をかける
ポッドキャストサイトを構築するPodbard
ポッドキャストサイト構築は何でもよいのですが、今回は個人の趣味活動もかねてOSSでPodbardと言うソフトウェアを開発して公開し、これを利用しています。
https://github.com/Songmu/podbard
GitHub上でコンテンツを管理し、GitHub Actions上でpodbardを動かしてサイトをビルドし、それをCloudflare PagesとR2にdeployするワークフローを組んでいます。詳細は省きますが、これもテンプレートリポジトリを公開しているため、興味があれば参考にしてみて下さい。
- https://github.com/Songmu/podbard-starter
- GitHub Pages上での公開ポッドキャスト用
- https://github.com/Songmu/podbard-cloudflare-starter
- Cloudflare Pages上での公開ポッドキャスト用
- https://github.com/Songmu/podbard-private-podcast-starter
- Cloudflare Pages上でのプライベートポッドキャスト用
プライベートポッドキャスト用のテンプレートリポジトリは、本エントリで記述したプライベート化するための手法が一通り組み込まれており、すぐにポッドキャストを始められます。興味がある企業があれば是非利用してみて下さい。
まとめ
実際にポッドッキャスト化された社内ラジオを私が使っているポッドキャストクライアントのOvercastでは以下のように見られます。
OvercastはBasic認証がかかったポッドキャストに鍵マークを付けてくれる点が他のクライアントにあまりない機能で、そういった細やかさ含めて気に入っています。
ちなみに、AndroidにはどうもBasic認証に対応した有力なポッドキャストクライアントを見つけられていないので、情報をお持ちの方は教えて下さると嬉しいです。
また、Androidでメジャーなポッドキャストクライアントである、Pocket CastsはGitHub上でソースコードが公開されているため、こちらにBasic認証対応のpull requestを送っても良いかも知れないと考えています。ヘンリーはServer-side Kotlinの会社でもあるので。