Xcode 4 移行ガイド:テキストの置換とリファクタリング
(Apple 社公式文書の Sazameki and Satoshi Numata, Ph.D. 私訳版)
Xcode 3 と同じように、Xcode 4 でもプロジェクト全体を通してテキスト置換を行うなどのグローバルな変更をサポートしています。これには、Objective-C 2.0 用のコードへの変換や、スーパークラスの抽出などの機能も含まれます。これらの機能は、検索と置換、そしてリファクタリングと呼ばれます。
検索ナビゲーターによるテキスト置換
ソースファイル内のテキストを置換するには、検索ナビゲーターに表示されるポップアップメニューから「Replace」を選択します(図 6-1)。一番上のテキストフィールドに検索したいテキストを入力して return キーを押し、その下のテキストフィールドに置換したいテキストを入力します(図 6-2)。カーソルが上の方のテキストフィールドにある場合、return キーを押さないと検索が始まらないことに注意してください。置換テキストを入力しても置換結果が表示されない場合、カーソルを上の方のテキストフィールドにもっていって return キーを押してください。ワークスペースのアクティビティー・ビューアのツールバーには、検索の実行状況が表示されます(図 6-3)。
検索で見つかった結果をすべて置換するには、「Replace All」ボタンをクリックしてください。ひとつの項目だけを置換するには、その項目を選択して、「Replace」ボタンをクリックします。見つかった一部の結果だけを置換するには、shift キー+クリックか command キー+クリックで複数の項目を選択してから、「Replace」ボタンを押します。
デフォルトでは、Xcode は変更を行う前にプロジェクトのスナップショットを作成します。“スナップショットはワークスペースの現在のバージョンのコピーを保存する” を参照してください。この動作を変更するには、メニューの「File」-「Project Settings」で表示されるダイアログから、「Snapshots」ペインを選択して使ってください。「Replace」ボタンを押す前に「File」-「Manual Snapshot」を選択することで、手動でスナップショットを作成することもできます。
テキスト置換のプレビュー
テキスト置換を実行する前に変更のある箇所を見たいときには、置換のテキストボックスの下にある「Preview」ボタンをクリックします(Figure 6-2)。図 6-4 なプレビューダイアログが開きます。
置換のために見つかった個々の検索結果を選択するには、このダイアログの左側のペインに表示されている各項目のチェックボックスをクリックするか、右側のペインの中央に表示されるスライドスイッチをクリックします。左側のペインで shift キー+クリックまたは command キー+クリックを使うことで、複数の項目をマークして、スペースバーを押してそれらの項目を選択できます。すべての検索された項目を置き換える場合には、キャンセルボタンを押してから、「Replace All」ボタンをクリックしてください。
将来の管理に向けたコードのリファクタリング
リファクタリング作業とは、振る舞いを変えることなくソースコードの構造を改良することです。これを行うことでコードが管理しやすくなり、またさらにコードが変更しやすくなります。Xcode 4 におけるリファクタリング機能は、Xcode 3 とまったく同じです。まずはリファクタリングしたいソースコードの箇所を選択してから、メニューの「Edit」-「Refactor」以下の項目を選択するか、ソースエディターのショートカットメニューで「Refactor」以下の項目を選択して、リファクタリング操作(変形 (transformation) とも呼ばれます)を実行します。このメニューで選択可能な項目だけがリファクタリング可能です。
テキストを選択してリファクタリング操作も選択したら、Xcode は必要に応じてシンボル名やオプションを設定するためのダイアログを表示します。
リファクタリングの変更を適用する前に、変更箇所をプレビューして、変更を適用するファイルを選択できる機会があります(図 6-5)。ナビゲーター・ペインでファイルのチェックを外すことで、それらのファイルをリファクタリング操作の対象から外すことができます。またプレビューダイアログでソースコードを直接編集することもできます。このような編集はプレビューに表示され、リファクタリング操作に含めて処理することができます。
リファクタリング機能では、次のことができます。
リネーム (Rename) 選択された項目の名前をプロジェクト内のすべてのファイルから変更します。プロトコル・インタフェース内のメソッド宣言以外のあらゆるシンボルが選択可能です。クラス名を変更していて、そのクラス名がファイル名と一致する場合、「Rename related files」のチェックボックスにチェックを入れることで、リファクタリング操作の一部としてファイル名の変更を行うことができます。
抽出 (Extract) 選択されたコードから関数やメソッドを生成します。関数やメソッドの中の実装に書かれたコードやコメントを選択してください。
カプセル化 (Encapsulate) は、選択された項目に対するアクセッサー(Getter と Setter のメソッド)を作成し、それらの項目に直接アクセスしているコードを、アクセッサー・メソッドを使うように書き換えます。インスタンス変数(“ivar”)か構造体または共用体のメンバーであるシンボルを選択してください。
スーパークラスの生成 (Create Superclass) 選択されたクラスからスーパークラスを生成します。自分のプロジェクトで作成したクラスのシンボルを選択してください。
上に移動 (Move Up) 選択された項目の宣言と定義を、現在のクラスの親クラスに移動します。自分のプロジェクト内で親クラスが宣言されているクラス(カテゴリーは含まれない)を選択して、クラスのインスタンス変数を選択してください。
下に移動 (Move Down) 選択された項目の宣言と定義を、現在のクラスのサブクラスに移動します。自分のプロジェクト内で親クラスが宣言されているクラス(カテゴリーは含まれない)を選択して、クラスのインスタンス変数を選択してください。
なおリファクタリング機能は、C言語か Objective-C のファイルでしか使えません。
更新されたファイルを保存する前であれば、メニューの「Edit」-「Undo」を使ってファイル単位でのリファクタリング操作の取り消しを行うことができます。プロジェクトを保存せずにとじて、元のファイルに戻すこともできます。
(このドキュメントは、Sazameki 個人が Apple 社とは無関係に暫定的に翻訳したものです。)
© 2011 Apple Inc. All Rights Reserved. (Last updated: 2011-02-08)