【iOS勉強会】ヤフー vs クラスメソッド に参加してきた
( iOS )面白そうな勉強会が開催されると耳にして【iOS勉強会】ヤフー vs クラスメソッド に参加してきました。
-
ヤフーさん発表資料 http://techblog.yahoo.co.jp/ios/yxcm/
-
クラスメソッドさん発表資料 http://dev.classmethod.jp/study_meeting/yxcm-epilogue/
形式的にはYahoo!さんとクラスメソッドさんが交互にiOS開発に関連するテーマに対して発表してどちらグッドだったか競う会になっていました。よかったらその場でボタンを連打して投票する仕組みがあるのですが、リアルタイムにFacebook風ないいねの花火みたいなのでがドーンと別画面で表示されてわかるのはかなり面白かったです(Node.jsかな…)。
そのなかで便利そうなものをpickupして自分でもやってみました。
code snippet
Code Snippet Library
を開いた状態にする
対象のコードを選択しといてそれLibrary側にドラッグアンドドロップ
そうするとMy Code Snippet
が出来上がるのでそれを適当に編集すると終わりです。
作成されたSnippetは/Users/username/Library/Developer/Xcode/UserData/CodeSnippets/
いかに保存されます。
試しにUIAlertViewをいれてみました。
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle : NSLocalizedString(@"Title", nil)
message : NSLocalizedString(@"Message", nil)
delegate : self
cancelButtonTitle : NSLocalizedString(@"OK", nil)
otherButtonTitles : nil
];
[alertView setTag:1];
[alertView show];
Objective-Cって結構冗長になりがちなので、よく利用するものは登録しておくとよさそう。
code template
よくファイルを作成するときにはデフォルトでその親クラスに合わせたコードなりヘッダコメントなりテンプレートを作成してくれるのですが、カスタマイズしたくなったときは/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates
にいっぱいテンプレートが用意されています。これを自分のディレクトリにコピーして利用するといいです。
mkdir -p ~/Library/Developer/Xcode/Templates/File Templates
cd ~/Library/Developer/Xcode/Templates/File Templates
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates/* .
File Templates
いかにCocoa Touch
ディレクトリがあるのですが自分がカスタマイズしたものだよとわかるようにMy Cocoa Touch
とか作成してみる。
ファイルを作成するときにオプションで以下のような設定をするとオプションでテンプレートを利用するかしないか決定できるようです。Objective-C class.xctemplate/TemplateInfo.plist
ファイルで設定するのですがXML形式なっているのでそこのOptions
以下に新しい設定を追加します。
<dict>
<key>Default</key>
<string>false</string>
<key>Identifier</key>
<string>Nakajijapan</string>
<key>Name</key>
<string>Nakajijapan</string>
<key>RequiredOptions</key>
<dict>
<key>cocoaTouchSubclass</key>
<array>
<string>NSObject</string>
<string>UIViewController</string>
</array>
</dict>
<key>Type</key>
<string>checkbox</string>
</dict>
NSObject/___FILENAME___.h
を上書きしてもよいのですが、念のため自分用に作成しておきましょう。NSObjectNakajijapan/___FILENAME___.h
な感じで。(suffixは適当です。。。)
NSObjectNakajijapan/FILENAME.h
//
// ___FILENAME___
//
// Created by ___FULLUSERNAME___.
// Copyright ___YEAR___ ___FULLUSERNAME___. All rights reserved.
//
___IMPORTHEADER_cocoaTouchSubclass___
@interface ___FILEBASENAMEASIDENTIFIER___ : ___VARIABLE_cocoaTouchSubclass___
@end
NSObjectNakajijapan/FILENAME.m
//
// ___FILENAME___
//
// Created by ___FULLUSERNAME___.
// Copyright ___YEAR___ ___FULLUSERNAME___. All rights reserved.
//
#import "___FILEBASENAME___.h"
@interface ___FILEBASENAMEASIDENTIFIER___ ()
@end
@implementation ___FILEBASENAMEASIDENTIFIER___
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
これで自分好みの設定にできました。
参加してみて
吉田 一星さんの発表が印象的で
既存のAPIをそのまま使うアイディアは他の誰かに実現されている Appleが未だ実現されていない機能を先に作れ
あえてブログでも書くようなものじゃなくてごくごく当たり前のことなのですが、これおもろくね?って思ったものはだいたいというかしょっちゅう世の中に出ちゃってるんですよね。その度に落胆しているnakajijapanですが。。。 まぁ、自分もまだAPIを利用してなんとかアプリを作っているレベルなのでドキュメントにものどこにもないような「え、そんなんできんの!!」っていわれるもの作っていきたいですね。もちろん、アプリのアイディアとか企画は別にして。技術的な観点からのはなしでした。まだまだ頑張りまっしゅ。
あと、自分でも使えそうなTipsが、今回のエントリ以外にたくさんあったのでちょこちょこ利用していこうと思います。