だからflashで作られた携帯CGMサイトは少ない(国内)

前回の続き

・NTT DoCoMo
Flash Lite1.0 最大100KB
Flash Lite1.1 最大100KB(外部ロード分を含む)
Flash Lite3.0 最大100KB(外部ロード分を含む)

・au
Flash Lite1.1 WIN 最大100KB/ 1X 最大48KB(1セッションにつき)
Flash Lite2.0 最大100KB(1セッションにつき)

・ソフトバンク
Flash Lite1.1 最大100KB
Flash Lite2.0 最大150KB(1セッションにつき)


上記を見るとauおよびソフトバンクのFlash Lite2.0対応端末は、
外部ファイルのロードを何度でも繰り返せる。
逆にDoCoMoは、トータルのサイズである。

http://d.hatena.ne.jp/kazukiz/20080913/1221317246


どういった場合に影響するのか?


例えば、以下のようなサイトを考えてみる。


携帯サイトで、検索、ランキング、新着記事表示機能を要するFlashページ
検索、ランキング、新着情報はリアルタイムとする。


SWF本体(30k)
メニューエリア

  • ランキング
  • 新着
  • 検索
  • おすすめ

メインエリア


(※メニュー押下で内容がメインエリアに表示される)


■パターン1 動的呼び出し au, SoftBankの場合
1.SWF本体(30kb)
2.ランキングボタン押下
3.ローディング中メッセージをメインエリアに表示(ランキング情報取得中)
4.ランキング情報をメインエリアに表示(40kb)
5.新着ボタン押下
6.ローディング中メッセージをメインエリアに表示(新着情報取得中)
7.新着情報をメインエリアに表示(40kb)
以降2〜7を何度でも繰り返せる


■パターン1 動的呼び出し DoCoMoの場合
1.SWF本体(30kb)
2.ランキングボタン押下
3.ローディング中メッセージをメインエリアに表示(ランキング情報取得中)
4.ランキング情報をメインエリアに表示(40kb)
5.新着ボタン押下
6.ローディング中メッセージをメインエリアに表示(新着情報取得中)


ここで、NG 容量オーバーとなってしまう


■パターン2 別ページ遷移
別のSWFを呼び出した場合
1.SWF本体(30kb)
2.新着ボタン押下
3.新着SWFに遷移(20kb)
4.新着情報取得ボタン押下
5.ローディング中メッセージをメインエリアに表示(新着情報取得中)
6.新着情報をメインエリアに表示(40kb)

※4でボタンを押させるのは、イベントを発生させないと、外部ファイルのロードができない国内キャリアの制限の為


これだと、なぜ2回もクリックしなきゃいけないのか??
となる


■パターン3 別ページ遷移(サーバサイド生成SWF)
別のSWFを呼び出した場合
1.SWF本体(30kb)
2.新着ボタン押下
3.新着SWF(サーバサイドで自動生成)に遷移(新着情報含む50kb)


これでようやくスムーズになる。


ただし、サーバサイドで自動生成するには、
CS3では開発できないので、mingやswfmill(使ったことはない)や有料ツール等を使う必要があり、
学習コストは少なくないし、プログラミング力が要求されるので敷居は高い。


結論1(最も理想)
au, SoftBankの場合は、パターン1、
DoCoMoの場合にパターン3の方法をとる


結論2(2番目)
パターン3の方法を3キャリアで使う。


結論3(3番目)
au, SoftBankだけにパターン1のswfを作成する。


結論4(4番目)
Flashは使わない
この要件には向いてないと考える
DoCoMoが、au, SoftBankの仕様に統一されるまで待つ。


結論4が選ばれたとしても不思議ではない。
こうしてFlashは使われなくなる。。。


Flashで作られた携帯CGMサイトが少ないのはおそらくこの辺が原因ではないだろうか?


最近、flashサイト構築ASP等のニュースをよく耳にするが、
これは、キャリアが制限を設けてるからこその需要だろう。。。


それにしても、DoCoMoは、クッキーが使えなかったり独自路線だよな。。

パケ放題だったら制限をゆるくしてくれたりすればいいのに!


今後に期待したい。。


追記
adobeのサイト内で、Flash Lite入門講座が公開されました。
Flash Lite入門講座 第1回 日本のFlash Liteの仕様
http://www.adobe.com/jp/devnet/devices/articles/develop_in_japan.html

FlashLiteの容量制限について整理する


1.AUよりDoCoMoの方が先に容量オーバーになる。
ボタンをクリックすると、
ランキング情報をロードして表示するswfを
AUDoCoMoの端末で、操作すると、
何回かクリックすると、
AUよりDoCoMoの方が先に容量オーバーになる。


AUで、容量オーバにならないのを逆に不思議に思いつつも、
同一のswfとして、DoCoMoの仕様にあわせたため、そのときはそれ以上追求せず。


2.その後、AUサイトの説明を見て
http://www.au.kddi.com/ezfactory/mm/flash01.html

”ロードする元のFlashファイルとロードされるFlashファイルやテキストファイルの合計が100KBになるようにして下さい。”

”元のFlashファイル+loadMovie() /loadVariables() でロードされるFlashファイル < 100KB”

うーん
わかりづらいっす

これは、元のFlashファイルが、30kbだとすると、
loadMovie()できるのは、70kbまでで、
差し替えであれば、何度でも70kb分loadMovie()できるという意味だとあとで理解できたが、
DoCoMoと同じように全合計とも読み取ってしまって、混乱していた。


3.ニコニコ動画モバイル(AU)を見て、
外部ファイルのロードを際限なく(クリックした数だけ)繰り返しているが、
容量オーバーのエラーが出ない。
やはり、何度でも、ロードできそう?


4.Web Designing 7月号を見て
何度でも、ロードできると書いてある。

ただし、auでは、”一回の通信につき100kb”なので、
loadMovieを繰り返せば、大量のコンテンツを表示させることができる。

・NTT DoCoMo
Flash Lite1.0 最大100KB
Flash Lite1.1 最大100KB(外部ロード分を含む)
Flash Lite3.0 最大100KB(外部ロード分を含む)

・au
Flash Lite1.1 WIN 最大100KB/ 1X 最大48KB(1セッションにつき)
Flash Lite2.0 最大100KB(1セッションにつき)

・ソフトバンク
Flash Lite1.1 最大100KB
Flash Lite2.0 最大150KB(1セッションにつき)

上記を見るとauおよびソフトバンクのFlash Lite2.0対応端末は、
外部ファイルのロードを何度でも繰り返せる。
逆にDoCoMoは、トータルのサイズである。


ふむふむ


って、この違いってでかくないすか?!


この違いを強調しているサイトが少ないのがちと不思議だ。


以下に続く
だからflashで作られた携帯CGMサイトは少ない(国内)
http://d.hatena.ne.jp/kazukiz/20080914/1221325832


追記
adobeのサイト内で、Flash Lite入門講座が公開されました。
Flash Lite入門講座 第1回 日本のFlash Liteの仕様
http://www.adobe.com/jp/devnet/devices/articles/develop_in_japan.html

awstatsで携帯端末情報を表示させる方法2


続いて、インプレスR&Dで、提供されているcsvデータから
browser_phone.pmを自動生成するパターン。phpです。


インプレスR&D インターネット総合研究所
http://imri.impressrd.jp/iil/k-taiprofile/?q=k-taiprofile/

データの公開は許可されていないので、上記サイトから取得してください。

<?php
$csv = fopen("UserAgent_2008-08-20.csv", "r");

//through 2 lines
fgetcsv($csv, 1000, ",");

$idOrderArea = "@BrowsersSearchIDOrder = (
'opera',\n";
$idLibArea = "%BrowsersHashIDLib = (
# Common web browsers text
'msie','MS Internet Explorer',
'netscape','Netscape',
'firefox','Firefox',
'svn', 'Subversion client',
'opera', 'Opera',
";

$ids = array();
$pattern = array("/'/", "/\s/", "/-/", "/\./", "/_/", "/\(/", "/\)/");
$rep = array("\'", "\\s", "\-", "\.", "\_", "\(", "\)");
while ($datas = fgetcsv($csv, 1000, ",")) {
    if ($datas[1] === "" || $datas[3] === "") {
        continue;
    }
    if (isset($ids[$datas[3]])) {
        echo $datas[3]. "is duplicate.  \n";
        continue;
        }
        else {
        $ids[$datas[3]] = $datas[0];
}
    $id = preg_replace($pattern, $rep, mb_convert_encoding(strtolower($datas[3]), "UTF-8",
 "Shift_JIS"));
    $name = preg_replace($pattern, $rep, mb_convert_encoding($datas[1], "UTF-8", "Shift_JI
S")). "(".$datas[0] .")";
    $idLibArea .= "'" . $id . "', '" . $name ."',\n";
    $idOrderArea .=  "'" . $id ."',\n";
}
fclose($csv);

$idOrderArea .= ");\n\n";
$idLibArea .= ");";

$filename = "browsers_phone.pm";
if (!$handle = fopen($filename, "w")) {
    echo "Cannot open $filename";
    exit;
}
if (!fwrite($handle, $idOrderArea.$idLibArea)) {
    echo "Cannot write to file ($filename)";
    exit;
}
fclose($handle);
?>

ユーザエージェントが重複する場合は、一つ目だけを有効としています。
バグってたらご指摘をお願いします。


表示されてる例

awstatsで携帯端末情報を表示させる方法


awstatsには、もともと携帯端末情報を表示する機能が備わっており、
awstats.confでLevelForBrowsersDetection=allphonesと設定することで、
"lib/browser_phone.pm"に記載されている
ユーザエージェントと端末名のマッピング情報を読み込んで、
端末情報が表示されるようになる。


しかし、デフォルトでは、国内キャリアの端末に関する情報は記載されていない。


そこで、端末のプロファイルデータが、
以下のサイト等で無料で公開されていたりするので、
これらのデータを利用することにする。


すばらしい!


インターネット総合研究所
http://imri.impressrd.jp/iil/k-taiprofile/?q=k-taiprofile/
ke-tai.org
http://ke-tai.org/index.php?%B7%C8%C2%D3%C3%BC%CB%F6%A5%B9%A5%DA%A5%C3%A5%AF%B0%EC%CD%F7


awstatsで、端末情報表示させたかったらみんな似たようなことしてるはず。。


そこで、ke-tai.orgで、提供されているcsvデータから
browser_phone.pmを自動生成するスクリプトをざっくり書いてみました。phpです。
perlで書けよ!>俺
インプレスR&Dの方も似たような感じになるかと思います。


データ自体は、上記サイトから取得してください。

<?php
$csv = fopen("20080820_ke-tai_list.csv", "r");

//through 2 lines
fgetcsv($csv, 1000, ",");
fgetcsv($csv, 1000, ",");

$idOrderArea = "@BrowsersSearchIDOrder = (
'opera',\n";
$idLibArea = "%BrowsersHashIDLib = (
# Common web browsers text
'msie','MS Internet Explorer',
'netscape','Netscape',
'firefox','Firefox',
'svn', 'Subversion client',
'opera', 'Opera',
";

$ids = array();
$pattern = array("/([^\[^\(]+).*/", "/\s$/", "/'/", "/\s/", "/-/", "/\./", "/_/");
$rep = array("$1", "", "\'", "\\s", "\-", "\.", "\_");
while ($datas = fgetcsv($csv, 1000, ",")) {
    if ($datas[2] === "" || $datas[4] === "") {
        continue;
    }
    if (isset($ids[$datas[4]])) {
        echo $datas[4]. "is duplicate.  \n";
        continue;
        }
        else {
        $ids[$datas[4]] = $datas[2];
}
    $id = preg_replace($pattern, $rep, mb_convert_encoding(strtolower($datas[4]), "UTF-8",
 "Shift_JIS"));
    $name = preg_replace($pattern, $rep, mb_convert_encoding($datas[2], "UTF-8", "Shift_JI
S")). "(".$datas[1] .")";
    $idLibArea .= "'" . $id . "', '" . $name ."',\n";
    $idOrderArea .=  "'" . $id ."',\n";
}
fclose($csv);

$idOrderArea .= ");\n\n";
$idLibArea .= ");";

$filename = "browsers_phone.pm";
if (!$handle = fopen($filename, "w")) {
    echo "Cannot open $filename";
    exit;
}
if (!fwrite($handle, $idOrderArea.$idLibArea)) {
    echo "Cannot write to file ($filename)";
    exit;
}
fclose($handle);
?>

ユーザエージェントが重複する場合は、一つ目だけを有効としています。
バグってたらご指摘をお願いします。

以下追記 8/22

表示されてる例

インプレスR&D版は、こちらを参照
http://d.hatena.ne.jp/kazukiz/20080823/1219431176

javaで、simplexml, restサーバ

JAVAで、simplexml、restサーバを作るのに特化したフレームワークってあるのだろうか?
できれば、tomcat上で動くフレームワークがよい。

以前、調べたときにあまりしっくりくるものがなかったので、アノテーションの勉強のつもりで、作ってみました。
XMLの生成には、JAXBを利用しています。
ソースを以下に公開していますので、興味がございましたら、触っていただければと思います。


■elazyrest
http://sourceforge.jp/projects/elazyrest/wiki/FrontPage
jdk1.5以降が必要になります。


■elazyrestを使ったサンプル"twitter proxy"
twitterのfriends_timeline.xmlをキャッシュして返すAPI


http://twitter.com/statuses/friends_timeline.xml
を以下に切り替えるとキャッシュして返される
http://byzantine.infocity.co.jp/twitter_proxy/api?method=TwitterService.friendTimeline
パラメータ
page : ページ番号
num : 表示件数

twitterクライアントでxmlを取得している場合は、パスを切り替えるだけでよい。。


twitter proxyを使ってるサービス
ぽちったー
twitter携帯FLASH
http://byzantine.infocity.co.jp/pochitt
※flashlite2.0以降
開発日記
http://twitter.g.hatena.ne.jp/kazukiz/

アジャイルとドリブラー


今、アジャイルラクティスを読んでいる。


以下抜粋


アジャイルプロジェクトでは、常にフィードバックを求めている。それは僕らが一度に調整する量を小さくして、それを継続的に何度も積み重ねたいからだ。
別の個所では、
アジャイルである」とは、つまり、変化に対応することだ。


高校のサッカー部のときの話、


あるドリブラーに教えてもらったこと。


”ドリブルするときは、できるだけ細かくステップを踏んだほうがいい。
敵からの攻撃に対応しやすくなるからだ・・・”


ちょっと似ている。。。

結婚式にて

拍手するとき、


手と手をぴったり合わせる人って


あんまりいない、


ちょっとずらさないと


音が大きくならないから。。


世の中にも


ちょっとずらさなきゃいけない瞬間って


あるよなぁーとか思った w