スパイスラボ神部です。
現在 mixi アプリのオススメで紹介されている†フェイス女学園† を除いてはトップアプリの「シンプルスライドショー」をバージョンアップしました!
アプリのアップデートは開発の醍醐味
ユーザのフィードバックを受けての改良なので、開発サイドからするとアップデートのリリースはなかなかの醍醐味です。今回は次のようなところをアップデートさせました。
-これまでは新着から3件だったアルバムが選べるようになりました!(ホーム画面に出る写真も選択したアルバムのものになります)
-写真の下ができるだけ切れないように、デフォルトを縦長にしました!
-タイトル表示がたまにおかしいなどの不具合修正
UserPrefs がないことでこんなにも苦労するとは
さて、今回は必要以上に時間をかけてしまいました。それもこれも mixi アプリが OpenSocial の UserPrefs に対応していないことに問題があるような気がします。
UserPrefs はアプリの設定情報を保存しておくための仕組みで、これらの値を使いたいときはコンテナ側でUIを用意してくれているものもあります(gooホームなど)。しかしながら、mixi アプリではそうはいかないので自前で用意しなくてはならないという開発者にとっての非生産制があります。
また、今までは問答無用でアルバムの新着三件だったのですが、今回は選択可能にしました。
そうすると永続化情報をユーザが入力したかそうでないかを自前でチェックしないといけなくて、今回のアプリでいえば「スライドショーにするアルバムが選ばれていない」という状態を管理しなければなりません。しかしこれの判別がなかなかできず困りました。
例えばの方法としては、
-UserPrefの代わりに永続化データを設定したりする画面を作ってみる - プログラマー、再起動中
にあるように data を if(data) としてもとれないですし、isEmpty としてもダメでした。
こんな風に判別しました
さんざん試行錯誤したあげく、こんなコードでユーザが永続化データを持っているかどうかを確認することができることがわかりました。
var eachable = false;
$.each(data, function(userId, data) {
eachable = true
});
if(eachable){
}
アルバムが空でもエラーでは返ってこないので、each 可能かどうかを調べて条件分岐という方法です。
他の箇所では data の length が undefined かどうかで判別したりもしたのですが、なぜかアプリを表示した直後の画面では length が常に undefined になってしまったため、上記のような方法をとった次第です。
しかし永続化データってアプリをアンインストールしても消えないようですね・・・再インストールしたら以前指定したスライドショー表示するアルバムのデータが残っていました。
これらは UserPrefs が実装されていれば無用な苦労ではあるのですが、これもいい勉強だと思っておくことにします。
mixi のフォトアルバム機能への要望
画像の縦横サイズをぜひメタデータで共有して欲しいものです。JavaScript で生の画像サイズを取るのはかなり大変でブラウザ依存もあるので、綺麗にレイアウトをおさめるためにも写真ごとに縦横のサイズが欲しいところです。
今後の予定
今後の予定としては、
・画像が荒いのがなんとかならないかを検討
・写真の縦横を取得してもっとスマートに出来ないか
・ランダム表示をさせられないか
・友だちにアピールする前にどんな風にアピールされるかをプレビューできるように
といったことを考えています。
いろいろエフェクトを考えると Flash 使う方がいいんですが、またしばらくは HTML + JavaScript だけでがんばろうと思います。
関連記事



