Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

PHPとMingで作るFlashサーバー

SWFムービーを作成するWebサーバーを無償ツールだけで構築する

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/11/27 00:00

本稿では、Flash Playerで再生可能なSWFフォーマットのデータを、PHP言語を使って実行時に動的に生成する方法を解説します。PHPからSWFフォーマットのデータを出力することによって、Webサーバーにアクセスしてきたユーザーの要求に従って動的に変化するFlashを返すことができます。

目次

はじめに

 本稿では、近年Webアプリケーション開発などで広く実用されているPHP言語を使って、Flashプレイヤーで再生できるSWFフォーマットのデータを動的に生成する方法を解説します。PHP 4.0.5以降には、SWFフォーマットのムービーを作成するMingと呼ばれるオープンソースライブラリ(LGPL)が導入されています。PHP言語からMingの機能を利用することで、SWFフォーマットのファイルを生成したり、Flashムービーを動的に生成するWebアプリケーションを開発できます。

 一般的なFlashムービーの生成方法では、Adobe社のFlash Professionalを代表とする作成ツールを使ってSWFファイルを出力します。何らかのコンテンツを事前に作成し、それをWebなどにアップロードするならばこの方法で十分です。しかし、ユーザーの要求に従ってアプリケーションが動的にFlashムービーを生成したい場合は、当然この方法は使えません。プログラムのロジックでアプリケーション実行時にFlashムービーを生成しなければなりません。

 PHPとMingを使うことにより、PHPで開発したアプリケーションから動的にSWFフォーマットのFlashムービーを生成できます。Mingライブラリは、SWFフォーマットの内部を隠蔽し、オブジェクトを組み合わせることでFlashムービーを構築できます。Mingライブラリは現在も開発が続けられているオープンソースのプロジェクトなので、最新の情報はMingの公式サイトで確認してください。

 また、MingライブラリはPHPからだけではなく、C/C++、Perl、Python、Rubyからも利用できます。Mingのソースコードやライブラリのインストールなどについても、公式サイトを参照してください。最新のPHPのWindows向けマニュアルインストール用パッケージには、既定でMingライブラリを含む拡張モジュールが含まれています。

サーバー構成

 本稿のサンプルコードの実行は、以下の構成でテストしています。一部のサンプルは、Apacheで公開するWebアプリケーションとして動作させなければなりません。ただし、Mingを使ってディスク上にSWFファイルを生成するだけのサンプルは、PHPを直接実行する形でも結果を得ることができます。

  • Microsoft Windows XP Professional Version 2002 Service Pack 2
  • Apache 2.0.59
  • PHP Version 4.4.4
  • Ming 0.3 beta1

 Apache を入手してインストールするには、以下のApache HTTP Server Projectを参照してください。

 PHPは、以下の公式サイトからダウンロードすることができます。インストール方法や Apacheの設定方法などもマニュアルに記載されています。

 Apache、およびPHPのバージョンは、完全に一致させる必要はないでしょう。PHP4以降のバージョンで、Mingが正しくインストールされていれば、おそらく上記のバージョン以外でも動作するはずです。また、Web サーバーに関しては、PHPを実行できる環境であれば Apacheである必要もありません。しかし、本稿での動作確認は上記の構成で行っているため、他のバージョンでの動作は保証できません。

 また、生成したSWFファイルの再生にはFlash Playerが必要です。最新のFlash Playerは、以下のAdobe社のページからインストールできます。本稿で生成したSWFファイルはFlash Player 6で再生できることを確認しているので、Flash Player 6以降のバージョンがインストールされているブラウザなどで再生できます。

SWFファイルの生成

 Mingには、いくつかの定義済みクラスが提供されています。私たち開発者は、Mingが提供するいくつかのクラスのオブジェクトを生成し、SWFムービーを表すオブジェクトを正しく構築することで、SWFファイルを作成できます。

 SWFファイルは、ディスクに保存することも、Webサーバーからブラウザに返すことも可能です。どちらにしても、最初にやるべきことはSWFムービーそのものを表すSWFMovieクラスのオブジェクトを作成することです。SWFMovieオブジェクトは、SWFフォーマットのデータそのものを表します。すなわち、1つのSWFMovieインスタンスが、1つのSWFフォーマットのファイルに対応しています。

 SWFMovieオブジェクトを生成するにはswfMovie()コンストラクタを呼び出します(注1)。

swfMovie()コンストラクタ
SWFMovie swfmovie ( void )

 このコンストラクタの結果は、生成されたSWFMovieオブジェクトです。SWFMovieオブジェクトは、SWFバージョン4ムービー形式で、新しいSWFムービーを作成します。当然、生成されたばかりのSWFMovieオブジェクトには、何もデータが設定されていません。この状態でデータを保存しても、映像が表示されることはありません。

 それでも、初期状態のSWFMovieオブジェクトを出力することは可能です。SWFMovieオブジェクトをディスクに保存するにはsave()関数を使います。

save関数
int swfmovie->save ( string filename [, int compression] )

 filenameパラメータには出力するファイル名を、compressionには0~9の範囲で圧縮レベルを設定できます。compressionは省略可能です。

コード 00:sample00.php
<?php
    $swf = new SWFMovie();
    $swf->save("test.swf");

    print "SWF file has been saved.";
?>

 コード00は、SWFMovieオブジェクトを生成し、初期状態のままsave()関数を使ってディスクに保存しています。プログラムが正しく実行されれば、カレントディレクトリに「test.swf」という名前のファイルが生成されているはずです。このSWFフォーマットのファイルは、Flashプレイヤーで正しく再生できます。

コード00で生成したSWFムービーを再生
コード00で生成したSWFムービーを再生

 既定では、白い背景、幅320ピクセル、高さ240ピクセルの映像になっています。例えば、Internet Explorerなどでファイルを開き、ドキュメント上で右クリックをすれば、Flash ムービーであることが確認できます。

関数名の表記
 PHPマニュアルに従って、関数宣言の引用における関数名は小文字で表していますが、PHPは大文字と小文字を区別しないので、swfMovieでもSWFMovieでも意味は同じです。本文中でも、マニュアルの表記に従って、オブジェクトを表すときはSWFMovie、関数を表すときはswfMovieと記載します。

ムービーのサイズや背景色の設定

 SWFMovieオブジェクトは、ムービーのサイズや背景色を設定できます。ムービーのサイズを設定するにはsetDimension()関数を使います。

setDimension()関数
void swfmovie->setdimension ( int width, int height )

 widthには幅を、heightには高さを、それぞれピクセル単位で指定します。

 ムービーの背景色はsetBackground()関数で変更できます。

setBackground()関数
void swfmovie->setbackground ( int red, int green, int blue )

 redには赤要素、greenには緑要素、blueには青要素を表す0~255までの値を指定します。

コード01:sample01.php
<?php
    $swf = new SWFMovie();
    $swf->setDimension(400, 300);
    $swf->setBackground(0, 0, 0);
    $swf->save("test.swf");

    print "SWF file has been saved.";
?>
背景色が変更されたムービー
背景色が変更されたムービー

 コード01は、幅400ピクセル、高さ300ピクセルで、背景が黒のSWF ムービーを生成します。単純にSWFフォーマットのファイルをInternet Explorerで表示しようとすると、自動的に伸縮されてしまいますが、このムービーのオリジナルのサイズは400×300ピクセルになります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 赤坂 玲音(アカサカ レオン)

    平成13年度「全国高校生・専門学校生プログラミングコンテスト 高校生プログラミングの部」にて最優秀賞を受賞。 2005 年度~ Microsoft Most Variable Professional Visual Developer - Visual C++。 プログラミング入門サイト Wis...

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5