■趣味プログラミング■
長らく自営業で土日も趣味だか仕事だかわからないような状態でMacに向かっていたのですが、せっかくサラリーマンになって土日はしっかり休めるのだからと30年ぶりぐらいに趣味のプログラムを再開しております。
で、iOSアプリなんかをじわじわ書いています。昔はiPhoneアプリといえばXcodeでobjective-cで書くしかありませんでした。しかし、私はどうもこのobjective-cというヤツが苦手でした。メモリ管理みたいな足回りの処理を書きたくねぇ、ってかいうか頭悪いから書けないorz
そんなこんなで、もっとラクのできるツールはないか探してみました。
条件としては:
ラク
メモリリークで苦しむのはいや
できればAndroid / iOSクロスプラットフォーム
できればAppStoreで公開したい
Force.com/Database.comを比較的楽に使える
WYSIWYGなGUI build toolがある
てな感じで。
■Flash Builder 4.5■
ラクと言えば一番ラク。通常のFlashより使えるGUI部品が少なかったりメモリ消費大きいけど
「とりあえず15分でforce.comから取ってきたデータを表示するアプリ書け」 って言われても不可能ではない。
ただ、やっぱり重い。なるべくラクをして生きていきたい私としては、ごく初歩的なアプリですら重くなってしまう環境はカンベンしていただきたい。
■混迷■
この辺から何故か
「どうせならAndroidとiPhoneクロスプラットフォーム」 を目指すようになりまして。
■PhoneGapとTitanium Mobile■
TitaniumはHTML5+JavaScriptのWebアプリをラップしてスタンドアローンアプリにしてくれるツール、Titanium MobileはJavaScript+CSSっぽい言語でソースを書くとネイティブコードを吐いてくれるツール…っていう定義で良いのかしら。
どっちのツールもGUI Builderがない。ただし、PhoneGap+jQueryについては、Dreamweaver CS 5.5でGUIを使えるようになったし、この当時重視していたクロスプラットフォームという条件を無視すれば、PhoneGap+DashCodeという選択肢もある。
しかし、どっちも
(少なくともこの時点では) 例えば変数名を間違えた状態でもそのままビルドできてしまい、コンパイル系言語でおなじみの
「そんな変数ねえよ」 っていうエラーが出てくれない。実はPhoneGapのチュートリアル、それで半日ツブしてしまいまして…試して見たらTitaniumも同じだったので、
「これは私にはムリだ」 と離脱。そういうのを防ぐためにもTestってものがあるんですが、私はテストコード上でも同じ間違いをするという奇跡的なボケをかます持ち主なのでダメです。
とりあえずヒトに頼まれたアプリを1本リリースしてみたもののしんどくて見事に挫折しました。
■DashCode■
これはもちろんiOS専用のツールなんですが、HTML5+JavaScript+CSSでほとんとネイティブと見た目変わらないWebアプリを作ることができて、上記PhoneGapを使ったり、ちょっとしたラッパを使えばAppStoreで売り出すようなネイティブアプリも作れる。
DashCodeはApple製の専用開発ツールでEclipse系と違ってサクサク動くし細かいところに気が利いていて使いやすい。Eclipseの見た目も使用感も嫌いな私としてはまさに手に馴染むツール。iOSアプリを書く上でできないことはほとんどない。言語もJavaScriptなのでメモリリークの心配いらないし、何より一番得意な言語なので少なくとも言語習得の負荷がないのはありがたい。
ただ、Force.comにアクセスするためのコードは自分で書かなければいけない。私はやっぱりデータベース系アプリ屋なので、クラウド上に置いたリレーショナルデータベースをあれこれいじりたい。そうなった場合、制約はあるもののWebアプリやFlashアプリとの連携を考えるとForce.com / Database.comへのアクセスがラクにできた方が良い。
そんなわけでDashcodeのお勉強も現在は保留中です。
■で結局Xcode■
Xcodeでobjective-cでiPhoneアプリ書いてます。最初の条件は忘れてくださいははははは。
悩んでいる最中にSalesforceから
iOS用SDK が正式にリリースされたことが決定打になりました。OAuthに対応しているし、queryもさくっと書けてNSArray of NSDictionary
(おお懐かしい、WebObjects的に) に落ちるので、扱いもラク。タイポもちゃんとコンパイラが拾ってくれるw
何より現在のXcode 4.1ではRhapsodyやWebObjects 4の頃とは違い、操作上のへんな制約も減ってSeaser2のひがさん的な意味で
「流れるように」 作業ができる。繰り返しになるけど、Eclipseのどうももっさりした動作とへんな色使いとずんぐりしたGUIが好きになれない自分としてはXcodeは違和感なく操作ができて手に馴染みます。
objective-cも付き合ってみればそんなに悪いやつじゃないしw
まぁしかし一つのFrameworkを手足のように操作できるようになるのは簡単なことではないので、テキストだらけの地味な画面を相手に遊んでます。
<a HREF="http://ws.amazon.co.jp/widgets/q?rt=tf_mfw&ServiceVersion=20070822&MarketPlace=JP&ID=V20070822%2FJP%2Fkurahasiya-22%2F8001%2F34fb6582-059c-4ecf-8bd4-8889be393bc0&Operation=NoScript">Amazon.co.jp ウィジェット</A>
入門書はXcode4に対応しているやつが良いってんでとりあえず左の書籍を買ってみました。開発の流れを把握しやすい作りになっていてわかりやすいです。入門書の役割はこの「作業の流れを知る」ってことだと思ってます。ググれば何でも調べられるこのご時世、ピンポイントで知りたいAPI情報などはいくらでも探すことができますが、初心者が一番最初に越えるべき壁はツールに慣れることですからね。
■追記(2011/10/30)■
上記iOS用SDKは、Xcode 4.1 + iOS5では動きません。起動しても1回目はスプラッシュが出た後でSalesforce認証画面の後白い画面に変わりそのまま、2回目以降はスプラッシュ出た後にクラッシュします。
■追記(2011/11/06)■
Xcode 4.2にしたら動くようになりました。よかったよかった。