アーカイブスキーマ改訂案

※下記の改定案の内容はJindolfプロジェクトのフォーラムで議論された結果、一部は110420版(bbsArchive-110420.xsd)に取り込まれました。

人狼BBS 共通アーカイブ基盤用 スキーム定義に対する改訂案をここに記述していく予定です。ここでベースにしているのは bbsArchive-091001.xsd (以下091001版と表記)です。091001版は柔軟なMIT Licenseで提供されているので、勝手に拡張することに問題はないのですが、同じ目的で形式の異なるデータが複数存在するのは混乱の元なので、本家の方に取り込んでもらえるような改訂案にして本家と調整してゆくつもりでいます。

改訂の主な目的

  • G国対応
  • 各サブドキュメントへの分割をサポート

改訂案-1:G国対応

091001版はF国までのシステムしかサポートしておらず、G国で追加された要素を表現することができません。G国の村をアーカイブできるように改訂することを目的とします。

改訂案-1-1:システムメッセージの対応

以下のメッセージに対応します。

  • Announce系
    • execution … 「○○、×票。村人達の手により処刑された」
    • vanish … 「○○は失踪した。」
    • shortMember … 「まだ村人達は揃っていないようだ」
    • checkout …「○○は宿を去った。」
  • Extra系
    • counting … 「○○は○○に投票した。」
<shortmember>まだ村人達は揃っていないようだ。</shortmember>
<checkout avatarId="clara" >司書 クララ は宿を去った。</checkout>
<vanish avatarId="clara" >司書 クララ は失踪した。</vanish>
<execution victim="joachim">
 
<li>羊飼い カタリナ、1票。</li>
 
<li>行商人 アルビン、1票。</li>
 
<li>青年 ヨアヒム、2票。</li>
 
<li/>
 
<li>青年ヨアヒムは村人たちの手により処刑された。</li>
 
<nominated avatarId="katharina" count="1"/>
 
<nominated avatarId="albin" count="1"/>
 
<nominated avatarId="joachim" count="2"/>
</execution>
<counting2>
 
<li>司書 クララ は 老人 モーリッツ に投票した。</li>
 
<li>神父 ジムゾン は 老人 モーリッツ に投票した。</li>
 
<li>老人 モーリッツ は 負傷兵 シモン に投票した。</li>
 
<li>少年 ペーター は 老人 モーリッツ に投票した。</li>
 
<vote byWhom="clara" target="moritz" />
 
<vote byWhom="simson" target="moritz" />
 
<vote byWhom="moritz" target="simon" />
 
<vote byWhom="peter" target="moritz" />
</counting2>

改訂案-1-2:G国アンカーへの対応

アーカイブスキーマの方で対応が必要かどうかも含めて要検討。

改訂案-2:各サブドキュメントへの分割をサポート

人狼BBSは勝敗が決まるまでの期間が長く、1つの村のアーカイブデータだけでも割とサイズが大きくなりがちです。これはMoltonfのようなアーカイブデータのビューアアプリケーションにとっては読み込み速度の低下や必要以上のメモリ消費を伴います。特にスマートフォンのようにPCやワークステーションに比べてリソースの少ないプラットフォームにおいては、これは大きな問題になります。

そこで、これまでどおり1つの村のアーカイブデータ=1つのXMLファイルという形態に加えて、1日単位で分割したサブXMLファイルによる複数のサブドキュメントにより構成される形態のサポートを追加します。

アーカイブの大元のドキュメント【f1999.xml】

<?xml version="1.0" encoding="UTF-8" ?>
<village>
 
<avatarList> ... </avatarList>
 
<period type="prologue" day="0" ... subPeriod="f1999_day0.xml" />
 
<period type="progress" day="1" ... subPeriod="f1999_day1.xml" />
     :

</village>

0dの部分だけのサブドキュメント【f1999_day0.xml】

<?xml version="1.0" encoding="UTF-8" ?>
<subPeriod village="f1999.xml">
 
<startEntry><li>昼間は人間のふりをして、 ... </li></startEntry>
 
<onStage entryNo="1" avatarId="gerd"><li>1人目、楽天家 ゲルト。</li></onStage>
 
<talk type="public" avatarId="gerd" ... ><li>人狼なんているわけないじゃん ...</li></talk>
     :

</subPeriod>

ライセンス

ベースとしている091001版はolyutorskiiさんによりMIT Licenseで提供されています。

このスキーマ改訂案にライセンスが必要かどうかはよくわかりませんが、本家と同じMIT Licenseにしておきます。

Copyright (c) 2009 olyutorskii
Copyright (c) 2011 Hironori Ichimiya <hiron@hironytic.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.