xCode4でInterface Builder(Nibファイル)を使わないで開発する

xCode4でInterface Builder(Nibファイル)を使わないで開発する方法です。

ストーリーボードいいですね、使いやすい。しかし、iOS4に対応していない。
iOS6が出て1年ほど経過すればシェアのほとんどをiOS5〜6になるとは思うのですが、今はiOS4のシェアもそこそこあるので、ターゲットとして外せないですよね。

使用しているxCodeは、4.4.1です。
起動してまずはプロジェクトを作成します。

Single View Applicationをベースに作成します。

ストーリーボードのチェックを外します。ARCはとりあえずそのままチェックにしておきました。

Nibファイルを永遠に削除します。(※NibファイルはXML化かれて、拡張子はXibに変更されています)

ソースの書き換えですが、MyAppDelegateのdidFinishLaunchingWithOptionsにある、ViewControllerをNibファイルで初期化している部分を確認します。

@implementation MyAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; // ココ
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

初期化をinitWithNibNameから、initに書き換えます。ついでに変更を確認するために背景を赤色に変更しておきます。
修正は、これだけ。

    // Override point for customization after application launch.
    // initWithNibName → initに変更
    self.viewController = [[MyViewController alloc] init];
    // viewの背景を赤色に
    self.viewController.view.backgroundColor = [UIColor redColor];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;

起動して確認します。UIViewControllerが赤色で表示されます。

最初に起動するViewControllerを、UINavigationViewControllerに差し替えるなど、あとは作りこんでいけば自分らしさが見つかるはずです。
食わず嫌いな感がありますが、Interface Builderを使わない方が性に合っている私でした。

Titanium Mobileで、iPhoneとAndroid両方にアプリリリースを目指して

Titanium Mobileを勉強しはじめたのですが、折角なのでiPhoneAndroid両方にアプリリリースを目指して開発をはじめました。
ここのOS独自部分で分岐はあるにしても、ひとつのソースで両OS用のアプリを開発をできるか検証していきます。


開発するための言語面での難易度を下記3つで比較すると

(もともとC、JavaJavaScriptは使ったことはあった上で)感覚的には


易 難
Titanium <<< iOS SDK << Android SDK
と感じています。
iOS SDKAndroid SDKでできることがTitaniumではできないこともあるので万能ではないので、その差異を知ればより簡単な選択肢としてTitaniumもありではないかと思います。
(iOS SDKAndroid SDKを、比べても作れるものが違うのですが・・・)


しかし、一番簡単と思われるTitaniumですが

  • Titanium Mobile 1.7と、Titanium Studio1.0が2011/6/14にリリースされたばかりなので、一般情報が古い。
  • 日本語情報が少ない。

前の情報で作っても動かないとかあるためはまり、英語文献をあさらないと作れません。情報の面では、英語の苦手な私は苦戦していますが、まずは目指すのは、それほど複雑なアプリではないため、がんばってクリアしたいと思います。

iPhone、Androidアプリ開発の入門書

2冊、本を買いましたのでご紹介しておきます。
1冊目は「Titanium Mobileで開発するiPhone/Androidアプリ 」
Titanium Mobileの本です。iPhoneAndroidの両方について解説されています。少し内容が古いですが、APIリファレンスとして使うにはいい感じです。



もう1冊は、「Web技術者のためのHTML5+JavaScriptで作るAndroidアプリ」
HTML5+JavaScriptAndroidアプリを作るための本です。WebViewを配置し、その上でHTML5+JavaScriptを動かす方法であたかもネイティブアプリのように動作させる方法を解説しています。

どちらも、JavaScriptで記述することができ、Eclipse+Javaや、xCode+Objective-Cよりは、学習の敷居が低いです。

Titanium Mobileで、iPhoneアプリを作りました。

iPhoneアプリを作りました」と言っても、サンプルを動かしただけですが・・・
前回、Windows環境でTitanium Mobileを使い、Androidアプリを動かしました。こんどはMaciPhoneアプリを動かしてみます。


前回同様、開発環境の構築ははしょります。Titanium Studioを起動するところからです。
起動すると下記のような画面が立ち上がります。まぁ、Windowsと同じです。

左側にあるCreate Projectを選択するか、FileメニューからNewを選択します。
WizardよりTitanium Mobile Projectを選択します。

Project name、App Id、Company/Personal URLを入力します。※App Idは、「.」区切りの2つ以上のワードを指定する必要があります。Project nameと同じにしていたらエラーになりました。
入力が終わったら、configure...を選択します。

Titanium SDK Directory、Android SDK Directoryを指定します。また、Default Android SDKを選択します。※Androdi SDKは2.x以上を選択すること。1.6で動かずはまりました。
OKボタンを押下、もとの画面に戻ります。

一応、Deployment targetsにAndroidもチェックをつけておきます。
Nextボタンを押下します。

このままの状態で、起動してみます。メニューよりRunを選択し実行します。
iPhoneシミュレーターを選択します。

が、しかーしシミュレーターが動きません;;

[ERROR] xcodebuild: error: The project 'FirstTitanium.xcodeproj' does not contain a target named 'FirstTitanium'.
[ERROR] 
[ERROR] Error: Traceback (most recent call last):
  File "/Library/Application Support/Titanium/mobilesdk/osx/1.7.1/iphone/builder.py", line 1139, in main
    execute_xcode("iphonesimulator%s" % link_version,["GCC_PREPROCESSOR_DEFINITIONS=__LOG__ID__=%s DEPLOYTYPE=development TI_DEVELOPMENT=1 DEBUG=1 TI_VERSION=%s %s" % (log_id,sdk_version,debugstr)],False)
  File "/Library/Application Support/Titanium/mobilesdk/osx/1.7.1/iphone/builder.py", line 1057, in execute_xcode
    output = run.run(args,False,False,o)
  File "/Library/Application Support/Titanium/mobilesdk/osx/1.7.1/iphone/run.py", line 39, in run
    sys.exit(rc)
SystemExit: 65

Project名にTitaniumが含まれるとうまくいかない情報を、半信半疑に試してみます。Project名を変更するのは大変なので、プロジェクトの作成からやり直します。
Application Name「test」、Application ID「com.test」で作成しなおして実行してみます。
こ、こいつ動くぞ。




ついでにAndroidでも動かしてみます。Run ConfigurationsにAndroid設定を追加します。

実行すると、おぉ、動きます。Windows版で表示されなかったタブのアイコン表示もされています。いい感じです。

iPhoneAndroidでだいぶ見栄えが違いますが、それぞれの標準的なUIにあわせてくれているということでしょう。
同じソースで、違うターゲットにデプロイできるのはいいですね。

Titanium Mobileを使った、Android開発をはじめました

Android開発を勉強しはじめたのですが、Android開発は、Android SDK + Eclipseによる開発が現状のデファクトと言っていいでしょう。(将来的にはHTML5+Javascriptに世界は流れると考えています。)
しかーし、私はひねくれ者なのでTitaniumやHTML5+Javascript(WebView)を使って、Androidアプリを開発してみたいと思います。まずは、Titaniumを使ったAndoridアプリからはじめます。Titaniumは、iPhoneアプリも作れるので出来れば両方で動かすことをやってみようと思います。


Titanium MobileはJavascript言語で記述し、iPhoneAndroidなどのネイティブアプリを作ることができる開発ツールです。
WindowsMacLinux用の開発ツールがAppcelerator'より提供されています。※iPhoneアプリを作るには、iOSSDKが必要なのでMacが必要です。
http://www.appcelerator.com/products/titanium-mobile-application-development/


Sign upすることで、開発ツールをダウンロードすることができます。
Androidアプリを開発するには、その他にAndroid SDKJDKが必要となります。それら3点をインストールします。インストール手順は割愛します。(私のインストールしたバージョンはTitanium Studio, build: 1.0.1.201106171427です)


起動すると下記のような画面が立ち上がります。

左側にあるCreate Projectを選択するか、FileメニューからNewを選択します。
WizardよりTitanium Mobile Projectを選択します。

Project name、App Id、Company/Personal URLを入力します。※App Idは、「.」区切りの2つ以上のワードを指定する必要があります。Project nameと同じにしていたらエラーになりました。
入力が終わったら、configure...を選択します。

Titanium SDK Directory、Android SDK Directoryを指定します。また、Default Android SDKを選択します。※Androdi SDKは2.x以上を選択すること。1.6で動かずはまりました。
OKボタンを押下、もとの画面に戻ります。

Deployment targetsより、AndroidにチェックをつけNextボタンを押下します。

Finishボタンを押下します。

自動でソースとリソース類が生成されます。
tiapp.xmlを確認します。Wizardで設定した内容が確認できます。

app.jsを確認します。タブ、ラベル、ウィンドウなどを組み合わせたソースが生成されています。
このままの状態で、起動してみます。メニューよりRunを選択し実行します。

Androidエミュレーターが起動し、アプリケーションが立ち上がってきます。※ソースを見る限り、タブにアイコンが表示されそうですが表示されていませんね。

タブをタッチするとウィンドウが切り替わります。

ソースを見る限りは理解しやすそうな感じです。あとは提供されているAPIを理解し、いかに組み合わせるかを学ぶ必要がありあそうです。
また、マルチプラットフォームをターゲットにする場合は、Android独自の部分、iPhone独自の部分の理解も必要になってきそうです。

iPhoneアプリを、Adobe Flash Professional CS5.5で開発し実機で動作確認

簡単なiPhoneアプリを、Action Scriptで作成して実機で動作させてみます。
Action Scriptなんて何年も使ってないので、すっかり忘却の彼方。フラッシュチュートリアルでググり、ふらちゅうさんのサンプルをいただいてきます。
カラフルな円がたくさん表示されて、タッチを避けて動き回るデモです。

最初に、新規にシンボルを作成します。

適当な大きさの円をかきます。

シーン1に戻って、フレーム1にアクションスクリプトを書き込みます。

アクションスクリプトは、こんな感じです。

動作確認を行います。ムービーシーンをプレビューしてみます。短いスクリプトで、こんなことが出来るのに感動。軽快に動作します。

iOS用にパブリッシュの設定を行い、実機用へパブリッシュを行います。出来上がったファイルを、iTunes経由で実機に入れて動かしてみると。
遅い。遅い。遅い。Windowsでのプレビューでの軽快さが失われています。5から5.5にかわりましたが、遅さは変わらずがっかりです。これだと用途が限られますね。
(※パブリッシュの設定でレンダリングGPUにすると、動きは軽快になりますが、半透明じゃなくなってしまいました。)

Flashでスパスパ動くゲームなんかを移植するには、向かないですね。


動画も用意しましたので、差をご覧ください。動画は、IS01(Android)で撮影したので汚いですが。
http://youtube.com/watch?v=I-4-4VuC6LY

Adobe Flash Professional CS5.5を入手

Adobe CS5.5を発売日前に入手できました、最速レポートです。

Adobe Flash Professional CS5.5
まずは、画面の確認です。起動画面です、iOSに加えAndoroidが追加されたようです。
iPhone OS」から「AIR for iOS」に名称が変わっています。

AIR for iOSを新規作成して、気になるデプロイ設定を見てみます。
一般タブは、「デバイス」「解像度」が追加されています。
バイスiPhone,iPad,PhoneおよびiPad
解像度:標準,高
解像度を高にするとRetina用となるのでしょうか。ここら辺は、実際に試してみたいと思います。

デプロイタブは、特に変更なし

アイコンタブは、iPad用とiPhone4のRetina対応用アイコンが追加できるようになっています。

その他、コードスニペットを確認すると、こんな感じでした。

Retina対応と、iPad対応がされたくらいなのかなーという感じです。あとはパフォーマンスが気になるところですね。


Adobe Device Central CS5.5については、下記のような変更点だそうです。

  • Flash Player 10.2 エミュレーションのサポート
  • iOS ベースのデバイスを含む拡張プロファイルセット
  • HTML5 エミュレーションのサポートと HTML デバッグ機能の向上
  • HTML5 エミュレーションのサポート
  • SWF ムービーの再描画のサポート