— boreal-kiss.com

Flex Builder 3が首筋に噛み付いた

年の瀬なんで泣ける小話でも。

******

Flex Builder 3では、Flex Builder 3で作った各プロジェクトをFlex Builder 3から削除する際に二つオプションが選べる。

  • Flex Builderからプロジェクトの参照だけを削除し、ファイル自体はマシン内に残す(デフォルト)
  • Flex Bulderからプロジェクトの参照を削除し、さらにファイル自体もマシンから削除する(ゴミ箱に移動させるわけではなく、マシンから抹消する)

使用者が指定しない限り、前者の削除方法が選ばれる。しかし、例えばプロジェクト名を中途半端に間違えて作ってしまい、「あ、やべ、ミスった。消そ」とか、同じ名前のプロジェクトを作り直したい場合なんかは後者を選ぶ方が楽な場合がある。僕自身も面倒が少ないからという理由で後者の削除方法を使うことが少なからずあるのだけど、この後者がやばい。後者のファイル削除の範囲はプロジェクトと関係あるかないかに関わらずそのプロジェクトのディレクトリ配下全部だからである。以下実例。

Aさん(僕じゃないよ)の場合

Aさん(僕じゃないよ)は、普段Flex Builder 3のデフォルトのドキュメントディレクトリを使ってプロジェクトを作成していた。Macの場合だと

/Users/USERNAME/Documents/Flex Builder 3/

普通にFlex Builder 3を使っているとプロジェクトは全てこの階層配下に作成されるようになっている。(デフォルトの場所を使用するにチェックが入っており、他の場所へのプロジェクト作成がロックされた状態)。しかしそのときは、どうしてもローカルサイトでテストする必要があり、localhostにプロジェクト(PROJECT_JP)を作成した。

/Users/Username/Sites/PROJECT_JP/src/
/Users/Username/Sites/PROJECT_JP/bin-debug/
/Users/Username/Sites/PROJECT_JP/bin-release/

かくしてPROJECT_JPは完成したが、PROJECT_JPをローカライズしたもの(PROJECT_EN)を作成する必要があった。同様にしてローカルサイトにプロジェクトを作成するが、普段デフォルトのFlex Builder 3ディレクトリしか使っていなかったため、思わぬミスを犯す。一階層上をプロジェクトディレクトリにしてしまったのだ(つまりSites)。PROJECT_ENの内容は以下のようになった(PROJECT_EN内にPROJECT_JPが混在した状態)。

Aさん(僕じゃないよ)が予定していたディレクトリ構造

/Users/Username/Sites/PROJECT_EN/src/
/Users/Username/Sites/PROJECT_EN/bin-debug/
/Users/Username/Sites/PROJECT_EN/bin-release/
/Users/Username/Sites/PROJECT_JP/src/
/Users/Username/Sites/PROJECT_JP/bin-debug/
/Users/Username/Sites/PROJECT_JP/bin-release/

実際に作ったディレクトリ構造

/Users/Username/Sites/src/
/Users/Username/Sites/bin-debug/
/Users/Username/Sites/bin-release/
/Users/Username/Sites/PROJECT_JP/src/
/Users/Username/Sites/PROJECT_JP/bin-debug/
/Users/Username/Sites/PROJECT_JP/bin-release/

Sitesをプロジェクトのトップディレクトリに設定しているにもかかわらず、Flex Builder 3上ではこのプロジェクトディレクトリは”PROJECT_EN”と表示される点がポイント。Flex Builder 3のデフォルトのドキュメントディレクトリ配下のプロジェクトでは、Flex Builder 3上のプロジェクトフォルダ名とマシン上のフォルダ名は必ず一致するが、デフォルトではない場所にプロジェクトを作成した場合必ずしも両者は一致しない。

すぐに作成場所のミスに気づいたAさん(僕じゃないよ)は、PROJECT_ENを削除して作り直そうとした。その際横着をして前述の「プロジェクトの参照を削除し、なおかつファイルをマシンから抹消する」方法をとった。つまり「Flex Builder 3上でPROJECT_ENと表示されているプロジェクトの参照を削除し、さらにそのプロジェクトファイルをマシンから抹消する」方法をとったのである。その結果プロジェクトはたしかにマシンから削除され、以下のような構造になった。Sites配下には何も残っていない。っておい。

/Users/Username/Sites/

PROJECT_ENは正しく削除されたが、PROJECT_EN配下に存在していたPROJECTも跡形もなく削除されたわけだ。幸いPROJECT_JPのバックアップは前日にとってあったが、一日分の作業が跡形も無く抹消されたわけである。さらにローカルサイトという特別な場所に作成したのが災いした。ローカルサイトには今回とは無関係なフォルダが多数あったのである。例えば

/Users/Username/Sites/phpMyAdmin/

など。これらも同様に跡形も無く消去された。

教訓

今後は以下を死んでも遵守する、とAさん(僕じゃないよ)は言っている。

  1. Flex Builder 3のプロジェクトは可能な限りデフォルトのドキュメントディレクトリを使う
  2. 不要なプロジェクトは参照だけを削除する。実際のファイル削除は面倒でも手動で行う
  3. バックアップは頻繁に行う。そのためにコミット回数が増えても気にしない

ちなみにマシンルートに作ったFlexプロジェクトの完全削除とかどうなるのだろう。マシン破壊?誰か試してみて。トラウマになりそうでできんわ。

0 comments
Submit comment