初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2021-06-09 00:37:03

sinc
Guest

strange naming convention of external files in a container field

以下、日本語、英語いずれでも結構ですので是非御教示を御願い致します。

I have a question about an apparently odd behavior of a container field for external file storage.

(1) When I save a file, for an example "ABC.pdf", to the container field (for external file storage) of a record, then repeat the process, i.e., save the same "ABC.pdf" (having the same content) to the container field of another record, then only one "ABC.pdf" file is found in the destination folder of external files.

(2) Next, assume that I save a file, for an example "ABC.pdf", to the container field (for external file storage) of one record, then save another file with the same name "ABC.pdf" but with different content (i.e, the first "ABC.pdf" is about a cat, and the second "ABC.pdf" is about a flower etc.). This time, two different files named "ABC.pdf" and "ABC_1.pdf" are stored in the destination folder of external files.

I am very confused about how Filemaker distinguishes between (1) and (2). It appears that Filemaker somehow compares the contents of object files externally stored (linked?) in the container fields of different records, and (1) when the contents of two object files having the same name are the same, only one object file with the same common name is stored in the destination folder of external files, possibly in order to avoid duplicate files?, (2) if the contents of two object files are distinct, then two independent files are made, even when these two object files have the same original name (in this case, in the destination folder of external files, serial numbers are attached at the end of file names before extensions). 

I would like to understand how Filemaker knows whether two object files with the same file name have the same or different contents. Thank you.

#2 2021-06-09 02:36:40

Moz
Member

Re: strange naming convention of external files in a container field

まずヘルプを読んだら如何でしょう。

データを外部に保存するオブジェクトフィールドの設定
Setting up container fields to store data externally

外部保存をオープン格納にするとエクスプローラーや Finder でオブジェクトの保存場所を簡単に見つけられます。
保存されたファイルは関連付けられたアプリケーションで開くことができます。
ただし、Claris FileMaker の外で変更が行われた場合、Claris FileMaker からは正常に見えなくなります。
このことからも分かるように、ファイル名以外の要素も同時に保存して評価しています。
ファイル名以外の要素によって評価しているため、同名ファイルに対して使い回しまたは別名で保存を自動的に行えるのでしょう。
この評価の仕組みについてユーザが知ることは難しいかも知れません(マジックの種明かしを要求するようなものです)

この質問は質問者さんのエンドユーザからの質問に代わりに答えて欲しいということですかね( ꒪⌓꒪)

Offline

#3 2021-06-09 06:46:56

himadanee
Guest

Re: strange naming convention of external files in a container field

少なくともハッシュ値(MD5)は持っているわけですが、それとかタイムスタンプも同じ場合に判別できるかどうか調べると面白そう。
https://help.claris.com/ja/pro-help/con … ibute.html

#4 2021-06-09 13:02:19

sinc
Guest

Re: strange naming convention of external files in a container field

Moz様、himadanee様

早速のコメント、アドバイス大変有難う御座います。

> ただし、Claris FileMaker の外で変更が行われた場合、Claris FileMaker からは正常に見えなくなります。このことからも分かるように、ファイル名以外の要素も同時に保存して評価しています。

御指摘の通り、外部保存したオブジェクトファイルを別のアプリケーションを用いて内容を変更した場合には、ファイル名が同一のままでも、コンテナフィールド内では"Tampered:"と表示されてexportなどが出来なくなる様に思います。この為、外部保存したオブジェクトファイルを「ファイル名以外の要素によって評価している」仕組みが確かにあるものと思われ、その「マジックの種明かし」を知りたく、御質問をさせて頂きました。

> 少なくともハッシュ値(MD5)は持っているわけですが、それとかタイムスタンプも同じ場合に判別できるかどうか調べると面白そう

当方もハッシュ値については考えてみたのですが、タイムスタンプ他も確かに可能性が有りそうだと思います。Clarisが概要だけでも情報を開示してくれるといいのですが。

> この質問は質問者さんのエンドユーザからの質問に代わりに答えて欲しいということですかね( ꒪⌓꒪)

当方は、アカデミアの研究室で実験データの記録や試薬管理などにFilemakerを利用しています。自分達が使うものについては出来るだけ動作や原理を理解して使用したいので、通常はopen sourceを好むのですが、Filemakerについては例えブラックボックスの部分が多少有るとしても、他に代替となるものが見付からないので、今後も大いに活用したいと思います。どうぞ宜しく御願い致します。

#5 2021-06-09 13:22:35

Shin
Member

Re: strange naming convention of external files in a container field

> 外部保存したオブジェクトファイルを「ファイル名以外の要素によって評価している」仕組みが確かにあるものと思われ、その「マジックの種明かし」を知りたく、御質問をさせて頂きました。
この辺りは、ファイルの安全性の根幹に関わる部分でしょうから、仕組みを公表することにより、外部で自由にファイルを改変されることになり、安全性が損なわれることになります。
ファイルそのものに、UUIDやタイムスタンプとかUTCタイムなどを加え、ハッシュ値を求めているのだろう、という類推以上は、無理なのでは。

Offline

#6 2021-06-09 14:55:15

sinc
Guest

Re: strange naming convention of external files in a container field

Shin様

コメント大変有難う御座います。

> ファイルの安全性の根幹に関わる部分でしょうから、仕組みを公表することにより、外部で自由にファイルを改変されることになり、安全性が損なわれることになります

御指摘の通り、オブジェクトファイルをexternal且つopenで保存する場合に、どの様にデータベースとの一貫性を保持するのかは、難しい課題なのだろうと思います。

これに関連しまして、もし「ファイルそのものに、UUIDやタイムスタンプとかUTCタイムなどを加え、ハッシュ値を求めているのだろう」だとしますと、万一「ハッシュ値の衝突」が起きた複数のファイル(確率はかなり低いと思いますが)をコンテナに収納する場合、意図せずに上書き保存される可能性がないか(上記(1)に類似したケースで、ファイル名やメタ情報、ハッシュ値が同一だが、実際にはファイル内容が異なる場合の挙動 )、少々気掛かりになります。心配し過ぎかも知れませんが。

#7 2021-06-09 17:32:00

Shin
Member

Re: strange naming convention of external files in a container field

FMとファイルの紐付けは、おそらく、リンク情報でおこなっているのではないかと思いますが。それでしたら、ハッシュ値の衝突は関係ないでしょう。

Offline

#8 2021-06-09 18:04:49

sinc
Guest

Re: strange naming convention of external files in a container field

Shin様

再度コメント大変有難う御座います。

仮に、external openのコンテナフィールドに"ファイルA"を収納した後に、別のレコードを作成して再度全く同一の"ファイルA"をexternal openのコンテナフィールドに入れようとした場合、外部フォルダーには"ファイルA"が一つしか作成されない様に思います(”ファイルA_1"等は作成されない)。この場合、最初の"ファイルA"と次の"ファイルA"が同一であるものとFilemakerが判断した後に、単一の"ファイルA"のみ保存して、その単一のファイルに対してリンクを2つ貼っているのだろううと思われます。

ここで、「最初の"ファイルA"と2番目の"ファイルA"が同一であるものとFilemakerが判断」する際に、もしハッシュ値を使用しているとしたら、「最初の"ファイルA"と次の"ファイルA"は(ファイル名やメタ情報や)ハッシュ値は同一だが、実際の中身は異なる」事が、かなり低い確率ですが起こり得るのではないかと思います。この場合、FIlemakerは2つのファイルが同じものと判断して、恐らく最初の"ファイルA"のみが外部フォルダーに保管され、その単一のファイルに対してリンクが誤って2つ貼られる事になるのでは無いかと思われます。

全く当方の杞憂かも知れませんが、上記の例で言えば、仮に2番目の"ファイルA"が、最初の"ファイルA"と同一であろうと無かろうと(duplicatesになっても構わないので)”ファイルA_1"等として保存する、もしくは、"ハッシュ値が同じファイルが検出されたがどう処理するか"をユーザーにアラートを出してくれれば、万一の誤動作を防げる様に思うのですが、誤りでしょうか。

#9 2021-06-09 18:16:07

himadanee
Guest

Re: strange naming convention of external files in a container field

ハッシュ値を計算するのに全バイトを読み込むので、重複があればdiffでチェックするぐらいはしているんではないかな。

昔のどっかのバージョンで、リンク数を数え間違えて?どのレコードからも参照されてないファイルが残ってたことがあったのを思い出しました。
カット&ペーストするときに、カットした時点ではUndo用に残しておく必要があるとかなんとかだったかな?

#10 2021-06-09 18:49:36

sinc
Guest

Re: strange naming convention of external files in a container field

himadanee様

再度コメント大変有難う御座います。成程、diff/cmpで全バイトをチェックしているのであれば、色々納得です。その場合、外部フォルダー内のファイル数が増えて来ると(もしくはファイルサイズが大きい場合)、新たにファイルを追加する際の同一性チェックに要する時間が問題になって来そうですが、「まずハッシュでチェック -> ハッシュが同一の場合は更に全バイトチェック」等を行なっているのでしょうか?ユーザーサイドにその辺りの厳密性の選択権を与えて貰えると良いな、と思います。

#11 2021-06-09 18:57:16

Shin
Member

Re: strange naming convention of external files in a container field

ファイルのすり替えなどを懸念するならば、ファイルの安全性から、ファイル照合の詳細は絶対に公開されないでしょうし、それに関する選択オプションを設ける考えもないでしょうね。

Last edited by Shin (2021-06-09 18:57:54)

Offline

#12 2021-06-09 19:25:52

sinc
Guest

Re: strange naming convention of external files in a container field

Shin様

再度コメント大変有難う御座います。確かに、セキュリティーの事を考えれば、ファイル照合を含め詳細を開示しない方が良さそうですね。その辺りについて、open sourceのデータベース担当者がどの様にセキュリティー対策を講じているのか、当方素人の為、ほぼ知識が有りません。Oracle vs Postgresql等を参考にしてみたいと思います。

#13 2021-06-09 19:26:31

Moz
Member

Re: strange naming convention of external files in a container field

FileMaker のことですから中身は明かせないけれど「良きに計らう」ように設計されているのでは?
(どこかでボンネットの下セミナーなどでチラリと語られるのに期待するのもアリかも知れませんネ)

もし、何か懸念されているのならばまずは検証して、
想像通りの結果となったことを以て不具合の報告または製品のアイデアに投稿するなど手段は用意されています。
https://community.claris.com/ja/s/ideas
https://community.claris.com/ja/s/topic … 08OQSOWA4/

アイデアは日本語のコミュニティより英語のコミュニティに投稿したほうが良いそうですよ。

Offline

#14 2021-06-09 20:03:41

sinc
Guest

Re: strange naming convention of external files in a container field

Moz様

再度コメント大変有難う御座います。御指摘の通り、Filemakerも商用ソフトである以上、「中身は明かせないけれど良きに計らう」設計思想に慣れる事が大事な気がして来ました。また、https://community.claris.com/ja/s/ideas他について御教示頂き恐れ入ります。今回御質問させて頂いた件を含めまして、自分自身の知識や理解が不足しているだけなのか、関連する情報が一般に流通していないのか、等中々判断が付かず、正規サイトに投稿するのは躊躇して居りました。こちらの「 初心者のFileMaker pro Q&A」では、皆様に大変親切に御対応頂き助かりました。今後共どうぞ宜しく御願い致します。

Registered users online in this topic: 0, guests: 1
[Bot] claudebot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 10 queries executed - Memory usage: 560.42 KiB (Peak: 581.33 KiB) ]