はてなハイクを使ってはちゅねミクのデスクトップマスコットを喋らせてみる

はてなハイク」を使ってApricotの「はちゅねミク」を喋らせてみました。

Apricotには、セリフが記述されたXMLファイルにXSLTを使ってXMLファイルを好きな形に変換する機能があります。

この機能を使って、はてなハイクの「はちゅねミク」(→はちゅねミクでひとこと - はてなハイク)にセリフを投稿するとApricotの「はちゅねミク」がその投稿されたセリフを喋るようになります。

喋らせるようにするには、

  1. Apricot.exeがあるフォルダからCharacters\Hachuneを開く
  2. そこにScript.xslというファイルがあるのでメモ帳などのテキストエディタで開く
  3. 下記のXMLを置き換える

とすればOK。
これで、やさしい誰かが投稿してくれると喋るセリフが勝手に増えちゃう!やったね!

参考:

はちゅねミクでひとこと - はてなハイク

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" />
  <xsl:template match="/">
    <script>
      <character>
        <xsl:attribute name="name">
          <xsl:value-of select="/script/character/@name" />
        </xsl:attribute>
        <xsl:attribute name="x">
          <xsl:value-of select="/script/character/@x" />
        </xsl:attribute>
        <xsl:attribute name="y">
          <xsl:value-of select="/script/character/@y" />
        </xsl:attribute>
        <xsl:attribute name="width">
          <xsl:value-of select="/script/character/@width" />
        </xsl:attribute>
        <xsl:attribute name="height">
          <xsl:value-of select="/script/character/@height" />
        </xsl:attribute>
        <xsl:copy-of select="/script/character/sequence" />
        <xsl:for-each select="document('http://twitter.com/statuses/user_timeline/9826272.xml')/statuses/status/text">
          <sequence name="Activation">
            <message>
              <xsl:value-of select="." />
            </message>
            <call name="Say" />
          </sequence>
        </xsl:for-each>
        <xsl:for-each select="document('http://h.hatena.ne.jp/target.rss?word=%E3%81%AF%E3%81%A1%E3%82%85%E3%81%AD%E3%83%9F%E3%82%AF')/rss/channel/item/description">
          <sequence name="Activation">
            <message>
              <xsl:value-of select="." />
            </message>
            <call name="Say" />
          </sequence>
        </xsl:for-each>
      </character>
    </script>
  </xsl:template>
</xsl:stylesheet>