木構造

総合科目「IT革命を解き明かす」、2001年11月12日

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.hlla.is.tsukuba.ac.jp/~yas/gen/it-2001-11-12
あるいは、次のページから手繰っていくこともできます。
http://www.hlla.is.tsukuba.ac.jp/~yas/gen/
http://www.hlla.is.tsukuba.ac.jp/~yas/index-j.html

印刷配布資料 http://www.hlla.is.tsukuba.ac.jp/~yas/gen/it-2001-11-12 /it-2001-11-12 .pdf

逆立ちした木

■今日の重要な話

■木構造

木構造(tree structure)というのは、コンピュータ・サイエン ス(計算機科学)でよく使われる用語である。分野によっては、同じものを 階層構造(hierarchical structure)という言葉で表現すること が好まれる。ドイツ語語源の、ヒエラルヒー(Hierarchie)という言葉が使われ ることもある。

木構造の例を、大学の組織を使って説明する(図1)。

木構造という名前は、本物の木が、一度枝分かれした後は決して交わらないこ とに似ていることによる。ある節から別の節までの道が2通り以上あるは、グ ラフ構造と呼ばれる。

図1 大学組織に見られる木構造

図1 大学組織に見られる木構造

図1では、筑波大学と書いてある所が木の根にあたる。根からは、何本かの 学群の枝が出ている。このように、コンピュータ・サイエンスでは、木の根を 上に書く習慣がある。第二学群の節には、日本語日本文化学類、生物学類など の子の節がある。第二学群の親は、筑波大学である。

たとえば「情報学類」、「健康・スポーツ教育主専攻」の場合、次のように記述する。

筑波大学第三学群情報学類
筑波大学体育専門学群健康・スポーツ教育主専攻

コンピュータの中で、文字列(文字の並び)で木構造上の位置を表現する時に は、節が分かりやすくために、はっきりと区切りを入れて表現することがよく 行われる。

筑波大学.第三学群.情報学類
筑波大学/第三学群/情報学類
情報学類.第三学群.筑波大学

区切り文字としては、「.」(点)や「/」(スラッシュ)がよく使われる。 並べる時に、木の根に近いほうから書く流儀と遠い方から書く流儀がある。

住所の表記も、木構造である。

日本国.茨城県.つくば市.天王台

図1に示されている木構造は、また図2のように、「領域(domain)」を分割 するような見方もできる。木構造の場合には、領域の境界線が交わることがな い。

図2 大学組織に見られる木構造(領域的な見方)

図2 大学組織に見られる木構造(領域的な見方)

Windows の画面や、Macintosh の Finder の表示は、この領域の分割に似て いる。

◆字下げによる木の表現

木構造を字下げで表すことがある。

筑波大学

◆木の例

コンピュータでは、次のような場所で木構造が使われている。

コンピュータ以外では、次のような場所で木構造が使われている。

◆文書の木

文章の中にも、木構造が現れる。

◆パラグラフの木

英語では、パラグラフの内部も、きちんと木構造で書くことが求められる。

日本語の段落とは違う。

図3 topic sentence を根に持つパラグラフ

図3 topic sentence を根に持つパラグラフ

長い文章を斜めに読むには、パラグラフの先頭の topic sentence だけを読め ばよい。

◆日本語の段落の構造:逆茂木型

逆茂木: よろい、かぶとの時代に、敵の侵入を防ぐために樹を斬り倒して尖っ た枝を外に向けて並べた障害物。

図4 逆茂木型の段落

図4 逆茂木型の段落

日本語の特徴

日本語でも、文学作品をのぞいて、英語的に木構造になっていると読みやすい。

◆文の構造

1つの文も、木構造で表される。

Time flies like an arrow.

図5 「Time flies like an arrow.」の木(その1)

図5 「Time flies like an arrow.」の木(その1)

光陰矢のごとし。

同じ単語の並びでも、木構造を作ることもできる。

図6 「Time flies like an arrow.」の木(その2)

図6 「Time flies like an arrow.」の木(その2)

時蝿、矢を好む。

◆is-a関係

This is-a pen の意味。

図7 「This is-a pen」の集合的な意味

図7 「This is-a pen」の集合的な意味

is-a関係

図8 is-a関係の例(哺乳類 is-a 動物)

図8 is-a関係の例(哺乳類 is-a 動物)

◆ディレクトリの木

ディレクトリは、全体では 木構造(tree structure) になっている。階層化ディレクトリ(hierarchical directory)と呼ばれるこ ともある。

図9 ファイルとディレクトリの木

図9 ファイルとディレクトリの木

ファイルは、葉(leaf)になる。ディレクトリは、節(node)になる。特殊な節と して、根(root)がある。これを、ルート・ディレクトリ(root directory)と いう。

図10 自然の木

図10 自然の木

◆パス名

ファイルの名前の表現には、「パス名」がよくつかわれる。パス (path)とい うのは、道の意味である。パス名では、どの道を通ればよいかの道順を示すこ とでファイルの名前を表現する。

木構造では、節、または、枝(道)に名前がついている。ファイル名は、区切り 文字で区切られた、節、または、枝の名前の並びになる。ファイルの名前を表 現する時の区切り文字としては、次のものがよく使われる。

ファイル名で「.」は、木構造の区切りとしては使われない。

パス名の例:

◆絶対パス名と相対パス名

パス名には、 次の2種類がある。

絶対パス名 ( absolute path name )
絶対パス名というのは、ディレクトリの木の根(ルート・ディレクトリ) から出発する道順
相対パス名 ( relative path name ) 現在着目しているディレクトリ(カレント・ワーキング・ディレクトリ) から出発する道順
例:絶対パス名 /usr/bin/awk
  1. ルート・ディレクトリから出発する
  2. usrという枝へ進む
  3. binという枝に進む
  4. 最後に (awk)という枝に進む。
よって、/usr/bin/awk は、こういう手順で見つかるファイルを意味する。

例:相対パス名 bin/awk (カレント・ワーキング・ディレクトリが /usrの時)

  1. カレント・ワーキング・ディレクトリから出発する
  2. binという枝に進む
  3. 最後に (awk)という枝に進む。

◆ホーム・ディレクトリ

複数の人が使うコンピュータで、個人のファイルを保存する 時の出発点となるディレクトリを、ホーム・ディレクトリと呼ぶ。

たとえば、icho という名前のコンピュータで、 新城のホーム・ディレクトリは、 絶対パス名では、/home1/yshinjo/ である。

◆インターネット上のコンピュータの名前付けDNS(Domain Name System)

電子メールを送ったりWorld Wide Web のページを閲覧する時には、データの 送り先やデータを持っているコンピュータを指定する必要がある。 (ネットワークの用語では、コンピュータのことをホストと呼ぶ。) インターネットで使われている、コンピュータの名前(ホスト名)を管理する 仕組みは、 DNS(Domain Name System) と呼ばれている。 DNS では、膨大な数のコンピュータの名前を含む名前空間を階層的にドメイン (領域)に分割して管理している。

図11 名前空間のドメインへの分割

図11 名前空間のドメインへの分割

この空間の構造は、ファイル名で使われている木構造とまったく同じものであ る。

図12 名前空間の木構造としての見方

図12 名前空間の木構造としての見方

たとえば、次のような名前を考える。
host1.is.u-ust.ac.jp
このように、インターネットでのコンピュータの名前は、「.」 で区切られた文字列(文字の並び)である。この文字列で使える文字は、アル ファベット(大文字も小文字も同じだが普通は小文字だけが使われる)と数字、 ハイフン(マイナス)である。 DNS で名前は、ファイルのパス名 とは逆で、右から左に向かって解釈される。上のコンピュータの名前をこれを ファイルのパス名のように書くと、
/jp/ac/u-ust/is/host1
となる。

host1.is.u-ust.ac.jp」を 図12で考えると、次のようになる。

host1.is.u-ust.ac.jp」を 図11で考えると、次のようになる。

根の直下は、ISO (国際標準化機構, International Standardization Organization ) が定めた2文字による国別コード(country code)が使われて いる。ただし、歴史的な理由により、アメリカを中心として .com, .edu, . gov, .net, .org, .mil などが現在でも使われている。日本の国別コードは、 jp である。jp の下には、次のようなドメインがある。

ac
学校関係(主に大学)、学術研究機関
ad
ネットワーク管理、JPNICの会員
co
会社
ed
児童、生徒などの教育・育成を行う組織。
go
政府機関、国立の施設
gr
任意団体
ne
インターネット接続サービス・プロバイダ
or
法律に基づく団体
都道府県の名前
地方自治体、個人。

注意:acやadなどの属性を持たないドメイン名も許されるようになった。 .jp と .com の競争のため。

汎用 JP ドメイン名 http://www.nic.ad.jp/dotjp/

◆DNSができるまで

初期のインターネットは、コンピュータの名前(ホスト名)は、 フラットな名前空間が使われていた。

問題

1986年、3100の公式名と6500の別名。

1990年、6400の公式名。DNS に以降。この時点で、137,000。

しかし、.com は、2001年11月ごろ 2200万。全体 3600万の60%をしめる。 (http://www.domainstats.com/)

.jp は、43万個登録され、そのうち23万が利用されている。

JINIC/JP ドメイン名に関する統計 http://www.nic.ad.jp/jp/stat/dom/explanation.html

◆新しいドメイン

2000年11月16日に新しく7つのトップ・レベル・ドメインが作られた。 ICANN New TLD Program http://www.icann.org/tlds/

◆オルタネート・ルート問題

インターネットのドメイン名の根は、1つしかない。 13個のサーバにコピーが世界各地にある。

もし、別の根の情報を持つサーバがあれば、どうなるのか。

オルタネート・ルート(alternate roots)。

■木構造の性質

大量の情報を保存するには、木構造を使うしかない。 しかし、、、

◆こうもりの分類問題

図13 こうもりの分類(1)

図13 こうもりの分類(1)

図14 こうもりの分類(2)

図14 こうもりの分類(2)

◆木構造の制約を緩和する仕組み

◆シンボリック・リンク/エイリアス/ショートカット

木構造は、ファイルを整理するのに非常に強力な構造である。しかし、それだ けでは、ファイルを整理するには不都合が起きる。それを解消するために、次 のような名前で呼ばれる仕組みが用意されている。

2つの節に、「別名」をつけて、2つの道からたどり着けるようにする。 (木構造では、1つの節にたどり着く道は、ただ1つしかない。)

図15 こうもりの分類(別名つき)

図15 こうもりの分類(別名つき)

◆官僚制度の2つの見方

情報の流れには予算の流れも関連している。

◆官僚制度に見られる木構造の問題点

中間管理職の意味==横方向に情報が流れない。

木構造でしか情報が流れないような組織は、潰れる。木構造を補う意味で、会 社組織では、裏チャネルや同期会が重要となる。

◆外務省機密費問題

会計法違反。外務省に分かれた予算を首相官邸に流した。 国会の審議の意味がなくなった。

◆領土問題

木構造のどちらに付くか。

■ハイパーテキストとハイパーメディア

木構造を補う方法として、ハイパーテキストと呼ばれる方法を使うことがある。

ハイパーテキスト(hypertext)とは、内部に他のテキストへの「参照 (reference)」が埋め込まれているテキスト(文書、文字だけから構成される データ)である。ハイパーテキストという仕組みを使えば、テキストのある部 分から、関連している情報を含んでいるテキストのある部分を引き出すことが 簡単になる。

ハイパーテキストを拡張し、テキスト・データだけでなく、音声や画像などの データを扱えるようにしたものを、ハイパーメディア(hypermedia)という。 World Wide Web は、(木構造ではなく)ハイパーメディアに基づいて 作られている情報提示のための仕組みである。

図16 インターネットの資源とハイパーメディア></P>
<P><STRONG>図16 インターネットの資源とハイパーメディア</STRONG></P>
</A>



</P><P>

ハイパーメディアやハイパーテキストのデータを作成するためには、次の2つ
の事が必要になる。

<OL>
<LI>差されるデータに印(mark,label)を付ける。
<LI>差すデータに、参照を埋め込む。
</OL>

文書(テキスト)に、「ここは表題」、「ここは箇条書」といった、文書の構
造を示す目印(マーク)を付けることをを付けることを、マークアップすると
いう。

ハイパーメディアを記述するためには、上の2つのことを支援した、人工の言
語を使う。このような言語を、マークアップ言語(markup language)という。

</P><P>

言語の分類
<UL>
<LI> 自然言語
<UL>
<LI> 日本語
<LI> 英語
<LI> 中国語
</UL>
<LI> 人工言語
<UL>
<LI> 数学で使う表現
<LI> 化学式
<LI> コンピュータ言語
<UL>
<LI> プログラミング言語(コンピュータのプログラムを作る時に使う言語)
<LI> スクリプト言語
<LI> マークアップ言語
<UL>
<LI> HTML
<LI> SGML
<LI> XML
<LI> TeX, LaTeX
<LI> roff
</UL>
</UL>
</UL>
</UL>

</P><P>

WWW では、マークアップ言語として HTML (HyperText Markup Language)と呼
ばれている言語が使われている。

</P><P>

マークアップ言語でマークを付ける時の方法としては、テキストに

タグ(tag),たぐ)(名札の意味)

を埋め込む。

</P><P>

たとえば日本語の普通の文書では、括弧「」で括れば誰かの発言を意味する。
これは括弧

HTML や SGML では、「<」 と 「>」で括られた範囲がタ グになる。タグには、「<name>」という形式と 「</name>」という形式の2つの種類があり、前者を 開始タグ 後者を 終了タグ といいます。開始タグと終了タグに囲まれた部分が、マークが付けされたテキ ストになる。

ハイパーリンクを実現するためのマークアップ言語には、次の2つの機能が必 要になる。

◆URL

HTML では、他のデータへの参照を実現するためにURL (Uniform Resource Locator) という形式を使う。次に、URL の例を示す。

http://www.ntt.co.jp/SQUARE/index-j.html

http
HyperText Transfer Protocol。WWWのデータを保持しているプログラム と、WWWを表示するプログラムの間でデータをやり取りするときの形式を定め た約束。
www.ntt.co.jp
そのデータを持っているコンピュータの名前。
/SQUARE/index-j.html
そのコンピュータの中での資源の名前(ファイルの名前)。最後の .html は、その資源がHTML で書かれている事を表わしている。

◆URL中の2つの木

URL には、2つの木構造の表記方法が混じっている。

◆URLを間違えた時

2種類のエラー 長い URL のどの部分が怪しいかを区別できるようにする。