Curl 実行環境 (RTE) は、Windows®、Linux および Mac® OS X のプラットフォームで利用できます。可能な限り Curl の API は全てのプラットフォームで同じ動作をします。以下では、3つのプラットフォーム上でアプレットが正確に動作することを確認するステップを紹介しています。この確認には、各プラットフォームに対して異なるコードをコンパイルするために
platform-switch マクロを使用することが必要になる場合があります。
フォント、テキスト レンダリング、IME サポート、フォーカス、そしてドラッグ アンド ドロップの動作は、プラットフォームによって異なります。これらの違いは一般的に Curl アプレットの動作を、そのプラットフォーム上で動いているその他のソフトウェアに近づけます。一般的に、API に対するプラットフォーム固有の問題は API リファレンス に記述してあります。
ActiveX API はすべてのプラットフォーム上で使用できますが、Windows 以外のプラットフォーム上では実行時に例外をスローします。これはActiveX コントロールが利用できないからです。こうしてスローされる例外は、Windows 上で実行中のアプレットがインストールされていない ActiveX コントロールを使用しようとした場合にスローされる例外と同じです。このような例外を処理するアプレットは、ActiveX コントロールが利用できない場合には ActiveX の使用を避けることが可能です。
ロケール サポートはオペレーティング システムが提供しているので、どのロケールが存在し、それらが厳密にどのように動作するかは、プラットフォームによって異なります。またロケールのサポートはそれぞれのプラットフォームでも、バージョンによって異なり、また与えられたマシンに何がインストールされているかによっても異なります。
文字エンコーディングには、Curl 実行環境によって提供されるものもありますが、多くはオペレーティング システムが提供しているものなので、どのエンコーディングが使用可能で、厳密にそれらが文字をどのようにマッピングするかは、プラットフォームごとに、またそれぞれのプラットフォームのバージョンごとに異なります。文字エンコードを提供するシステムの中には、Windows の win32:、Linux の linux: および Mac の mac: のようなプレフィックスを持つものがありますが、プレフィックスを持たないよく使われるエンコーディングのエイリアスもあり、それらもやはりオペレーティング システムによって提供されていることに注意してください。
また、ブラウザの違いによっても、動作が異なります。このような違いは、Internet Explorer は Windows 上でしか使えず、Safari は Mac 上でしか使えない、というようなプラットフォームの違いが部分的に関係しています。
Curl 統合開発環境(IDE) は、Windows と Linux でのみサポートされています。Curl IDE ドキュメンテーション は Windows、Linux、Mac をカバーしています。Mac 上でアプレットをデバッグする必要がある場合は、Curl テクニカルサポートまでお問い合わせください。多くの場合、アプレットはWindows または Linux でデバッグされ、Mac 上にデプロイされます。
Linux 版の Curl RTE と Curl IDE は、RedHat 9、SuSE 8.2、および TurboLinux Desktop 10 上でテスト済みです。必要な RPM パッケージをインストールしたカーネル バージョン 2.4 以降のシステムで動作が確認されています。
Linux と Windows 上の Curl RTE の実行では、ユーザー インターフェイスに多少の違いがあります。この違いは、Curl と対応プラットフォーム間の互換性を維持するためのものです。
Linux のプラットフォームでは、コマンド ライン スクリプトを使用して Curl RTE を管理することも可能です。次の表では、このスクリプトと対応するメニュー アイテム、および簡単な説明を一覧表示しています。
スクリプト名 | メニュー項目 | 説明 |
curl-ide-doc | Curl RTE / Curl IDE ドキュメンテーション | Curl RTE を起動し、ドキュメント・ビューワを実行します。 |
curl-rte-manager | Curl RTE / RTE コントロール パネル | Curl RTE を起動し、RTE のコントロール パネルを開きます。 |
curl-ide-lab | Curl IDE | Curl IDE を起動します。 |
Mac のユーザー インターフェイスは、機能も外観も Windows および Linux のものとは大きく異なります。Mac ユーザーの期待に応えるアプリを作成したいならば、アップル社の Mac ユーザーの経験を様々な角度から取り上げている、「
アップル ヒューマン インターフェイス ガイドライン」について精通している必要があります。このガイドラインは、「
Apple Developer Connection」のWeb サイトを検索して見ることができます。
既定では、Mac OS 上の Curl RTE は アクア の外観を持つコントロールやダイアログを使用します。次のセクションでは Curl アプリケーションが Mac ユーザー の期待に応えるために必要な事項を説明しています。
要約: | - キーボード イベント を操作するコードの中では、accel? を ctrl? の代わりに使用してください。
- メニュー アクセラレータ の文字列には、 "accel" を "ctrl" の代わりに使用してください。メニュー アクセラレーター を指定する構文は、各プラットフォームに対して異なるアクセラレータ キー を指定することができます。Mac の標準アクセラレーター とのキーの重複を避けるためにこの機能を使用してください。
- アプレットで MenuBar を使用している場合は、View.mac-menu-bar を使用し、アプレットがアクティブにな時はそれをスクリーンの上部に表示させます。
- キーボード ショートカット キー(下線文字) は Mac OS では使われません。Curl RTE は Mac OS 上ではそれらを無視します。
|
Mac のキーボードは修飾キーとして
command キー をもっており、これはWindows の標準キーボードにはついていません。Mac OS はこのキーを アクセラレータキー として使います。加えて、Alt キー (
alt もしくは
option のラベルのキー) は、Windos と Linux とは異なる使い方がされます。バージョン 6.0 の Curl RTE は ゲッターの
StateMask.accel? と
GuiInputEvent.accel? を提供し、アプレットにこれらの違いを吸収させます。多くの場合、これらは キーの修飾がアプレットが動作するプラットフォーム上で適切に動作するかをチェックするので、
ctrl? プロパティ の代わりに使われます。
アプリケーションがキーボードイベントを直接制御する場合、
GuiInputEvent.accel? プロパティを使って、イベントが起こったときにそのプラットフォーム上での アクセラレータキー が押されたかを判別できます。これはWindows と Linux の
Ctrl キーと Mac の
Command キー の状態を反映します。
StateMask.accel? ゲッターは同様の動作をします。
Mac 上でのみ実行されるアプリケーションを記述している場合は、新しいゲッター
StateMask.command? を使って Mac プラットフォーム上での
command 修飾キーの状態を判別します。
Mac では、
alt または
option キーを使用して追加の文字、シンボル、および発音区別符号(diacritical mark)を入力します。その結果、Curl は Mackintosh での cooked キー イベントを次のように生成します。raw キー イベントが
alt? = true と
command? = false を持つ場合は、cooked キー イベント
alt? = false を持ち、Mac ユーザーが求める挿入可能な値と等しくなります。raw および cooked キーボード イベントについての詳細は、「
キー イベント」を参照してください。
Mac のキーボードについては、さらにいくつかの注意すべきポイントがあります。
- Keycode.insert キー プレスを作成できません。
- Mac のキーボードには2つの enter があります。1つはキーボードのメインの部分にあり、もう1つはキーパッドにあります。Mac のプログラマーは通常、メインの enter キーには「return」、キーパッドの enter キーには「enter」の、それぞれの2つの異なるキー値を求めています。Curlは両方からの KeyPressValue.enter の値を返します。これら2つのキーを区別したい場合は、KeyPress.keypad? フラグを見なければなりません。
- Mac のプログラムでは多くの場合、option キー + return (キーボード入力) の組み合わせを「エンター」として扱います。Curl のプログラムで同じ結果を得るためには、KeyPress.value とともに StateMask.alt? フラグを見る必要があります。
アプリケーションにキーボード アクセラレータを実装する場合は、Mac の OS X によって予約済みのキー シーケンス、またはアップル社が共通のアプリケーション タスクに推奨するキー シーケンスの使用を避けてください。これらの標準のアクセラレータのリストについては、アップル ヒューマン インターフェイス ガイドラインの「
Keyboard Shortcuts Quick Reference」をご覧ください。
platform-switch マクロを使い、各プラットフォームごとに適切なアクセラレータを指定する必要があります。Mac OS X は、自動的にメニュー バー内でメニュー アイテムと関連するキーを表示します。幾つかのキーは、全く表示されないかもしれません。特に、スペース、ページダウン、ホーム、タブ等のような明示的な表現を持たないキーは、最も避けられます。それらを表すのに使われるシンボルは、多くのユーザにとってなじみがないでしょう。
独立型アプレットで実行される Curl のアプリケーション、あるいはメニュー バーを含む
View オブジェクトを作成する Curl のアプリケーションでは、メニュー バーの配置において Mac UI の基準を守る必要があります。Mac のアプリケーションでは、Windows のアプリケーションで一般的な各ウィンドウの上部ではなく、スクリーンの上部にメイン アプリケーションのメニュー バーを配置します。新しいプロパティの
View.mac-menu-bar は、Mac アプリケーション のメニューの実装に使用されます。このプロパティが設定され、アプリケーションが Mac のプラットフォームで実行されると、指定されたメニュー バーが標準的な Mac のメニュー バーに変換されます。また、Windows のアプリケーションでは適切ですが、メニューをグラフィック階層に追加しないように注意してください。これは
platform-switch を使うことで制御できます。
View.mac-menu-bar や
platform-switch を使用した例については、「
表示メニューの作成」を参照してください。
Mac 形式のメニュー バーへの変換には、アイコン、アイテム名、およびキー アクセラレータが含まれます。キー アクセラレータが Mac のメニュー API で有効でない場合、これは無視されます。Mac のメイン メニュー バーでは、すべてのアクセラレータが(おそらく他の修飾子と組み合わせた) command キー修飾子を使用しなければなりません。次のセクションで説明されているように、メニュー アイテム ナビゲーション キー(アクセスキー または ニーモニック と呼ばれる場合があります)は無視されます。
Mac プラットフォームには2つの標準メニューがあります。アプリケーション メニューは常にメニュー バー の左端に表示されます。ウィンドウ メニュー は常に右端にあります。Curl RTE は自動的に
View に対する両方のメニューをトップレベルにあるメニューバーを用いて調整します。
アプリケーション メニュー は Curl RTE によって調整されます。アプレットは
set-application-name を呼び出すことでこのメニューに対するアプリケーション名を提供します。アプリケーション メニュー は複数の標準アイテムを含んでおり、それらはMac OS によって完全に制御されています。
MenuAction はキーワード引数
key-accel-string を使用してメニュー アクションのキー アクセラレータを作成します。キーボード アクセラレータについての詳細は、「
キーボード アクセラレータ」を参照してください。Mac 上でメニュー アクセラレータをサポートするには、
key-accel-string が次の2つの修飾子をサポートします。
- "o" に略された "command"。これはコマンド キーを参照します。
- "x" に略された "accel"。これはプラットフォームの標準のアクセラレータ キーを参照します。Windows と Linuxでは ctrlで、Mac では command です。
また、プラットフォーム名と、コロンで区切られ、角括弧で囲まれたアクセラレータを指定することにより、プラットフォーム特有のアクセラレータを
key-accel-string に指定することができます。プラットフォーム名は
platform-switch で認識されなければなりません。たとえば、次の文字列は Mac で command-U を、Windows では ctrl-Q を、そして それ以外のプラットフォームでは ctrl-W を指定します。
ctrl-w[mac:command-u][win32:ctrl-q]
Windows のプラットフォームでは、
key-accel-string からの文字列を使用してキー アクセラレータを識別します。Mac のプラットフォームでは必要に応じて文字列をグラフィック シンボルに変換します。上記のコードは Windows のメニューでは
Ctrl-q を表示し、Mac のメニューでは
-u を表示します。
多くの Windows アプリケーションで、各メニュー アイテムのラベルの中でアクセス キーを教えるために メニュー アクセス キー(下線を引いた文字、ニーモニック とも呼ばれます)を提供しています。アップル社ではこのようなアクセス キー またはニーモニックをメイン メニュー バーで提供しておらず、いかなる場所でもそれらの使用を推奨していません。
Curl API では、キーワード引数
key-access を
MenuAction.default に使用してメニュー のアクセス キー を指定できます。これらは Windows と Linux で使用され、Mac では無視されます。
GUI ツールキットはボタンのラベル上のニーモニックもサポートしています。メニュー アクセス キー と同様に、これらは Windows と Linux で使用され、Mac では無視されます。
アップル ヒューマン インターフェイス ガイドラインではメニュー内でアイコンを使用しないよう推奨しています。メニュー アイコンを使用する場合、Mac 以外のプラットフォームという条件つきで使用してください。
コンテキスト メニューを呼び出す Windows の標準は右クリックで、マウスボタンを離すとメニューが表示されます。Mac の標準ではコントロール クリックで、ボタンを押すとメニューが表示されます。Curl RTE はプラットフォームの標準に従います。
アップル ヒューマン インターフェイス ガイドラインでは、スクロール バーは不要な時でも表示されたままにすることを推奨しています。「
スクロール バーの存在の制御」のセクションでは、スクロール バーの取り扱いテクニックについて説明しています。特に「
スクロール バーを可視状態に保つ」と題された例に注目してください。そこでは可視状態でありながら不要な時は無効になるスクロール バーを持つ
ScrollBox の作成の仕方を示しています。
Mac 上で起動されたアプリケーションは独立型の Curl のアプレットと同等です。通常は、Mac の OS X で起動されたアプリケーションは Finder Dock に対応するアイコンを持っています。Curl では、現時点で dock アイコンをサポートしていませんが、独立型アプレット はサポートしています。
Copyright © 1998-2019 SCSK Corporation.
All rights reserved.
Curl, the Curl logo, Surge, and the Surge logo are trademarks of SCSK Corporation.
that are registered in the United States. Surge
Lab, the Surge Lab logo, and the Surge Lab Visual Layout Editor (VLE)
logo are trademarks of SCSK Corporation.