More Related Content
Similar to 2012 05-19第44回cocoa勉強会発表資料 (20)
2012 05-19第44回cocoa勉強会発表資料
- 5. 作ったもの(1)
「クリップリーダー」
電子書籍リーダー
iPad版
• 自炊PDFに特化
• evernote連携
• 段組書籍
iPhone版
(明日発売予定)
「勤怠くん」
勤怠メールを素早く送信
- 8. 画面構成
下図のような構成が一般的
リスト表示
タップすると詳細画面へ遷移
タブ選択で画面切り替え
- 9. 多くの他社製アーティストアプリも画面構成が類似
UVERWORLD Jonny’sWeb madonna
(sony) (HTML5ベース) (mobile roadie)
アーティストアプリに限らず、情報閲覧系のアプリは、
下部タブで画面切り替え+リスト表示
というスタイルが定着している
- 10. 割と面倒
• やりたいことは似たり寄ったりだが.....
–とくにUITableView
• データソースの定義
• デリゲート
• 背景イメージ
• UItableViewCellのデザイン..
• フレームワーク化したい
–アーティストアプリや、情報閲覧ツールとしての色彩が
強い一部のソーシャルアプリに特化すれば実現できるの
では無いか。
- 13. フレームワークの実現方法
多くのアプリの画面遷移
は、タブ選択を「根」と
したツリー構造であるた
め、再帰的にデータを記
述できるフォーマットと
して、XMLを採用。
→ガラケの着せ替えサー
図:弊社アプリの画面構成図(一部抜粋) ビスと類似
角丸の四角形が1つの画面をあらわす
*メニュー画面の遷移先がサブメニューになって
いるなど。
- 15. システム構成
• OSSライブラリ
–GDataXML
• baseURLを認識させるため若干改造した
–ASIHttpRequest
• 独自クラス
–In App Purchase
–RSSリーダー機能
–会員認証・課金システム
–写真・動画ギャラリー
- 17. 初期化コード
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {
....
// 文字列からXMLDocumentを生成
document_ = [[GDataXMLDocument alloc] initWithXMLString:responseString
options:0
baseURL:[[[NSBundle mainBundle] bundleURL]
absoluteString]
error:&error];
rootNode_ = [document_ rootElement];
[rootNode_ retain];
// ルートとなるビューコントローラーを生成
viewControllerInfo_ = [rootNode_ nodesForXPath:@"//screenTree/viewController" error:&error];
self.tabBarController = (FCTabBarController*) [FCObjectFactory objectWithXMLNode:
[viewControllerInfo_ objectAtIndex:0]];
self.tabBarController.delegate = self;
// ウインドウにアタッチ
[self.window insertSubview:self.tabBarController.view atIndex:0];
...
}
- 19. CMSシステム構成
サーバー
<XML>
.zip
画像
<XML> 完成したらパッケージ化
してバイナリ提出
実機・シミュレータで挙
動確認
実機・シミュレータで挙
動確認
企画者・デザイナー
- 22. Objective-Jって?
• JavaScriptにObjective-C/Smalltalkライクな構文を追加
• JSのプリプロセッサ・トランスレータとして実装
• AppKit/FoundationKit類似のクラスライブラリが構築され
ている
// ヘッダとソースに分かれてないので、@interfaceは無い
@implementation AppController : CPObject
{
CPWindow theWindow; //this "outlet" is connected automatically by the Cib
...
}
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
{
[self.splitView setPosition:200. ofDividerAtIndex:0];
[self.splitView setDelegate:self];
....
}
@end
- 24. ちなみに。。。
• Objective-ナントカファミリー
–Objective-Lua
–Objective-Modula-2
–Objective-Perl
–Objective-Caml ←これは違うみたいです
• 既存の言語に最小限の構文拡張+OOランタイムでOOPを
導入するという考え方はそんなに悪いアイデアでは無い
と思う
- 25. 反省点
• フレームワーク
– storyboard出ちゃったよ。。
–動的更新には使っていけるかな。。
• Cappuccinoによる設定ツール
–Nibからの再現性は今一歩
• Atlas(GUI構築のためのMacOSXネイティブアプリ)
–一般公開されていないよう(開発が止まってい
る?)
–CSS使えない
–HTML5 CanvasベースでUI作った方が良いのか
な...