ヒント、コツ、FAQ
このドキュメントの最新バージョンは http://docs.360works.com/index.php/SuperContainer_Tips_Tricks_and_FAQ (英語)でご覧いただけます。
ヒントとコツ
SuperContainerをスタンドアローンで展開して80番のポートを使う
初期設定では8020番のポートで動作するスタンドアローンのSuperContainerアプレットを80番のポートで使うには、Apache Tomcatサーバーを設定する必要があります。まず、コンピュータ上のApacheのhttpd.confファイルに移動します。
OS X:
/private/etc/apache2注意:この場所はOS X上で非表示になっていることがあります。Finderの「移動」メニューから「フォルダへ移動」を選択して移動できます。
Windows:
C:¥Program Files (x86)¥Apache Software Foundation¥Apache2.2¥confhttpd.confファイルの以下に示す「DocumentRoot」の後に、その下の2行を追加します。
DocumentRoot "/Library/WebServer/Documents"
ProxyPass "/SuperContainer" "http://localhost:8020/SuperContainer"
ProxyPassReverse "/SuperContainer" "http://localhost:8020/SuperContainer"ProxyPassとProxyPassReverseは、Tomcatでリモートサーバー(この場合にはSuperContainer)をローカルサーバー(Tomcat)のスペースにマップする指示です。 この指示についての詳しい情報は、http://httpd.apache.org/docs/1.3/mod/mod_proxy.html#proxypass に掲載されています。
次に、Apacheサーバーを再起動する必要があります。
OS X:
Terminalを開いて、以下のように入力します。
sudo apachectl restartWindows:
WindowsでTomcatを制御する最も簡単な方法は、Tomcat Monitorツールを使うことです。スタート>すべてのプログラム>Apache HTTP/Tomcat Server>Monitor Apacheを選択して使用できます。
最後に、スタンドアローンのSuperContainerServer.jarファイルを通常通りに起動して、以下にアクセスします。
http://localhost/SuperContainerSuperContainerが80番のポートで動作していることを確認します。
ホスティングプロバイダのためのSuperContainer
プロバイダがSuperContainerバージョン1.72以降をTomcatで動作させてクライアントに使わせることができます。その手順は以下の通りです。
各クライアントがSuperContainerのライセンスをそれぞれ購入する必要があります。クライアントの代わりにプロバイダが購入してもかまいません。
SuperContainer/WEB-INF/web.xmlファイルを変更して、「activationCode」と「registeredTo」にクライアント用の設定として有効な値を入れます。
SuperContainerフォルダの名前をクライアントの名前に変更し、このフォルダをwebappsフォルダに置きます。フォルダ名がURLになるので、フォルダ名を「SuperContainer」から「ClientX」に変更したとすれば、SuperContainerにアクセスするためのURLは「http://yourServer:8080/ClientX/Files 」となります。
ホスティングプロバイダ一覧
以下の企業のサーバーでSuperContainerをホストしている、または構成ができます。この一覧は360works社に連絡があった順に並んでいます。
Dan Weiss, Adatasol ( http://www.adatasol.com/ )
John May, Point in Space ( http://www.pointinspace.com/ )
Scott Karch, Nimbus ( http://www.nimbushosting.net/ )
Foxtail Technology ( https://www.foxtailtech.com/Index.php?page=sc )
Joseph Climaldi, ODI Technologies ( http://www.oditech.com/ )
Joshua Paul, Neo Code Software ( http://store.neocodesoftware.com/ )
Lee Lukehart, SavvyData ( http://savvydata.com/ )
OS XのCore Imageでサイズを変更できるようにする
標準の構成では、SuperContainerはJPEG、PNG、GIFファイル、ほとんどのTIFFファイルのサムネールイメージを生成できます。PDFファイル、CMYKのJPEGとTIFFファイル、RAWファイル、Photoshopファイルのサムネールは生成されません。
Macに固有の機能として、SuperContainerでOS Xのネイティブのイメージプロセッシングライブラリを使ってイメージを扱うことができます。これにより、SuperContainerに渡したPDFやほぼすべての種類のイメージのサムネールを生成できます。これは、SuperContainerサーバーをOS X上でスタンドアローンモードで使っている場合にのみ動作します。Windowsサーバー上やTomCatで使っている場合には動作しません。ただしクライアントコンピュータが何であるかは問いません。
以下の場所に新規ファイルを作ります。
/Library/Preferences/com.prosc.supercontainer.propertiesこのファイルの内容は以下の通りです。
coreImageEnabled trueファイルを作った後でSuperContainerを再起動します。OS Xのイメージライブラリを使ってサムネールが生成されます。PDFはアイコンではなくサムネールで表示されます。
クイックルックを有効にする
OS X 10.6 Snow Leopard以降
/Library/Preferences/com.prosc.supercontainer.propertiesこのファイルがなければ、作る必要があります。
このファイルの内容は、次の1行だけです:
quickLookEnabled trueプラグインの自動アップデートの情報
「Plugin autoupdate」(英語)のセクションを参照してください。
互換性の一覧表
FileMaker ProからSuperContainerにアクセスする
| バージョン7 | バージョン8 | バージョン8.0v4 | バージョン9 | バージョン10 | バージョン11 | バージョン12 |
|---|---|---|---|---|---|---|---|
FileMaker Pro: Webビューアでアクセス | × | × | ○ | ○ | ○ | ○ | ○ |
FileMaker Pro: オプションのプラグインを使用 | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| バージョン7 | バージョン8 | バージョン8.0v4 | バージョン9 | バージョン10 | バージョン11 | バージョン12 |
|---|---|---|---|---|---|---|---|
FileMaker Pro Server:カスタムWeb公開 | × | × | × | ○ | ○ | ○ | ○ |
FileMaker Pro Server:インスタントWeb公開 | × | × | ○* | ○ | ○ | ○ | ○ |
FileMaker Pro Server Advanced:カスタムWeb公開 | ○ | ○ | ○* | ○ | ○ | ○ | ○ |
注記:* = OS XのFileMaker Server/Server Advanced 8.0v4では、オプションのSuperContainer Companion Pluginは動作しません。Windowsでは動作します。また、8.0v1〜8.0v3では動作します。
SuperContainerはFileMaker 10と完全に互換性があり、動作のテストが行われています。
SuperContainerがファイルを保存する場所を構成する
初期設定では、SuperContainerはMacでは/Users/Shared/SuperContainer、WindowsではC:¥Documents and Settings¥SuperContainer にファイルを保存します。これを、外部ドライブやネットワークボリュームなど任意のパスに設定できます。スタンドアローンモードで動作している場合(すなわち、SuperContainerServer.jarをダブルクリックした場合)、「Options」をクリックして構成できます。TomcatまたはFileMaker Serverで動作している場合は、SuperContainer/WEB-INF/web.xmlファイルを編集して構成できます。「macintoshFilesPath」または「windowsFilesPath」の設定を、ファイルを保管したい場所に変更します。ファイルを保管するフォルダのアクセス権を適切に設定してください。ネットワークボリュームの場合には特に注意してください。
SuperContainerのユーザ登録情報をロックする
.../SuperContainer/Registrationページに情報を入力するとユーザ登録が設定されますが、このページから変更することもできます。SuperContainerのユーザ登録情報をロックしてブラウザから変更できないようにするには、web.xmlファイルのactivationCodeとregisteredToの値にライセンスキーを入力します(ここでユーザ名とパスワードも設定できます)。値を入力しファイルを保存してSuperContainerを再起動すると、SuperContainerはユーザ登録ページに入力されたものではなくweb.xmlファイルから値を読み込みます。
SuperContainerをアンインストールする
FileMaker ServerのWeb公開エンジンで展開している場合:
SuperContainerをFileMaker ServerのWeb公開エンジンで動作するようにインストールした場合は、MacInstaller.appまたはWindowsInstaller.exeを再度起動し、「Remove」をクリックしてWeb公開エンジンからアンインストールします。
Tomcatで展開している場合:
SuperContainerをTomCatのスタンドアローン版で動作するようにインストールした場合は、TomcatのディレクトリのwebappsフォルダからSuperContainerフォルダを取り除くだけです。
スタンドアローンモードで展開している場合:
SuperContainerをスタンドアローンモードで展開している場合は(すなわちSuperContainerServer.jarファイル)、.jarファイルを削除するだけです。
注意:SuperContainerはプレファレンスをコンピュータ上のファイルに保存します(.jarファイルをダブルクリックしてスタンドアローンモードで動作させる場合)。このファイルの場所は、Macでは/Library/Preferences/com.prosc.supercontainer.plistです。このファイルを削除して保存されているプレファレンスをすべて削除してください。
レジストリのエントリを削除する
Windows:
「supercontainer」を含むキーのすべてのレジストリを検索して削除します。
Mac:
/Library/Preferences/com.prosc.supercontainerのファイルを見つけて削除します。
表示のためにファイルを開く動作は、nonappletのパラメータを使う場合には異なりますか?
はい。Javaアプレットを使用しない場合、SuperContainerはデフォルトのWebブラウザでファイルを開きます。OS XではSafariです。WindowsではInternet Explorerです。各ブラウザの動作はファイルタイプによって若干異なります。Safariのように、あるファイル(たとえばPDF)をレンダリングできるブラウザもあれば、Internet ExplorerやFirefoxのようにデフォルトではレンダリングできずファイルをユーザのテンポラリまたはダウンロードのディレクトリにダウンロードするブラウザもあります。
回避策として、FileMakerの「Open URL(URLを開く)」スクリプトステップを使ってファイルををネイティブのアプリケーション(例:PDFならAdobe Acrobat)で開くことができます。この例は、ドキュメントの「SCDownload()」に記載されています。これをレイアウト上のボタンに割り当てます。(参照:後述の「Javaアプレットを使わずにファイルをネイティブのプログラムで開く」)
SuperContainerのセキュリティとWebホスティング
これは常に浮上する課題であり問題点です。Webのインターフェイスのもとで動作している間は、誰かがファイルに直接アクセスすることはきわめて困難です。ファイルがWebサイトのルートのファイルディレクトリの外に置かれている場合には、特に困難です。FTPアクセスが有効で、しかもセットアップがずさんでセキュリティ対策がなされていないという場合を除いては、難しいでしょう。
SuperContainerとWebを使う際のセキュリティについてのちょっとしたアドバイスは、SuperContainerのインターフェイスは「Webアドレス」を使ってファイルをプルしWebブラウザに表示するので、ファイルを特定するために連番を「使ってはいけない」ということです。その理由は、誰かがちょっと気をつけて見ればWebのアドレスにファイルのIDが表示されていることに気づくからです。アドレスは以下のようになっています。
http://www.yourServer.com/SuperContainer/Files/PDFs/1024/誰かがアドレスバーに以下のように手入力することは避けられません。
http://www.yourServer.com/SuperContainer/Files/PDFs/1025/
http://www.yourServer.com/SuperContainer/Files/PDFs/1026/ このようにすれば、見せるつもりのなかった書類や画像が見えてしまいます。連番ではなく、UUIDのようなきわめてユニークな識別子を使いましょう。Webアドレス/URLは長くなりますが、誰かがアドレスを当てずっぽうに見つけてしまうことはほとんど不可能になります。
Javaアプレットを使わずにファイルをネイティブのプログラムで開く
SCDownload()関数を「Open URL(URLを開く)」スクリプトステップと組み合わせて使いたいと考えることがあるかもしれません。SCDownloadはSuperContainerサーバーからファイルを取得し、ユーザのローカルコンピュータに配置します。その後「Open URL(URLを開く)」スクリプトステップで、ローカルのドキュメントをネイティブのアプリケーションで開きます。
Open URL [SCDownload("Photos/12345")]上述の通り、SCDownload()関数に必要なものは、ほとんどのSuperContainer Pluginの関数と同様に、サーバー上のファイルを指定するフォルダパス(「/Files」より後のすべての部分)だけです。また、これも上述の通り、明確にわかりやすい名前は渡されません(渡されるべきではありません)。そのため上述の内容に従えば、ソリューションは期待通りに動作するはずです。 SCDownloadの詳細
1件のレコードを複数のWebビューアにリンクする(1件のレコードに対して複数のURL)
このような例として、2つのファイルが添付された連絡先のレコードが1件あると仮定しましょう。ファイルの1つはその人のピクチャ、もう1つのファイルはWordの経歴書のファイルです。
1件のレコードにファイルを2つともリンクしておくためには、レコードIDなど2つのファイルに共通する何らかの情報が必要です。また、2つのファイル間で異なる属性も必要です。ファイルタイプが、その良い候補です。
URLの例:http://serverAddress:portNumber/SuperContainer/Files/recordID/FileType
http://192.168.2.1:8020/SuperContainer/Files/12/image
http://192.168.2.1:8020/SuperContainer/Files/12/documentもしくは
http://192.168.2.1:8020/SuperContainer/Files/12/contact_image
http://192.168.2.1:8020/SuperContainer/Files/12/contact_bioSuperContainerをポータルで使う
以下は、FileMakerのデータベースファイルのサンプルへのリンクです。このファイルはSuperContainerをポータルやオブジェクトフィールドとともに使い、複数のファイル/書類を関連レコードに統合しています。
http://demo.360works.com/SuperContainerDemo/PortalUseAdmin.fp7複数ページのPDFをWebビューアに表示する
SuperContainerで複数ページのPDFをWebビューアに表示するには、2つの方法があります。
方法1. この方法は、SuperContainerがMac上でスタンドアローンモードで動作していることが必要です。このモードでは、SuperContainerは自動でPDFの1ページ目をレンダリングします。別のページのプレビューを取得するには、URLにページのパラメータを入れるだけです。例:
http://localhost:8020/SuperContainer/Files/multi/page/PDF?page=1
http://localhost:8020/SuperContainer/Files/multi/page/PDF?page=4方法2. この方法では、ユーザのコンピュータで使用するシステムのブラウザでPDFファイルをレンダリングできることが必要です。Macでは、この機能は内蔵されています。WindowsではInternet Explorer用のAdobe Acrobat プラグインまたはこれと同等のものをインストールすることにより可能になります。WebビューアにPDFファイルをロードするには、http://localhost:8020/SuperContainer/RawData/multi/page/PDF のURLを使います。
JavaアプレットまたはHTMLのフォームでファイルを表示する代わりに、RawDataのコンテキストを使ってSuperContainerに保管されている実ファイルを返すように指定します。PDFをレンダリングできるブラウザの場合は、Webビューアで直接表示できます。1つめの方法ではWebビューアに単一ページのプレビューだけがロードされますが、この方法ではPDF全体がロードされることに注意してください。
業界に固有のヒント
法律に関する記載のフィールドでSuperContainerを使う(英語)
SuperContainerのファイルの名前を取得する
SuperContainer Companion Pluginを使えば、とても簡単です。以下の例を見てください。
GetValue( SCGetInfo( フォルダパス ) ; 1 ) 「フォルダパス」の部分は、SuperContainerサーバー上にあるファイルへのパスです。WebビューアのURLが以下の通りである場合、
"http://servername:8020/SuperContainer/Files/Employee/Document/" & Document::IDフォルダパスは「Employee/Document" & Document::ID」です。
これは、GetValue()関数を使用してSCGetInfo()のreturn区切りリストの1行目を取得しています。1行目(1)がファイル名です。
SuperContainerでイメージの透明度を使う
SuperContainerで.pngファイルなどのイメージの透明度を使うには、「?style=noapplet」をSuperContainerのURLの最後に追加します。このモードを使うとドラッグ&ドロップはできなくなるので、このようにする必要がある場合はドラッグ&ドロップ用に1つのレイアウトにこのパラメータを付けないWebビューアを1つ配置し、透明度が必要なレイアウト上に別のWebビューアを配置します。SuperContainerはこのモードでは幅と高さを自動で検知しないことを考慮すると、「width=x&height=y」も追加する必要があるでしょう。
例:http://yourServer/SuperContainer/Files/path/to/files?style=applet&width=250&height=275FileMakerのフィールドにアップロードされたファイルの名前を保管する
FileMakerのフィールドにアップロードされたファイルの名前を保管したい場合は、まずそれがほんとうに必要かどうかを考えましょう。SuperContainerの設計としては、ユーザが関連するドキュメントをアップロード、ダウンロード、表示、プリント、削除するためにFileMakerがファイル名を理解する必要はありません。ただしドキュメントを検索するためには、FileMakerがファイル名を理解する必要があります。
フィールドにファイル名を保管する必要があると判断した場合、2つのアプローチがあります。どちらも、オプションのSuperContainer Companion Pluginが必要です。
オプション1:ファイルをアップロードするためにWebビューアを使いません。代わりにSCChooseFileプラグイン関数を使って、リクエストされたファイルのパスを取得します。その後、選択されたファイルの名前をFileMakerのフィールドに展開し、SCSetContainerを使ってドキュメントをSuperContainerにアップロードします。このオプションは信頼性がとても高いものですが、Web公開エンジンでは動作しません(SCChooseFile関数はWeb上で動作しないからです)。
オプション2:Webビューアを使ってファイルをアップロードして、アップロード完了後にユーザに「save(保存)」または「continue(続ける)」ボタンをクリックさせるようにします。その後、プラグインのSCGetInfo関数を使ってファイルの名前を取得し、FileMakerのフィールドに保管できます。Web公開エンジンで動作させる必要がある場合に、こちらのオプションを選択します。
TIFFイメージのプレビュー
Mac上でSuperContainerServer.jarファイルを実行して、スタンドアローンモードでSuperContainerを動作させます。
SCScanDirectory()を使う
変数を設定 [ $setBaseURL ; 値:SCSetBaseURL() ]
変数を設定 [ $files ; 値:SCScanDirectory( pathToDir ) ]
変数を設定 [ $counter ; 1 ]
Loop
変数を設定 [ $upload ; 値:SCSetContainer( folderPath ; MiddleValues ( $files ; $counter ; 1 ) ) ]
if [ $upload = "ERROR" ]
カスタムダイアログを表示 [ "EROR" ; SCLastError ]
End If
変数を設定 [ $counter ; 値:$counter + 1 ]
Exit Loop If [ $counter = ValueCount ( $files ) ]
End LoopなぜSuperContainerは複数のファイルを1つのディレクトリに保管できないのか?
SuperContainerの設計の当初のゴールのひとつは、プラグインをまったく使わずに動作するということでした。このことが、一連の決定につながっています。
FileMakerは、プラグインなしで、ハードディスク上にあるファイルの名前を知ることはできません。
したがって、FileMakerの機能だけでファイルの名前をWebビューアに埋め込むことは論理的に不可能です。
この問題を解決するために、ファイル名を記述する代わりに、ファイルが保管されているフォルダをURLで記述することにしました。これは、ファイルの実際の名前を気にすることなく開発者が選ぶことができます。
フォルダの参照は個々のファイルを明確に特定する必要があるため、1フォルダが1ファイルと同値ということになります。SuperContainerで2つ以上のファイルを含むフォルダを参照すると、最初に見つかったファイルだけが取得され、同じフォルダの中の別のファイルは無視されます。
SuperContainerを使用しているお客様の中には、保管されるファイルの名前を把握している方もいて、1つのフォルダの中に多くのファイルが保管されていることが普通のようです。このような場合、以下のことを推奨します。
このような使い方は心配ありません - そのまま、URLの中でファイル名を使用してください。結果として動作に必要な状態よりもファイルが1段深いレベルにネストされますが、問題は何も発生しません。たとえば「MyFavoriteFlower.jpg」という名前のファイルがあるとします。URLを「/SuperContainer/Files/images/MyFavoriteFlower.jpg」と設定すると、サーバー上に「images/MyFavoriteFlower.jpg/MyFavoriteFlower.jpg」というパスで保管されます。若干複雑にはなりますが問題はありません。
URLでファイル名を使わないようにします - SuperContainerはこれをサーバー上に問題なく保管します。上述の例で、ファイル名の代わりにレコードIDを使いましょう(ここではレコードIDを17と仮定します)。「/SuperContainer/Files/images/17」となります。これは、サーバー上に「images/17/MyFavoriteFlower.jpg」と保管されます。これは1つめのオプションよりもすぐれたアプローチです。なぜなら、18番のレコードにMyFavoriteFlowerという別のファイルがある場合に、「images/18/MyFavoriteFlower.jpg」と保管され、名前のコンフリクトが発生しないからです。
SuperContainer 2ではディレクトリ構造全体をSuperContainerにアップロードするため、デスクトップに「CoolStuff」という名前のフォルダがあってその中に「MyFavoriteFlower.jpg」、「MyFavoriteTree.jpg」、「MyFavoriteBug.jpg」がある場合、そのフォルダをSuperContainerの1つのフォルダにアップロードできます。URLが「/SuperContainer/Files/19」である場合、サーバー上には「19/CoolStuff.zip」に圧縮された1つのファイルとして保管されます。
Apacheのアップロードの制限
ApacheのTomcatディレクトリにあるserver.xmlファイルを編集します。「Connector」エレメントの中の「maxPostSize」の属性を追加または編集してサイズを増やします。
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="300" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="1024"
connectionTimeout="20000" disableUploadTimeout="true"
compression="on"
maxPostSize="104857600" />詳細な手順へのリンクは以下の通りです。
http://tomcat.10.n6.nabble.com/Setting-max-file-upload-size-td2010633.html
IISのアップロードの制限
http://ajaxuploader.com/large-file-upload-iis-asp-net.htm
http://support.microsoft.com/kb/942074/iis config file: %windir%¥system32¥inetsrv¥config¥applicationhost.config
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="524288000"/>
</requestFiltering>
</security>
</system.webServer>SuperContainerのコンテンツを別の場所に移動する
SuperContainerをある場所で展開してきましたが、SuperContainerを関連するすべてのアセットとともに移動しなくてはならなくなりました。どのような方法が最適でしょうか?
Filesディレクトリを移動する
SuperContainerのFilesディレクトリにアクセスしているなら、アセットを移動する最も簡単な方法は、単にSuperContainer/Files/ディレクトリをSuperContainerの新しい場所に移動することです。新しい場所でSuperContainerを展開して構成すると、SuperContainerはあなたが指定したベースURLにFilesディレクトリを作ります。このFilesディレクトリを既存のディレクトリで置き換えると、現在の展開からすべてのアセットとリレーションシップが維持されます。
Companion Pluginを使う
新しい場所でベースURLを設定してから、SCGetContainerを使って以前の場所からSuperContainerのアセットを取得します。その後、SCSetContainerを使ってアセットを新しい展開場所にアップロードします。おそらくこれをSuperContainerのすべてのアセットに対して繰り返すループのスクリプトに埋め込みたいと考えるでしょう。この手順を解説したビデオをご覧ください。