BLOGS

KEISUKE MIYAKO

warning: file_get_contents(http://www.telize.com/geoip/54.158.212.93) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var/www/www.4d.com/docs/includes/common.inc(1762) : eval()'d code on line 4.

v16: 最新情報

2016年9月28日,v16のベータ版がパートナー向けに公開されました。v16は,15R5に続くアップグレードです。慣例に従い,5回目のRリリースでバージョン番号が変わりました。v16へのアップグレードは,メンテナンスサービスが適用されるユーザーには無償で,そうではないユーザーには有償で提供されます。この記事では,次期バージョンの注目ポイントを紹介しています。

 

v16について

今回のRリリースは,アプリケーションのアーキテクチャに影響を及ぼす大々的な改良や保守を実施する良い機会となりました(ストラクチャーファイルを以前のバージョンで開くことがないため)。そのような変更点は,かなり前に開発が終了していたものですが,テストと検証により多くの時間を充てるため,通常のRリリースでは見送られてきました。たとえば,新しいデータベースキャッシュの導入,OpenSSLICUライブラリのアップデート,Alturaの使用中止,フォームのUnicode化といった重要なアップデートが施されています。v16では,オペレーションシステムやハードウェアの進歩を十分に見据え,高いパフォーマンスと安定性を提供することに特別な努力が払われました。

 

関連記事

プリエンプティブモード

デベロッパー・カンファレンスで紹介されたように,15R5からは『プリエンプティブモード』でメソッドが実行できるようになりました。別名『スレッドセーフ』とも呼ばれる,この新しい実行モードでは,複数のCPUコアに実行コンテキスト(『プロセス』)分散して同時に処理することができます。これまでの4Dは,複数のプロセスを同時に実行した場合,内部スケジューラーがそれぞれのプロセスを公平に停止/再開することにより,単一のCPUコアだけで実行していました(協調的マルチタスク)。プリエンプティブモードは,集計処理やレポート出力などのパフォーマンスを引き上げる可能性を秘めていますが,効果的に使用するためには,その仕組みを理解することが肝要です。

 

スライドおよびサンプルコードは下記のURLで公開しています。

 

https://github.com/4D-JP/

 

http://www.slideshare.net/kmiyako/

 

実行モードはプロセスのプロパティ

15R5: 最新情報【続き】

前回に引き続き,15R5の注目ポイントを紹介したいと思います。

 

8. OS X 64ビット版を正式リリース

 

OS X/64ビット版は,15R5ですべて正式リリースとなりました。4D Serverに加え,スタンドアロン版,つまり4D Developer Editionと4D Volume Desktopも64ビット版を運用することができます。64ビット版は,システムに搭載されたメモリを十分に活用することができ,同時接続ユーザー数やパフォーマンスの向上が見込めます。

 

64ビット版に移行するだけで,プログラムを書き換えることなく,以下の新設計ダイアログをエンドユーザーに提供することができます。

 

  • 新しいラベルエディター

デスクトップからの画像のドラッグ&ドロップ・自動ズーム・印刷プレビューなどの新機能が追加されています。

 

アプリケーションを終了する正しい方法

QUIT 4Dコマンド,あるいは標準アクションの「終了」が実行されると,まず,On Exitデータベースメソッドが実行され,起動中のプロセスを閉じる機会が与えられます。On Exitの終了後も残っているプロセスは,遅延または停止状態であればスリープを解かれ,続けて強制的にアボートされてゆきます。

 

On Exitデータベースメソッドが存在しない場合,起動中のプロセスはすぐにスリープを解かれ,すべて強制的に終了されてゆきます。ですから,On Exitが定義されていないアプリケーションは,常に異常な方法で終了する可能性があります。アプリケーションを終了するためにOn Exitデータベースメソッドを使用することが推奨されているのはそのためです。

 

ドキュメントに示されているように,DELAY PROCESSでOn Exitプロセス(プロセス名: "$xx")を遅延しつつ,フォームはCALL PROCESS,非表示プロセスはインタープロセス変数の信号を発信し,すべてのプロセスが閉じられる(Process stateが負の値になる)まで繰り返す,というのがOn Exitの基本的な使い方です。

 

同時実行プロセスの最高数

Count tasksは,起動したプロセスの数を返すコマンドです。プロセスの番号は再利用されるため,このコマンドは,セッション中,同時に実行されたプロセスの最高数(ピーク値)と指しているともいわれてきました。言い換えるなら,アプリケーションを再起動するまで,Count tasksから返される数が減ることはありません。

 

15R5では,プリエンプティブモードの対応により,プロセスマネージャーが抜本的に見直されています。その結果,リストの末尾にある終了プロセスは,パージされるようになりました。以前のバージョンでは,そのようなプロセスも「終了」状態のまま残され,不要にリソースを消費していました。

 

今後,起動プロセスの最高数を記録したいのであれば,Count tasksから返された最高値を変数などに保持することが勧められています。

1/60秒以下のプロセス遅延

v15(正確にはv14R3)では,DELAY PROCESSコマンドが改良され,Tick(1/60秒)を下回る遅延時間を指定することができるようになりました。たとえば,0.5 Tick(1/120秒)といった実数値をコマンドに渡すことができます。プロセスの遅延時間を短くすれば,(特にコンパイルモードで)より多くの処理を進めることができるはずですが,Windowsプラットフォームでは,期待に反する結果になることがあります。この記事では,1/60秒以下のプロセス遅延を指定する場合の注意点を説明しています。

 

4Dは,コオペラティブモードのマルチプロセスアプリケーションなので,それぞれのプロセスが互いに処理時間を譲り合うことが必要です。DELAY PROCESSコマンドは,一定時間,特定のプロセスをスケジュールから外すことにより,その他のプロセスが処理を進められるようにする役割があります。ですから,遅延という名称とは裏腹に,実際にはアプリケーション全体の(体感)速度を上げるためのコマンドです。

 

ISO-2022-JPでメール送信

v15以降,SMTP_QuickSendコマンドにMIMEをそのまま渡すことができるようになりました。本来,14R5で追加された4D Write ProのWP EXPORT VARIABLEと併用するための拡張ですが,これは4D Internet Commandsによるメール送信の方法論を変える非常に重要な変更点です。SMTP_QuickSendは,もはや単なる簡易的なメール送信コマンドではありません。MIMEをそのまま渡すことができるので,暗号化・認証・HTMLメールはもちろん,ファイル添付・Cc・Bcc・OAuth認証などもSMTP_QuickSendで対応することができます。SMTP_Sendの制限や不具合を回避することさえできることがあります。この記事では,ケーススタディとして,ISO-2022-JPエンコーディングのサポートを取り上げたいと思います。

 

4D Internet Commandsは,v14で正式にUnicodeをサポートするようになりました。v14以降,メールはUTF-8エンコーディングで送信することが推奨されています。それまではShift_JISまたはISO-2022-JPが推奨されていたのとは対照的です。もっとも,いわゆるガラケーなど,Unicodeをサポートしないデバイスが受信者に含まれる場合,UTF-8ではなく,Shift_JISまたはISO-2022-JPでメールを送信したいと思うことでしょう。しかし残念なことに,この記事を執筆している時点で,プラグインのISO-2022-JP処理には深刻な問題があるようです。

 

現在,4D Internet CommandsのISO-2022-JP処理を抜本的に書き換える仕事が進められています。しかし,冒頭で述べたように,MIMEを自分で構築すれば,プラグインの実装に影響されず,ISO-2022-JPでメールを送信することができます。必要なのは,ISO-2022-JPの仕組みに関する理解と,4Dの基本的な文字列コマンドだけです。

 

ISO-2022-JP

ServerがインストールされたMacで4DのHTTPサーバーを起動する

4DのHTTPサーバーは,HelperToolの助けにより,1023以下のポート番号で起動することができます。たとえば,80/443といったwell knownポートで公開することもできます。しかし,OS X Serverがインストールされた環境では,ポート番号のコンフリクトを避けるため,追加のステップを踏む必要があるかもしれません。

 

httpd

OS X Serverをインストールすると,FTPやHTTPサーバーを手軽に運用することができます。HTTPサーバーは,「高度なサービス/Webサイト」の設定画面からオン/オフすることができますが,たとえサービスを切ったとしても,バックグランドのhttpdという常駐プログラムが引き続きポート番号を使用していることがあります。そのような場合,httpdの自動起動を解除することが必要です。

 

HelperTool

HDI (How Do I?) を活用しましょう!

5月26日には15R4が正式リリースされ,6月2日には15R5のベータ版が4D Forumsで公開されました。Rリリースは,アジャイル開発の手法を踏襲し,記述〜開発〜検証がすべて完了した単発の新コマンド等の『短期開発計画』と,4D Write Proのような終わりのない『長期開発計画(EPIC)』の成果が反映されており,それぞれ20~30個のアップグレード項目が含まれています。

 

一般向けのオンライン・ドキュメントサイト doc.4d.com には,正式にリリースされた最新バージョンの情報が掲載されています。この記事を執筆している時点では15R4のドキュメントが公開されています。一方,デベロッパー向けのオンライン・ドキュメントサイト livedoc.4d.com にログインすれば,これまでリリースされたすべてのバージョンのリファレンスを閲覧またはダウンロードすることができます。

 

15R5

 

  • 新コマンド: CALL FORM

Doc Center 

How Do I?

 

15R5: 最新情報

2016年6月2日,15R5のベータ版がパートナー向けに公開されました。この記事では,次期バージョンの注目ポイントを紹介しています。

 

Rリリースについて

v14以降,4Dのバージョンアップは,メンテナンス・ライセンスに基づく『Rリリース』と,新規購入者向けのライセンスに大別されています。前者は,数ヶ月毎にリリースされ,10~20程度の改良が含められており,有効な年間ライセンス(メンテナンスまたはパートナー・プログラム)があれば,無償で利用することができます。後者は,数年毎にリリースされ,5回のRリリース分,つまり100程度の改良がまとめられた従来の『有償アップフレード』に該当するものです。Rリリースは,バージョン改定の周期が短いため,オペレーションシステムの進化などに早く対応することができ,追加・改良の点数が少ないため,検証も効果的に進めることができます。Rリリースのコンセプトは,WindowsやOS Xのリリース形態に良く似ています。

 

Rリリースのダウンロードについて