メインコンテンツまでスキップ
バージョン: 20 R7 BETA

メソッドとクラス

プロジェクトで使用される 4D コードは、 メソッド および クラス に記述されます。

4D IDE には、コードを作成・編集・エクスポート・削除するためのさまざまな機能があります。 You will usually use the included 4D code editor to work with your code. You can also use other editors such as VS Code, for which the 4D-Analyzer extension is available.

メソッドの作成

4D のメソッドは、/Project/Sources/ フォルダーの適切なフォルダー内の .4dm ファイルに格納されます。

いくつかの種類のメソッド を作成することができます:

  • すべてのメソッドは、エクスプローラー ウィンドウから作成または開くことができます (フォームエディター から管理されるオブジェクトメソッドを除く)。
  • プロジェクトメソッドは、ファイル メニューやツールバー (新規/メソッド... または 開く/メソッド...)、コードエディターウィンドウ のショートカットを使っても作成したり開いたりできます。
  • トリガーは、ストラクチャーエディターからも作成したり開いたりできます。
  • フォームメソッドは、フォームエディター からも作成したり開いたりできます。

クラスの作成

4D においてユーザークラスとは、/Project/Sources/Classes/ フォルダーに保存された専用のメソッドファイル (.4dm) によって定義されます。 ファイル名がクラス名になります。

クラスファイルは、ファイル メニューやツールバー (新規/クラス...)、あるいは エクスプローラー ウィンドウの メソッド ページにて作成可能です。

詳細については、クラス を参照してください。

メソッドやクラスの削除

既存のメソッドやクラスを削除するには:

  • ディスク上で "Sources" フォルダーより .4dm ファイルを削除します。
  • 4D エクスプローラーでは、メソッドやクラスを選択した状態で をクリックするか、コンテキストメニューより 移動 > ゴミ箱 を選択します。

オブジェクトメソッドを削除するには、フォームエディター で、オブジェクト メニューから オブジェクトメソッド消去 を選択します。

メソッドの書き出しと読み込み

メソッドやクラスのコードは、ファイルの形で書き出しおよび読み込みが可能です。 これらのコマンドは コードエディターメソッド メニューからアクセスできます。

  • メソッド書き出し... コマンドを選択すると、標準のファイル保存ダイアログが表示され、書き出しファイルの名前と場所、およびフォーマットを選択することができます (後述参照)。 印刷と同様に、コードブロックが折りたたまれているかどうかに関わらず、コード全体が書き出されます。
  • メソッド読み込み... コマンドを選択すると、標準のファイルを開くダイアログが表示され、読み込むファイルを選択することができます。 読み込みをおこなうと、メソッド中で現在選択されているテキストが置き換えられます。 読み込んだメソッドで既存メソッドの全体を書き換えるには、読み込み前に既存メソッド内を全選択します。

読み込み/書き出し機能はマルチプラットフォーム対応です。macOS で書き出したメソッドを Windows で読み込むことができ、その逆も可能です。4D は必要に応じて文字の変換をおこないます。

メソッドの読み込みと書き出しには 2つのフォーマットを使用できます:

  • 4Dメソッド (.c4d 拡張子): このフォーマットでは、メソッドはエンコードされた形で書き出されます。 メソッド中のオブジェクト (コマンドなどの要素) の名称はトークナイズされます。 このフォーマットは、異なる言語 (非英語のコマンド名) を使用する 4Dアプリケーションやプラグイン間でメソッドをやり取りする場合に特に便利です。 その代わり、テキストエディターでメソッドを表示することはできません。
  • テキスト (.txt 拡張子): このフォーマットでは、メソッドがテキスト形式で書き出されます。 書き出したファイルは、標準のテキストエディターやソースコントロールツールで開くことができます。

プロジェクトメソッドプロパティ

プロジェクトメソッドを作成した後、その名称やプロパティを変更することができます。 プロジェクトメソッドのプロパティは主に、実行アクセスやセキュリティ条件 (ユーザー、統合されたサーバーやサービスからのアクセスの可否) に加えて、実行モードに関する設定が含まれます。

他のタイプのメソッドには専用のプロパティがありません。 これらのメソッドのプロパティは、それらが関連付けられているオブジェクトに基づいて決定されます。

プロジェクトメソッドの メソッドプロパティ ダイアログボックスを表示するには、次の方法があります:

  • コードエディターにおいて、メソッド メニューから メソッドプロパティ... を選択します。
  • または、エクスプローラーの メソッド ページでプロジェクトメソッドを選択し、コンテキストメニューまたはオプションメニューから メソッドプロパティ... を選択します。

一回の処理で複数のプロジェクトメソッドの属性を設定するために、属性の一括設定を使用できます (属性の一括設定 参照)。

名称

メソッドプロパティ ウィンドウの 名称 エリア、またはエクスプローラーでプロジェクトメソッド名を変更できます。

新しい名称は 4D の命名規則に沿っていなければなりません (識別子 参照)。 同じ名称のメソッドが既に存在する場合、4D はその旨を知らせるメッセージを表示します。 名称変更後、4D メソッドリストをソートします。

caution

プロジェクトメソッドの名前を変更すると、そのメソッドを旧名称で呼び出している他のメソッドやフォーミュラなど、アプリケーションの機能が無効になるリスクがあります。 このため、この変更を手動ではなく、名称変更 で説明されているプロジェクトメソッド名の名称変更機能によりおこなうことが強く推奨されます。 この機能を使用すれば、デザイン環境における当該メソッドの呼び出し箇所がすべて自動的に更新されます (ただし EXECUTE METHOD など、文字列としてメソッド名が参照されている個所を除きます)。

4D Server の場合、名称変更は変更終了後にサーバーに反映されます。 複数のユーザーが同時に名称を変更しようとすると、最後におこなわれた名称変更が適用されます。 メソッドのオーナーを指定すれば特定のユーザー以外はメソッド名を変更できないようにできます。

info

データベースメソッドの名称を変更することはできません。 オブジェクトに紐付いたトリガー、フォームメソッド、オブジェクトメソッドも同様です。これらは関連先のオブジェクトにより名称を決定されます。

属性

属性を使用して、プロジェクトメソッドがどのコンテキストにおいて利用可能かを指定できます。 エクスプローラーを使用して複数のプロジェクトメソッドに対し、属性を一括して設定することもできます (後述参照)。

非表示

ユーザーに対し、実行 メニューの メソッド... から特定のメソッドを実行させたくない場合、このオプションを選択すればそのメソッドを非表示にできます。 非表示のメソッドは、メソッド実行ダイアログボックスに表示されません。

プロジェクトメソッドを非表示にしても、データベースプログラマーはそれを使用することができます。 これらは、エクスプローラーやコードエディターのメソッドリストには引き続き表示されます。

コンポーネントとホストプロジェクト間で共有

この属性は、コンポーネントのフレームワークで使用されます。 このオプションが選択されていると、アプリケーションがホストデータベースとして実行されている場合、そのメソッドがコンポーネントから実行可能になります。 また、アプリケーションがコンポーネントとして実行されている場合、そのメソッドはホストデータベースから実行可能となります。

コンポーネントについては 4Dコンポーネントの開発とインストール を参照ください。

サーバー上で実行

この属性は、クライアント/サーバーモードの 4Dアプリケーションでのみ考慮されます。 このオプションが選択されていると、そのプロジェクトメソッドは呼び出し方に関わらず常にサーバー上で実行されます。

このオプションに関する詳細は、4D Serverリファレンスマニュアルの サーバー上で実行属性 を参照ください。

実行モード

このオプションを使用すると、メソッドのプリエンプティブ実行が可能であることを宣言できます。 これについては、プリエンプティブプロセス の章で説明されています。

公開オプション

公開オプション属性は、当該メソッドの呼び出しが明示的に許可された外部サービスを指定します。

Webサービス

この属性を使用して、SOAPリクエストでアクセス可能な Webサービスとして当該メソッドを公開することができます。 詳細は Web サービスの公開と使用 を参照ください。 このオプションを選択すると、WSDL を公開 オプションを選択できるようになります。

エクスプローラーでは、Webサービスとして提供されるプロジェクトメソッドには専用のアイコンが表示されます

注: メソッド名が XML の命名規則に準拠しない文字 (たとえばスペース) を含む場合、そのメソッドは Webサービスとして公開できません。 この場合、設定は保存できません。

WSDL を公開

この属性は "Webサービス" 属性が設定されている場合にのみ利用可能です。 この属性を設定すると、当該メソッドが 4Dアプリケーションの WSDLに 含まれます。 詳細については WSDL ファイルを生成する を参照ください。

エクスプローラーでは、Webサービスとして提供され、WSDLで公開されたプロジェクトメソッドには専用のアイコンが表示されます

4D タグと URL(4DACTION...)

このオプションは、4D Webサーバーのセキュリティを強化するために使用されます。このオプションが選択されていない場合、4DACTION URL を使用した HTTPリクエスト、および 4DSCRIPT、4DTEXT、4DHTML タグ から当該メソッドを直接呼び出すことができません。

エクスプローラーでは、この属性が設定されたプロジェクトメソッドには専用のアイコンが表示されます

セキュリティのため、このオプションはデフォルトで選択されていません。 Web機能から直接呼び出されるメソッドには、このオプションを明示的に選択しなければなりません。

SQL

この属性が選択されていると、当該プロジェクトメソッドは 4D の SQLエンジンから実行可能となります。 デフォルトでは選択されておらず、明示的に許可されない限り 4Dメソッドは保護されており、4D SQLエンジンから呼び出すことはできません。

このプロパティはすべての内部および外部SQLクエリ (ODBCドライバー経由、Begin SQL/End SQL タグ内の SQLコード、または QUERY BY SQL からの呼び出し) に適用されます。

注:

  • メソッドに "SQL" 属性が設定されていても、メソッドの実行時にはデータベース設定およびメソッドプロパティに設定されたアクセス権が考慮されます。
  • ODBC の SQLProcedure 関数は "SQL" 属性が設定されているプロジェクトメソッド名のみを返します。

詳細については、SQLマニュアルの 4Dと4D SQLエンジン統合の原則 を参照ください。

REST サーバー

このオプションは廃止されます。 RESTコールによるコードの呼び出しは、ORDAデータモデルクラス関数 でのみサポートされます。

属性の一括設定

"メソッド属性" ダイアログボックスを使用して、一回の操作で複数のプロジェクトメソッドに対して属性 (非表示、Webサービスで公開、等) を設定することができます。 この機能は、多数のプロジェクトメソッドの属性を一括して変更する場合に便利です。 また、開発の段階で、類似のメソッド群に共通の属性を素早く適用するのに使用することもできます。

メソッド属性の一括設定をおこなうには:

  1. エクスプローラーの メソッドページ からオプションメニューを展開し、属性の一括設定... コマンドを選択します。 "メソッド属性" ダイアログボックスが表示されます:

  2. "一致するメソッド名" エリアに属性を一括設定するメソッドを指定するための名前条件を入力します。 入力した文字列を使用してメソッド名が検索されます。

"@" をワイルドカード文字として使用し、メソッドグループを選択できます:

  • 前方一致で検索するには、文字列の最後に "@" を加えます。 例: web@
  • 含む検索をするには、文字列の中に "@" を加えます。 例: web@write
  • 後方一致で検索するには、文字列の先頭に "@" を加えます。 例: web@write
  • すべてのメソッドを選択するには "@" のみを入力します。

注:

  • 文字の大小は区別されません。
  • "@" は文字列内で複数回使用できます (例: dtro_@web@pro.@)
  1. "更新する属性" エリアでは、ドロップダウンリストから更新対象の属性を選択し、True または False ラジオボタンを選択します。

注: "WSDL で公開する" 属性を True に設定した場合、"Webサービスとして公開" 属性が True に設定されたメソッドにのみ適用されます。

  1. 適用 をクリックします。 検索条件に合致するプロジェクトメソッドに対し、属性の変更は即座に反映されます。