携帯で拡張子のないファイル(画像)を取り扱う

2008/12/19 | その他, ケータイ

それは無理。でも楽をして拡張子なしで画像を保存してしまったので、何とかしなければならない。

その1. mod_rewrite

RewriteEngine On
RewriteRule ^/(.*)\.jpg /image.php?id=$1

.htaccess等で上記のように指定する。画像を呼び出すためのimgタグには、画像ファイルへのパスに「.jpg」と拡張子をつけて出力しておく。こうするとURLが自動的に切り替わり、ファイル名を引数に与えてimage.phpが呼び出される。適宜処理して画像を出力すればいい。

その2. 拡張子.jpgをPHPプログラムとして認識させる

<Files ~ “^image\.jpg$”>
AddType application/x-httpd-php .jpg
</Files>

.htaccessで上記のように指定する。これでimage.jpgはPHPプログラムとして処理される。画像を呼び出すためのimgタグには、image.jpg?id=(ファイル名)のように記述する。これでimage.jpgが呼ばれると、適宜処理して画像を出力すればいい。

携帯向けの場合、画像ファイルの拡張子の後ろに?id=とつけるのは気持ち悪いが手持ちの3キャリアの各端末では表示できたので、とりあえずよしとする。

画像の拡張子

2008/12/18 | その他, ケータイ

PHPでCMSを作る場合、画像をアップロードして反映させる機能を作ることも多い。その際どんな風に作るのが一般的なんだろうか、と疑問に思ったので、現在の自分の作業をメモしておくことにする。

  1. アップロードされたファイルの形式をチェックする
    画像かどうかのチェックは必須とする。
  2. ファイルの拡張子なしで保存する
    拡張子なしのファイル名で画像を保存する。PCブラウザは、拡張子なしでもだいたい対応してくれるので。
拡張子なしにすることによってプログラムに手抜きができることが多い。でも携帯は拡張子でファイル形式を判断しているので、別途プログラムをかませて出力しなければならない。手元のドコモ、ソフトバンク、AUの各端末では、いずれも拡張子なしの画像を表示させることはできなかった。

XREAでボトルネックになっている箇所を探したら

2008/05/11 | ケータイ

XREAで携帯向けコンテンツの提供を始めようとしているのだが、なぜか表示が遅い。すごく悩んでいたのだが、ようやく原因がわかった。原因は「携帯向けGoogle Adsense(PHP版)を貼り付けていること」だった。

最初は何が悪いのか全くわからなかった。とにかくリクエストから表示まで10秒くらいかかってしまう。どこがボトルネックになっているのか調べようとして、実際にやってみた作業はコレ。

スクリプトにやたらめったらprint(microtime(true));を記述

この記述がある回数だけ時刻が表示されるわけだが、その差が大きい部分を追うことで、実際にボトルネックになっている箇所を見つけるわけだ。で、追っかけてみた結果、Smartyテンプレート内で「include」している箇所で時間がかかっていることがわかった。「え〜なぜ?」と思いつつ、更に調べてみてincludeされているファイル内に記述されているGoogle Adsense携帯版の記述がボトルネックになっていることがわかった。

そこで「そういえばGoogle Adsense携帯版の実際に記述するコードが、最近やたら長くなったよな」と思い出したので、昔使っていたコードを入れてみた。そしたらなんと動作しない!。Google Adsense携帯版は以前は単にGoogleに配置されているファイルをrequireしているだけだったのだが、そもそもその記述自体がXREAでは許可されていないのだ。つまり「そういうこともあるからGoogle Adsense携帯版のスクリプトが長くなった」らしい。

ということで、副産物的にGoogle Adsense携帯版のことがわかったのだが、結局Google Adsense携帯版は、XREA環境ではどうやっても遅いのだ。仕方なく広告を削除した。

さて、改善されないのか・・・XREAにリクエストを出さねば・・・。

携帯でのセッション持ち回り

2008/05/02 | ケータイ

携帯でセッション持ち回りをする際の設定メモ。

○session.use_cookies => 1
セッションでクッキーを使うかどうかの設定。
デフォルトは1。
PHP_INI_ALL。

○session.use_only_cookies => 0
セッションをクッキーだけに頼るかどうかの設定。
デフォルトは1(クッキーが使えなければセッションも使えない)。
PHP_INI_ALL。

○session.use_trans_sid => 1
セッションIDをHTML中のURLに付加するかどうかの設定。
デフォルトは0。
PHP<=4.2.3でPHP_INI_ALL。PHP<=5でPHP_INI_PERDIR。

最近の環境ではPHP4.4系以上が多いので、基本的にhtaccessで設定することになる。htaccessでの設定ができない場合は何らかの代替手段を用意する必要あり(もちろん代替手段を検討する前にphp.iniのデフォルト設定で確認しておくこと)。

携帯でGoogle Mapsを使う

2008/04/17 | ケータイ

Google Maps APIはJacaScript/Ajaxを活用した技術だから、同然携帯では使用することができる(携帯ではJavaScriptが動かないという前提だが)。しかしGoogleはいつの間にか、やってくれていた。ついに携帯でも地図を表示させることができる。

Google Static Maps API

グリグリと地図を動かすことはできないけど、一枚の画像として画像を呼び出すことができるようになっている。HTML中にimgタグを使ってRESTで呼び出せばいい。RESTの形式はこんな感じ。

http://maps.google.com/staticmap?
center=[中心の緯度],[中心の経度]
&zoom=[倍率(ズームレベル)]
&size=[出力する画像の横ピクセル]x[出力する画像の縦ピクセル]
&maptype=[mobile / roadmap]
&markers=[マーカー緯度],[マーカー経度],[色][マーカーのアルファベット]
&key=[APIキー(Google Mapsと共通)]

住所からダイレクトに地図を表示することはできないけれど、緯度経度をなんとか用意できれば大丈夫。さっそく使うことにしよう。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net