読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

Xcodeのコードスニペットの活用

今回のエンジニアブログを担当します山下です。
今回はXcodeのコードスニペット機能を使ってアプリ開発をスムーズに行う方法をご紹介します。

コードスニペットとは

コードスニペット(code snippet)とは再利用可能なコードの断片的なテンプレートのことを言います。
普段よく入力するコードをテンプレートとして保存しておくことで、コーディング速度を上げることが出来ます。

コードスニペットの登録

まずはXcodeにコードのスニペットを登録します。手順は非常に簡単です。
今回は以下のUIAlertControllerを表示するSwiftのコードを登録します。

        let alertView = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .Alert)  
        alertView.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in  
            print("\(action.title)")  
        }))  
        alertView.addAction(UIAlertAction(title: "キャンセル", style: .Cancel, handler: { action in  
            print("\(action.title)")  
        }))  
        self.presentViewController(alertView, animated: true, completion: nil)  

XcodeのUtilitiesでCode Snippet Libraryを開いた後、
Editorで登録したいコードを選択し、Code Snippet Libraryにドラッグ&ドロップします。

Code Snippet Libraryの選択とスニペット追加

これだけで「My code snippet」という名前で登録が完了します。

コードスニペットの利用

スニペットを実際に利用する際も登録同様、Code Snippet Libraryから
Editorの目的の位置にコードをドラッグ&ドロップするだけです。

スニペットをコード中に追加

ショートカットによる利用

スニペットにはCompletion Shortcutという設定項目があり、
ここに入力した文字列でスニペットをコード補完に出すことが出来ます。

スニペットの設定

Code Snippet Libraryで先ほどのスニペットをダブルクリックすると
スニペットが吹き出しで表示され、左下のEditボタンでスニペットの情報が変更できます。
ここで「alertcontroller」というショートカットを設定しておくと
以下のように補完でより素早く入力が出来ます。

スニペットの補完

またCompletion Scopesを指定すると、特定の条件下のスコープでのみ
このスニペットを補完するよう制限をかけることもできます。

プレースホルダ

スニペットにはプレースホルダを設定することも出来ます。
スニペットの一部に状況に応じて変更する部分がある場合、そこにプレースホルダを置いておくことで変更がスムーズに可能になります。
Xcodeのスニペットでは、<#ではじまり#>で終わる部分をプレースホルダとして解釈されます。
Alert Controllerのタイトル部分を<#タイトル#>と書き換えてみてください。

        let alertView = UIAlertController(title: <# タイトル #>, message: "メッセージ", preferredStyle: .Alert)  

するとタイトルの部分が角丸の長方形で囲われます。この部分がプレースホルダです。

プレースホルダ

同様にAlertControllerのメッセージや、ボタンを押されたときのハンドラの中身にもプレースホルダを設定しましょう。
登録したスニペットを以下のように書き換えてください。

        let alertView = UIAlertController(title: <#タイトル#>, message: <#メッセージ#>, preferredStyle: .Alert)  
        alertView.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in  
            <#do something...#>  
        }))  
        alertView.addAction(UIAlertAction(title: "キャンセル", style: .Cancel, handler: { action in  
            <#do something...#>  
        }))  
        self.presentViewController(alertView, animated: true, completion: nil)  

このスニペットをEditorに追加した直後にTabキーを押すと、プレースホルダにフォーカスが移ります。
ここに値を入力した後またTabキーを押すと、次のプレースホルダにフォーカスが移ります。
このようにしてプレースホルダ部分を素早く埋めていくことが可能になっています。

いかがでしたでしょうか。
今のところXcodeインストール時に用意されているコードスニペットはほとんどObjective-C用で、
Swiftに対応したものはほとんどありません。
そのためSwiftで開発を行う際はよく使うコードはコードスニペットとして自分で用意しておくことをおすすめします。