[b-free 610] Re: 仮身名

Takanori Hayashi (takanori@ohsaki.meidensha.co.jp)
Thu, 25 Sep 1997 10:59:47 +0900

林です。

In message <199709241745.CAA04737@b-free.orient.co.jp>
"[b-free 608] Re: 仮身名"
"h1suzuki@bridgew.edu (Hideaki Suzuki)" wrote:
h1suzuki> 僕もそう思います。>短すぎの識別子。
h1suzuki> でも同時に、ファイル名に内容識別の全てを頼ってるために、ファイル名が長くなり
h1suzuki> がちなのも一因とは思えませんか? ファイルに付随する情報と言えば「ファイル名
h1suzuki> と保護属性のみ」というシステムですから。例えば、拡張子はその良い例だと思うし
h1suzuki> 。

まあそうだけどね。でも
h1suzuki> 実身名:各ファイルの「内容」を識別する名前である。
と言ったのは君だよ。そして私には
「どんなコンテキストでも実身の内容を正しく表す短い名前」
が「いつでも」存在するとは思えない。

h1suzuki> 20文字は、短すぎます。それには、異議はないのですがねぇ。
h1suzuki> でも、まえに林さんがいったような「1Kもとれば」とかいうのは、「それって実身
h1suzuki> 名に何でもやらせ過ぎるからじゃないの?」って感じがしてなりません。500文字
h1suzuki> って事は、25文字*20行ですよ! そんなのをファイル名として受け付けるのは
h1suzuki> どうかな。情報の置き場所としてファイル名以外の適当なところがありそう!

それはそうだけどね。では「何文字あれば十分か?」と言われたときに
「XX文字あれば絶対大丈夫!」と答えられるかというと難しいのよ。
少なくとも非常に大きな余裕を持って、それでも「おそらく」になる。
それに、また「足りない」状況になっても困るので、仕様上は十分に
大きく取っておきたい。それで200文字も取るなら実装上は幾らでも
それほど変わらないから「無制限」にしてしまえということになる訳
です。何か変?

h1suzuki> # 林さんが「TAD部 を実身名以外のファイル属性にしよう」というのは同意という
h1suzuki> より好感が持てます。
h1suzuki> # でも、それも、実身に付随する情報なのか? という疑問は残りますが。
h1suzuki> # 実身に付随する TAD の情報って、単なる「TAD 主レコード」じゃないの?

いや仕様にも「注釈TADレコード」とか「補助TADレコード」とかあるよ。
まあ属性ではなくてデータだけど、属性とデータを区別する必要性は
必ずしもないと思うし。

h1suzuki> # 要するに、仮身に、実身名以外の、仮身に付随する情報が表示できたら、嬉しい
h1suzuki> のだ。
h1suzuki> # 「もっと自由な続柄」見たいのね。すなわち、仮身名。

たとえば図形実身のプレビュー画像をアイコンみたいに表示するとして
これを仮身に入れるの? こういうのはやはり実身に付属する情報だよ。

h1suzuki> Java は、あれは Alphabet でファイル名をきめてますからねえ。そりゃあ、ファイ
h1suzuki> ル名も長くなります。
h1suzuki> そうだねえ。でも、そのことを考慮しても、50文字もあれば足りるんじゃない?
h1suzuki> 統計を取ってないから、全然判らないけど。

Javaのフルスペルは「パッケージ名.クラス名.メソッド名」の形式
だったと思うけど、50文字で足りる?
この話は、階層化されたコンテキストの中でのクラス名なりメソッド
名を実身名にするのではなくて、「コンテキストに依らない識別子」
としての実身名が要求される場合だからね。

h1suzuki> 何でも実身名に詰め込んでいく方向性か、どんどん実身名を単純化(単一化)してい
h1suzuki> く方向性か。

それは実身名に「コンテキストに依らない識別子」を求めるか
一定のコンテキストで意味を持つ「キーワード」を求めるかの
違いですね。識別性は簡潔性と必ずしも両立しませんよ。私はね、
どちらでも良いと思っています。そしてどちらをも必要に応じて
選べるように、技術的な制限は少ない方が良いと思います。

h1suzuki> | 仮身名を否定するものではないけど、要求の内容だととりあえずは
h1suzuki> |運用かアプリケーションで解決がついてしまいそうですね。
h1suzuki>
h1suzuki> えっと、仮身名をサポートするというのは、それこそ、「どこでも出来る」という事
h1suzuki> を意味します。例えば、表計算の中やマイクロカードの仮身フィールドでもです。
h1suzuki> これって、「基本の部分としてサポートする v.s. 追加品として対応する」の違い
h1suzuki> ですね。
h1suzuki> 新しい App がでる度に「そうできる物と、出来ない物がある」というのでは、あま
h1suzuki> りに、仮身というせっかくの普遍的データが、もったいない。^^;;
h1suzuki>
h1suzuki> その辺って、Enableware や BTRON の実身仮身が「後から付け加えた物ではないから
h1suzuki> 、どんな App とも連携機能する」とかそう言ったことと、同じ議論じゃなかったっ
h1suzuki> け?

そうだよ。でも「どこでも」というなら非対応システムに
持っていっておかしくなるようなものでは困るでしょう。
下位互換がいらないなら「仮身名」は良い機能でしょう。

h1suzuki> | 互換性は諦めてリンクレコードを拡張するのが一番スマートでしょう。
h1suzuki> |# この場合、互換ファイルシステム上への複製では仮身名はすべて削除します。
h1suzuki>
h1suzuki> そうですね。僕も、この方法が一番スマートに感じます。
h1suzuki> それに、仮身セグメントよりレコードの方が、App とか移植する際の労力が少なそう
h1suzuki> 。

まあ実装するならこれが一番無理が無いでしょうね。

h1suzuki> | 先に書いたように前提に問題があります。中立的な識別子は短くなるどころ
h1suzuki> |か色々な要素を取り込んで非常に長くなる可能性があります。そのような場合
h1suzuki> |無理に短縮すればそれこそ一面的な見方になるでしょう。
h1suzuki> | 仮身名を否定する気はありませんが、少なくとも長い実身名への要求を代替
h1suzuki> |できるものではないと思います。
h1suzuki>
h1suzuki> これは、今一つピンとこないなあ。
h1suzuki> 中立にするために「ながーくする」ってどう言うこと?
h1suzuki> 普通、長くなればなるほど Specific になって、うーん。使われ方に密着した情報に
h1suzuki> なる気がするんだけど。すなわち、仮身よりになるって事。
h1suzuki>
h1suzuki> 例があったら出してください。

Javaの例。メソッドごとに実身を分けたヘルプファイルを考え
ましょう。メソッド名を実身名にしたら、それは特定クラスの
文脈でしか識別性がありません。メソッド名で検索してみたら
同じ名前の実身がごろごろ出てきて、それぞれ開けてみないと
なにがなんだか分からないと。フルスペルの実身名を付ければ
これは中立した識別子で、どういう文脈でも実身を正しく識別
できます。

h1suzuki> | そのような実身名変更は間違っています。「JDK 1.1.1」と「JDK 1.1.2」は
h1suzuki> |別の物でしょう?
h1suzuki>
h1suzuki> えっと、では、JDK 1.1.1 を、その各種ファイルが入ったキャビネットと考えてみて
h1suzuki> ください。
h1suzuki> キャビネットの中身を入れ替えて、JDK 1.1.2 にしてみました。というのは?

普通は実身を(浅く)複製して変更しますね。

h1suzuki> リンクする側では、何も変更せずに、最新の Version にリンクしていることが保た
h1suzuki> れますね。で、このキャビネットの中に、JDK 1.1.1 へのリンクがあることは、ぜー
h1suzuki> んぜん Okey です。この新しい JDK1.1.1 キャビネットには、古い JDK 1.1.1(いま
h1suzuki> JDK1.1.2 )のファイルがリンクされているのですけど。

そういうのは「最新パッケージ」というキャビネットに
「JDK 1.1.1」を入れておいて入替えるか、続柄で「最新」
を付けておくかするのが、正しい処方かと。
直接リンクの中身を下手に変えると、互換性が取れなくて
動かないものが出るかもよ。

h1suzuki> | 短くすると逆にヒットしすぎて意味が無くなるかも。検索結果一万件に
h1suzuki> |なっても意味ありますか?
h1suzuki>
h1suzuki> これはおかしいと思う。
h1suzuki> ヒットは出来るだけした方がいい。
h1suzuki> で、後は絞り込めばいい。
h1suzuki> Inforseek とか見て、そう思いません?

実身名が長くても部分一致でヒットする分には同じだけど(^_^;)。
短い名前だと、あとの絞り込みにはもはや実身名は使えない。
結果として全文検索しか手がなくなるような気がします。

h1suzuki> |以上、要点は
h1suzuki> |1. 中立的な識別子が短いとは限らない → 長い実身名には要求がある
h1suzuki> |2. 仮身名は互換性が確保できない
h1suzuki>
h1suzuki> 以上、2は同意します。
h1suzuki> 互換性の利点はあまりありませんね。
h1suzuki> 1はまだ理解に至っていません。
h1suzuki> 長い名前が「なぜ実身に付属する情報でなければならないのか」とか。

私はむしろ「実身名は長く仮身名は短く」なるのが通常だと
思います。そうでない場合もあるかも知れませんが。

以上、要点は
1. 仮身名は互換性を考えなければ良い機能と思う。
2. 長い実身名は必要な場合がある。
3. 仮身名は長い実身名の代替にはならない。

---
    林(takanori@ohsaki.meidensha.co.jp)