俺のxcodeがibeaconを 発信しながらgistに投稿できるわけがない
DESCRIPTION
2014/3/12 iOS_LT #8 発表資料TRANSCRIPT
![Page 1: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/1.jpg)
![Page 2: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/2.jpg)
スタバで呪文 (10万DL突破)
![Page 3: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/3.jpg)
![Page 4: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/4.jpg)
Xcode Plugin カッコイイなー
![Page 5: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/5.jpg)
イケてるなー
![Page 6: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/6.jpg)
いいなー
![Page 7: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/7.jpg)
そうだ、 作ってみよう!
![Page 8: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/8.jpg)
プラグイン開発 のポイント
![Page 9: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/9.jpg)
プラグインは シングルトン
![Page 10: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/10.jpg)
+ (void)pluginDidLoad:(NSBundle *)plugin { static id sharedPlugin = nil; static dispatch_once_t onceToken; NSString *currentApplicationName = [[NSBundle mainBundle] infoDictionary][@"CFBundleName"]; if ([currentApplicationName isEqual:@"Xcode"]) { dispatch_once(&onceToken, ^{ sharedPlugin = [[self alloc] initWithBundle:plugin]; }); } }
![Page 11: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/11.jpg)
メニュー作成
![Page 12: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/12.jpg)
- (id)initWithBundle:(NSBundle *)plugin { if (self = [super init]) { self.bundle = plugin; NSMenuItem *menuItem = [[NSApp mainMenu] itemWithTitle:@"Edit"]; if (menuItem) { [[menuItem submenu] addItem:[NSMenuItem separatorItem]]; NSMenuItem *actionMenuItem = [[NSMenuItem alloc] initWithTitle:@"Gistに投稿" action:@selector(alertMYM) keyEquivalent:@"-"]; actionMenuItem.keyEquivalentModifierMask = NSCommandKeyMask | NSShiftKeyMask; [actionMenuItem setTarget:self]; [[menuItem submenu] addItem:actionMenuItem]; } [self setUpNotification]; } return self; }
![Page 13: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/13.jpg)
この辺はお決まり
![Page 14: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/14.jpg)
テンプレ使おう
![Page 15: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/15.jpg)
https://github.com/kattrali/Xcode5-Plugin-Template
![Page 16: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/16.jpg)
おく
![Page 17: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/17.jpg)
~/Library/Developer/Xcode/Templates/Project Templates/
Application Plug-in/
![Page 18: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/18.jpg)
イニシャライザで 監視設定
![Page 19: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/19.jpg)
- (void)setUpNotification { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewDidChangeSelection:) name:NSTextViewDidChangeSelectionNotification object:nil]; }
![Page 20: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/20.jpg)
- (void)textViewDidChangeSelection:(NSNotification *)notification { NSTextView *textView = (NSTextView *)[notification object]; self.textView = textView; }
![Page 21: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/21.jpg)
ごにょごにょと いい感じにいじる
![Page 22: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/22.jpg)
どうやってごにょるの?
![Page 23: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/23.jpg)
公開されているプラグインのコードを読む
![Page 24: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/24.jpg)
プラグインの使い方
![Page 25: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/25.jpg)
command + B
![Page 26: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/26.jpg)
Xcode再起動
![Page 27: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/27.jpg)
消したいとき
![Page 28: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/28.jpg)
command + shift + k
![Page 29: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/29.jpg)
Xcodeちゃんが 死亡した場合
![Page 30: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/30.jpg)
直接削除
![Page 31: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/31.jpg)
~/Library/Application Support/Developer/
Shared/Xcode/Plug-ins/
![Page 32: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/32.jpg)
つくったもの
![Page 33: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/33.jpg)
・Gist投稿プラグイン ・iBeacon発信プラグイン ・♡♡♡投稿プラグイン
![Page 34: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/34.jpg)
・Gist投稿プラグイン ・iBeacon発信プラグイン ・♡♡♡投稿プラグイン
![Page 35: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/35.jpg)
・shortcut追加プラグイン ・iBeacon発信プラグイン ・♡♡♡投稿プラグイン
![Page 36: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/36.jpg)
♡♡♡は内緒
![Page 37: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/37.jpg)
GistのOAuth認証めんどくさかったのでプルリクください
![Page 38: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/38.jpg)
デモ
![Page 39: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/39.jpg)
公開!
![Page 40: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/40.jpg)
https://github.com/tochiba/TSKAddShortCutKeyXcodePlugin
!
https://github.com/tochiba/TSKiBeaconXcodePlugin
![Page 41: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/41.jpg)
プルリク お待ちしてます
![Page 42: 俺のXcodeがiBeaconを 発信しながらGistに投稿できるわけがない](https://reader033.vdocuments.site/reader033/viewer/2022042601/5483d8fbb4af9f780d8b4a20/html5/thumbnails/42.jpg)
ありがとうございました