<> ブログサイトの再構築 | PhoenixKnight

ブログサイトの再構築

Drupalバージョン

背景

現在使用しているブログサイトは2つあります。

1つ目がmixiですが、ここは日常の記事を書く用途で利用しています。
ほとんど更新はしていませんが・・・・

2つ目がplayncブログです。ここは、Lineage2の攻城戦や領地戦の動画を公開する用途で利用しています。
更新は、攻城戦、領地戦に参加したら~といった感じですので、隔週になります。

今、考えているのが2つ目の用途のサイトについてです。

現状がどんな感じなのかは、こちらをご覧ください。
このサイトは、PlayNCアカウントを登録すれば無料で利用できます。
アップロードに関するおおよその仕様は、以下になります。

  • 使用可能ディスク容量1GB
  • アップロード可能ファイルサイズ 3MB(※1)
  • アップロード可能ファイル形式 すべての形式(※2)
     

※1:1記事あたりです。FAQなどには2MBととありますが記憶では3MBです。
※2:動画は、MP4形式、MOV形式、WMV形式、3GP形式です。実際は、MP4形式は利用できません。

このブログの仕様については公式サイトにまとめられておらず、FAQベースで調査するしかありません。
しかし、明確でなければならない情報、正しい情報などがきちんと整理されておらず、情報が散逸しており、利用者からするば何ができるのかを知りたくても、それはどこに書かれているんだ!で、どっちが正しいのだ!と常に悩まされることでしょう。
またわからないことや正しい情報を知りたくて問い合わせしても、回答に期待はできません。
上記、※印の箇所はずいぶん(数年くらい)前に問い合わせをし、FAQの記載内容を修正すると回答をいただいた点でありますが、いまだそのままです。

playncブログを利用する場合は、かなり限られたユーザになると思います。
数枚の画像を添付する程度の記事を投稿する場合、他の動画共有サイトへアップロードした動画をEmbedする場合、ゲーム内のユーザとのコミュニケーションを優先する場合、かつplayncだからサポートが悪いのは仕方ないと割り切れる場合です。
これから使うの人には決してお勧めできません。

記事のバックアップもできませんし、エクスポートもできませんのでその点も注意してください。
おまけのサービス程度のものと考え、使えたらラッキーと割りきりができる人限定になると思います。

さて、playncブログで動画をアップロードし公開することを考えると、動画ファイル自体は2世代くらい前の携帯電話向け動画ファイル程度のものになってしまうでしょう。
これでは、今の時代に見てもらえるような動画を公開できません。
そのため、playncブログは自分のサイトへの誘導目的のリンクを記載するか、他の動画共有サイトにアップロードした動画をembedする利用方法に限られてきますので、別途動画をアップロードするサイトが必要になります。

私の場合は、動画のアップロード先として、stage6⇒zoome⇒レンタルサーバという経緯で利用してきました。
アップロード先にレンタルサーバを利用することで、仕様変更の激しい動画共有サイトの制限やその他影響を受けなくなり、ディスクスペースを気にする程度で、長期利用が可能な環境が整いました。

動画の作成作業自体は、エンコードをバッチで処理するなどしてシステムチックにしたので、一応満足のできるレベルに達しました。しかし、動画作成後から公開までの作業については、上記playncブログでの作業やレンタルサーバへのアップロード作業などで、できるだけの工夫はしたものの、まだまだ満足のできるレベルではありません。

当初は、動画を公開するたびにplayncブログの記事を新規投稿し、レンタルサーバに設置したFlash Media Playerと動画ファイルおよびサムネイル画像をobjectタグを使って埋め込んでいましたが、記事の投稿に時間がかかりすぎタイムアウト機能により記事すべてが保存されず消えてしまったり、playncブログのメンテナンス中は記事が書けなかったり、貼り付けるembed記述のテンプレートをローカルPCで管理しなくてはいけなかったり、多くの不便さがありました。
動画はブログメニューでプレイリストを利用して埋め込むことで、動画と記事本文を分離できさせ、もどかしいplayncブログ側の記事作成作業は基本的にテキストを入力するだけで済ませることが可能になり、またobjectタグ内の記述が自動変更されてしまう事象をも回避できました。
ただし、この場合、レンタルサーバ側には、動画ファイルとサムネイル画像以外にプレイリストに使用するXMLファイルをアップロードする手間が増えましたが、このXMLファイルの更新作業は、1度作成してしまえば定型箇所をコピー&ペーストして追加し、タイトルおよび動画と画像のファイル名を修正するだけの簡単な作業ですみます。
記事を書かないのであればplayncブログ側には一切手を加える必要なく、playncブログがメンテナンス中であってもそれが終われば新しい動画にアクセスできます。

しかし、記事を記載する場合は従来どおりplayncブログへのアクセスが必要になります。
playncブログで採用されているWYSIWYGエディタは決して使い易いとはいえません。
特に引用や表を使う場合、textereaやcodeタグ、tableタグなどが期待通りの結果で表示されませんので、記述を工夫しなければならず別のエディタで下書きしたものを本文に貼り付けるといった手間があります。
また、レンタルサーバ側の作業にしても、アップロードするサムネイル画像を事前に作成しておかなければならないのですが、この作業をよく忘れてしまいます。
このプレイリスト用のXMLファイル更新作業については、定型文ですのでスクリプトで自動作成できないわけではありません。

目的

そこで、今回、動画作成から公開までの作業をシステムチックにすることを目的に、記事および動画アップロード先をレンタルサーバへ集約することにしました。

内訳

1.動画の再生は、個別記事とプレイリストの両方から可能
2.記事に動画プレイヤーを埋め込むコードを自動生成
3.動画ファイルをアップロードする際、自動で以下を実行
・サムネイル画像の生成
・プレイリストの更新
4.使いやすいWYSIWYGエディタの利用

方針
世界的に人気のあるCMSのDrupal環境を利用することにしました。
レンタルサーバには、さくらインターネットのサービスを利用しているためAMP(Apache、MySQL、PHP)環境がありますので、構築が簡単そうだったのと、Drupalの拡張モジュールが豊富なのが理由です。
あとDrupalは、プログラム開発者でなくても簡単にサイト構築ができるのがメリットです。

進捗
Drupalのコアモジュールの導入は、数分でできました。
ただし、目的とする事項を実現するためのモジュール探しで苦労しています。
理由としては、
1.ドキュメントがバージョン6用に記載されたものが少ない。もちろん英語であることも理由の1つです。
2.Views2やCCK2に関連して、バージョン6ではすべての機能が実装されていないもしくは、動作確認がされていない。
3.Media関連のモジュールは、開発途中のものがほとんどで、進化中であり安定版といえるモジュールが少ない。
3.バージョン6での使用実績が少ないためか、情報が入手しにくい。

どの拡張モジュールも現状どこまでの機能が正常に利用できるのかがはっきりしませんでしたので、実際に導入して動作確認をすることになります。もしうまく動かない場合は、現状仕方ないことなのか、設定にミスにあるのかの切り分けが非常に困難です。
リリース情報、FAQ、パッチ情報やCVSのページを参照すればだいたいのことは把握できますが、隅々まで目を通さなければならないため、この作業がかなりの手間となります。

今現在、注目しているもしくは動作確認を行ったモジュールについて、簡単にまとめておきます。

1.FLV Media Playerモジュール
JW FLV Media Player用wrapper モジュールです。別途JW FLV Media Player本体とswfobject_apiモジュールおよびswfobject JavaScript libraryが必要です。
動画といっしょにカスタムサムネイル画像のアップロードを行えば、サムネイル画像付きでプレイヤを埋め込めます。
アップロードは、コアのUploadとCCK Filefieldに対応しています。
短所:コード生成に使用される動画とサムネイル画像のURLは、アップロードファイル選択とは別に手入力する必要があります。
長所:JW FLV Media Player個別の詳細設定が記事ごとに可能です。

2.FileField + JQuery Mediaモジュール
JQueryのプラグインを利用します。対応しているプレイヤーは、こちらもJW FLV Media Playerになります。
ただし、オフィシャルリリース版では、mp4ファイルはQuickTime Playerになってしまいます。CVSページにある最新版に各ファイル一式を置き換えれば、JW FLV Media Playerになります。
短所:生成するコードでサムネイル画像を利用できません。
長所:もっともシンプルな構成です。
ビデオチュートリアル:Filefield + jQuery Media Screencast

3.SWF Toolsモジュール
swfobject javascriptを使用してプレイヤのコントロールが可能です。プレイヤは、JW FLV Media PlayerやFlowPlayerに対応しています。音楽プレイヤやビデオ用プレイヤにどのプレイヤを使うかを設定できますが、サムネイル画像の付け方がわかりませんでした。FlashVarsを設定できるので、何とかできるかもしれません。
短所:ファイルパスのカスタム設定が反映される箇所とそうでない箇所があるため、結局デフォルトでしか使えません。ドキュメントが読みづらいと思いました。シングルプレイヤで自動再生が固定で設定変更できません。
長所:プレイヤの詳細設定が可能です。
ビデオチュートリアル:SWF Tools

4.Embedded Media Fieldモジュール
すでに動画共有サイトなどにアップロードした動画のURLからembedタグを生成するモジュールです。いくつかのサイト用の設定が存在します。ローカルディスクの場合は、カスタムURLを選択します。追加したfiledには、動画ファイルのURLを入力して使用します。使用するプレイヤは、SWFファイルを指定できるのでどれでも使えそうです。
    Embedded Media Fieldのみでは何もできませんので、同梱されているEmbedded Video FieldとEmbedded Media Thumbnailを有効にすれば、 動画ファイルのURL入力とカスタムサムネイル画像のアップロードが可能になります。これによりサムネイル画像付きのコードが生成できます。
短所:別途動画ファイルをアップロードする必要があります。
長所:他サイトの動画を自サイトのページに貼り付ける用途では優秀だと思います。
ビデオチュートリアル:Build A Video Gallery

5.FlashVideo+Dash Media Playerモジュール
    アップロードした動画ファイルをFFMPEGで変換し、コードを生成します。サムネイル画像もFFMPEGで生成可能です。UploadモジュールとFileFieldの両方に対応しています。FlashVideo自体は、Dash Media PlayerとJW FLV Media Playerに対応しています。基本的に他のSWFプレイヤでも可能だと思います。Dash Media Playerモジュール以外にプレイヤ本体が必要になります。このプレイヤでダイナミックplaylistやリモートplaylistを使用するためには、AMFPHP(別途AMFPHP本体が必要)とServicesが必要になります。
FlashVideoのオフィシャルリリース版では、db_prefixを使用している場合にエラーになるのと、オリジナルビデオファイル名が変換後のビデオファイル名に変わってしまいます。前者は、CVSにある最新版に各ファイルを置き換えれば直りますが、後者は仕様なのかどうかが不明です。一つ前のオフィシャルリリース版では、問題なかった箇所ですので、新しい機能が不要であればRC2のほうを使えば回避できますが、その場合は変換後のファイルはflvのみの対応です。
Dash Media Playerのほうは、シングルプレイ、XMLファイルのプレイリスト再生ともに動作確認ができましたが、AMFPHPを経由する機能ではエラーが発生し、動作しませんでした。この機能が使えないならわざわざDash Media Playerを使う理由もなさそうです。
すべての機能が正常に動作すればこの組み合わせが一番私の要件に一致するだけに残念です。
ドキュメントがバージョン5での動作をもとに書かれており情報も更新されていないようで、正常動作するそれぞれのバージョンの組み合わせが不明です。
短所:FFMPEGの変換処理をスルーできません。ファイルの保存先がfiles以下になります。オリジナルファイルを削除する設定にするとFileField使用時にはエラーになります。変換後のファイル名に2桁の数字が付与されます。
長所:動画ファイルのアップロードで、自動的にサムネイル画像の生成とサムネイル画像付きコードの生成まで可能。
    ビデオチュートリアル:Using FlashVideo for User-Contributed VideoDash Player DocumentationにあるPlaylist内
  補足:FFMPEGの処理をスルーできませんが、オプション指定が可能なのでcopyに設定すれば画質を劣化させることはありません。また変換するタイミングは、cronでの実行と投稿と同時に処理する2つのモードを選択できます。

6.XSPF Playlistモジュール
   
このモジュールは、名前の通りJW FLV Media Playerで使用可能なプレイリストフォーマット形式の1つであるXSPF形式でプレイリストを生成するものです。embedコード生成は、SWF ToolsやFLV Media Playerを使用することになります。まだViews2に対応できていないようで、全く機能していない感じです。予定では6月にビデオチュートリアルが公開されるはずだったのですが、まだのようです。
短所:Drupal6でテストされていません。開発がとまっているように思います。
長所:Viewsを使ってプレイリストの生成をするので、便利なはずです。
ビデオチュートリアル:なし

このほか、All In Oneタイプと思われるVideo、Media、Media Mover、Kalturaなどありますが、バージョン6ではまだまだ使えるというレベルではなさそうですし、不要な機能も多そうなので今回は除外しました。

所感
まだまだPlaylistの自動作成まで動作するモジュールはありませんが、プレイリスト生成部に関しては、ビデオチュートリアル:Build A Video Galleryにあるように、別途Views2を利用してギャラリーページを作成することで対応しようかと思います。
別の方法としては、JW FLV Media Playerのフォーラムに記載されていたあるディレクトリに存在する動画ファイルのXMLリストを生成するPHPコードをサムネイル画像も付与するように改造したプログラムを利用して作成する案と、さらにこのプログラムを改造して、DBにアクセスしてノード情報を取得し、タイトル、動画ファイル名、サムネイル画像名を抽出するようにすることも検討しています。
とりあえず、記事投稿(ファイルアップロード)でサムネイル画像付きembedコードを自動生成してくれるモジュールのなかで、使えそうなのはFlashVideoかなと思っていますが、RC2以降で行われた修正で、記事削除時におけるファイル削除を確実にできるようにした影響なのか、内部のOriginal_VideoとFinished_Videoの変数がおかしいもしくは、Thubmnailがある場合の条件判定部分がおかしいようような気がします。その他、細かいところも気になるので正直迷っています。