« 2009年11月 | トップページ | 2010年1月 »

たのしいXML

色々とXMLのことを調べていると、このサイトにたどり着きました。

http://www6.airnet.ne.jp/manyo/xml/

「たのしいXML」というサイトですが、これは楽しい。
XMLという無味乾燥たる技術に対し、「万葉集」という題材をもとに説明をしていること、更にその説明がわかりやすく、かつなかなか高度なことなどです。

イラストは作者の方なのかな。

このサイトでは、万葉集のデータ構造を以下に定義しています。

歌:unit
歌の属性 (歌の種類、歌番号、作者名、贈答者名、季節、自然、状況、感情、比喩、年・・・)
 原文
 読み

これなら、万葉集の研究もかなり楽にできそうですね。贈答者名で時系列で調査したり、作者名で時系列で調査したり、はたまた季節や自然で絞り込んだり。

また、XML初心者たる自分にとっても、良いテキストになりそうです。
感謝の意をこめて、関連すると思われる書籍を紹介します。

| | コメント (0) | トラックバック (0)

VBAでXMLを扱う

XML というと、色々と複雑な構造が扱える便利なデータ格納形式です。これをWORD VBAで取り扱う方法を試してみましたので、備忘録に記載します。

 まず、WORD を起動して「ツール」メニューから「マクロ」を選択して、適当な名称 "test" を入力して「作成」ボタンを押すと、Microsoft Visual Basic 環境が起動します。そう、WORD のVBAマクロは、実はVisual Basic が裏で走っていたのですね。

 このVisual Basic の「ツール」メニューの参照設定を選択し、”Microsoft XML, v6.0”を選択します。XMLのクラスライブラリは後付で出来たので、こんな風に追加しなければならないようですね。これで、プログラム側は準備がととのいました。

 サンプルのXML ファイルを作成します。Yahoo! の形態素解析のサンプルあたりがいいかな。

<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn: yahoo:jp:jlp" xsi:schemaLocation="urn:yahoo:jp:jlp
http://jlp.yahooapis.jp/MAService/V1/parseResponse.xsd">
  <ma_result>
    <total_count>9</total_count>
    <filtered_count>9</filtered_count>
    <word_list>
      <word>
      <surface>庭</surface>
      <reading>にわ</reading>
      <pos>名詞</pos>
      <baseform>庭</baseform>
      </word>
      <word>
      <surface>に</surface>
      <reading>に</reading>
      <pos>助詞</pos>
      <baseform>に</baseform>
      </word>
      <word>
      <surface>は</surface>
      <reading>は</reading>
      <pos>助詞</pos>
      <baseform>は</baseform>
      </word>
      <word>
      <surface>二</surface>
      <reading>2</reading>
      <pos>名詞</pos>
      <baseform>2</baseform>
      </word>
      <word>
      <surface>羽</surface>
      <reading>わ</reading>
      <pos>名詞</pos>
      <baseform>羽</baseform>
      </word>
      <word>
      <surface>ニワトリ</surface>
      <reading>にわとり</reading>
      <pos>名詞</pos>
      <baseform>ニワトリ</baseform>
      </word>
      <word>
      <surface>が</surface>
      <reading>が</reading>
      <pos>助詞</pos>
      <baseform>が</baseform>
      </word>
      <word>
      <surface>いる</surface>
      <reading>いる</reading>
      <pos>動詞</pos>
      <baseform>いる</baseform>
      </word>
      <word>
      <surface>。</surface>
      <reading>。</reading>
      <pos>特殊</pos>
      <baseform>。</baseform>
      </word>
    </word_list>
  </ma_result>
  <uniq_result>
    <total_count>9</total_count>
    <filtered_count>5</filtered_count>
    <word_list>
      <word>
      <surface>庭</surface>
      <reading>にわ</reading>
      <pos>名詞</pos>
      <baseform>庭</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>二</surface>
      <reading>2</reading>
      <pos>名詞</pos>
      <baseform>2</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>羽</surface>
      <reading>わ</reading>
      <pos>名詞</pos>
      <baseform>羽</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>ニワトリ</surface>
      <reading>にわとり</reading>
      <pos>名詞</pos>
      <baseform>ニワトリ</baseform>
      <count>1</count>
      </word>
      <word>
      <surface>いる</surface>
      <reading>いる</reading>
      <pos>動詞</pos>
      <baseform>いる</baseform>
      <count>1</count>
      </word>
    </word_list>
  </uniq_result>
</ResultSet>

これををメモ帳に貼り付けて UTF-8 の文字コードで "sample.xml" の名前で保存します。
次に、Visual Basic Editor に、このサンプルコードを貼り付けます。
参考にしたのは、以下の掲示板です。
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200605/06050060.txt

Sub test()
'
' test Macro
' 作成日 2009/12/15 作成者 izumi
'
Dim D As MSXML2.DOMDocument
Set D = New MSXML2.DOMDocument
D.async = False '同期読み込み

If D.Load(ThisDocument.Path & "\SAMPLE.XML") Then
    MsgBox "読み込み成功"

  'ルート要素ノードの名前
  Debug.Print D.documentElement.nodeName
  'ルート要素ノードが持つ属性の数
  Debug.Print D.documentElement.Attributes.Length
  'ルート要素ノードの0番目の属性名
  Debug.Print D.documentElement.Attributes(0).nodeName
  'ルート要素ノードの0番目の属性値
  Debug.Print D.documentElement.Attributes(0).nodeValue
   
Else
    MsgBox ThisDocument.Path & "\SAMPLE.XML"
    MsgBox "読み込み失敗"
    Debug.Print D.parseError.errorCode
    Debug.Print D.parseError.reason
    Debug.Print D.parseError.srcText
    Debug.Print D.parseError.Line
    Debug.Print D.parseError.linepos
End If

End Sub

これを動かすと、なんとかうまく「読み込み成功」のメッセージボックスが表示され、Visual Basic のイミディエイト・ウインドウに Debug.Print の出力が表示されました。

これだけでは何をしているのか、また何を作ろうとしているのかわからないと思います。そのうち詳しい内容をご説明できると思いますので、当該ブログを引き続きご覧になっていただければとおもいます。

| | コメント (0) | トラックバック (0)

弁理士手帳

最近買った弁理士手帳2010年版ですが、各日付の翌日を起算日として、30日・40日・60日・3ヵ月後の日付が表示されています。それぞれの日付の意味は以下とおもいます。抜けがありましたら、コメント欄などで指摘いただければと思います。

30日:

 30条4項:新規性喪失の例外の適用を受けることができる発明であることを証明する書面の提出

 44条1項2号 特許査定の謄本の送達後の分割出願

 46条の2第1項3号 実用新案登録に基づく特許出願

 48条の3 出願審査請求

 108条 特許料の納付

 173条:再審

 実用新案のうち、6条の2の規定によらない場合に関して、法律及び省令の規定により特許庁長官、審判官又は審査官が指定し、定め、又は示すこととされる期間(指定期間)

40日:

 意匠・商標に関して、法律及び省令の規定により特許庁長官、審判官又は審査官が指定し、定め、又は示すこととされる期間(指定期間)

60日:

 特許及び実用新案6条の2の規定による場合に関して、法律及び省令の規定により特許庁長官、審判官又は審査官が指定し、定め、又は示すこととされる期間(指定期間)

3月

 44条1項3号 拒絶査定の謄本の送達後の分割出願

 46条2項 出願変更

 121条1項 拒絶査定不服審判

改めて見返すと、40日の指定期間など知らなかったものもあり、勉強になります。

| | コメント (0) | トラックバック (0)

生物の設計方針

今日は珍しく、医学・生物学関連の話でも書きます。

或る本を区立図書館で借りて読みました。残念ながら書名は忘れてしまいましたが、記憶にもとづいて簡単に内容を紹介します。
 その本には、アロイス・アルツハイマー医師が「アルツハイマー病」を初めて発見した経緯や、アルツハイマー病患者の辿るさまざまな病状や進行、そして、アルツハイマー病のワクチン療法に係る研究が進んでいることなどが記載されていました。
 100年ほど前は、50歳を超えて生きる人は希であり、よってアルツハイマー病は顕在化していなかったのですが、段々と人類の寿命が伸びるに従い、アルツハイマー病が発見されたそうです。それまでは、アルツハイマー病は老いに伴う自然発生的な出来事と見做されていたようです。

 自分が、この本の中で、一番衝撃を受けた言葉をご紹介します。

「人間などの生物には、『死』がプログラミングされており、『死』の遺伝子が発現することによって人間は死に至るようにも思えるが、そうではない。
 人間などの生物は、「生殖」がプログラミングされている。人間は、乳幼児の頃は死亡率が高いが、それを過ぎたならば生殖年齢の間は極めて死亡率は低い。生殖活動がおこなえることが次世代の子孫を残せる条件であり、よって生殖年齢の間は死亡率が低くなるような遺伝形態を有した者が次世代への生命を繋ぐことができるからだ。
 では、生殖年齢が過ぎたものはどうなるのか。それは全くプログラミングされていない。その後にどうなったとしても、自然淘汰の対象ではないからだ。」

 この言葉は、現代の先進工業国に於ける長寿化により、アルツハイマー病の脅威が現実のものになったことを言っているのですが、自分には同時に、これからの人生をどう生きれば良いかの示唆にも思えました。つまり、『死』は人間にプログラミングされておらず、よって「死」とは、いわばメンテナンス不良機器が動作停止するようなものであったならば、自分の身体を適切にメンテナンスすることで、よくメンテナンスされたクラシックカーが長く動作可能状態を保つように、自分も充実した長い人生を過ごせるのではないか、と。

 そういえば、京都大学で研究が進められているiPS細胞は、いわば自分の身体をリニューアルできるようなもので、極めて画期的なものです。人類はiPS細胞により更なる寿命を享受できるのでしょうか。

| | コメント (2) | トラックバック (0)

« 2009年11月 | トップページ | 2010年1月 »