はじめに
これから、ComputerCraftのFS (File System) APIについての解説記事を連載します。
このAPIは一言でいうと、CCコンピュータ内部のファイルやディレクトリ(=フォルダ)を操作するために使います。
参考までに、CC公式WikiとCC非公式日本語WikiのFS APIに関するページを以下に紹介しましょう。
- CC公式Wiki: fs (API) - ComputerCraft Wiki
- CC非公式日本語Wiki: コンピュータクラフト非公式Wiki - API/FS
CC非公式日本語Wikiは、残念なことに、更新停止中のためCC1.6で追加された機能は掲載されていません。
そのためこの連載では、CC1.6での追加機能も含めてFS APIを日本語で解説する予定です。
今回はまず基本知識として、CCのファイルシステムの概要を説明します。
CCのファイルシステムの基本
UNIXのシェルやWindowsのコマンドプロンプトに触れたことがあるならば、すぐに理解できます。
ファイルの位置は絶対パス(absolute path)で表現すること
CCのファイルシステムは相対パスをサポートしていません。絶対パスでファイルの位置を示します。
- たとえば、
rom/programs/
のように相対パスっぽく書いたとしても、システムは/rom/programs/
のように頭に/
をつけて解釈します。
CCのファイルシステムで最も上位の階層をルート(ディレクトリ)と呼びます。絶対パスでは/
と表現します。
ホームディレクトリ≒ルートディレクトリ
ルートディレクトリではファイルやディレクトリを作ったり消したり、自由に扱うことができます。
ただし、ルートディレクトリは各コンピュータで独立していることに注意しなくてはなりません。
ゲーム内のプレイヤーは、原則として、そのコンピュータの前に行ってコンピュータを開か(起動し)なければルートディレクトリに保存してあるファイルを見ることはできません。
「rom」ディレクトリは全コンピュータで共通
ルートディレクトリの中には「rom」という読み専用(read only)のディレクトリがあります。絶対パスで表現すると/rom/
です。
「rom」ディレクトリ内部は全てのコンピュータで共通の内容です(ただし一部例外あり)。様々なシステムプログラムやAPI、そしてhelpファイルなどが入っています。
- コンピュータに少しだけ詳しい人向けの説明:「
/
ディレクトリ以下にCCのシステムディレクトリであるromディレクトリがマウントされます」 - たとえば、現在のディレクトリのファイル一覧を表示する「list」プログラムは、
/rom/programs/list
に入っています。
ただし、それがタートルなのかコンピュータなのか、あるいは設定ファイルでHTTP機能をONにしているかどうかで「rom」ディレクトリのファイル・ディレクトリ構成が一部変わります。
タートルが踊り出す「dance」プログラムは、
/rom/programs/turtle/
ディレクトリに入っていますが、このディレクトリはタートルにしか存在しません(マウントされません)。HTTP機能をOFF(B:http_enable=false)にしていると、
/rom/programs/http/
というHTTP関係のプログラムフォルダや、/rom/api/http
というAPIファイルがなくなります(つまりマウントされません)。
(補足)「/rom/」ディレクトリを書き換える方法
読み専用のディレクトリなので、ゲーム内からは「rom」ディレクトリの内部を変更することはできません。
逆に言うと、ゲーム外からならばこのディレクトリ内を変更できます。たとえば、全コンピュータ共通で使えるように「rom」ディレクトリに新しいプログラムをインストールするなど考えられます。
具体的なやり方は以下の通りです。CC1.58について解説していますが、CC1.6以降もほぼ同じやり方で大丈夫なはずです。
- Minecraft1.6.4とComputerCraftインストールの手順(2) - Minecraftとタートルと僕 の後半、「「/rom/」ディレクトリを編集する方法」を参照のこと。
- MODファイルが「ComputerCraft1.63.jar」なので、ファイルを展開するために拡張子「jar」を「zip」に書き換えるというひと手間が必要になります。
- 「resoucepacks」に置くファイル群は、バージョン間で互換性がありません。CC1.58からCC1.6にバージョンアップするときは、「resoucepacks」のファイル群を完全に消してください。
次回のお話
次回は、今回紹介したファイルシステムを操作するために、最初から入っているシステムプログラムについて紹介しましょう。
具体的に言うと以下の7つのプログラムです。かっこ内は、エイリアス機能による別名です。
- list (=ls =dir)
- cd
- makedir
- copy (=cp)
- move (=mv)
- rename
- delete