// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= C/C++ソース・ファイルの編集とナビゲート - NetBeans IDEチュートリアル
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: C/C++ソース・ファイルの編集とナビゲート - NetBeans IDEチュートリアル - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, C/C++ソース・ファイルの編集とナビゲート - NetBeans IDEチュートリアル

_執筆: _Ann Rice_、管理: _Susan Morgan_
2014年3月_ [リビジョン番号: V8.0]

このチュートリアルでは、NetBeans IDEのC/C++プロジェクトのソース・ファイルを編集およびナビゲートするための機能の一部を学ぶことができます。


== 要件

*このチュートリアルに従うには、次のソフトウェアとリソースが必要です。*

|===
|ソフトウェアまたはリソース |必須バージョン 

|NetBeans IDE |link:https://netbeans.org/downloads/index.html[+ バージョン7.4または8.0とNetBeans C/C++プラグイン+] 

|Java Developer Kit (JDK) |link:http://java.sun.com/javase/downloads/index.jsp[+バージョン7または8+] 
|===


必要なソフトウェアのダウンロードとインストールについては、link:../../../community/releases/80/install.html[+NetBeans IDE 8.0のインストール手順+]およびlink:../../../community/releases/80/cpp-setup-instructions.html[+C/C++/Fortran向けのNetBeans IDEの構成+]を参照してください。

*サンプル・プロジェクト*

プロジェクトをいくつか試しに操作できます。IDEで「ファイル」>「新規プロジェクト」を選択し、「サンプル」カテゴリ、「C/C++」サブカテゴリの順に開きます。IDEには、知識を深めるのに役立つC/C++サンプル・プロジェクトがいくつか用意されています。


== サンプル・プロジェクトの作成

C/C++プラグインを使用したNetBeans IDEには、ソース・コードを変更するための高度な編集機能が提供されています。 ``Quote`` プロジェクトを使用して、これらの機能を確認します。まだこのプロジェクトを作成していない場合は、次の操作を実行します。

1. 「ファイル」>「新規プロジェクト」を選択します。
2. プロジェクトのウィザードで「サンプル」カテゴリを展開し、「C/C++」サブカテゴリを選択します。
3.  ``Quote`` プロジェクトを選択します。「次」をクリックして、「終了」をクリックします。


== C/C++ソース・ファイルの編集


=== フォーマット・スタイルの設定

「オプション」ウィンドウを使用して、C/C++プロジェクトに対するデフォルトのフォーマット・スタイルを構成できます。

1. 「ツール」>「オプション」を選択します。
2. ウィンドウの上ペインの「エディタ」をクリックします。
3. 「フォーマット」タブをクリックします。
4. QuoteプロジェクトはC++を使用するため、「言語」ドロップダウン・リストから「C++」を選択します。
5. 設定するスタイルを「スタイル」ドロップダウン・リストから選択します。
image::images/formatting_style.png[]

[start=6]
. 必要に応じて、スタイルのプロパティを変更します。


=== C/C++ファイルのコード・ブロックの折りたたみ

ファイルのタイプによっては、コード折りたたみ機能を使用してコード・ブロックを縮小し、ブロックの最初の行のみがソース・エディタに表示されるようにできます。

1.  ``Quote_1`` アプリケーション・プロジェクトで、「Source Files」フォルダを開き、 ``cpu.cc`` ファイルをダブルクリックして、ソース・エディタで開きます。
2. 左マージンにある縮小アイコン(マイナス記号の付いた小さなボックス)をクリックし、いずれかのメソッドのコードを折りたたみます。
3. 折りたたまれたブロックの右側にある ``{...}`` 記号にマウスを置いて、そのブロック内のコードを表示します。 
image::images/code_folding.png[]


=== 意味解釈の強調表示の使用

このオプションを設定すると、クラス、関数、変数またはマクロをクリックしたときに、現在のファイル内でそのクラス、関数、変数またはマクロが出現する箇所がすべて強調表示されます。

1. 「ツール」>「オプション」を選択します。
2. ウィンドウの上ペインの「エディタ」をクリックします。
3. 「強調表示」タブをクリックします。
4. すべてのチェックボックスにチェック・マークが付いていることを確認します。
5. 「OK」をクリックします。
6.  ``Quote_1`` プロジェクトの ``customer.cc`` ファイルで、メソッド名が太字で強調表示されていることを確認します。
7.  ``Customer`` クラスの出現箇所をクリックします。
8. ファイル内にある ``Customer`` クラスのすべての出現箇所が、黄色の背景で強調表示されます。右マージンにも、ファイル内の出現箇所を示すマークが表示されます。このマークにより、ファイルをスクロールしなくても、出現箇所がどのくらいあるかを確認できます。マークをクリックすると、それが示す出現箇所へジャンプできます。
image::images/highlighting1.png[]

[start=9]
. 出現箇所の間を簡単に移動するには、[Alt]+[Down]を押すと次の出現箇所に移動し、[Alt]+[Up]を押すと前の出現箇所に移動します。

[start=10]
. ヘッダー・フォルダにある ``customer.h`` ファイルを開くと、ここでもクラス名が太字で強調表示されているのが確認できます。
image::images/highlighting2.png[]


=== コード補完およびドキュメントの使用

IDEの動的C/C++コード補完機能によって、ユーザーが文字を1文字以上入力すると、その式を自動的に補完するためのクラス、メソッド、変数といった選択肢のリストが表示されます。

また、IDEはクラス、関数、メソッドなどのドキュメントを動的に検索して、ポップアップ・ウィンドウにドキュメントを表示します。

1.  ``Quote_1`` プロジェクトの ``quote.cc`` ファイルを開きます。
2.  ``quote.cc`` の最初の空白行で、大文字のCを入力して[Ctrl]-[Space]を押します。コード補完ボックスに、 ``Cpu`` および ``Customer`` クラスを含む候補一覧が表示されます。ドキュメント・ウィンドウも開きますが、そのコードのドキュメントがプロジェクト・ソースに含まれていないため、ドキュメントが見つからないというメッセージが表示されます。
3. 再度[Ctrl]-[Space]を押して、項目の一覧を展開します。 
image::images/code_completion1.png[]

[start=4]
. 矢印キーまたはマウスを使用してリストから ``calloc`` などの標準ライブラリ関数を強調表示すると、IDEがマニュアル・ページにアクセスできる場合は、ドキュメント・ウィンドウにその関数のマニュアル・ページが表示されます。
image::images/code-completion-documentation.png[]

[start=5]
.  ``Customer`` クラスを選択し、[Enter]キーを押します。

[start=6]
. 「 ``andrew;`` 」を入力して、 ``Customer`` クラスの新しいインスタンスを完了させます。次の行で、文字「 ``a`` 」を入力し、[Ctrl]-[Space]を2回押します。コード補完ボックスに、文字「 ``a`` 」から始まる、現在のコンテキストからアクセス可能なメソッド引数、クラス・フィールド、グローバル名などの選択肢が一覧表示されます。
image::images/code_completion2.png[]

[start=7]
.  ``andrew`` オプションをダブルクリックして受け入れ、その後にピリオド1つを入力します。[Ctrl]-[Space]を押すと、 ``Customer`` クラスのpublicメソッドおよびフィールドの一覧が自動的に表示されます。
image::images/code_completion3.png[]

[start=8]
. 追加したコードを削除します。


=== ソース・コード・ドキュメントの追加

コードにコメントを追加して、関数、クラスおよびメソッドのドキュメントを自動的に生成できます。IDEは、Doxygen構文を使用したコメントを認識して、ドキュメントを自動的に生成します。また、IDEは、関数を説明するためのコメント・ブロックをコメントの下に自動的に生成することもできます。

1.  ``quote.cc`` ファイルの75行目(次に示す行の上の行)にカーソルを置きます。
 ``int readNumberOf(const char* item, int min, int max){`` 

[start=2]
. スラッシュおよび2つのアスタリスクを入力して、[Enter]を押します。エディタによって、 ``readNumberOf`` クラスにDoxygen形式のコメントが挿入されます。
image::images/doxygen_comment.png[]

[start=3]
. それぞれの@paramの行に説明文を追加して、ファイルを保存します。 
image::images/doxygen_comment_edited.png[]

[start=4]
. 黄色で強調表示されている ``readNumberOf`` クラスをクリックし、次に右にある出現箇所のマークの1つをクリックして、このクラスが使用されている場所へジャンプします。

[start=5]
. ジャンプした行で ``readNumberOf`` クラスをクリックして[Ctrl]-[Shift]-[Space]を押すと、追加したパラメータのドキュメントが表示されます。
image::images/doxygen_displayed.png[]

[start=6]
. ファイル内のどこかをクリックしてドキュメント・ウィンドウを閉じ、再度 ``readNumberOf`` クラスをクリックします。

[start=7]
. 「ソース」>「ドキュメントを表示」を選択して、クラスのドキュメント・ウィンドウを再度開きます。


=== コード・テンプレートの使用方法

ソース・エディタには、一般的なC/C++コード断片に対するカスタマイズ可能なコード・テンプレートの一式があります。省略名を入力し、[Tab]キーを押すことによって、そのコード・スニペットの全体を生成できます。たとえば、 ``Quote`` プロジェクトの ``quote.cc`` ファイル内では次のようになります。

1. 「 ``uns`` 」の後にタブを入力すると、「 ``uns`` 」が「 ``unsigned`` 」に展開されます。
2. 「 ``iff`` 」の後にタブを入力すると、「 ``iff`` 」が「 ``if (exp){}`` 」に展開されます。
3. 「 ``ife`` 」の後にタブを入力すると、「 ``ife`` 」が「 ``if (exp){} else {}`` 」に展開されます。
4. 「 ``fori`` 」の後にタブを入力すると、「 ``fori`` 」が「 ``for (int i = 0; i < size; i++) { Object elem = array[i];`` 」に展開されます。

使用できるすべてのコード・テンプレートの表示、コード・テンプレートの変更、独自のコード・テンプレートの作成、または別のキーを選択したコード・テンプレートの展開を実行するには:

1. 「ツール」>「オプション」を選択します。
2. 「オプション」ダイアログ・ボックスで、「エディタ」を選択して「コード・テンプレート」タブをクリックします。
3. 「言語」ドロップダウン・リストから適切な言語を選択します。
image::images/code_templates.png[]


=== ペア補完機能の使用方法

C/C++ソース・ファイルを編集するときは、ソース・エディタは大括弧、丸括弧、引用符などのペア文字を自動的に一致させます。これらの文字の1つを入力すると、ソース・エディタが自動的に対応する閉じる側の文字を挿入します。

1.  ``Quote_1`` プロジェクトで、 ``module.cc`` ファイルの空白行115の上にカーソルを置き、[Return]キーを押して新しい行を開きます。
2. 「 ``enum state {`` 」を入力し、[Return]キーを押します。閉じ中括弧とセミコロンが自動的に追加され、カーソルが括弧の間の行に置かれます。
3.  ``invalid=0, success=1`` を括弧の間の行に入力し、列挙を完了します。
4. この列挙の閉じる ``};`` の後の行で ``if (`` を入力します。閉じ括弧が自動的に追加され、カーソルが括弧の間に置かれます。
5.  ``v==null`` を括弧の間に入力します。さらに「 ``{`` 」を入力し、右括弧の後で改行します。閉じ角括弧が自動的に追加されます。
6. 追加したコードを削除します。


=== プロジェクト・ファイルでのテキストの検索

「プロジェクト内を検索」ダイアログ・ボックスを使用すると、プロジェクトの特定のテキストまたは正規表現のインスタンスを検索できます。

1. 「プロジェクト内を検索」ダイアログ・ボックスを開くには、次のいずれかを実行します。
* 「編集」>「プロジェクト内を検索」を選択します。
* 「プロジェクト」ウィンドウでプロジェクトを右クリックし、「検索」を選択します。
* [Ctrl]+[Shift]+[F]を押します。

[start=2]
. 「プロジェクト内を検索」ダイアログ・ボックスで、「デフォルト検索」タブまたは「Grep」タブを選択します。「Grep」タブでは、特にリモート・プロジェクトに対して高速検索を提供する ``grep`` ユーティリティが使用されます。
image::images/find_in_projects.png[]

[start=3]
. 「Grep」タブで、検索するテキストまたは正規表現を入力し、検索範囲およびファイル名パターンを指定して、複数の検索を別々のタブで保存できるように「新しいタブで開く」チェックボックスを選択します。

[start=4]
. 「検索」をクリックします。
「検索結果」タブには、該当のテキストまたは正規表現が検出されたファイルが一覧表示されます。

左マージンのボタンを使用すると、検索結果の表示を変更できます。

image::images/find_in_projects2.png[]

[start=5]
. ファイル名のみが表示されるようにファイルのリストを縮小する場合は、展開/縮小ボタンをクリックします。検索結果をディレクトリ・ツリーまたはファイルのリストとして表示するには、他のボタンをクリックします。これらのオプションは、複数のプロジェクトにわたる検索を実行するときに役立ちます。

[start=6]
. リスト内のアイテムの1つをダブルクリックすると、IDEではソース・エディタ内の該当する場所まで移動できます。


== C/C++ソース・ファイルのナビゲート

C/C++プラグインを使用したNetBeans IDEには、ソース・コードを表示するための高度なナビゲーション機能が提供されています。 ``Quote_1`` プロジェクトを引続き使用して、これらの機能を確認します。


=== 「クラス」ウィンドウの使用

「クラス」ウィンドウでは、プロジェクトのすべてのクラスと、各クラスのメンバーおよびフィールドを表示できます。

1. 「クラス」タブをクリックし、「クラス」ウィンドウを表示します。「クラス」タブが表示されていない場合は、「ウィンドウ」>「クラス」を選択します。
2. 「クラス」ウィンドウで「 ``Quote_1`` 」ノードを展開します。プロジェクト内のすべてのクラスが一覧表示されます。
3.  ``Customer`` クラスを展開します。
image::images/classes_window.png[]

[start=4]
.  ``name`` 変数をダブルクリックし、 ``customer.h`` ヘッダー・ファイルを開きます。


=== 「ナビゲータ」ウィンドウの使用

「ナビゲータ」ウィンドウには、現在選択されているファイルが縮小表示され、ファイル内の様々な部分を簡単に移動できます。「ナビゲータ」ウィンドウが表示されていない場合は、「ウィンドウ」>「ナビゲート」>「ナビゲータ」を選択して開きます。

1. 「エディタ」ウィンドウで ``quote.cc`` ファイルの任意の場所をクリックします。
2. ファイルが縮小表示され、「ナビゲータ」ウィンドウに表示されます。
image::images/navigator_window.png[]

[start=3]
. ファイルの要素へ移動するには、「ナビゲータ」ウィンドウで要素をダブルクリックすると、「エディタ」ウィンドウでカーソルがその要素へ移動します。

[start=4]
. 「ナビゲータ」で右クリックすると、要素のソート、項目のグループ化やフィルタの方法を別の方法に変更できます。



=== クラス、メソッド、およびフィールドの使用状況の検索

「使用状況」ウィンドウを使用して、プロジェクトのソース・コード内でクラス(構造)、関数、変数、マクロまたはファイルが使用されている箇所を確認できます。

1.  ``customer.cc`` ファイルの行42にある ``Customer`` クラスを右クリックし、「使用状況を検索」を選択します。
2. 「使用状況を検索」ダイアログ・ボックスで、「検索」をクリックします。
3. 「使用状況」ウィンドウが開き、プロジェクトのソース・ファイル内での ``Customer`` クラスの使用状況がすべて表示されます。
image::images/usages_window.png[]

[start=4]
. 左マージンの矢印ボタンをクリックして表示項目を移動し、エディタで表示するか、論理ビューおよび物理ビュー間を変更します。左マージンの2列目のボタンを使用して、情報をフィルタリングすることもできます。


=== コール・グラフの使用

「コール・グラフ」ウィンドウには、プロジェクト内の関数間のコール関係を示す2つのビューが表示されます。ツリー・ビューには、選択した関数のコール先の関数、または選択した関数のコール元の関数が表示されます。グラフィカル・ビューには、コール先とコール元の関数の関係が矢印で表示されます。

1.  ``quote.cc`` ファイルで ``main`` 関数を右クリックし、「コール・グラフを表示」を選択します。
2. 「コール・グラフ」ウィンドウが開き、 ``main`` 関数からコールされるすべての関数のツリーおよびグラフィカル・ビューが表示されます。
image::images/call_graph1.png[]

ここに示すようにすべての関数が表示されない場合は、「コール・グラフ」ウィンドウの左側の3つ目のボタンをクリックして、「この関数のコール先」を表示します。


[start=3]
.  ``endl`` ノードを展開し、その関数によってコールされる関数を表示します。グラフも更新され、 ``endl`` によってコールされる関数が表示されます。

[start=4]
. ウィンドウの左側の2つ目のボタン、「フォーカス」をクリックして ``endl`` 関数にフォーカスを置いてから、4つ目のボタンの「関数の呼出し元」をクリックして ``endl`` 関数をコールするすべての関数を表示します。
image::images/call_graph2.png[]

[start=5]
. ツリー内のノードの一部を展開すると、より多くの関数が表示されます。
image::images/call_graph3.png[]


=== ハイパーリンクの使用方法

ハイパーリンク・ナビゲーション機能を使用して、クラス、メソッド、変数または定数の呼出しからその宣言にジャンプしたり、その宣言から定義にジャンプしたりできます。また、ハイパーリンクを使用すると、オーバーライドされるメソッドからオーバーライドするメソッドへジャンプしたり、その逆を実行することもできます。

1.  ``Quote_1`` プロジェクトの ``cpu.cc`` ファイルで、Ctrlキーを押しながら行37にマウス・ポインタを置きます。 ``ComputeSupportMetric`` 関数が強調表示され、関数についての情報が注釈に表示されます。
image::images/hyperlinks1.png[]

[start=2]
. ハイパーリンクをクリックすると、エディタがその関数の定義にジャンプします。
image::images/hyperlinks2.png[]

[start=3]
. Ctrlキーを押しながら定義にマウスを置き、ハイパーリンクをクリックします。エディタが、 ``cpu.h`` ヘッダー・ファイル内のその関数の宣言にジャンプします。
image::images/hyperlinks3.png[]

[start=4]
. エディタ・ツールバーの左向き矢印(左から2番目のボタン)をクリックすると、エディタは ``cpu.cc`` 内の定義へジャンプして戻ります。

[start=5]
. 左マージンにある緑色の円の上にマウスを置くと、このメソッドが別のメソッドをオーバーライドすることを示す注釈が表示されます。
image::images/overide_annotation.png[]

[start=6]
. オーバーライドされているメソッドに移動するには、緑色の円をクリックします。 ``module.h`` ヘッダー・ファイルにジャンプし、メソッドがオーバーライドされていることを示す灰色の円がマージンに表示されます。

[start=7]
. 灰色の円をクリックすると、エディタはこのメソッドをオーバーライドするメソッドの一覧を表示します。
image::images/overridden_by_list.png[]

[start=8]
.  ``Cpu::ComputeSupportMetric`` の項目をクリックすると、 ``cpu.h`` ヘッダー・ファイル内のメソッドの宣言へジャンプして戻ります。


=== インクルードの階層の使用

「インクルードの階層」ウィンドウでは、ソース・ファイルに直接または間接的にインクルードされているすべてのヘッダーおよびソース・ファイル、またはヘッダー・ファイルを直接または間接的にインクルードするすべてのソースおよびヘッダー・ファイルを検査できます。

1.  ``Quote_1`` プロジェクトの ``module.cc`` ファイルをソース・エディタで開きます。
2. ファイルの ``#include "module.h"`` 行を右クリックし、「ナビゲート」>「インクルードの階層を表示」を選択します。
3. デフォルトでは、階層ウィンドウにはヘッダー・ファイルを直接含むプレーン・ファイルの一覧が表示されます。ウィンドウの右下隅ボタンをクリックすると、表示がツリー・ビューに変わります。右から2番目のボタンをクリックすると、表示がインクルードするかインクルードされているすべてのファイルに変わります。ツリー・ビューのノードを展開して、ヘッダー・ファイルを含むソース・ファイルをすべて表示します。
image::images/includes_hierarchy.png[]


=== タイプの階層の使用

「タイプの階層」ウィンドウでは、クラスのすべてのサブタイプまたはスーパー・タイプを検査できます。

1.  ``Quote_1`` プロジェクトの ``module.h`` ファイルを開きます。
2.  ``Module`` クラスの宣言を右クリックし、「ナビゲート」>「タイプの階層を表示」をクリックします。
3. 「階層」ウィンドウには、Moduleクラスのすべてのサブタイプが表示されます。
image::images/type_hierarchy.png[]


=== [[次の手順]] 

NetBeans IDEのC/C++プロジェクトのデバッグ機能の使用についてのチュートリアルは、link:debugging.html[+C/C++プロジェクトのデバッグ+]を参照してください。

link:mailto:users@cnd.netbeans.org?subject=Feedback:%20Editing%20and%20Navigating%20C/C++%20Source%20Files%20-%20NetBeans%20IDE%207.3%20Tutorial[+このチュートリアルに関するご意見をお寄せください+]
