演習 2.1: コード・テンプレート
EGL エディターにはコードをよりすみやかに記述するのに役立ついくつかのツールがあります。この演習では、コード・テンプレート をコードに挿入する方法を学習します。コード・テンプレートは、EGL エディターのコンテンツ・アシスト関数を使用した場合に追加されるサンプル・コードの一部です。コード・テンプレートは任意のタイプの EGL ファイルまたは任意の型の EGL パーツで使用することができます。コンテンツ・アシストおよび コード・テンプレートについて詳しくは、ヘルプ・トピック「コンテンツ・アシストによる EGL テンプレートの使用」を参照してください。
この演習では、EGL プログラム・パーツを使用して作業します。このプログラムは、EGL によってコードをファイルに挿入する方法をテストするためにのみ使用してください。この演習で取り上げているコード・テンプレート以外のコード・テンプレートを試してみても構いません。このプログラム・パーツをテスト以外の目的で使用することはないので、変更を加えたり、エラーが発生するようにしたりしても問題ありません。
コード・テンプレートを試すためのプログラムの作成
- プロジェクト・エクスプローラー・ビューで、「EGLWeb」プロジェクトをクリックして選択する。
- メニュー・バーから「ファイル」>「新規」>「その他」をクリックする。「新規」ウィンドウが開きます。
- 「新規」ウィンドウで「EGL」を展開する。
- 「プログラム (Program)」をクリックする。
- 「次へ」をクリックする。
- 「パッケージ (Package)」フィールドの横の「参照」をクリックする。「パッケージ選択」ウィンドウが開きます。
- 「パッケージ選択」で「data」パッケージをクリックする。
- 「OK」をクリックする。
- 「EGL プログラム・タイプ」の下で、「基本」をクリックする。
- 「EGL ソース・ファイル」フィールドに、プログラム名として、次のテキストを入力する。
EditorExamples
「新規 EGL プログラム・パーツ」ウィンドウは次のようになります。

- 「終了」をクリックする。新規プログラム・パーツが作成され、エディターで表示されます。このファイルには EditorExamples.egl という名前が付けられます。
このプログラム・パーツにはいくつかのエラーが含まれています。それらのエラーがあるのは、どのような情報が必要かを示すテキストが EGL に含まれているためです。
- EditorExamples.egl 内のすべてのコードを削除して、代わりに以下のコードを入力する。
package data;
program EditorExamples type basicProgram
//Variables
a int;
b int;
c int;
function main()
end
end
非修飾コンテンツ・アシストによるコード・テンプレートの挿入
コード・テンプレートを使用するための最も簡単な方法は非修飾コンテンツ・アシスト を使用することです。非修飾コンテンツ・アシストを使用する場合には、使用可能なコード・テンプレートの完全なリストからコード・テンプレートを選択します。後で、修飾コンテンツ・アシスト について学習しますが、修飾コンテンツ・アシストを使用すると、コード・テンプレートの最初の数文字が分かれば、リストのコード・テンプレートを絞り込んでから選択することができます。一般的には、修飾コンテンツ・アシストを使用することによって、コード・テンプレートをよりすばやく挿入できるようになります。
- コード function main() とそれに対応する end 文 (次の行にあります) の間にブランク行を追加する。
- 新規ブランク行に次のコードを入力する。
a =
- 入力した行の最後にカーソルを置いた状態で、Ctrl+Space キーを押す。コードの横に「コンテンツ・アシスト」ウィンドウが開きます。このウィンドウには、使用可能なコード・テンプレートがアルファベット順に表示されます。
- 「コンテンツ・アシスト」ウィンドウで、「MathLib」をダブルクリックする。スクロールダウンして見つける必要があります。
コードは a = MathLib というようになります。
- 引き続き、入力した行の最後にカーソルを置いた状態で、Ctrl+Space キーを再び押す。「コンテンツ・アシスト」ウィンドウが再び開きます。
- 「コンテンツ・アシスト」ウィンドウが開いた状態で、次のテキストを入力する。
sq
「コンテンツ・アシスト」ウィンドウ内で選択されている項目が、入力した文字に最も近いものになります。この例では、MathLib ライブラリーの sqrt 関数 (数値の平方根を戻す関数) が選択されている状態になります。
- 「コンテンツ・アシスト」ウィンドウ内で選択されている項目が「sqrt」になったら、Enter キーを押す。
「コンテンツ・アシスト」ウィンドウが閉じ、sqrt 関数呼び出しがコードに挿入されます。sqrt 関数は、数値の平方根を戻します。コード行は次のようになります。
a = mathLib.sqrt(numericItem);
コード numericItem が強調表示されます。強調表示されるワードは、ヒントであり、ユーザーが独自のコードをテンプレートに追加するように促します。この例では、sqrt 関数へ渡す数値または数値変数を入力する必要があります。
- コード numericItem を、プログラムで作成されている int 変数の 1 つを表す文字 b に置き換える。
プロンプト numericItem は、コード・テンプレートが挿入されたときに、自動的に選択されています。マウスをクリックしたり、カーソルをどこかに移動させていなければ、すぐに変数名を入力して、そのプロンプトを上書きすることができます。コード・テンプレートの中にはこのようなプロンプトが多数含まれているものもあります。コード・テンプレートに多数のプロンプトがある場合には、最初のプロンプトを上書きしてから Tab キーを押すと、自動的に次のプロンプトへ移動することができます。
コード行は次のようになります。
a = mathLib.sqrt(b);
- ファイルを保管する。
修飾コンテンツ・アシストによるコード・テンプレートの挿入
修飾コンテンツ・アシストは、前のセクションで「コンテンツ・アシスト」に sq を入力してコード・テンプレートのリストを絞り込んだのと同じような方法で機能します。ただし、修飾コンテンツ・アシストを使用する場合には、コンテンツ・テンプレートの最初の数文字をコードに入力してから「コンテンツ・アシスト」ウィンドウを開きます。修飾コンテンツ・アシストを使用するとテンプレートのリストを絞り込めるだけでなく、比較的大規模な EGL コード用のテンプレートやユーザーが自らカスタマイズするテンプレートなど、その他のテンプレートも使用できるようになります。
- コード a = mathLib.sqrt(b); の後に新規行を追加する。
- 新規行に文字 i を入力する。
- Ctrl+Space キーを押す。「コンテンツ・アシスト」ウィンドウが再び開きます。
- 「コンテンツ・アシスト」ウィンドウで、「ifelse - if else 文 (ifelse - if else statement)」をダブルクリックする。矢印キーを使用して移動してから Enter キーを押して、このテンプレートを追加することもできます。
「コンテンツ・アシスト」ウィンドウで「if else 文 (if else statement)」をダブルクリックすると、EGL if else 文用のテンプレートがコードに挿入されます。そのテンプレートには、if 文の論理式を記述する場所を示す condition というプロンプトが含まれています。
- condition プロンプトを次のコードに置き換える。
a > b
新規コードは以下のようになります。
if (a > b)
// EGL statements
else
// EGL statements
end
このコードには、その他の EGL コードを記述する場所を示すコメントが含まれています。
- ファイルを保管する。
コンテンツ・アシストにおけるコンテキストの区別のテスト
「コンテンツ・アシスト」ウィンドウには、現在のカーソル位置に対して有効なテンプレートのみが表示されます。そのようなコンテキストを区別する機能によって、ユーザーがテンプレートを誤った場所に追加するのを防ぎます。
前の演習で学習したように、EGL レコード・パーツは PageHandler 内またはプログラム・パーツ内で定義することはできません。その代わり、レコード・パーツは、ライブラリー内、または PageHandler あるいはプログラム・パーツの後に定義することができます。このセクションでは、プログラム・パーツ内では「コンテンツ・アシスト」ウィンドウを使用してレコード・パーツ・テンプレートを挿入できないことを確認します。
- c int; 行の後に新規行を追加する。
- カーソルを新規行へ移動する。
- Ctrl+Space キーを押して「コンテンツ・アシスト」ウィンドウを開く。「コンテンツ・アシスト」ウィンドウに EGL レコード・テンプレートが表示されないことを確認してください。
- Esc キーを押してコード・テンプレートを挿入せずに「コンテンツ・アシスト」ウィンドウを閉じる。
- ファイルの最後 (最後の end 文の後) にブランク行を追加して、カーソルをそのブランク行へ移動する。
- Ctrl+Space キーを押す。レコード・パーツはファイル内のこの場所では定義できるため、「コンテンツ・アシスト」ウィンドウにキーワード record が表示されます。
- 「コンテンツ・アシスト」ウィンドウで、「レコード (record)」をダブルクリックする。キーワード record がコードに挿入されますが、使用したのが非修飾コンテンツ・アシスタントであるため、このコード・テンプレートはたいへん単純なものになります。
- ワード record をコードから削除して、その場所に文字 r を入力する。
- Ctrl+Space キーを押して「コンテンツ・アシスト」ウィンドウを再び開く。修飾コンテンツ・アシストを使用しているので、「コンテンツ・アシスト」ウィンドウには使用可能なレコード・パーツ・テンプレートがいくつか表示されます。
- 「コンテンツ・アシスト」ウィンドウで、「レコード - 基本レコード (record - Basic Record)」という名前のテンプレートをダブルクリックする。より詳細なコード・テンプレートがコードに追加されます。
- コード・プロンプト (recordName、itemName、および typeDefOrPrimitive) を置き換えてレコード・パーツ・テンプレートを完成させる。または、レコード・パーツ・テンプレートを削除する。
デフォルト・コード・テンプレートの編集
デフォルトの EGL テンプレートに変更を加えることや使用しないテンプレートを使用不可にしたりすることが必要になる場合があります。EGL コード・テンプレートのオプションは「設定」ウィンドウに表示されます。以下のステップでは、「設定」ウィンドウでデフォルト・コード・テンプレートに変更を加えます。
- メニュー・バーから「ウィンドウ」>「設定」をクリックする。「設定」ウィンドウ
が開きます。
- 「設定」ウィンドウの左側で、「EGL」>「エディター (Editor)」>「テンプレート (Template)」をクリックする。
「設定」ウィンドウに EGL コード・テンプレートのリストが表示されます。このウィンドウから、以下の変更をコード・テンプレートに加えることができます。
- 「名前 (Name)」列の名前の横のチェック・ボックスを選択/選択解除して、それぞれのテンプレートを使用可能/使用不可にする。テンプレートを使用不可にすると「コンテンツ・アシスト」ウィンドウに表示されなくなります。
- 「新規 (New)」ボタンをクリックして、新規テンプレートを作成する。この演習では、後で新規テンプレートを作成します。
- テンプレートをクリックしてから「編集 (Edit)」ボタンをクリックして、テンプレートを編集する。この演習では、後でテンプレートを編集してみます。
- テンプレートをクリックしてから「除去 (Remove)」ボタンをクリックして、テンプレートを削除する。
- 「除去済みを復元」ボタンをクリックして、削除したテンプレートを復元する。
- テンプレートをクリックしてから「デフォルトに戻す」ボタンをクリックして、編集したテンプレートをデフォルトに復元する。
- 「インポート (Import)」ボタン/「エクスポート (Export)」ボタンをクリックして、テンプレートのリストをインポート/エクスポートする。
- 「function invocation」という名前のコード・テンプレートおよび説明「修飾なしの関数呼び出し」をクリックする。
- 「編集 (Edit)」をクリックする。「テンプレートの編集」ウィンドウが開きます。このウィンドウで、テンプレートに変更を加えることができます。
「パターン (Pattern)」フィールドにコード・テンプレート自体が表示されます。このチュートリアルを開始する前にテンプレートに変更を加えていない限り、次のコードが表示されます。
${functionName}();
コード ${functionName} は、この演習で上書きした condition や numericItem と同じく、プロンプトです。
- 「パターン (Pattern)」フィールドで、次のコメントをコードの最後に追加する。
//unqualified function with no arguments
「テンプレートの編集」ウィンドウは次のようになります。

このコメントによって EGL コードにおけるテンプレートの効果が変わることはありません。コメントを追加することは、コード・テンプレートが変更されたことを示す簡単な方法です。コード・テンプレートは任意の方法 (コメントの追加または EGL コードの変更) で変更することができます。
- 「OK」をクリックして、変更をテンプレートに保存して「設定」ウィンドウに戻る。
- 「OK」をクリックして「設定」ウィンドウを閉じる。
- EditorExamples.egl ファイルで、function main() 行の後にブランク行を追加する。
- カーソルを新規行に置き、文字 f を入力する。
- Ctrl+Space キーを押して「コンテンツ・アシスト」ウィンドウを開く。
- 「コンテンツ・アシスト」ウィンドウで、「function invocation - 修飾なしの関数呼び出し」をダブルクリックする。
コード・テンプレートがコードに追加されます。「設定」ウィドウで追加したコメントがコード・テンプレートに挿入されます。
- レコード・パーツ・コード・テンプレートを EditorExamples.egl ファイルから削除する。
新規コード・テンプレートの追加
定期的に使用する EGL コードの一部のコード・テンプレートを作成することもできます。
- メニュー・バーから「ウィンドウ」>「設定」をクリックする。
- 「設定」ウィンドウで、「EGL」>「エディター (Editor)」>「テンプレート (Template)」をクリックする。
- 「新規 (New)」をクリックする。「新規テンプレート」ウィンドウが開きます。
- 「名前 (Name)」フィールドに、新規テンプレートの名前として、次のテキストを入力する。
customNestedIf
- 「説明 (Description)」フィールドに、This is an example of a custom template と入力する。
- 以下のステップに従って、「パターン (Pattern)」フィールドにコードを挿入する。
- 最初の行に、//This is a nested if statement というコメントを挿入する。
- 2 番目の行に、次のコードを入力する。
if ((
- 「変数の挿入」をクリックする。変数のリストが、「コンテンツ・アシスト」ウィンドウに似たウィンドウ内に表示されます。
- 変数のリストで「名前 - 汎用名変数 (name - A general name variable)」をダブルクリックする。変数がコード・テンプレートに追加されます。このテンプレートをコードに追加すると、この変数によってプロンプトが作成されます。「パターン (Pattern)」フィールド内のコード・テンプレートは次のようになります。
//This is a nested if statement
if ((${name}
- スペース、> 記号を入力し、もう 1 つスペースを入力する。
- 別の汎用名変数を挿入する。
- 次のコードを入力する。
) && (
- 別の汎用名変数を挿入する。
- スペース、> 記号を入力し、もう 1 つスペースを入力する。
- 別の汎用名変数を挿入する。
- ) 記号を 2 つ入力する。コードは次のようになります。
//This is a nested if statement
if ((${name} > ${name}) &&
(${name} > ${name}))
- 次の行に、以下のように入力する。
//If statement action goes here
- 次の行に、end 文を入力する。
「パターン (Pattern)」フィールド内のコードは次のようになります。コードに違いがある場合には、以下のコードをコピーして貼り付けてください。
//This is a nested if statement
if ((${name} > ${name}) && (${name} > ${name}))
end
「新規テンプレート」ウィンドウは次のようになります。

- 「OK」をクリックする。
新規テンプレートがテンプレートのリストに表示されるようになります。
- 「OK」をクリックして「設定」ウィンドウを閉じる。
- EditorExamples.egl ファイルで、コード function main() の後にブランク行を追加する。
- その新規行に、文字 cu を入力する。
- Ctrl+Space キーを押す。
- 「customNestedIf」テンプレートをダブルクリックする。作成したテンプレートがコードに追加されます。
- プログラムの任意の変数の名前を ${name} プロンプトに挿入する。
この演習では、コンテンツ・アシストを使用してコード・テンプレートをコードに追加する方法を学習しました。EditorExamples.egl ファイルを使用して、必要なだけ、コード・テンプレートを試してみてください。
これで、『演習 2.2: 断片』を開始する準備ができました。