Webエリアは,フォームエディター上のオブジェクト配置に関係なく,常にフォームの最前面にレンダリングされます。過去バージョンでは,Webエリアの前にボタンなどのオブジェクトを配置して,ドラッグ&ドロップなどのイベントを簡易的に処理することができました。Webエリアに対するドラッグ&ドロップは,透明ボタンなどではなく,WebエリアとJavaScriptで処理することが必要です。
プロジェクトモードモードでは,.4DProject ファイルではなく,プロジェクトフォルダーと同じ階層にあるサーバー証明書(key.pem cert.pem)が使用されます。アプリケーションをビルドした場合,プロジェクトフォルダーは.4DZ
ファイルになりますが,プロジェクトフォルダーと同じ階層にあるサーバー証明書は自動的にコピーされません。これは仕様です。
ビルド後に証明書ファイルを.4DZ
ファイルと同じ階層にコピーすることもできますが,Mac版の場合,それではコード署名をやり直す必要が生じるので,デフォルトの検索パスに依存するではなく,WEB Server
コマンドのcertificatesFolder
プロパティで証明書ファイルのパスを明示的に指定することが推奨されています。
macOS 12 Montereyでは,キーボードショートカットの処理が改良されたようです。メニュー項目にキーボードショートカットの「command+0」を設定した場合,AZERTYキーボードを使用中のBig Surでは画面に「command+0」と表示されましたが,Montereyでは「command+à」と表示されるようになりました。AZERTY配列の場合,「0」は「shift+à」なので,文字どおりモディファイアを押しながら「0」を入力するためには「shift」キーも必要になるはずですが,実際のキーコンビネーションに「shift」キーは含まれていなので,Montereyの表示(command+à)のほうが正確といえるかもしれません。
とはいえ,開発者がデザインモードやランゲージで「command+0」をショートカットに設定したのであれば,使用中のキーボードレイアウトに関係なく,メニュー項目に「⌘à」ではなく「⌘0」と表示されることが期待されると思われます。v19r6では,数字のキーボードショートカットは,AZERTY配列でも数字が表示されるように内部的に回避策を使用することになりました。
Windows版のピクチャボタン/ピクチャポップアップメニューは,ウィンドウが背面に移動しても非アクティブ状態になることはありません。これはプラットフォームの標準的な動作であり,仕様です。Mac版は,4
ステート画像が設定されていれば,4
番目のステート画像(loopBackToFirstFrame)に切り替わることでグレーアウトされます。
コレクション型リストボックスのカレント項目プロパティには選択行のオブジェクトが自動的に代入されます。選択行は,キーボード/マウス操作あるいはLISTBOX SELECT ROW
コマンドで変更することができます。
リストボックスのデータソースを直接ランゲージで操作するような場合は注意が必要です。たとえばcollection.remove()
でカレント項目をコレクションから削除した場合,画面上はリストボックスの当該行が消え,それが最下行でなければ,繰り上がった行が選択されてように表示されますが,カレント項目プロパティは更新されず,削除されたオブジェクトのままとなります。そのオブジェクトの位置を特定するためにcollection.indexOf()
を使用すると-1
(オブジェクトはコレクションに含まれないので正しい)が返されますが,この値をcollection.remove()
に渡すと相対指定となり,最終行が削除されることになります。
このようなケースでコレクション型リストボックスのカレント項目プロパティが更新されないのは仕様です。
リストボックスコマンドやユーザーインタフェースを介さずにコレクションを操作した場合,LISTBOX SELECT ROW
コマンドを使用し,明示的に行を選択するか,選択を解除する必要があります。コマンドを使用することにより,データソースとカレント項目プロパティの同期を取ることができます。
Windows版の4Dを管理者権限で起動した場合,VOLUME LIST
はネットワーク接続された外部ボリュームを返しません。これは仕様です。
19r6では,プロジェクトフォルダーを共有することにより,リモートクライアントからデザインモードにアクセスできるようになりました。これは18r4でサーバーと同じマシン上で起動した4D Remote(ローカルクライアント)であればデザインモードにアクセスできる仕組みを拡張するものです。
プロジェクトモードでは,構造的なバイナリファイルであるストラクチャファイルではなく,標準テキストファイルの集合を扱います。チーム開発においては,Gitのようなバージョン管理システムを併用することが想定されています。Gitワークフローは,4Dに限らず,多くの開発チームで採用されています。バージョン管理システムを活用することにより,アジャイル開発に則ったリリースや継続的なメンテナンス(CI/CD)を実施することができます。外部コードエディターを利用することもできます。
バイナリモードに慣れたデベロッパーの中には,こうしたことをメリットとは考えず,クライアントで同時開発ができないのであれば,プロジェクトモードに移行することはできない,という意見が挙がりました。今回の新機能はそうしたニーズに応えるものです。
開発部は,Gitのようなバージョン管理システムを推奨しています。プロジェクトモードは,そのような開発スタイルを想定したアーキテクチャだからです。とはいえ,デベロッパーが望むのであれば,さらにプロジェクトモードに切り替えることが容易になるのであれば,ファイル共有を利用した簡易的なシステムがあっても良い,と判断しました。
インタープリター版のプロジェクトに開発モードで”接続”した場合,メソッドエディター・フォームエディター・ツールボックスなどの排他的ロックは,オペレーションシステムではなく,4D Serverと4D Remoteの間で管理されることになります。そのため,外部エディターで同時にソースコードを編集することはできません。この場合,サーバーに接続することは,クライアント側のファイルシステム上で共有フォルダーの場所を指定する行為を指します。例外は,サーバーと同じマシンで起動したローカルクライアントで,その場合,開発モードではなく,従来の要領でサーバーに接続します。
クライアント側でメソッド・フォーム・ストラクチャ・データベース設定・ドキュメンテーション・ユーザー/グループ・メニュー・ヘルプTips・リスト・フィルター・スタイルシートなどを更新すると,サーバーに通知が送信され,プロジェクトがリロードされます。実行中のメソッドやフォームは,閉じられた後に更新されます。フォームやメソッドはファイル単位でロックされます。ツールボックスはページ単位でロックされます。データベース設定は全体がロックされます。コンパイルを実行できるのは1度に1台のマシンだけです。
下記のコマンドはバイナリモードと同じ要領で使用できます。
下記のコマンドは対象メソッドがロックされていなければ成功し,ロックされていればエラーを返します。
開発モードで接続したという情報は .4DLink ファイルに反映されます。その場合,プロジェクト名にはサーバーの公開名とアドレスに “(development mode)” という文字列が追加されます。
フォルダー共有は,Windows/macOSそれぞれのオペレーションシステムが提供する基本的な仕組み(AFP, SMB/CIFS)を使用することができます。アクセス速度が問題であれば,NAS(Network Attached Storage)の導入を検討すると良いかもしれません。