4D Developer Conference 2024・質疑応答より
Qodly for 4Dで開発したプロジェクト(たとえばトレーニングで使用したレンタカーのアプリケーション)をQodly Cloudに変換することはできるのでしょうか
クラウド版のQodly Server(Linuxプラットフォームで動作する軽量版の4D Server)は,バックエンドに4Dと同じデータベースエンジンを採用していますが,Windows/macOS版の4D Serverよりもできることが限られているため,Qodly for 4Dで開発したプロジェクトをQodly Cloudにそのまま変換することはできません。
Qodly Serverでアプリケーションが動作するためには,4Dではなく,QodlyScriptですべてがコーディングされていなければなりませんが,QodlyScriptでは下記のものが使用できません。
- プロジェクトメソッド
- データベースメソッド
- コンポーネントメソッド
- トリガ
- コマンド
- プラグインコマンド
クラスAPIについては,SystemWorker, WebSocket, SMTPTransporterなど一部の例外を除き,基本的に4DとQodlyに共通です。
QodlyScriptとは
QodlyScriptは,4DとJavaScriptによく似たプログラミング言語です。4DとQodlyScriptを比較すると
- キーワードの違い
- 演算子の違い
- 変数名の違い
- 定数名の違い
- パラメーター区切りの違い
- 演算子の優先順位の違い
が挙げられます。
キーワードの違い
QodlyのキーワードはJavaScriptと同じくECMAScriptに準拠しています。4Dのキーワードとは違い,①キャメルケースであり,②空白を含みません。また,一部のキーワードは統合されています。
| 4D | QodlyScript |
|---|---|
| If | if |
| Else | else |
| End if | end |
| Case of | switch |
| While | while |
| End while | end |
| For | for |
| End for | end |
| Repeat | repeat |
| Until | until |
| For each | forEach |
| End for each | end |
| Use | use |
| End use | end |
| Function | function |
| Class extends | extends |
| Class constructor | constructor |
| var … : Text | var … : string |
| var … : Date | var … : date |
| var … : Time | var … : time |
| var … : Boolean | var … : boolean |
| var … : Integer | var … : integer |
| var … : Real | var … : real |
| var … : Picture | var … : picture |
| var … : Blob | var … : blob |
| var … : Collection | var … : collection |
| var … : Object | var … : object |
| var … : Variant | var … : variant |
| #DECLARE | declare |
| Alias | alias |
| Try | try |
| Catch | catch |
| End try | end |
| True | true |
| False | false |
| This | this |
演算子の違い
4DとQodlyでは代入演算子および等価比較演算子が違います。
| 4D | QodlyScript |
|---|---|
| := | = |
| # | != |
変数名の違い
Qodlyにはプロセス変数の概念がありません。変数のスコープは常にローカルです。変数名には,$・ _・Unicodeを使用することができますが,冒頭の文字に数字・$を使用することはできません。
| 4D | QodlyScript |
|---|---|
| $myVar | myVar |
定数名の違い
Qodlyの定数名は,kから始まり,キーワード同様にキャメルケースであり,空白を含みません。また,ASCIIコードのTabなど,リテラル表記で代用できるものは除かれています。
| 4D | QodlyScript |
|---|---|
| 4D REST digest | k4DRESTDigest |
| Tab | 9 |
パラメーター区切りの違い
Qodlyのパラメーター区切りはカンマ記号です。
| 4D | QodlyScript |
|---|---|
| ; | , |
演算子の優先順位の違い
4Dでは単純に左から右に向かって演算子を評価しますが,QodlyではECMAScriptと同じように演算子を評価します。
| 4D | QodlyScript |
|---|---|
| 3+10*2=26 | 3+10*2=23 |
Qodlyモード
将来のバージョンでは
- QodlyScriptで4Dメソッドを記述する
- Qodlyと同じ演算子の優先順位を4Dでも使用する
モードが提供される予定です。
また,4DからQodlyに対してOpen datastoreを使用することができるように,Qodlyから4Dに対してもopenDatastore()が実行できるようになる予定です。
その他
-
Qodly for 4DとQodly CloudのWebForm は互換性があるので,一方のQodly Studioから他方のQodly Studio にコピー&ペーストすることができます。
-
4DのストラクチャとQodlyのモデルは同じものではありません。しかし,相違点には法則性があるので,変換プログラムを開発できるかもしれません。