mixiアプリをflashで作る3つの理由

mixiアプリのデータ永続化制限

私はまだデータの永続化APIを利用したことが無いのですが
mixiでは永続化に関する制限が

1つのKeyに対する文字列は、64KBまでとなります。
1ユーザが1アプリに付き利用可能な全てのKeyに対する文字列の合計は、10MBまでとなります。
※ 全角文字は3バイト(UTF-8)計算となります。

mixi Developer Center

となっており心もとないです
さらに永続化APIを利用すると管理者でさえもデータの管理ができないのでちょっと怖いですよね
また外部の独自サーバにデータを保存しておくことで他のopensocial対応サイトで同じアプリを提供するときに
別々のサイト同士でもデータを扱うことができるので非常に便利です

外部サーバとのやりとりが大変

上記のように永続化APIを利用しないといった場合には必然的に外部サーバにデータを保存する必要があります
opensocialでは外部サーバとの通信用APIが用意されているのでそれを利用して外部サーバと連携できるわけですが
私は当初mixiアプリにアクセスしたら外部サーバに自動ログインさせるためのパラメータを送りつけ
後はアプリ上にフレームでページを表示させれば楽チンやん!と思い込んで実装していたのですが

気づいてみるとリクエストを送るのはmixiアプリのサーバであって自分のPCじゃないためログインセッションはmixiアプリサーバが持っていることになり(フレーム内は自分のPCからのアクセスになるので)
自動ログインフレーム作戦は失敗に終りました・・・

ということで外部サーバを利用して、mixiアプリでパーソナライズドなページを表示させるためにはサーバでhtmlを作ってからそれをmixiアプリ側で読み込む必要があります。(まぁ当然と言えば当然ですが・・・)

ページ遷移のするアプリは作るべきじゃない!?

大抵の人はmixiアプリ上でページ遷移のするアプリは作らないと思います(複雑なアプリほど)
ただでさえmixiアプリサーバと外部サーバで通信しているため、なるべく通信におけるデータ量を減らしたいことや
mixiアプリでは比較的獲得できるユーザ数が多いためサーバ負荷も減らしたい

mixiアプリでページ遷移するとアフォーダンス的によろしくない・・・気がする

つまりajax通信を利用するしかなくなるわけですよ!flashを使わないと!
javascript書くのがすごい大変になるんですよ!
ボタンをつける度にclass名がどこどこのdivタグの中身をdataに書き換えるなど正直やってられないです。
今回mixiアプリを作っていてここが非常に大変でした。面倒くさかったです。
そういうのを自動でやってくれるフレームワークとかもあるんですけど(wicketとか)
今作っているアプリはサーバ側でwicketを使ったのですが・・・吐き出すhtmlの中身がwicketでしか理解できないようなものが含まれていてmixiアプリ内では実行できないという仕様になっていて
(たとえば ココ! など)
全部jqueryを利用して書く羽目になりました。

こんなことなら一層のこと全部flashで書いちゃったほうがすごい楽です。
最初の読み込みを耐えるだけで後はデータのgetやpostをjson形式でやれば
上記のようにいちいちサーバ側でこのHTMLを吐き出してそれをアプリ側のhogeタグのmohuクラスの中に埋め込んで・・・
などとやる必要が無くなるわけです!


ということで長くなりましたがmixiアプリflashで作るのが一番ということです。
自分はflash使ったこと無いのでこれから勉強したいと思います><