2011年9月22日木曜日

FlashDevelop

一個前のエントリでさらっと書いたけど、現在AIRアプリの開発環境としてはFlashDevelopを使ってます。

これがとても優秀です。

私が今まで使ってきた開発環境は、

  1. FlexBuilder(現FlashBuilder)のトライアル試用⇒Eclipseベース
  2. 素のEclipse+Flex/AIR SDK(コマンドラインツール)
  3. Eclipse+AIR GEAR(コード補完用として)
  4. FlashDevelop
と辿ってきています。
1~3はどれもEclipseなんですが、重いんですよね(あくまで私の環境では、ですが)。
さらに2,3は今時の開発環境としてはチープで、コーディング以外はほとんどコマンドラインでやってました。

で、今使ってるFlashDevelopなんですが、
  • 軽いです。Windowsネイティブなんで。
  • コード補完効きます。
  • デバッガもGUIから使えます。
    ブレークポイントの設定とかコマンドラインでやると泣くんで、激助かる。
  • GUIビルダー的なものはないです。
てな感じ。
Push It!クライアントはGUIはそんなに必要ないんで、上の3つがあるだけで満足。いや、大満足。

もっと早く使っとくべきだった~。

Eclipseベースで重いことを除けばAIR GEARも期待してたんですけど(GUIビルダーも付いてるしね)、開発が止まっちゃってるみたいで、残念。

Channel APIがAIRで使えて、GAEがプレビュー卒業で

なんかもうわけわかんないタイトルですいませんね。ほんとに困ったことになったわけですよ。

前回のエントリ「GAEがプレビューを卒業します」で、Instance Hourがきつくて、無料枠が実質的に狭くなった(かなりね)ことを書いたわけなんですが、

Push It!において、ほとんどの処理って、ポーリングなんですよ。1クライアントあたり10秒間隔の。
で、こいつをなんとかやっつければ、Instance1個でもなんとかやってけるだろうと踏んでるわけです。

じゃ、どうやって、となるわけですが、ポーリング間隔を長くするのがしょぼいけど一番簡単。でも相手に届くまで時間がかかるのは嫌だ。Channel APIが使えりゃいいのになあ~。

でも、以前のエントリ「AIRでChannel APIを使う・・・続編」 で書いた通り、Adobe AIRでGAEのChannel APIが使えなかったわけですよ。

そんなことを嘆いていたところ、世界のどこかの気の効く人がこんな報告をGoogleに上げてくれてまして、9/1に修正されたっぽいです。修正されないだろうなと諦めてたんですけどね。やった!

で、遅まきながら最近試してみたところ、

あれ?以前と変わらず使えないけど・・・。

と相成りました。

困ったね~なんて思って、成功事例を探していたところ、またまたGAEのIssueTrackerですよ、あなた。
Document that Channel API only support Air >= 2.6」というタイトルのIssueで、英語読解力のない私なので本文は読んでませんが、タイトルからして、AIR2.6以上でないとChannel APIは使えない模様。


調べてみると自分の開発環境はAIR2.0SDK。きた(なにが?)


早速2.6に入れ替えてみようと思ったけど開発環境として使ってるFlashDevelopでの入れ替え方が良く分からないのでやっぱりこれも検索してこのページを発見。いや、親切な人っているもんだね。日本もまだ捨てたもんじゃないよ。


さあやってみよー、キターッ!


AIRにてChannel API使えました!ステキ。
「AIRでChannel API使えねー(そんなタイトルだったっけ?)」の記事にリンクはってくれた「この人」もきっと喜んでいるだろう。


ということで、AIRでChannel API使えるようになったんで、これでポーリングやめてChannelに乗り換えだ!とか思った人!甘い!俺だけど!

ここで、GAEの新料金プランをもう一度おさらいだ。
Channel APIのとこ良く見て。


100 channels opened

と書いてあるから。ちなみにこれ、1日あたりね。
Channelはクライアント毎(ユーザ毎じゃないよ。ブラウザのタブ一枚毎とかそういうこと)に張る必要があります。そして1つのChannelの寿命は2Hです。

24時間PCをあげっぱでPush It!使ってる人はいなさそうなんで、仮に1クライアントあたり8H/日つないでたとして、そのクライアントは最低4回Channelを張ることになる。
すなわち100÷4で25クライアントが無料でサポートできる限界だ。
席を離れる度にスリープにしてるようなまじめな人とか、劣悪な無線LAN環境だとその度にChannelが切れるので、真の限界はさらに低い。


待て待て、本当か・・・?

サービスとして成り立ちませんけど。まあ、無料で使わせてもらってるんで文句言えないんですけど。でも今までは「8,640 Channel Create/Day」だったのにいきなり制限きつくないかと思うんですけど。
大した額じゃないんだから課金すればいいんじゃ?ってそれ趣味でやってる家族持ちには禁句だから。


困ったことだよ・・・。

2011年9月17日土曜日

GAEがプレビューを卒業します

もうだいぶ前からアナウンスされてるんですが、GAEがプレビューを卒業します。11月に。

で、その際に価格体系が変わります。(この辺

これまでも無償の範囲、有償の範囲はあったんですが、今回の価格改定は、無償利用を相当制限しそうです。ちなみにPush It!は無償の範囲で今のところはなんとかやってます。

さて問題は、Instance Hourです。
Instanceって、まあ、アプリケーションサーバ1個ってことなんですが、これが1日あたり24時間までが無料。それを超えると有料です。
インスタンスはアクセス量に応じて増減しますが、Push It!の場合、基本的にアクセスされ続けているので、最低1つは必ず存在しています。これで24Instance Hour。
アクセスが一瞬でも集中すると、インスタンスが自動で追加されて、めでたく有料となりました。

まじか〜。

Admin Consoleってところで、自分のアプリがプレビューを卒業した後はいくら課金されるかが見れるんですが、毎日60Instance Hourは使ってる感じ。ほぼ2Instanceが常に存在して、忙しいときは3個いるくらいの感じでしょうか。

え〜、これを1個に抑えるんですか〜?
ていうか、1個しか使わないっていう設定にできるんでしょうか〜?

Push It!はですね、CPU時間で言うと、Push It!は0.3H/日しか働いてないんです。
GAE/Pythonだと1Instanceは一度に1リクエストしかさばけないので、同時にリクエストを受けると、インスタンスが1個だと、後着のリクエストは先着が終わるまで待たされることになるわけですけど、まあ、確率的には低いはず。
ブラウザからだと若干引っかかりを感じるかも知れないが、Push It!クライアントはそもそもバックグラウンドで勝手に通信してるから気にもならないだろう。

てことで、1個しか使わない設定にできるんですよね?>Google様

勝手にインスタンスを増やしたあげくに、24Instance Hourを10時間くらいで使い切って、課金設定をしてないから残り14時間は使用できません、とかほんとやめてよね。

うむ、しかし困ったのぅ・・・。

2011年5月17日火曜日

話題を3件ほど

話題1.前回エントリのGAEのChannel APIがAIRで使えない件ですが、外国のどなたかがIssue Trackerにあげてくれてました。めでたし・・・なわけない。正直、使用者数から考えて優先度は低だろうな。だいたい、GoogleのWebAPIで、AIRだのActionScriptだの見たことないし。

話題2.GAEのSDKが、1.5.0になりました。大きく変わってるんですが、Quotaがまた変わりました。回数系の制限が取っ払われて、リソース使用量(帯域とかデータ容量、CPU使用時間など)のみになりました。APIを呼びまくってでも、いかにリソースを食わないプログラムを書くか、腕の見せ所です(前向きに捉えれば)。

話題3.すっげー久々にPush It!をバージョンアップしました。といってもサーバ側。でも有用だと思うのでぜひご活用を。
  • ニックネームを登録できるようにした。
    →タグを共有/公開する際に、Googleアカウント(という名のメールアドレス)をさらさずに良くなりました。
  • メールで付箋紙が登録できるようになった。
    →出先などでふと思い立ったらその場でPush It!にメール!

2011年4月25日月曜日

AIRでChannel APIを使う・・・続編

GAEのChannel API
という前回のエントリにて、AIRでChannel APIが使えねーよー、と嘆いてはや・・・忘れたけど、打つ手なしで困って途方に暮れて放り出していたところ、ふとしたこと(あまり関係ないことだったんだが)からヒントが見つかりました。

AIR でサポートされていない WebKit の機能

このページの先頭にて、

window.postMessage 経由のクロスドメインメッセージング(AIR は独自のクロスドメイン通信 API を提供)。

という文言が。

あやしいぞ、と思って、GAEのChannel APIのJavascriptの中を覗くと、

使ってるよ、postMessage・・・

ビンゴかな・・・困ったね。
独自のクロスドメイン通信APIを提供、って勝手なマネすんな!Adobe!世の中一般のJavascriptライブラリが使えなくなるじゃねーか!

おまけにChannel APIの将来の本命と目される「WebSocket」についてもお得意の「独自の・・・」なんだそうで。

アホなの?

う~ん・・・。う~ん・・・。
せっかくChannel APIっていう素敵な代物があるのに指を加えて見てろと・・・。
読み込まれたHTMLにpostMessageを無理やり埋め込むってできるのかなあ。
できないんじゃ今のまま短周期ポーリングによる疑似Push継続だよ・・・悲しいし、しょぼい。

あ゛~!

どうしてくれよう。 

★★★★★★ 宣伝 ★★★★★★
そんなこともありますが、オンライン&オフライン付箋紙ソフトPush It!は今すぐ、誰でも、問題なく使えます。今すぐページ右上のリンクをClick!

2011年3月9日水曜日

GAEのChannel API

あ~さて、GAEのChannel APIが公開されてけっこうな時間が立ってるわけですが、未だに使えません。

Channel API自体は使えるんですが、AIRから使えないという話です。
Channel APIのクライアントライブラリはJavascriptになっていて、そのままじゃもちろんAIRでは使えない(FLEX形式の開発の場合)ので、HTMLLoaderクラスにJavascriptを読ませて、ActionScriptにブリッジする、みたいなことをしようとしてるんですが、ブリッジする以前に、HTMLLoader上のJavascriptがブラウザで動くようには動作してくれない。

困ったちゃんだなあ。。。
私がスーパープログラマなら、Javascriptを解析してActionScript化しないでもないのだけど、そんな技量はないし、あったとしても、ライブラリの中身が変わる可能性もある(現状はGoogle Talkのサーバを利用してるみたいだけど、将来的にはもっとネイティブなものに変わる可能性大)ので、あまりいじりたくないんだよね。いや、技量ないですけど。

かれこれ1ヵ月くらい悩んでるんだろか。もう諦めたい・・・。

2011年3月2日水曜日

AIR2.5

遅ればせながら、AIR2.5対応でもしようかと、最新のSDK(AIR SDKとFLEX SDKね)を落としてきて、コンパイルかけたら。。。あらら?mxmlで「そんなプロパティねぇ!」とか言われてしまう。

いつからなのかちゃんと調べてないのだが、従来使えていたプロパティは「Halo」とかいうテーマを使うことにしないと有効にならない模様。。。

って、ええと、、、どうやってテーマを適用するのかわかんないんですが・・・。

Flash Builderが欲しいよう!

と、アフィリエイトのテストをしてみる俺だった。
いや、欲しいのはほんとです。横の広告クリックしてみんな購入してください。30本くらい買ってもらえると多分自分が買えるだけの収入になります。

冗談はさておき、Adobe製品って高いなあ。。。AIR GEARって開発進んでるのかなあ。