Calendarを書くにあたって、慌てて放置ぎみだったサイトのSSL化を行いました。SSL化というか、MovableType.netに移行しました。テンプレートをタグで振り分けてたのでちょっと苦労しました。.netでタグがないので。昨年、MT7でポッドキャストの汎用的なテーマを作成中という記事を書いたのですが、なんだかんだ時間がかかって、しかも反応もあまりなく挫けてしまいまして、完成してません。代わりに、自分のポッドキャストのリニューアルに使ってしまったので、今回はその話です。自前のCMSでのポッドキャスト配信ポッドキャストを配信するには、ホスティングサービスもあるのですが、自前でサーバー立ててポッドキャストを配信しようと思うと、ほとんどWordPressの情報が出てきます。PowerPressとかのプラグインを使うのが多いのかな。TypeでエムロジックさんのEasyPodcastingプラグインと、サイトがなくなってしまいましたが、mt-enclosureプラグインというものを組み合わせて作っていました。PowerPressの設定などを見たりはしてるんですが、分かりづらい。それに、そもそもWordPressが苦手。Type、MT6から7にバージョンアップしつつ、ポッドキャスト用に組んでいきました。今回はプラグインは使わずに作っていきます。以前は、ブログ記事とポッドキャストと一緒になってごちゃっとしてたので、ブログ記事は記事にして、ポッドキャストはコンテンツタイプで作りましょうと。ポッドキャストのRSSをコンテンツタイプで吐き出すポッドキャストの要件としては、ポッドキャスト用のRSSを出力することです。AppleのポッドキャストのRSSガイドやフィードサンプル、GoogleのRSSフィードの要件などを参照してRSSを吐き出します。ちなみにAppleのフィードサンプルではうまく表示されないアプリもあるので、実機検証も大事です。フィードには、ポッドキャスト全体の情報と、エピソード毎の情報が必要で、そのほかにサイトでの表示の仕方などもコンテンツタイプで作ろうかと。Typeはつくづく、静的ファイルジェネレーターとして使いやすいなと。ポッドキャスト用のRSS、ブログ用のRSS、それぞれのインデックスページ、それぞれの検索用のJSONなど、好きにファイル作れます。ポッドキャストはRSSが吐き出され、音声ファイルが置いてあればそれで配信ができるので、プラグインなど不要です。実際のテンプレートと、工夫した点などを紹介します。単純にRSSに記述したい内容をコンテンツタイプで作っていきます。RSSの仕様に沿ってコンテンツフィールドを用意。カテゴリに沿うため、カテゴリセットを用意しました。カテゴリセット、夏ぐらいにAppleが変更したので、それに合わせて修正もしました。カテゴリ、110とかありました。自分用なら決め打ちで良かったんですが、昨年作っちゃったんで、流用。その他の情報も用意します。ポッドキャストを引っ越したときや終了したときのチェックも、自分用だけなら不要ですが、一応用意してしまってます。これらを元にRSSを作成。RSSに合わせてコンテンツフィールドの内容を呼びだずだけですが、カテゴリのところはちょっと工夫が必要。カテゴリフィールドのカテゴリにセットした、CategoryBasenameを呼び出しますが、このCategoryBasenameに半角空白を含めることができません。Appleのカテゴリには半角空白と&が入ったものがある。その部分はアンダースコアにしておいて、Replaceしています。mt:HasParentCategoryなどで分岐したりもしています。Appleの仕様では、カテゴリは複数設定できますが、認識するのは最初のカテゴリとサブカテゴリのみ。そこをどうしようかと思いましたが、カテゴリセットで選んだカテゴリは、プライマリに選んだカテゴリが最初に表示されるので、ちょうど良かったです。このように出力されます。番組全体の次は、エピソード毎の情報。これもRSSの仕様に沿ってコンテンツフィールドを作ります。RSSの仕様以外に追加した項目もあります。Jamendoプレイリストとか、YouTubeリンク、タイムラインなどは自分仕様です。このように自由にできる点が、1からテンプレートを作っていくメリットです。「ゲスト」というコンテンツタイプを呼び出すようにしています。これは、ゲストを別のコンテンツタイプで管理するように指定、ゲストが複数回登場した場合も、1個情報変更したら全てに反映できるようにしています。エピソード情報も、番組情報と同様に入力しますが、番組情報は基本最初だけ。エピソード情報は更新の際に追加していきます。MP3のアップロードやその他情報を入力できます。下の方にある「タイムライン」の項目。これは、表示側で再生中の時間の部分にスキップするリンクなのですが、ここの入力方法が一番悩んだかもしれません。最終的には、テーブルを入力するコンテンツフィールドを用意しました。列は自由に増減できるようにしてます。入力内容を強引に表示用に変換しています。スマートじゃないけど、なんとか。時間の部分のセルを選択してthにしないといけないですが。スマートな方法はあるかもしれません。encode_xml="1"></mt:ContentField><p><mt:ContentPermalink></p>ちょっと困ったのが「テキスト(複数行)」にした部分、フォーマットを「Markdown」にしても反映するものと、しないものがあること。複数回は使えないんだろうか。なんかのバグだろうか。問い合わせる時間もなかったので、HTMLをベタ打ちにしています。ここは、このままでは汎用的にできないなと。1つ、今回はポッドキャストのアクセス解析ができるChartableというサービスを利用しています。Chartableで解析するためには、RSSで音声ファイルへのリンクにprefixをつける必要があリます。PowerPressなどは対応していないようです。この中では「Self-hosted」にあたリます。下記のように音声ファイルのURLを出力する部分にprefixをつけるようにしました。Typeならではですが、1つのコンテンツタイプから2つのHTMLファイルを生成できます。Twitterカード用にもう1つページを作成しています。単純に再生プレイヤーだけのページを作ってます。その上で、Twitterカードの情報を「エピソード」テンプレートのmetaタグに記載します。/>Twitterで個別ページのリンクを貼ると、上記のTwitterカードの情報を読み取って、プレイヤーが埋め込まれます。Typeで作ったシンプルな再生プレイヤーだけのページがTwitter上で表示されます。Typeのコンテンツタイプを使って、出力する内容に合わせてかなり思い通りに構築していくことができました。ホスティングサービスなどではカスタマイズしきれない部分にも手を出せます。改良の余地はありますが、かなり満足できるものになってます。Typeは向いているなと実感しています。Productionは、名古屋を拠点にWebサイトや電子書籍の戦略・企画から制作・運用までをトータルにサポートするWeb制作プロダクションです。reserverd.。