AIR: 2007年9月アーカイブ

以前書いた社内アプリを仕事の息抜きに着々とバージョンアップする。

バージョンアップの度にいちいちairファイルを落としてもらって、インストールしてもらうのが皆さんに申し訳なかったので、アプリ自体が勝手にアップデート作業をするようにした。ていうかこれ最初に実装すべき機能だろ...。仕組みは、サーバ上に最新バージョンを書いた設定ファイルを置いて、起動時にそれを読み、自身のバージョンより新しければairファイルをダウンロードし、勝手にインストールして再起動。AIRのUpdaterという機能で、とても便利。

このGoogle Analytics AIRというのを使ってたら、毎日勝手にバージョンアップが来るからどうやってんのと思って調べてみたら割と簡単に出来た(ちなみにこのソフトの完成度が凄い)。

ソースは以下。softwareUpdate();を実行すれば、ダウンロード開始→再起動まで勝手にやってくれる。

function softwareUpdate(){
    //.airファイルのURLを設定
    var airUrl:String = "http://hogehoge.com/hogehoge.air";
    var urlReq:URLRequest = new URLRequest(airUrl);
    var urlStream:URLStream = new URLStream();
    var fileData:ByteArray = new ByteArray();
    urlStream.addEventListener(Event.COMPLETE, loadComplete);

    //ファイルダウンロード開始
    urlStream.load(urlReq);

    //データ取得完了
    function loadComplete(e:Event):void{
        urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
        makeAirFile();
    }

    //ダウンロードしたデータを元に、デスクトップに.airファイルを生成
    function makeAirFile():void{
        //デスクトップに"hogehoge.air"を作る
        var file:File = File.desktopDirectory.resolvePath("hogehoge.air");
        var fileStream:FileStream = new FileStream();
        fileStream.addEventListener(Event.CLOSE, makeComplete);
        fileStream.openAsync(file, FileMode.WRITE);
        fileStream.writeBytes(fileData, 0, fileData.length);
        fileStream.close();
    }

    //デスクトップにhogehoge.airファイル完成後。アップデート開始
    function makeComplete(e:Event):void{
        var updater:Updater=new Updater();
        var tgtFile:File = File.desktopDirectory.resolvePath("hogehoge.air");
        updater.update(tgtFile,"1.0");
    }
}
ptv01.jpg

リーダーのささいな一言をきっかけに、社内で情報共有できるスティッキーズ的なアプリをAIRで作ってみた。上の画像クリックで別画像。

見たいメモをクリックでそのタブが展開、Editで編集モード。ポストするとサーバ上のテキストファイルに反映される。<a>のリンクタグや<img>も使えて画像を貼付けたりテキストカラー変更やboldも可能。

仕組みとしては、タブを開くたびに対象メモのテキストファイルをphpからゲット。ポストも同じくphpにテキスト送信してサーバ上に保存。なので他の人も更新された情報がすぐ反映できる。メモのタイトルリストと各メモのphpにアクセスするIDは起動時にサーバからxmlで取得。なのでそのxmlを編集すれば、メモを増やすのも楽々。

長所と短所は他人のメモでも編集できること。最初は、起動時にユーザ選択するようにしようかと思ったけどメンドいから却下。phpはL氏に作っていただきました。ありがたい。てか自分2,3日取り付かれたようにこの作業やってて他の事全然しないという...。仕事しろ...。

しかしこれは便利です。ローカルでのファイルの読み書きも楽なので、ウィンドウの縦の長さとか位置とかを保存して次回起動時に読み込む仕様も勢いだけでサクっとできた。Flashでxml扱う時にやっかいなcrossdomain.xmlも完全に無視でどんどんネットからrss拾ってこれるのでやりたい放題。次バージョンではdel.icio.usと連携で社用ブックマークviewerも兼ねる予定。 これだけの事を、cocoaとかでやろうとすると今の自分の技術力では一体いつ実現するのか遠くを見つめるばかりだが、as3が書けてAIR用に追加された機能調べるだけでこれだけ出来るというお手軽感は大きい。

余談だけど、ウィンドウサイズを保存する機能に関しては当初実装するつもりは無く、各環境での画面解像度を取得して自動的に調整する仕様にしたかったのだけど、画面解像度を取得する方法が分からなくて仕方なくこうなってしまった。ていうか出来るのだろうか?調査不足かな、、。

このアーカイブについて

このページには、2007年9月以降に書かれたブログ記事のうちAIRカテゴリに属しているものが含まれています。

前のアーカイブはAIR: 2007年8月です。

次のアーカイブはAIR: 2007年10月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

AIR: 2007年9月: 月別アーカイブ

Powered by Movable Type 4.0