| コメント(0) | トラックバック(0)

2008 年 5 月 10 日 の 1.0.0RC1 リリースから 1 年、2009 年 5 月 11 日に Net_UserAgent_Mobile 1.0.0RC2 をリリースしました。大変お待たせして申し訳ありません。今回は 1.0.0 のリリース候補の更新のため大きな変更点はありませんが、その内容を簡単にご紹介いたします。

KUBO Atsuhiro

1.0.0RC1 以降に発売された docomo の新機種のサポート

1.0.0RC1 以降に発売された docomo の新機種の画面情報と HTML バージョンを追加しました。HTML バージョンについてはこれまでの正規表現によるマッピングを廃止し、機種毎にバージョンを持たせるよう変更を行っています。

これらの情報は通常 1 リクエストに対して 1 つ定まれば十分であるため、リクエストの度に全機種のデータをロードするのは時間とメモリの無駄です。そのため指定された機種に対してのみ情報をロードするように改善するのが望ましいと考えていますが、バージョン 1.0.0 までは大きな変更が難しいため今後の課題としています。

不具合の修正

Bug #15776 にもあるように Net_UserAgent_Mobile_Common::isError() と Net_UserAgent_Mobile_Common::raiseError() はベースクラスのメソッド PEAR::isError() と PEAR::raiseError() との互換性を失っており、そのために Strict standards エラーが発生していました。このメソッドは、かつて PHP の仕様変更によりコンストラクタから値を返すことができなくなった時に、コンストラクタで発生したエラーを補足するために用意したものです。1.0.0RC2 ではこれを修正していますが、この記事を書きながら Net_UserAgent_Mobile_Common は PEAR を継承する必要すらないことに今さらながら気づきました。CVS HEAD は PEAR を継承しないように変更済みです。

また、Strict standards エラーは発生しませんが、Net_UserAgent_Mobile_Error のコンストラクタも互換性を失っており、それが原因で PEAR_Error のエラーモードが常に PEAR_ERROR_RETURN に設定されるようになっていました。エラーモードが常に PEAR_ERROR_RETURN に設定されるということは、PEAR_ERROR_CALLBACK を使った PEAR_Error の自動的な例外への変換 (Piece Framework のプロダクト Stagehand_LegacyError はまさにそのようなことを行うためのプロダクトです。) が行えないこということです。1.0.0RC1 の Net_UserAgent_Mobile_Error と PEAR 1.8.1 の PEAR_Error のコンストラクタを見比べてみるとその違いがわかります。

...
class PEAR_Error
{
    ...
    function PEAR_Error($message = 'unknown error', $code = null,
                        $mode = null, $options = null, $userinfo = null)
    {
        ...
...
class Net_UserAgent_Mobile_Error extends PEAR_Error
{
    ...
    function Net_UserAgent_Mobile_Error($code = NET_USERAGENT_MOBILE_ERROR,
                                        $mode = PEAR_ERROR_RETURN,
                                        $level = E_USER_NOTICE,
                                        $userinfo = null
                                        )
    {
        ...

この問題を修正するために 1.0.0RC2 の Net_UserAgent_Mobile_Error は下記のようになりました。

...
class Net_UserAgent_Mobile_Error extends PEAR_Error {}
...

New BSD License へのライセンスの変更

1.0.0RC1 までの PHP License 3.0 から New BSD License へライセンスを変更しました。FSF の見解では PHP LicenseGPL との互換性に問題があるとされていること、第 3, 4, 6 条項 (PHP License 3.01 の第 6 条項も同様) が気に入らないことがその理由です。

今後のスケジュールについて

先述のようにすでに CVS HEAD に変更を加えているため、近いうちに 1.0.0RC3 をリリースし、そのあと数週間程度様子を見てから 1.0.0 をリリースする予定です。1.0.0 リリース後は、PEAR から離れ、GitHub で開発したものを openpear でリリースするというスタイルを考えているところです。openpearPEAR のようなアップロードからのリリースをサポートしてくれると助かります。

参考文献

トラックバック(0)
  • このブログ記事のトラックバックURL:
コメント