こんにちは。エンジニアの岩田です。
普段は iOS アプリの開発を行ってます。iOS エンジニアのメインとなる開発ツールは Xcode となるわけですが、私は Xcode でコーディングすることに常々使いづらさを感じてきました。そんな中、私の前に救世主として現れたのが JetBrains 製 の iOS / macOS IDE の AppCode です。今回は快適なコーディングをサポートしてくれる AppCode の便利な機能についてご紹介します。
検索・リネーム
ファイルの横断的な検索やリネームは Xcode でも行うことは可能ですが、AppCode では文字大小の区別、正規表現、ファイル名のフィルタリングなどを交えた条件設定が 1ウィンドウ内に収まっているため見通しがよく、検索結果のプレビューもタブ切り替えで直ぐ確認できます。あまりする人は多くないと思いますが、プレビュー内でコードの編集も可能です。
Override と Protocol 準拠
AppCode では、ある class が Override 可能なメソッドや、Protocol に準拠するために実装すべきメソッドなどがある場合に一覧として表示し、その中から任意に選択したものを自動的に挿入してくれる機能があります。
例えば、UICollectionViewDataSource に準拠する型では、以下のようなサジェストが表示され、実装が必須なメソッドは四角いアイコンで、実装が任意の場合は丸いアイコンで示されるのでわかりやすいです。また、候補となるメソッド一覧が表示されている中からさらに絞り込みたい場合、サジェストが表示されている状態から何かしらタイプすることで Fuzzy に候補をハイライトしてくれます。素晴らしい!
自動 import
Objective-C の場合、別のヘッダーファイルで定義されているクラスの参照が必要となった場合、Xcode では先に import を記述しないと定義を解決してくれず、スムーズなコーディングが行なえません。AppCode では import の有無に関わらず、参照したいクラスやカテゴリメソッドを記述するだけで 自動的に import 文を挿入してくれます。また、Intention Actions という機能からも自動で import を行ってくれますし、逆に不要な import を一括で取り除くことも可能です。
Intention Actions は import だけではなく、未定義の型を記述するとその場で新規に型定義を追加することが出来るなど、コーディング時に発生した問題に対して様々な解決策を提示してくれる便利な機能です。
ただ、残念ながら Swift では Intention Actions が意図したとおりに機能しないことがしばしばあり、自動 import もできないようです。
Bookmarks
文字通り特定のファイルと行数にマーキングできる機能です。プロジェクトにおいて重要な箇所や後々でよく読んでおく必要があるなと思ったりしたときに、付箋を貼る感覚で使っています。
設定ファイルの管理
JetBrains 製 の IDE は共通して、そのキーマップやカラースキーム、コーディングスタイルなどの設定値を .jar ファイル形式で出力・入力することができ、任意に取捨選択することも可能です。Git リポジトリなどで管理しておけば、新しいマシンへの IDE 環境構築がスムーズに行えると思います。
Plugin
JetBrains 製の IDE は 各種 Plugin で機能を拡張することもできます。UI 拡張や他言語サポート、Vim エミュレータのようなエディタ拡張など多岐にわたって無料で公開されています。IDE からどういったものがあるか検索できるので、自分にあった機能を見つけることが出来ると思います。ちなみに、私の最近のお気に入りは Material Theme UI Plugin で インターフェースをマテリアルデザイン風にしてくれるスキンです。
弱点
色々と便利な機能がある AppCode ですが出来ないこともあります。.xib や .storyboard ファイルを開いてレイアウト編集は行うことができないので、デザイン作業は Xcode が必須となります。ただし、AppCode でこれらのファイルを開こうとすると Xcode の Interface Builder が自動的に起動してくれるのでその点気が利いていると思います。
また Build Settings を除く多くのプロジェクト設定は AppCode から編集できないので、こちらについても従来通り Xcode を使うことになると思います。このあたりは Xcode のバージョン間でも 設定項目や UI が頻繁に変更されたりする箇所なので、無理に追従しないようにしているのかもしれません。
さらに AppCode における Swift 対応はまだ完全とは言えません。Intention Actions がうまく機能しない点、Generics や型推論を解決できないことがしばしば発生するなど、厳しい場面があるのも事実です。
最後に
現状の AppCode は一長一短ではありますが、iOS / macOS アプリ開発におけるコーディングを強力にサポートしてくれる優れたツールだと思います。Objective-C で書かれたプロジェクトであれば、AppCode を使ってまず間違いないと個人的に思います。JetBrains 製品の多くは 30日間のトライアル期間が設けられているので、試しに使ってみてはいかがでしょうか?
フェンリルのオフィシャル Twitter アカウントでは、フェンリルプロダクトの最新情報などをつぶやいています。よろしければフォローしてください!