言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

呑み

高校の陸上時代の友人、入江孝吏氏と飲み会。彼は今では立派に自分の会社を興し http://www.beleza.co.jp/ 小規模ながらも堅実に事業を伸ばしている。昨日は、彼に僕のフォーバル時代の同僚、岡村氏を紹介し、Linux プラットフォームにも展開して行こうと言うのが最初の30分の目的。残りはまあ、色んな極論激論法螺話。

入江君は相変わらず、割と、口が悪くて、中国での取引の話や、昔の会社の事業について面白おかしく熱弁していた。彼は高校で駅伝をやっていた時もスターで、やっぱり今も技術者の王道を歩んでいるわけだ。僕は当時から 800 m というマニアックな競技で、冬の駅伝はいやいや参加していた訳だが、今でもやっぱりマニアックで、人間変わらないものだ。

まあ、でもこうして自分の友人同士で新しい人間関係が出来るのはうれしい。単なる偶然なのだが、会社勤めを辞めたこの三人は、三人ともどういうわけか父親を亡くしていた。やはり男は短く太くだ。

ServerDirectory

Squeak では、アップデートの取得、プロジェクトの共有など、ネットワーク上のファイルを色んな時に使う。その中心にあるのが ServerDirectory というクラス。多分名前から言って、ネット上のファイルをあたかもローカルのように使う事を意図して作られた物だろう。Squeak の裏方である ServerDirectory について調べてみた。

1) サーバーを登録する。

まず、利用するサーバーを準備する。例えば以下のように設定しておく。

サーバ名: languagegame.org (www サーバと ftp サーバが稼動)
使うディレクトリ: /home/takasi/www/squeak/updates/
www 上のドキュメントルート: /home/takasi/www/
ftp ユーザ名: takasi
ftp パスワード: 内緒

次に、元々のサーバーの設定をファイルに書き出す。以下を do it.

(FileDirectory default directoryNamed: 'prefs',  FileDirectory slash,  'knownServers') assureExistence.
ServerDirectory transferServerDefinitionsToExternal.

これで、prefs/knownServers の中に既存の設定が保存されるので、このファイルを適当にコピペ編集で好きに設定する。例えば以下のようなファイルを languagegame.org のような名前をつけて保存する。関連するファイルの行末は全て CR なので注意。

name:	languagegame.org
directory:	www/squeak/updates
type:	ftp
server:	languagegame.org
group:	LanguageGame Updates
user:	takasi
url:	 http://languagegame/squeak/updates
acceptsUploads:	true

そして、以下を do it して、設定ファイルの内容を反映させる。

ServerDirectory fetchExternalSettingsIn: (FileDirectory default directoryNamed: 'prefs')

これだけで、フラップの公開ボタンの長押しに出てくるサーバーリストに FTP が現れる。

2) アップデートストリーム

先程はプロジェクトの共有だが、コードを共有する方法。現在は Monticello という洗練された仕組みが有るので、あまり開発者が使う必要は無いと思う。これをやるにはディレクトリ名が updates である必要がある。この例で言うと、updates ディレクトリに updates.list という名前でファイルを作り、以下のようにバージョン名を書く(行末は CR)。バージョン名は SystemVersioncurrent version で調べて下さい。

#SqueakNihongo6.1

次に、以下を do it して http から見たディレクトリの場所を伝える。

Utilities updateUrlLists add: #('Languagegame Server' ('languagegame.org/squeak/')).

これで完成。あとはチェンジセットを登録するだけだ。ファイルリストを開けて、公開したいチェンジセットを右クリックし、broadcast as update を選択する。するとファイル名の頭に勝手に番号がついて、アップデート出来る様になる。

  • 分からない事。
    • 『探す』ボタンを普通にクリックした時に出てくる画面で新しいサーバを出すようにする方法。
  • 参考

仮想フォルダ

梅澤さんの書き込みにあるような仮想フォルダを作ろうとしたのが ServerDirectory なんでしょうけど、イマイチ中途半端さが否めません。逆のアプローチとしては、URL でローカルファイルも指定出来るアンドレアス作(多分) の仕組みも有るのですが、上手く行っていない。また、Monticello は Monticello で勝手に WebDAV (ですよね?)に対応してしまっている。このあたりを整理するのは、地味ですがやりがいの有る仕事でしょう。私はやりませんけど。

特に Squeak レベルでやる利点としては、マルチプラットフォーム性と、新しいプロトコルが簡単に作れる事があるでしょう。現在 ServerDirectory は FTP, HTTP, BSS (SuperSwiki) と言ったプロトコルに対応しているけど、誰かがメールベースや DB ベース、CVSベース、zip ファイルなどのプロトコルを作ったら手間なしで Monticello や プロジェクト置き場、Wiki として使えるようになるというのが理想ですね。

ぱっと考え付く問題点。

  • 特に日本語の場合。ファイル名のエンコードをどうするか?
  • 階層構造の指定方法。私の好みとしては URL 形式です。
  • ファイルシステムとしての最低限の機能と、特別な機能。例えばプロジェクトのプレビューGIF画像の扱いの整合性。
  • 排他制御