[ObjC][AppCode] yidev第十五回でデモしたAppCodeの内容


2014.6.14 [yidev第十五回](http://atnd.org/events/51131) でデモをしたAppCodeの内容です。（一部加筆）


っていうか、「AppCodeの良さって文字で伝わるようなもんじゃねーな」とおもいつつも、一応書きました的なヤーツです。


##元スライド
[Slide Share : AppCodeについて](http://www.slideshare.net/romatica/yidev201406pub)


##クラス自動生成
`Command + Return` : Intention Actions



##メソッド自動生成。編集。
`Command + Return` : Intention Actions : 

- 自動メソッド生成（クラスメソッド インスタンスメソッド self でも他のクラス内でも）
- .h .m の連携 (自動生成、変更の連動)
- 引数の変更 `Command + F6` : Change Signature
- とりあえず `Control + T`　押す



##プロパティ/変数の自動生成


- カーソルのある位置を起点に範囲を指定して変数化

	`Command + Option + V`: Variable

- 変数をインライン化 
   
	`Command + Option + N`: inline
    
- [応用] 複数行 ←→ 単一行にさくっと変更。

	よくあるNSBundle とかNSURLとかをサクッと１行にしたり複数行にしたりできる

##デリゲートメソッドを挿入
- `Command + Control + O` : Override Methods 
- `Command + Control + I` : Implements Methods 


##自動インポート整理

- 自動インポート　

	`Command + Return` : Intention Actions

- 不要なインポートを一括削除 
	
	`Command + Option + O`



##ライブテンプレート

強力で柔軟なスニペット。
**Edit Variables**を駆使することでいろんなテンプレートが作れる。
チャカチャカ打ってTABを押す。

- logvの例

	`expresionFormatCode()` とか


- オレオレライブテンプレートの紹介（bundle/delegate/singleton） の例 
	
	 enum(..)を利用するとプルダウンが作れたりとか。
	 fileNameWithoutExtention()で現在のファイル名がとれたりとか。


- とりあえず `command + J` 押す

##復数カーソル選択
`Shift + Option + Click`

使いこなせるやつにオレは会いに行く。



##formatter の設定　
- `[Preference] > [Code Style]`

-　[TIPS] 特定のタグで囲んだ領域はformatterを無視するようにできる

　 `[Preference] > [Code Style] > [General] > [Fromatter Control]`をチェックして下記のタグで囲む。(囲むタグはカスタマイズできるみたい）

```objc

//@formatter:off

//ここにかいたコードはふぉーまっとされないぜﾋｬｯﾊｰ!!!

//@formatter:on

```

##その他便利なTips


- [**Dash**](http://kapeli.com/dash) も開けるよ

   `[Preference] > [External Document]` で設定
 Keymap のExternalDocumentで任意のショートカットを設定
 （例：`Option + Click`など）


- [**Injectioin**](http://injectionforxcode.com/) プラグインも使えるよ


- [**Reveal**](http://revealapp.com/) も使えるよ



- **Call hearerchy** `Option + Control + H`


 メソッドがどこから呼ばれているのか、どこを読んでいるのか辿れる!


- **Find Usage Setting...** `Commnd + Option + Shift + F7`


 変数 がどこからよばれているのかわかる。参照なのか代入なのかとか。


- ブラケット記法とドットシンタックス記法の切り替えなど

    −`Command + Return`: Intention Actions


- 行の操作

    - 行の削除 `Command + Option + Delete`

    - 行の複製 `Command + D`
        　      
		※個人的にこれらは対になるようなキーに変更している

    - 行の移動(上)　Move Line Up :`Option + Shift + [`

    - 行の移動(下)　Move Line Down :`Option + Shift + ]`


- 選択領域を色んなパターンでサクッと囲う

    Surround cord `command+option+T`ifとかwhileとか 

- コピー履歴からペースト `Command + Shift + V`
    
	ClipMenu みたいな機能。コピー履歴を複数選択して結合してペーストとか謎機能もある。

- 開いているタブのリスト表示  `Control + Tab`


- Recentry Changed File `Control + 4`

　最後に編集したファイル一覧をポップアップ表示、で選択して移動




- **Export Inport Setting**

  IDEの設定ファイルを簡単にインポート・エクスポートできる。

　File > Export　Setting などから、Live Template やFormatterなどの各種設定が書き出せる。チーム共有や、複数マシンでの設定作業が楽。


- **StoryBoard**も対応しているよ
    
    個人的にはまだ微妙。今後に期待


- **Swift** も対応したよ（3.0.1)

    3.0.1ではまだ、「プロジェクトが作れてコンパイルが通りますよ」という感じのレベル。

 - まだフォーマッタがない
 - コンパイルエラーになる箇所を教えてくれない
 - Swiftプロジェクト内でObjcをつくってもbredge-headerが追加されない

    など今後に期待！



## 神ショートカット 
- **Show Intention Actions** `Command + Return`
	
	問題のある箇所にカーソルを合わせて実行すると空気をよんで色々提案してくれる
	とりあえず押す
    
- **Find Action** `Command + Shift + A`

	わからなくなったらとりあえずコレ
	Appcode 内の全アクションをインクリメンタルで検索、実行。
    
- **Completion** `Control + Space`

    いい感じに空気読んで補完

- **Generate Code** `Command + N`

  いい感じに空気よんでメソッド挿入




##git まわり

ここみるといいかも [Git integration in AppCode](http://tv.jetbrains.net/videocontent/git-integration-in-appcode)

- 選択部分が一発でgitsにあげれるという謎機能
- 差分確認


##チートシート
**わからなくなったらとりあえずコレ**

 `[Help] > [Default Keymap Reference]`


 
## Appcode プラグインサイト
 [AppCode Plugins](http://plugins.jetbrains.com/?objc)

　いろんなプラグインがある。
	
※プラグインってつくれるのかな？つくってみたい。