コマンド、定数、テーブル、フィールドは、プロジェクトのソースコードファイル (.4dmファイル) にトークンと共に保存されます。これによって、4D はそれらの名前を自動的に変更することができます。しかし、バージョン管理システムや外部のコードエディターで読みやすくするため、あるいはプロジェクト間でコードを共有するために、これらのソースコードファイルをトークンなしで保存したい場合があります。これらのトークンを使わずに 4D でソースコードを保存する方法を見てみましょう。
トークンとは何ですか?
4D はこのトークンシステムにより、ランゲージのコマンド、定数、テーブル、フィールドが改名されていても、それらを自動的に認識することができます。
コマンド名には “:C” とコマンドID が続き、定数は “:K” と定数ID、テーブルは “:” とテーブルID、フィールドは “:” とフィールドIDが名前の後に続きます。
メソッドエディターでソースコードを開くと、4D は自動的にトークンに従って要素の名前を変更します。これらのトークンは、メソッドエディターでは 4D によって隠されていますが、外部のソースコードエディターを使用する場合は、表示されます。
外部のソースコードエディターやバージョン管理システムでは、これらのトークンのためにソースコードを可読性が低下する場合があります。
トークンを含むメソッドのサンプル:
トークンを無効にするには
可読性のため、4D はトークンなしでソースコードファイルを保存する選択肢を提供するようになりました。
新しい 4D の環境設定を使って、新規作成するプロジェクトではソースコードファイルをトークンなしで書くようにすることができます。
このオプションはデフォルトで有効になっており、変更はありません: ソースコードは、トークン付きで保存されています。しかし、このオプションを無効にすると、新しいプロジェクトのソースコードファイルはトークンなしで保存されるようになります。
トークンなしの同じメソッドのサンプル。
既存のプロジェクトの場合は
トークンに関わる 4D環境設定を無効にすると、新規プロジェクトの 4DProjectファイルが持つ “tokenizedText” という名前のブール型属性が *false* に設定されます。
技術的には、この属性を既存プロジェクトの 4DProjectファイルに追加することができますが、これだけでは既存のソースコードファイルのトークンは削除されません。4Dメソッドエディターで開いて修正&保存しなおすか、METHOD SET CODEコマンドを使用して保存しなおす必要があります。なお、この属性は、4D v19 LTS から使用可能です。
どのように機能するのか?
プロジェクトモードでは、フランス語のランゲージで開発しても、.4dm ファイルではソースコードがすべて英語で保存されています。
4Dメソッドエディターが .4dmファイルを開くとき、まず最初にトークンが考慮されます。そして次に、コマンド、定数、テーブル、フィールドは、そのテキストによって認識されます (フランス語で開発している場合は、翻訳されます)。ですから、ソースコードがトークンなしで保存されていても、4Dメソッドエディターでは、通常通り編集が可能です。
ただ、トークンを無効にすると、(他の開発プラットフォームと同じように) ランゲージのコマンド/定数/テーブル/フィールドの名称変更を自分でおこなう必要があることを忘れないでください。
フレームワークプロジェクト
他のプロジェクトと共有するフレームワークプロジェクトを開発する場合、コード内のテーブルやフィールドに関する問題に遭遇する可能性があります。フレームワークからプロジェクトにファイルをコピーする際に、テーブルIDが異なっている場合などです。たとえば、フレームワークの [Setting] テーブルは #1 であっても、ターゲットプロジェクトでは #3 になっているかもしれません。もし、フレームワークからコピーされたソースコードにトークンが含まれていれば、4D は [Setting]テーブルをターゲットプロジェクトの #1 の ID を持つテーブル名に置き換えてしまいます!
ソースコードの共有を容易にするために、フレームワークのプロジェクトでは、トークンの保存を無効にすることができます。すると、フレームワークのファイルをターゲットプロジェクトにコピーした後、ターゲットにおいて [Setting]テーブルは (競合の可能性がある) ID ではなく、その名前によって認識されるようになります。