CLI で 4Dコードを実行するためのツール

開発業界においては、CI/CD は標準的な慣行になっています。コード修正の都度、テスト・コンパイル・ビルド・配布、時には運用、といった自動化されたアクションが生成され、コードが高品質で既存のシステムに容易に統合されることを保証します。

これらのアクションには、必要なコードを実行するためのツールが必要です。4D の開発者として私たちは、デベロッパーが初歩的なアクションを実行できるツールを無償で提供することにしました。このツールは tool4d と呼ばれ、4D環境内で必要なアクションを実行するプロセスを効率化するものです。

この記事では、tool4d の機能性と、開発プロセスを強化するための使用法を探ります。

この新しいアプリケーションは、主に CI/CDパイプラインに統合されることに特化しています。そのため、tool4d の主な目標は、最小限の命令セット、最小限のメモリフットプリント、最小限のサイズで 4Dコードを実行することです。tool4dアプリケーションは、4Dアプリケーションのサブセットと見なすことができます。

どのように動作するのか?

まず、tool4d は 4D と同様にリリースされ、バージョンとビルド番号は共通です。
tool4d は表示用のアイコンを持ちますが、コマンドライン・インターフェース でのみ実行できます。
実行は常にヘッドレスモードでおこなわれます。情報をフィードバックするために、Windows でも以下のように stdoutストリームを使用することができます:

LOG EVENT(Into system standard outputs; “message”)

以下の一連のメソッドは常に実行されます:
1. tool4dは、-skip-onstartupパラメーターが定義されている場合を除き、On Startupデータベースメソッドを実行します。
2. tool4dは、-startup-methodパラメーターが定義されている場合、指定されたメソッドを実行します。
3. tool4dは、-skip-onstartupパラメーターが定義されている場合を除き、On Exitデータベースメソッドを実行します。
4. tool4d は終了します。

tool4d をできるだけ軽くするために、アプリケーションサーバー、Webサーバー、SQLサーバー、バックアップスケジューラーなど、4D の多くの要素が無効化されています。
そして、最後になりますが、tool4d を実行するためにライセンスは必要ありません。
詳しくは、ドキュメント をご覧ください。

入手方法は?

tool4d のアプリケーションは、Windows、macOS Intel、macOS Silicon 向けに、製品ダウンロード ポータルで入手できます。
tool4d は無料で、CI/CDパイプラインで使用できるため、正確なクエリ文字列を使えば https://resources-download.4d.com のサイトから認証なしで入手できます。
たとえば、最新の v20 LTS バージョンは、以下のリンクから直接ダウンロードすることができます:

https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_arm.tar.xz
https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_x86.tar.xz
https://resources-download.4d.com/release/20.x/20.0/latest/win/tool4d_v20.0_win.tar.xz

パッケージは tar.xz アルゴリズムで圧縮されており、最小限のファイルサイズを保証しています。この形式と互換性のあるアプリケーションがシステムにインストールされていない場合、以下のコマンドラインを使用してパッケージを解凍することができます。

Windows:
tar xvzf {tool4dCompressedFile} -C {destinationFolder}

macOS:
tar xvzf {tool4dCompressedFile}

ユースケース

tool4d には多くのユースケースがあります。ここではその一部を紹介しますが、他にも様々なユースケースを想像してみてください!

コンパイル

tool4d は、ユニットテストやコンパイルなどのタスクをビルドするのに適しています。ここでは、compileThisProject という小さなプロジェクトが、別のプロジェクトをコンパイルする例を紹介します。
compileThisProject プロジェクトは、プロジェクトファイルのパスを取得し、それをコンパイルし、ターミナルにコンパイル結果を表示します。その “On Startup” データベースメソッドには、次のコードが格納されています:

LOG EVENT(Into system standard outputs; "Compilation starts\r\n")
var $projectPath : Text
var $result : Integer
var $compilationReturn : Object

// CLI の --user-param パラメーターの文字列値を取得します
$result:=Get database parameter(User param value; $projectPath)
If ($projectPath#"")
	$compilationReturn:=Compile project(File($projectPath))
	LOG EVENT(Into system standard outputs; "Compilation returns:\r\n"+JSON Stringify($compilationReturn; *))
End if 

実行するコマンドライン:

/Applications/tool4d.app/Contents/MacOS/tool4d --project "/Users/Me/compileThisProject/Project/compileThisProject.4DProject" --user-param "/Users/Me/Test/Project/Test.4DProject"

そして、その結果がこちらです:

Compilation starts
Compilation returns:
{
 "success": true,
 "errors": []
}

継続的インテグレーション

コンパイルは CI/CDパイプラインの 1ステップです。CI/CDプラットフォームが何であれ、各ステップで tool4d を使用することができます!
GitHub Actions については、このブログ記事 ですでに言及しました。これは GitHub のプラットフォームで、コードプッシュやプルリクエストのマージといった GitHub イベントに対して自動的にアクションを実行できるものです。そしてこれらのアクションは、macOS や Windows の仮想マシン上で実行することができます。
以下は、GitHub上のコードプッシュ毎にユニットテストを実行する GitHub Actions の YAMLスクリプト のサンプルです:

name: Unit Tests
on:
  push:
    branches: [ "main" ]
jobs:
  Unit-tests-on-windows:
    name: Unit Tests on Windows
    runs-on: windows-latest
    permissions: write-all
    steps:
      - uses: actions/checkout@v3
      - name: "Download latest tool4d release and expand"
        run: |
          curl https://resources-download.4d.com/release/20.x/20.0/latest/win/tool4d_v20.0_win.tar.xz -o tool4d.tar.xz -sL           tar xvJf tool4d.tar.xz -C tool4d
      - name: "Run Unit Tests"
        run: |
          ./tool4d/tool4d.exe --project ${{ github.workspace }}\Project\myProject.4DProject --dataless --skip-onstartup --startup-method "runUnitTests"
  Unit-tests-on-macos:
    name: Unit Tests on macOS
    needs: [Unit-tests-on-windows]
    runs-on: macOS-latest
    permissions: write-all
    steps:
      - uses: actions/checkout@v3
      - name: "Download latest tool4d release and expand"
        run: |
          curl https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_x86.tar.xz -o tool4d.tar.xz -sL           tar xvzf tool4d.tar.xz
      - name: "Run Project Unit Tests"
        run: |
          ./tool4d.app/Contents/MacOS/tool4d --project ${{ github.workspace }}/Project/myProject.4DProject --dataless --skip-onstartup --startup-method "runUnitTests"

なお、tool4d の実行にはライセンスが不要なため、仮想マシンに何かを登録する必要はありません!

保守

また、保守作業にも tool4d を使用できます。たとえば、4Dサーバーのデータファイルを検証し、ユーザーがサーバーに接続しないようにしたい場合などです。この用途では、4D Serverアプリケーションを “–utility” パラメーターで使用することもできます。すると、tool4d と同じ一連のメソッドを実行します。

そのためのコマンドライン:
/Applications/4D/4D\ Server.app/Contents/MacOS/4D\ Server --utility --project “{pathToProjectFile}“ --skip-onstartup --startup-method “verifyDataFile”

verifyDataFile メソッドには、VERIFY CURRENT DATA FILE コマンドの呼び出しが含まれています。

 

tool4d が CI/CDパイプラインの設計やその他のタスクでお役に立てることを願っています!

私たちは、ユーザーに最高の体験を提供できるよう常に努力しており、4Dフォーラムにあなたのフィードバックを投稿することをお勧めします。あなたのフィードバックは、あなたのニーズをよりよく理解し、製品とサービスを改善し続ける助けになります。

Avatar
- プロダクトオーナー - Damien Fuzeauは、2019年2月に4D Productチームに参加しました。プロダクトオーナーとして、ユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換することを担当しています。また、実装された機能が顧客のニーズを満たしているかどうかを確認することも彼の役割です。ナント大学のソフトウェア工学科を卒業。前職の会社では最初は開発者として(1997年に4Dを発見)、後にエンジニアリングマネージャーとソフトウェアアーキテクトとして、23年以上勤務しました。この会社は、4DのOEMパートナーであり、現在は数千のユーザーと数百のサーバーに向けて4Dベースのビジネスソフトを展開しています。ですから、Damienは、多言語環境での4D開発・導入に慣れています。