Columbia AppleTalk Package

Columbia AppleTalk Package (CAP) は、UNIX及びUnix系オペレーティングシステム (OS) でAppleTalkを実装するソフトウェアである。または、このソフトで用いられたことに由来するファイル名のエンコーディング方法のことでもある。

ソフトウェア

[編集]

CAPは、UNIX及びUnix系OSでAppleTalkを実装するオープンソースのソフトウェアである。コロンビア大学にて開発されていたが、現在はサポートを停止している。

UNIX機にCAPをインストールすることでMacintoshファイルサーバプリントサーバとして利用できた。

また、UNIX側にtimelord、Macintosh側にtardisというソフトをインストールすることで、UNIX機を時刻同期サーバとすることができた。これらのソフト名は英国のテレビドラマ「ドクター・フー」に由来する。

CAPはAppleTalkの主要なプロトコル、DDP、RTMP、NBP、ZIP、ATP、PAP、ASP、AFPを実装していた。一般的なUNIX機はRS-422ポートを持たずイーサネットポートのみであったため、イーサネット上のAppleTalk、すなわちEtherTalkを実装していた。また、EtherTalkが使えないOSの場合には、IP上でAppleTalkをカプセル化するIPTalkが使えた。

後期にはAFP over TCPのためのパッチも公開された。これはAppleTalkを使わずにTCP/IP上でファイル共有を行なうものである。

CAPはmacOS登場以前にサポートを停止しているため、AFP 2.x迄しか使えない。同等の機能を提供するnetatalkは現在もサポートを続行しており、AFP 3.xを使う事が出来る。

CAPエンコーディング

[編集]

Mac OS 9迄のMac OSでは、ファイル名の文字コードは各言語版で別々に扱われていた。英語版ではMacRoman、日本語版ではMacJapanese、韓国語版ではMacKoreanといった具合である。これらはUNIX上のファイルシステムで用いている文字コードとは同一ではない。そこで、CAPでは8ビットの文字を「:」+「16進数」という形式にエンコードした。

ただし、現在のWindows、Mac OS、UNIXではファイル名にUnicode (UTF-16UTF-8)が使われる事が多くなったため、CAPエンコーディングは不要になりつつある。

エンコーディング方法

[編集]

例えば、MacRomanにおける「ä」(aウムラウト)の文字コードは16進数で0x8aなので、「:8a」にエンコードされる。

2バイトの文字コードであるMacJapaneseでは、1バイト目と2バイト目がそれぞれ別に扱われる。「人」の文字コードは16進数で0x90 0x6cである。1バイト目は8ビットなので「:90」にエンコードされる。2バイト目は7ビットなのでエンコードされず、ASCIIの「l」になる。結果として「:90l」になる。

このエンコード方法は、CAPがサポートを停止した現在でも、様々な場面で利用されている。

sambaの実装

[編集]

samba 2.xでは、CAPとHEXが利用出来た。前者は文字通りCAP互換のエンコーディングである。後者のHEXは2バイト目も必ず16進数にするエンコーディングである。すなわちCP932の「人」は「:90:6c」となる。

samba 3.xではCAPのみをサポートし、HEXはサポートしない。HEXをサポートするためのパッチならば存在する。

netatalkの実装

[編集]

netatalk 1.xはCAPをサポートした。つまりsamba 2.xとnetatalk 1.xでファイル名を共通に扱う事が出来た。ただしCP932とMacJapaneseとの間で異なる機種依存文字は共通に扱う事が出来ない。

netatalk 2.xでは、1.xとの互換を保つためにCAPを扱う事が出来る。しかし実装が追い付かず、実際にはCAPではなくHEXエンコーディングになってしまっているため、2バイト文字ではnetatalk 1.xと互換性がない。

カーネルでの実装

[編集]

Linuxでhfs.oやhfs.koと呼ばれるカーネルモジュールを用いるとHFSのファイルシステムをマウントすることが出来る。このときファイル名はCAP形式となる。つまり、これをsambaやnetatalk 1.xで公開すれば、Microsoft WindowsやMac OSからファイル名を正常に扱うことが出来る。

外部リンク

[編集]

CAPはサポートを停止したものの、現在も以下のftpサイトから入手可能である。

関連項目

[編集]