言語ゲーム

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

Twitter: @propella

Squeak update stream の作り方。使い方。

Squeak では利用者が簡単に最新の更新を取り込めるように、update stream という物が用意されています。これを使う事によってウェブ上に置かれた最新のコードを順番に取り込んで使う事が出来ます。この機能について分かっているつもりでいたのですが、相当はまったのでメモしておきます。

使い方

「サーバーからアップデートを取得」という項目が、ワールドメニュー(デスクトップ上でクリックもしくは esc) のヘルプ、もしくはパーソナルメニュー(デスクトップで右クリック)に現れます。複数のサーバが登録されている場合はさらに選択メニューが現れ、適切なアップデートが取り込まれます。

原理

update stream の実体は単純な FTP/HTTP サーバです。開発者が FTP でアップロードした情報を利用者が HTTP で受け取ります。update stream を受け取るためには、適切なサーバが指定されている事、現在のバージョンに適合したストリームが提供されている事が条件となります。具体的には、SystemVersion current version で得られる文字列(以下バージョン名)と比較する事になります。

まず、Squeak は updates.list という名のファイル(例: http://squeakalpha.org/updates/updates.list)を読み込みます。改行は CR で、先頭に # のある行はバージョン名、数字で始まる行はファイル名を表します。Squeak はまず # の行から自分に合うバージョン名を見つけ出し、SystemVersion current highestUpdate (以下アップデート番号) 以上の番号が付いたファイルをインストールします。

通常は以下全てのファイルをインストールしますが、Utilities class >> updateFromServerThroughUpdateNumber: を使うと指定したアップデート番号で更新を止める事も出来ます。

アップデートサーバの設定 (利用者)

Utilities updateUrlLists にサーバのアドレスを指定します。例えば

Utilities updateUrlLists
	addFirst: {'Nihongo 7 Updates'. {'squeakalpha.org/nihongo7/external/'}}

のようにすると、Nihongo 7 Updates という名前で Squeak Nihongo 7 のアップデートを参照出来ます。この場合、実際に参照される URL は http://squeakalpha.org/nihongo7/external/updates/updates.list となります。

アップデートの設定 (開発者)

まずバージョン名を考えます。例えば現在の Squeakland 版は Squeakland 3.8.5976 というような名前になっています。

まず適当な所に FTP サーバを用意し、ウェブ経由でも見える位置に updates という名のディレクトリを作成します。その中に updates.list というファイルを作成し、先頭に #バージョン名と記入してください。例:

#Squeakland3.8.5976

改行コードは CR です。これでサーバ側の準備は完了です。次に、こんな感じでサーバの設定を Squeak に伝えます。

server serverName
server := ServerDirectory new type: #ftp. serverName := 'squeakalpha.org'. server directory: 'external/updates'; server: 'squeakalpha.org'; user: 'nihongo7'; groupName: 'Nihongo 7 Updates'; altUrl: 'http://squeakalpha.org/nihongo7/external/'; yourself. ServerDirectory addServer: server named: serverName.

これは Nihongo 7 の例です。ここまで設定すると、ファイル・リストより好きな .cs ファイルを指定し、右クリックの broadcast as update で update stream に追加する事が出来ます。

プラグインイメージのリリースの方法

プラグインイメージを生成するために、Smalltalk makeSqueaklandRelease (日本語版では makeNihongoSqueaklandRelease) が呼ばれますが、この中で正しくアップデート番号を指定するために、少なくともアップデートストリームから一つのファイルを更新しておく必要があります(バグ???)。http://squeakalpha.org/updates/0226versionBump.cs 等はこのためのダミーと思われます。