カテゴリー:IT

PHP言語のエラーメッセージ

2009年3月4日 (水)

2回連続で書いたとおり、いまPHP言語のWEBフレームワークを使ったWEBアプリケーションをプログラミングしている。PHPはC/C++言語に似ているのでマスターするのは速かったが、少々戸惑うこともある。それは、エラー時のエラーメッセージだ。WEBアプリなのにPHP側からのエラー文字列がブラウザに表示されてしまうのだ。それでは困るので、関数の前に@ マークを付けてエラー出力を抑止している。しかしこれではエラーが発生したときのエラーメッセージがこんどはわからなくなってしまう。

このような場合は、通常は例外を発生させるべきで、例外インスタンスからエラーメッセージ文字列が取得されるべきだ。おそらくPHPの古い部分、例外実装前のコードが原因だろう。このあたりは、古い言語だから起きる問題とも言えよう。

PHP遅い

2009年2月28日 (土)

このブログの前回記事PHP言語のとおり、私はいまPHP言語でWEBアプリケーションを開発中だ。テスト実行して、実行速度の遅さが気になっている。同じマシンでPython言語のWEBフレームワークで開発したWEBアプリと比べると、実行速度は圧倒的に遅い。遅い原因は次のように考えている。

1.フレームワーク
PHP用WEBアプリフレームワークを使用しているが、そのフレームワークが大きすぎて重いのかもしれない。

2.Windows/IIS
このシステムはWindows上のIISと連携して動いている。本番マシンでもそうなる。通常のPHPによるWEBアプリは、Linux機でApache/mod_php が一般的だが、それと大分異なる構成だ。IIS用のmod_php など聞いたことがないので、PHP部分はCGIとして、つまりアクセスのたびにPHPの起動から行われるので遅いのだろう。

3.static変数
上記「2」とも関連するが、static変数が有効なのは1回のアクセスのみだ。2回目のアクセスではstatic変数は初期化されているので再度設定処理を行わなければならない。このアプリはstatic変数の初期化にかなり重い処理の箇所があるので、それも原因のひとつだ。

4.中間言語
PHPは実行のたびにソースコードを読み込んでコンパイル・実行している。片やPythonではコンパイルされた結果の中間言語が別ファイルで保存されるため、2回目以降はコンパイルされない。このこともPHPが遅い原因だろう。

まあ、サーバ常駐型のPythonフレームワークと比較するのは酷かもしれないが極端に遅いことは事実だ。上記「4」以外にはPHP言語に責任があるわけではないが、もともと好きではないPHP言語にあまり良いイメージが持てないのも事実だ。

とりあえず納品先に、Linux機での実行が可能か否かを検討してもらう必要があるだろう。Linux機でApache/mod_phpならもう少しは速くなることが期待できるからだ。

PHP言語

2009年2月25日 (水)

いま仕事でPHP言語を使用したWEBアプリケーションを開発している。私にとってはWEBアプリはPythonで作ったほうが短い工数でできるのだが、発注元がPHP言語を指定しているためそれで作っている。PHPはあまり好きな言語ではなかったのでたいして勉強して来なかったが、仕事だと覚えざるを得ない。開発環境はEclipse上にPHP用プラグインを入れている。このPHPプラグインはあまり文法チェックをやってくれない。何度も
$this->$aa
のように書いてしまい、実行時エラーで初めてエラーに気が付いた。(本当は $this->aa)これくらいチェックしてくれても良さそうなものだが。

PHP言語はほとんどC/C++に近いので非常に覚えやすい。それと、すでにPythonでライトウエイト言語をマスターしていたので、その考え方にもなじめた。

開発は当然オブジェクト指向でやっている。すべてクラスを作成しているので、もし変数に$マークがなければ何の言語で開発しているかわからないだろう。

PHP言語といえば、ASCII.JPサイトで面倒な処理を1行に!WordPressのショートコードAPIの記事を見つけた。この記事は藤本 壱氏の記事だ。藤本氏の本は何冊か持っている。ブログツールのWordPressは私は愛用のツールで、これを使用して複数のブログサイトを作った。ただ当時はあまりPHPの知識がなかったのでプラグインまでは作らなかった。この記事を見ると、(いまのPHPの知識も相まって)簡単にプラグインが作れそうだ。そのうちプラグイン作成にチャレンジしてみたい。

Google Chromeがさらに速く

2009年2月7日 (土)

グーグルのブラウザChromeは描画が高速であるらしい。描画速度は、Forefoxの最新バージョンが速いらしいが、Chromeはそれと同等かわずかに速い、という速さらしい。それにひきかえ、IEは描画が極めて遅いので時期バージョンであるIE8で高速化が実現されるらしい。

Chromeが高速であるひとつの要因は、JavaScriptの実行の速さだ。ただChromeのJavaScriptはFirefox最新版のJavascriptエンジンであるTraceMonkeyよりわずかに遅い、という評判だった。そこでグーグルはJavascriptエンジンの高速化に手をつけた。グーグル、「Google Chrome」高速化で新たな取り組み–独自で正規表現を実装によると、

オープンソースブラウザ「Google Chrome」の動作速度向上に向けたGoogleの試みの一環として、Chromeのプログラマーらは、サードパーティーのソフトウェアパッケージを捨て、独自のパッケージに切り替えた。

この変更は、正規表現と呼ばれるJavaScriptテキストを処理するためのキーコンポーネントに関するもの。
...
プログラマーのErik Corry氏、Christian Plesner Hansen氏、Lasse Reichstein Holst Nielsen氏の3人は、The Chromium Blogへの投稿で、「JavaScriptの他の部分は改善してきたが、他の部分よりも正規表現の遅れが目立ち始めた。そこで、われわれは、外部ライブラリを利用するよりも、われわれの既存のインフラと統合することにより、JavaScriptの性能が向上するはずだと考えた」と述べている。

その結果として、Google独自のプロジェクトである「Irregexp」が生まれた。 (C)CNET Japan

遅い要因の正規表現ライブラリを、自前のものに変更して高速化を実現した、ということだ。

ブラウザの高速化の戦い、ますます楽しみだ。IE一極の状況を打破するきっかけになると嬉しい。

ブラウザシェア

2009年2月3日 (火)

ブラウザのシェアについてのCNet Japanの記事Firefox、Safari、Chromeのシェアが上昇–最新ブラウザ利用調査を読んだ。以下、引用部分は同記事である。

ウェブ調査会社Net Applicationsが米国時間2月2日に発表した調査結果によれば、世界のブラウザ市場におけるIEのシェアは、過去1年間で7ポイント下落して、67.55%となっているという。その一方、Mozillaの「Firefox」ブラウザは、同じ期間中に3ポイントの市場シェア拡大に成功し、現在は21.53%までシェアを伸ばしている。(C)CNet Japan

IEがついに全体の2/3までシェアを落としたことは喜ばしい。とはいえ、全体の2/3とはとてつもなく大きなシェアである。私は、IEはバージョンによりCSSの動作が異なること、起動や描画が遅いこと、1社の独占は良くないと考えること、により、使用していない。WEBアプリのテスト時のみ使うだけだ。

私の標準ブラウザはFirefoxだ。Firefoxが2割までシェアを伸ばしたことは大変喜ばしい。

Appleの「Safari」ブラウザは、IEがシェアを大きく落とした2008年11月以来、7.13%から8.29%までシェアを伸ばしてきている。
...
Googleの「Google Chrome」ブラウザは、2008年9月のリリース後に急速にシェアを伸ばし、11月に「Opera」を抜いて、現在では、ブラウザ市場全体の1.12%を占めるに至っている。Operaの市場シェアは、現在0.7%である。(C)CNet Japan

Firefoxの次がSafariとは意外だ。まあMacユーザはほとんどSafari、ということか。ということは、Macユーザが意外に多い、ともいえる。次がChromeとは驚いた。Operaがもっと上と思っていたからだ。Chromeは私はインストールはしてあるが、IEと同様にWEBアプリテスト時以外には使用しない。Chromeを作っているGoogle社は個人のプライバシー保護に熱意が無いと私は思っており、IPなどにより個人を特定できるレベルまで検索情報を集めているのではないかと疑っている。そのGoogle社の作ったChromeには何が仕込んであるかわからない。そのようなこともあり、Chromeは描画が大変速いと評判だが標準使用していない。

私はWEBアプリのチェックのために、IEの3つのバージョン、Firefox、Safari、Opera、Chromeをインストールしてある。しかし上記に書いたとおり、標準ブラウザはFirefoxだ。これには別の理由がある。クッキーだ。ブラウザ終了時に、保存と指定されたクッキー以外をすべて削除する指定ができるブラウザはFirefoxだけだからだ。どんなに描画が速いブラウザが現われても、このクッキーの指定ができないと私は標準ブラウザにはしない。私はまだまだFirefoxを使い続けることだろう。

 

QLOOK ANALYTICS