「開発」タグアーカイブ

2010-10
26
00:40:55
Titanium mobileが盛り上がっているようで何よりだ


実はしばらく前にTwitterのTLで流れてたのを見て触りだしてからはまっていたので、最近の盛り上がりは嬉しく思います。なんたって一時期は日本でTi mobile使ってるのは数人ぐらいしかいないんじゃないかとか思ってたぐらいなので。
へえまだアルファブロガーっているんだぁと思った次第。

実は既にそれなりにまともなiPhoneとAndroidアプリをTi mobileで作ってそれぞれAppStoreとAndroidマーケットで公開していたりします(本名で出してるからここでは紹介しない)。
ということで僕も別にそんな経験あるわけではないけど使っていて感じたこととかつらつらと書いてみますよ。

因みにTi mobileの日本での先駆者と言えばまとめサイトも作られてるdonayamaさんとかyuichi_katahiraさんとかですかね。また Yuichiro MASUIさんはAdMob用など幾つかiPhoneモジュールを公開されていらっしゃいます。

iPhone版は優秀だけどAndroid版は発展途上

僕の経験で言うと一週間でiPhoneアプリは出来てしまったんですがそこからAndroidに対応させるのに二週間かかりました。原因はAndroidでのバグ?らしき挙動とiPhone版さの差異のためです。
iPhone版は非常に優秀でJavaScript好きの人ならさらさらと簡単にアプリを作れてしまうと思います。ただそれと同じつもりでAndroid版に拡張し始めると要領があまりに違っていてかなりはまりました。
例を挙げると、何故かiPhoneでは当たり前に取得できるresponseXMLがAndroidではRSSフィードによっては文字化けしたり(結局最後まで原因はわからず、responseDataを使ってパースした)、windowのxIndexがwindowのlayout指定によって順序が異なったり、WebViewで取得したHTMLは外部からは取得できなかったり、windowのblur/focusイベントは動作しなかったり・・などなど。
「iPhoneとAndroidでは画面サイズとかが異なるからコードを分けないといけなくなる」程度の話が流れていますがそれどころではないです。僕はかろうじて同一レポジトリに閉じ込められましたが、現時点ではコードの規模によっては別々に開発することも考えた方がいいこともあるでしょう。
Titanium Developer製品(Ti mobileはその一環)はOSSで開発が進められているのですが、チケットを見てもAndroidのissueは多いように見えます。
まだまだ開発途上の製品なのでそれにうまく付き合えるかどうかがポイントになります。

iPhoneとAndroidのJavaScriptの解釈が異なる

恐らく先のAppleによる「AppStoreからの開発ツールの締め出し」騒動に関係していると思われますがiPhone版ではコンパイル時にネイティブコードに変換します。対してAndroidではJSエンジン(恐らくGoogleのV8?)でリアルタイムにインタープリターもしくはJITで実行しているようです。つまり解釈されるエンジンが異なるのです。これが前項の原因でもあり、また両者での違いを経験から読み取っていく必要があるでしょう。

メモリ管理しなくてもいいということはメモリ管理できないということ

僕もTi mobileを一番気に入っているのはメモリ管理を気にしなくて良いと言うこと。特にiPhoneでは顕著ですよね。しかし一方ではそれはメモリリークなどの管理をできないということも意味します。
開発元のAppceleratorでは「メモリリークはうまく回避しているよ」と言い切っていますが 実際に試してみると細かなメモリリークは発生し得るようです(特にネットワーク周り)。
あまり問題にはならないレベルとは思うのですが、JavaScriptに書き慣れていないとGCを意識できずオブジェクトを残し続けてしまいがちです。ブラウザでもよく話題にはなるのですがかなり巨大なコードにならないとあまり気にしない部分かと思います。しかしTi mobileではGCを意識した変数設計をしておかないと簡単にメモリを食い潰すアプリができてしまいます。
こういう時は逆にGCに頼るのではなく自由にメモリ管理も出来る仕組みがあるといいですね。

ドキュメントを信じるな、アンドキュメントな仕様が多すぎる

これはAppceleratorが基本的にはOSSで無償で提供しつつビジネスとしてサポートを有償にしていることと関係していると思うのですが、ドキュメントがあまりに杜撰です。
そもそも返値とパラメータが全く異なっていたり(多分コピーミスなど)、ドキュメントだけではちょっと複雑な仕様を実装しようとすると悩むことが多いかも知れません。
他の方もおっしゃっているように、APIドキュメントよりもサンプルアプリであるKitchenSinkを最大限利用しましょう。特にiPhoneとAndroidの実機に実際インストールして動作を確認することをお勧めします。
またドキュメントはあまり参考になりませんが、ディスカッションフォーラムは割と参考になることが多いです。凄く盛り上がっているとは言えないけど みんな同じ事で悩んでいるのです。

拡張モジュールを作るならObjective-CとJavaは知っておいた方がいい

Ti mobileでもiPhoneとAndroidのすべての機能に対応しているわけではありません。また世には様々な便利なライブラリが公開されていますが、当然それらはObjecive-CやJavaで書かれています。Ti mobileにはそれらネイティブコードを取り込むための「モジュール」という仕組みが用意されているのですがそのためにはObjective-CやJavaでもコードを書けなければなりません。更に言えばiPhoneやAndroidでどのようにアプリを開発するかの知識が必要です。
因みに僕は広告を掲載したかったのですが当然Objective-CやJavaのライブラリやサンプルしか提供されていないので、独自にiPhoneとAndroid用にモジュールを作成しました。広告程度なら表示するだけなのでそんなに難しくないです。但しiPhoneやAndroidの経験がないとかなり難しいと感じることでしょう。
なのでTi mobile自体は単に「Objective-CやJavaを知らなくてもJavaScriptを知っていればiPhone/Androidアプリを作れる」ツールなのではなくて、まずはやはりiPhoneやAndroid開発をある程度経験してからの方が相応しいツールなのではないかなぁと思います。

最後はコードを読もう!

先に述べたようにTi mobileはOSSとしてすべてのコードが公開されています。実際現時点でのコードをgithubから取得して自分でコンパイルして使うことも出来ます(Androidの拡張モジュールはそのようにして開発します)。
なのでどうしてもバグなのか仕様なのか回避のしようがなかったら最後はコードを読んでみることをオススメします。
個人的な例では、どうしてもAndroidの実機で位置情報が取得できない問題がクリアできなかったのですが、コードを読んでみるとgetLastKnownLocation()のみで取得していることが分かりました。これは時々ディスカッションでも話題になっていますが初回には位置情報は取れないのです。
ということでプロバイダーをNETWORKにして回避したのですが(これはこれでどうかと思いますが)、こういう部分もOSSとして提供されている利点であり、活用しない手もないでしょう。

といったところでしょうか。
何やら文句と愚痴が多くなった気もしますが(笑)、個人的には大変気に入っています。特にJavaScript好きには堪らないツールとなることでしょう。
一方で「初心者でも簡単にiPhone/Androidアプリが作れる」風のイメージには疑問を感じていて、どちらかと言えば現時点でiPhone/Android開発をバリバリされてらっしゃる方にこそ効率を上げるためにぜひオススメしたいツールです。
まずは使ってもらって、少しでも日本で広まるといいなぁ。

2009-12
04
14:43:28
TweetCOM 1.1 Lite/PRO をリリースしました


この度rocaz.netではTwitter向けMicrosoft COMコンポーネントであるTweetCOMを拡充し新たに1.1として、無償版 Lite と有償版 PROに編成してリリースしました。
TweetCOMはTwitter APIをMicrosoft COMコンポーネント/インターフェースで実装することで、C++、VB、JScript/VBScript、WordやExcelなどのOffice製品(VBA)など様々なアプリケーションやプログラミング・インターフェースからの利用を実現しています。

Liteは基本的なAPIのみ提供し個人利用であれば無償でご利用になれます。
PROは網羅的なAPIを提供し個人利用以外の利用形態ではPROの利用が必要になります。年29,800円のライセンスで販売され、主に企業内でのTwitter向けソリューションの開発を支援することを意図しています。
また、PROは二週間の試用が可能です。

Twitterは単なるWEBアプリに留まらずプラットフォームとしての地位を確立しつつあり、企業活動においても重要なマーケティング・コミュニケーション戦略の骨子と位置づけられるようになってきましたが、まだ個人ユースでの供給に重きが置かれ、企業ユーザー向けのソリューションは少なく企業内での開発が伴います。
TweetCOMでは様々な既存のプログラミング環境との親和性も高く、そうした現状に少しでもお役に立てるのではないかと思います。

詳しくはTweetCOMサイトを御覧下さい。

2009-08
19
03:15:00
Windows7に移行してみた


MSDNで製品版が公開されたので何となくVista Ultimateから7 ultimateへ移行してみました。
マシンはDell Inspiron 530sです。
20090819024145.jpg
日常の環境はMacへ移行してしまっているので最近はWindowsを使うのは開発時だけなんですが、それでも開発環境が動かなくなると困ってしまうのでちょっと冷や冷やでした。が、好奇心にはかないませんでした(^^;
結論から言うと問題なく開発環境や日常的な利用も含めて動作しています。よかったよかった。
開発に使っているVisual Studio2008はまだ32bit版しかないのでx86環境にしたというのもよかったんでしょうが、ニコニコPodderもちゃんと動いています。
Vistaもいい加減二年ほど使ってきて環境も汚くなってきたのでアップグレードではなく新規にしてみました。
まずは必要なファイルについては、CドライブとDドライブにパーティション分割されているのでDへバックアップ。
次にインストールなんですが、DAEMON Toolsを使ってVista上からインストールしたのでドライブの再フォーマットは行えず、Vistaの入っているCドライブへそのままインストールされることになります。
ただし古いVista環境は「Windows.old」というフォルダへWindowsフォルダやProgram FilesフォルダなどVistaのシステムファイルはすべてまとめてバックアップしてしれるので、完全に新規インストールのイメージになります。
このバックアップはなかなか秀逸ですね。Vistaからこうだったっけ?
そこから開発環境と言えど使うであろうソフトを順番に入れていきます。
現在インストールしているのは、Opera10 Beta3、Safari、Google Chrome、iTunes+QuickTime、Flash Player、Acrobat Reader、Office2007、Visual Studio .NET 2003、Visual Studio 2008、ATOK2009、MobileMe、xmarksZumoDriveTeraPad、WinSCP、TeraTerm、SynergyX-Finderといったところです。
すべて動作は問題なし。
アンチウィルスソフトは、まだノートン インターネットセキュリティ2009のライセンスが3ヶ月ほど残っていたんですがあまりの重さに辟易していたので、試しにESET NOD32を入れてみました。
まだ試用版段階ですが、確かに軽くていいですね。OSが違うので比較にはならないけど、時折変なプロセスがCPUを100%掴まなくなっただけでも満足です。
検出率もトップクラスという噂だし、これでいいかなぁ。
そもそもノートンは動作が重すぎるのをカバーするためにプロセスの信頼リストだのっていろいろ付けるから余計に重いんだよね。
7を使い出して感心したのは、タスクバーがめちゃくちゃ使いやすくなりました。
クイックリンクと兼ねるというのは如何にもMacからのパクリっぽくはありますが(笑)、でもこういう起動やウィンドウ切り替えを一カ所に集中するというのが一番使いやすいですね。
Macに比べてのアドバンテージは、Aeroでウィンドウが確認できたり、複数ウィンドウの切り替えをそこから選択できたり、またそのアプリで最近開いたファイルも選択できる、というのはいいアイデアですし便利です。
Macで逆にパクってくれないかなぁ。
ということで問題らしい問題もなくあっさり足がけ二日で移行できました。
7は評判以上にVistaとの相性はよさそうですね。
「これで後二年はまた戦えるぜっ」とか思ってますが、果たしてどうなりますか。

2008-12
30
23:07:00
ニコニコPodder R1.0.12をリリースしました


今回初の安定版としてR1.0.12をリリースしました。
安定版としたかったため大きな機能変更は入れていません。基本的にマイナーなエラーハンドリングや処理の整理に留めています。
R1.0系列はこれにてコードフリーズとしR1.0.12を安定版として次の安定版が出るまでは継続提供します。
今後の開発はR1.1系列へ移行し、平行してR1.1系列の開発版をリリースする予定です。
なお今回のバージョンより、大変申し訳ないですがアナウンス枠を設けました。何かの際のお知らせの他、広告表示を行わせて頂いています。
サイト運営費、開発ツール購入などでの出費もかさんでおり、また新たなサービスなども手がけられればと思っています。ご理解頂けますようお願いします。この広告枠より購入などして頂けますと大変助かります。
継続して開発が行えるよう努力したいと思っていますので、皆さんのご理解とご協力をぜひとも宜しくお願いしますm(_ _)m
詳細はまだお知らせできませんが(細かく決めてないだけですが)、R1.1系列では少し大きな機能追加から行う予定です。
これまでもコメント欄でいろいろ要望を頂いています。対応がどうなるか分かりませんので、それぞれ返答はしないようにしていますが、もしご要望などがありましたらこの機会にコメント欄までお寄せください。
# 随分昔に要望したんだけど忘れてんじゃね?って場合には再度寄せてもらった方がいいことあるかも知れませんし無いかも知れません(^ ^;
どうぞ宜しくお願いします。

2008-02
03
17:52:00
ニコニコPodder R0.99をリリースします


東京はずっと雪ですよ。
外に出る気がしなかったので、R0.99をリリースしてみました(それだけじゃないけど
■初期利用時にマイリストの履歴が保存されないバグを修正しました
多分これまでは新規ユーザーはマイリストの履歴が使えなかったはず。。正直すまんかった
■Firefoxのキャッシュフォルダなどが無かった場合にエラーになっていたのを修正しました
なんか報告もらってたような気も。これで直ったと思います。が、キャッシュフォルダを移動していた場合は、FFのキャッシュは使用しません。現状では制限です。
■iTunesにサムネイルを登録するかどうか選択できるようにしました
電車とかで操作する時に隣に覗き見られてヲタばれするのが嫌な人用(俺か!
■割と細かくエラーを判別して表示するようにしました
プログラムを整理して、タイムアウトエラーなどは見分けられるようにしました。
その他変換されたファイルが動画(V)なのか音楽(M)なのか表示したり、プレイリストをユーザー作成のものだけにしたり(一部制限あります)、見栄え変えたり、細かくバージョンアップしています。
更に、まだ確信が無いので変更リストには載せませんでしたが、実は今回開発環境をVisual Studio 2005からVisual Studio 2008へ変更したんですが、何故か例のiTunesのCOMエラーが出なくなったような気がします!
厳密に全く出なくなった訳ではないようですが、格段に頻度は低くなっています。
ひっとしたら僕の環境だけかも知れず、期待せずに試してもらえればと思います。もし改善されていたらぜひ教えて下さい。
バージョン番号が尽きてきたせいもあるんですが、もしこのバージョンで安定しているようでしたら、まずの完成版としてR1.0を安定版としてリリースしたいと思います。
もちろんそれとは別に開発版のリリースも続ける予定です。
ご意見などありましたらまたコメント欄までどうぞ。
* R1.0.0をリリースしました。今後はそちらへどうぞ