ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Hello World程度のデータベース(その32:実践編 MySQLインストール)。

2007-08-12 14:59:53 | XML

 情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

 いままで理論的なことを書いてきて、先週から、では実際にデータベースアクセスプログラムを書いてみましょう!ということになりました。

 一連の手順はここに書いてあって、今回は、「mySQLのインストール」です。




■まずは、MySQLのダウンロードです。
MySQL5.0は、
ここ http://dev.mysql.com/downloads/mysql/5.0.html
にあります。今回は、Windows版ということで、

ZIP/Setup.exe版を選びました



■インストール
おとしてきたら、
1.プログラムのzipファイル(今回はmysql-5.0.45-win32.zip)を解凍します
 解凍ソフトや設定状況によって、解凍方法は違うので省略

2.解凍すると、Setup.exeが出てくるので、それをダブルクリックして実行します。

 なんか、メッセージボックスが出た後、はじまる画面がでるので、Nextボタンをクリックします。

そして、Setup Type画面(以下の画面)がでるので、

Typicalでいいんですけど、今回はCompleteを選びました。
そして、この画面

が出たら、
Installボタンをクリック。インストールがはじまります。
インストールがおわると、宣伝?がでてくるかも。
Nextボタンをクリックして、次に行くと、

この画面になります。
ここで、チェックがはいってることを確認して、Finishボタンを
クリックします(チェックをいれず、ここで終了した場合、あとで、
Configureをスタートメニューからする必要がある場合があります
また、変更する場合も、スタートメニューからできます)




■MySQLの設定

 そのあとすぐに、Configure画面がでてきます。
 はじめのほうは、nextでどんどん行ってOKですが、
 この画面が出てきたら、ストップ!


 日本語の設定をします。
 UTF-8なら、まんなかでもOKでしょうけど、
 それ以外の日本語なら、一番下をチェックして、
 キャラクターセットを選択します。
 今回は、UTF-8なのですが、一番下で選択しましょう。



 そのつぎ、

 下のチェックボックスにチェックを入れたほうが便利です
 いれないと、mysqlコマンドで操作するとき、mysqlの指定をフルパスで
書かないといけなくなります。

 つぎの画面で、パスワードを入れます。


 そして、nextボタンをクリックすると、以下の画面が現れます。


 Executeをクリックしてください。

 たまに、最後のApply security settingには失敗します。
 そのときは、スキップしてぬけてください。

 これで、インストールまでおしまいです。




次回は、Tomcatのインストールです。





  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ExcelのVBAで、Domを使って、XMLを書き出す

2007-02-23 18:37:17 | XML

こういうサンプルを、このブログで、書いた気がしたけど、
見つからなかったので、書いておきます。
(まじめに探してないので、もし、あって、ダブっちゃってたらごめん)




■仕様

 フォルダを選択するダイアログを出し、
 指定されたフォルダの下に、test.xmlというフォルダ名で
以下の内容のXMLファイルを書き出す
<?xml version="1.0"?>
<rss version="2.0">
<channel/>
</rss>

(上記<>は、本当は半角です)




■下準備

ここのブログにあるように、参照設定をひらいたら、以下のようにMicrosoft XMLの、どれかひとつをチェックします。




■ソース
こんなかんじ

Sub Macro1()
    Dim fDlg As FileDialog
    Dim fname   As String
    Dim xdoc As New DOMDocument
    Dim xtree As IXMLDOMElement

    Dim zyu As IXMLDOMElement
    Dim pi As IXMLDOMProcessingInstruction
   
   'フォルダのダイアログを出す
    Set fDlg = Application.FileDialog(msoFileDialogFolderPicker)
    fDlg.InitialFileName = "C:¥"
    
    'ファイル名決定
    If (fDlg.Show = -1) Then     'OKのとき
        fname = fDlg.SelectedItems(1) & "¥test.xml"
    Else
        fname = ""
    End If
    Set fDlg = Nothing
    If (fname = "") Then
        Exit Sub
    End If

    'XMLのはじまりを書く
    Set pi = xdoc.createProcessingInstruction("xml", "version='1.0'")
    Call xdoc.appendChild(pi)

    '先頭のノード作成
    Set xtree = xdoc.createElement("rss")
    Call xtree.setAttribute("version", "2.0")   '属性設定
    Call xdoc.appendChild(xtree)
    
    'その下のノードの作成
    Set channel = xdoc.createElement("channel")
    Call xtree.appendChild(channel)
        
    '保存
    xdoc.Save (fname)

End Sub

(上記 ¥ < > は、本当は半角)




■参考にしたサイト
http://www2.moug.net/bbs/exvba/20061207000017.htm
(フォルダダイアログの出し方:「あられすき」さんの)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ExcelマクロでXMLを読み込む方法(RSSを読み込む場合を例に)

2006-06-15 09:48:38 | XML

 以前、YOU TUBEに追加された動画を、RSSから取得するためのExcelシート(マクロ)の作り方 というのを書きましたが、そこでの説明がなかったので、説明してみたいと思います。




■ExcelマクロでXMLを読み込む場合、参照設定が必要
 XMLのライブラリはデフォルトでリンクされているわけではないので、参照設定で、XMLのライブラリを追加する必要があります。

 XMLのライブラリは、Microsoft XMLというのなのですが、バージョンがいくつかあります。

 3.0は2000,XP,2003どれも入っています。今回は、3.0をリンクすればOKです(それ以上でももちろんOKです)。追加の仕方は、上記リンク先を見てください。




■マクロの概要
 マクロでやることは、以下のことです
(1)XMLファイルの読み込んで、必要なところを切り出す
(2)切り出した内容の書き出し
(3)タイマーをかけて一定時間たったら、再度メソッド実行

 マクロのソースはここにありますが(文字化けしたら、シフトJISを指定してみてください)
 (1)は、RSSRead()の「RSS読み込み」の部分で行っています
 (2)は、writeItemでやっています
 (3)は、RSSRead()の「次の時間まち処理」の部分で行っています
 なお、ボタン1をクリックされると、「ボタン1_Click」にはいるように設定しています。
 そこからRSSRead()に入るようになっています。

今回、(2)は、XMLとは関係ない、Excelの書き方の部分なので、今回は、(1)と(3)について説明します。




■ExcelマクロでのXMLの読み方

XMLを読んでいる部分は、こんなかんじです。

    Dim xdoc As New DOMDocument
    Dim itemlist As IXMLDOMNodeList
    Dim node As IXMLDOMNode
    Dim url As String
    Dim i As Integer
    Dim addURL As String
    Dim addTitle As String
    

'(中略)

    '/*=========================*/
    '/*     RSS読み込み      */
    '/*=========================*/
                '   データを取ってくる
    xdoc.async = False
    xdoc.Load (url)     '   ここは、引数をStringに入れておかないとエラーになる
    
                '   itemタグを全員集合させる
    Set itemlist = xdoc.getElementsByTagName("item")
    sosa_sh.Range("C6") = "読み込み終了:" & CStr(itemlist.Length) & "件"
    
                '   各itemに対して、書き出し
    For i = 0 To itemlist.Length - 1
        addURL = itemlist(i).selectSingleNode("link").nodeTypedValue
        addTitle = itemlist(i).selectSingleNode("title").nodeTypedValue
        Call writeItem(addURL, addTitle)
    Next



一番初めに、DOMDocumentクラスの変数(ここではxdocに対して、

xdoc.async = False

と入れます。asyncにFalseが入っていると、読み込み終了後、次の処理をします。
trueだと、読み込みが終わんなくても、次の行に行ってしまいます。
なのでfalseにします。
実際読み込むのは

xdoc.Load (url)

です。
 なお、urlは、ローカルのファイルでも、http://のネット上のファイルでも、どちらでもOKです。あらかじめ文字列にいれておきます(すみません、そこは省略してます。もしきになったら、リンク先のソースコードを見てください)。文字列に入れておかないと、エラーになってしまいました。




 で、これで、読み込んできますので、ここで、
・レコードに該当するタグを検索して、各レコードを取得する
・レコード数分、必要な内容を取得して、書き出す

ということをします。今回のRSSの場合は、itemタグ(これが、レコードに対応するタグ)の中に入っている、linkとtitle(という項目)を取り出したいので、、

・getElementsByTagNameで、itemを指定し、レコードに相当するノードのリストを取得します。

で、レコード数分=ノートリストの個数分、

・必要な内容である、linkとtitleを取り出しwriteItemで書き出します。

このとき、getElementsByTagNameはノードに対して、使えなかったので、selectSingleNodeを使ってます。また、値の取得は、nodeTypedValueでやってます(他にも、取り出し方はありますが)。




■時間まち処理

時間まち処理をしている部分は、こんなかんじです。

    Call Application.OnTime(Now + TimeValue("00:" & Format("99", intv) & ":00"), "RSSRead")

   
Application.OnTime(時間,呼び出す関数)で、その時間が来ると、「呼び出す関数」を呼び出します。今回は、繰り返したいので、自分の関数を呼び出してます。

ちなみに。。。 Call Application.OnTime(Now,次の呼び出す関数)とやると、その関数を産後まで終了した後、すぐに「次の呼び出す関数」を呼び出します。




と、説明は、こんなかんじとなります。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

データの蓄積・保存としてXMLを利用する場合の設計方法を考える

2006-06-13 11:58:17 | XML

 きのうのブログ「
MVCまたはロバストネス分析におけるXMLの利用と設計方法をかんがえる
」で、
XMLの使われ方について


(1)画面そのものの記述
(2)あるシステム、プログラムからあるシステム、プログラムへの、データ転送
(3)どのプログラムを起動するかという振る舞いの記述
(4)(エンティティ)データの蓄積


の4種類をあげたが、今回は本題の「(4)(エンティティ)データの蓄積」について取り上げたい。




 これは、XMLDBや(DBに入れる代わりに)XMLのファイルで保存する場合のXMLのスキーマの設計方法についてである。

 この場合、1エンティティに1つのタグを割り当て、その中に、1レコード分のタグを割り当て、さらに項目は、レコードのタグの
  1.属性とする
  2.子のタグとする
 のどちらかにすれば、RDBと同じようにER図で考えられる。

 で、そーすると、たとえばRSSだと

 item(1つの記事)っていうのがあって、その中に
   title
   link
 っていうのがあるので

 <items>
  <item>
    <title></title>
    <link></link>
  </item>
 </items>

ってことになる
(itemsタグはなくてもいいが、操作上あると、itemsの下にitemを追加・削除できて、いーかも)




 ということは、RDBの場合、ER図を作って、そのあとテーブルを設計するための正規形を行うが、同様の操作をすれば、タグがでてきそうである。

 ここまではいいんですけど、

 ある本を立ち読みしていたら(ごめんなさい。本の名前までは忘れました)、その正規化でXMLのスキーマを出してこようとしていたんだけど、RDBとXML(DB)の違いをチェックしておかないとまずいとおもうので、そこについて書きたいというのが、今回のお題。

まず、正規形では、どんなことをするかとうと、結局こんなことする。
 第一正規形で、繰り返し部分を分離して
 第二正規形で、初めに考えたエンティティごとに属性をあつめ主キーをきめ
 第三正規形で、エンティティをもう一度見直し、分離できるものを分離する。

ところで、第一正規形で、繰り返しを分離するが、繰り返しには、2つある。



●繰り返しその1:1対多であって、子のほうは、ほかとのリンクがないもの

 たとえば、勤務表というのがあったとして、そうすると
 社員ID
   年月日
   出社時間
   退社時間
   途中退出時間
 ってなるけど、この場合、子要素になる、(年月日、出社時間、退社時間、途中退出時間)は、これ以上、他のエンティティとの関連はない。なので、RDBの場合は

 勤務表    ----<  勤務表明細
  勤務表ID          勤務表ID
  社員ID           年月日
                出社時間
                退社時間
                途中退出時間

 とわかれるが、XMLの場合、こうしてもいいけど

<勤務表>
  <社員ID></社員ID>
  <勤務表明細>
    <年月日></年月日>
    <出社時間></出社時間>
    <退社時間></退社時間>
    <途中退出時間></途中退出時間>
  </勤務表明細>
</勤務表>

 とまとめてしまって問題ない、というより、まとめたほうが操作しやすい。



●繰り返しその1:多対多の関係
 もうひとつは、多対多の関係で、これを解決するための対照表(対応表だっけ?)がある場合。
 たとえば、入退出管理をするとすると

   部屋ID
   社員ID
   年月日
   入室時間
   退室時間

 となり、社員と部屋が多対多の関係となる。
 このとき、RDBだと

  部屋  --< 入退出  >--- 社員
   部屋ID     部屋ID       社員ID
   部屋名     社員ID       社員名
           年月日
           入室時間
           退室時間
           
 のような関係にする。これは、1箇所を修正したら、他にも修正結果を反映させるため。

 で、XMLでも、このようにするのであれば、上記のエンティティの割り方でいい。
 しかし、XMLの場合は、そういう、データを1箇所変えたら、全部がかわるというカタチでなく、プログラム的に操作するというのであれば、入退出管理にIDを入れないで
  入退出
   部屋名
   社員名
   年月日
   入室時間
   退室時間
という形になる




 ということで、第一正規形の繰り返しには2種類あって

 ・1対多の関係(多のほうは、他のエンティティと結びつかない)
 ・多対多の関係(2つ以上のエンティティの結びつき)

 というケースがある。

 XMLにおいて、前者はエンティティを親子関係として、親の中に入れることができる

 後者はRDB同様、2つのエンティティの対照表をつくり、(対照表も)それぞれ別のエンティティにすることができる(べつに2つのエンティティそれぞれに値を書いてしまい、プログラム的に修正するんだあ!というのであれば、そうすることもできる)

 ところが、前者のエンティティを親子関係にしたい場合、まず、エンティティをすべて確立させて、そのあとで、どのエンティティが完全な親子関係になっているかをみないといけない。

 ところが、エンティティが確立するのは第一正規形より後の第三正規形の工程である。




 っていうことで、XMLDBの場合は、
第一正規形
第二正規形
第三正規形
をおこなったあとで、
 第一正規形補足:完全な親子関係(1対多で多は親以外にリンクなし)を探す

というカタチで第一正規形にもどるか、

いっそのこと、佐藤正美氏の方法のように、第一正規形を後に持ってくるか
(このやりかたのほうが、XMLには、すっきりすると思う)

ってことが、ウィリアムのいたずらは必要だと思う。




ってことを書きたかった。。

ひえー、長いお話でした。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MVCまたはロバストネス分析におけるXMLの利用と設計方法をかんがえる

2006-06-12 01:28:00 | XML

 ファイルは、もともとはデータの永続化(電気きっても、前のデータを利用してプログラムが実行できる)という目的で出てきた技術である。
 その点で考えると、ファイルは、ロバストネス分析における、エンティティ、コントロール、バウンダリでは、ソフトウェアシステム内部で半永久的に管理するデータとその振る舞いを定義するエンティティ(注1)として使われるべきであるのに、実際は、データの転送という目的で、バウンダリに使われたり、コントロールに使われ(注2)たりする。
 XMLも、エンティティ、バウンダリ、コントロールそれぞれに使われる。

 そして見方を変えて、MVCの立場で見た場合でも、同様に、XMLはそれぞれの場において使われる。


 しかし、エンティティは、データベースやファイルに落とし込むことを前提に、ER図などを使って設計を落とし込んでいくのに対し、バウンダリは、画面や帳票を利用するために、画面等のユーザーインターフェースのガイドラインを元に落とし込むといったように、エンティティ、バウンダリ、コントロールでは、それぞれ設計方法が異なる。

 今回は、その設計方法の違いを、XMLの場合について、前座的な話をしたい。
(本題は、このシリーズの次回)

注1:エンティティの定義(上記斜体部)は、以下のサイトより引用してる
実践ロバストネス分析 第 1 回 ロバストネス分析の基礎
http://www.ogis-ri.co.jp/otc/hiroba/technical/RobustnessAnalysis/RA1/


注2:コントロールの例としては、strutsのstruts-config.xmlが挙げられる。
 Strutsのユーザーガイドの
4. コントローラコンポーネントの構築
http://www.jajakarta.org/struts/struts1.0/ja/target/documentation/userGuide/building_controller.html

の章の「4.4 アクションマッピング設定ファイル 」の中に、struts-config.xmlの説明がある、つまり、Strutsを作った人たちのマニュアルのコントロールの章の中にstruts-config.xmlがあることから、これは、struts-config.xmlはコントロールであると、少なくとも設計者は思っているとみて、よさそうである(ウィリアムのいたずらも、コントロールだと思うけど)




 システムを、エンティティ、バウンダリ、コントロールとわけたとき、XMLは、こんなところに使われる。

バウンダリ :画面から、コントロール等へのデータ転送
コントロール:バウンダリとエンティティの結びつけ、振り分け方法の記述
エンティティ:(エンティティ)データを蓄積する

 システムをMVC(モデル、ビュー、コントロール)で見た場合、以下のようにつかわれる
ビュー   :画面から、コントロール等へのデータ転送
       画面そのものの記述(XHTML)
コントロール:バウンダリとエンティティの結びつけ、振り分け方法の記述
       エンティティへのデータ転送
モデル   :モデルで使用するエンティティデータを蓄積する

 つまり、XMLの使われ方は、以下の4つが主なものと思われる。
(1)画面そのものの記述
(2)あるシステム、プログラムからあるシステム、プログラムへの、データ転送
(3)どのプログラムを起動するかという振る舞いの記述
(4)(エンティティ)データの蓄積

 で、このうち、本当は、(4)について書きたいが、(4)と、他の設計方法が、ぜんぜん違うんだよということを示すため、今回は、(1)、(2)について、片付けてしまう。




■(1)画面そのものをXMLで記述するケース
 これは、画面や帳票などで、XMLを使用する場合で、方法は
・出力したい項目を調べる(入出力項目か、出力項目か、入力項目かなども)

・上記の項目すべてについて、表示する方法を、画面や帳票のユーザーインターフェースをもとに決める
   *画面割りをきめる
   *画面にはいる項目もきめる

・そーすると、そのインターフェースごとに、書き方が決まっているので、それに基づいて書く

という方法をとるとおもう。




■(2)あるシステム、プログラムからあるシステム、プログラムへの、データ転送

 なお、これは、データ転送といっているが、メッセージ交換や、いろんなプログラムの間でデータを相互交換するような標準化の場合も含まれる。
 この場合は、以下のような手順できまるとおもう

・データ交換したいもの、標準化したいものをきめる
  *データ転送の場合どのデータを転送するのか決める
    もちろん、転送項目はいくつもある
  *標準化の場合は、どの件について標準化するのか、範囲をきめる

・決めた転送データそれぞれについて、どのような項目があるのかを調査する
 標準化の場合は、標準化項目を調査する

・各項目について、XML化する
 このとき、上記項目が、タグか属性になる。




 で、問題は、(4)データの蓄積です。
 このお話について、「このシリーズ」の次回、覚えていたら書きます。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

YOU TUBEに追加された動画を、RSSから取得するためのExcelシート(マクロ)の作り方

2006-06-09 17:49:46 | XML

 前の日に書いたYOU TUBEに追加された動画をRSSからとってきて、それをExcelシートに書き出すというもの、できたんですけど、公開するには、まだいろんなところを調べないとまずいので、今、作り方だけ、書いておきます。

 なお、今回のものは、Excel 2003以外でも、Micorsoft XMLが載っていればOKです
(たしか、XPとかでものってたような。。2000は?のってたかなー)




■仕様

こんなかんじのExcelシートを作ります

C4セルに指定された分間隔で(図のように無指定だと1分ごと)
C3セルに指定されたURLのRSSを読み込み、

そのRSS中のlinkとtitleをとってきて、

そのlinkで示されたURLが、下の一覧中になかったら、
タイトルと一緒に、どんどん追加していきます。

結果として、どんどん最新のURLを追加していくことになります。

終了させたいときは、Excelを終了してください。
このとき、保存して終了すれば、今作った一覧は保存されます。




■作り方

まず、図のようにExcelシートを作成し
(セルの位置を同じにしないと、あとで、ソースを直さないといけなくなります)

ボタンを作って、それをボタン1とします
(Excelを開いて、ボタンを付ければ、ボタン1になると思います)
そしたら、そのボタン1で、マクロを作るかどうか聞いてくると思うので、

そしたら、新規作成にします。

そうすると、マクロエディタ(VBE)が開くはずです。

開いたら、以下に示すように、ツール→参照設定で、参照設定ダイアログを
開いてください。


参照設定をひらいたら、以下のようにMicrosoft XMLの、どれかひとつを
チェックします。

Excelによっては、ないバージョンがあります。
どのバージョンでも結構です。

で、それが終わったら、以下のページに書いてあるソース
http://www.geocities.jp/xmldtp/xl_excel.txt
をマクロエディタに貼りこんでください。

あとは、実行すればOKです。




 詳しい説明やExcelファイルでの公開は、また別の機会に。。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

税務用のXBRL(財務諸表用XML)の構造をみてみる。

2006-06-07 03:17:36 | XML

 東証のXBRLばっかり見てきたけど、やっば、みんなの興味関心は。。。
 村上ファンド?つーと、大量保有報告書?
 あれは、金融庁のEDINETで見れるけど、EDINETのタクソノミーは、まだ職員募集してる段階で、できてないから。。

 って、そーじゃなくって、関心はぜーきんだよねー
 ってことで、税務用のXBRLは、タクソノミが公開されているようなので、みてみる。。




■税務用財務諸表タクソノミーのありか

 税務用財務諸表タクソノミーは、
 ここ http://www.xbrl-jp.org/download/index.htm#Taxonomy
の 

税務用財務諸表タクソノミー
 最新版 税務用財務諸表タクソノミー(2006年3月 7日版)

ってところにあるので、そこからダウンロードして、ZIPファイルを解凍し、フォルダができたら、下へ進んでいくと、いっぱいファイルがあるところに出くわす。そいつらがタクソノミ




■ファイル名の構造

ファイル名は、こんなかんじ
jp-bs-nt-2006-03-07_label.xml

jp- 必ずつく
bs- 書類の種類BSは、貸借対照表 これ以外については、「書類の種類について」で後述
nt- つかないものもアル。細分類 ntは、注記(note)
2006-03-07 できた日、今回落としてきたのは、みんな2006-03-07のはず
_label.xml タクソノミーの種類、後述

こんなかんじで、ファイル名がついて、いっぱい入ってる




■タクソノミの種類
 タクソノミについて、どんなタクソノミがあるかについてはここで示した。
 以下、そこで示した種類をあげ、その後に、どのようなファイル名になっているかを対応して記述する。

・構造を書いたXMLSchema:拡張子が .xsd
・定義リンク :ファイルの終わりが_definition.xml
・計算リンク :ファイルの終わりが_calculation.xml
・表示リンク :ファイルの終わりが_presentation.xml
・ラベルリンク:ファイルの終わりが_label.xml
・参照リンク :ファイルの終わりが_reference.xml

 リンクは、必ずしも、すべてあるわけでない。

 どういう書類をあらわした構造なのかを見るには、「ラベルリンク」をみると、日本語で、項目名が書いてあるので、わかりやすい。




■書類の種類について
書類の種類の大分類(jp_のあと)については、以下のとおりのようだ
bs_ 貸借対照表
cn_ 完成工事原価報告書
gcd_ 企業情報
pl_ 損益計算書
sc_製造原価明細書
se_ 株主資本等変動計算書
ta_ その他?いっぱいアル。

なお、bs_ntなど、上記の種類のあとにつく_ntは、注記を表す。
それ以外は、ラベルリンクを開いて、みてくださいませ。




今回はここまで。






  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

XBRL(財務会計データ標準のXML)の構造とか、金融庁の課長補佐クラス職員募集とか

2006-06-05 01:17:45 | XML

 最近、XBRLについて、取り上げることが多いんですけど、情報処理(情報処理学会から来る雑誌の、論文誌でないほう、表紙が派手なほう)の2005年3月号(300ページ)に、
動き始めた財務会計データ標準XBRLっていう題で、構造とか書いてあったので、XBRLの構造を、今回は、まとめて書いておこうと思います。

 前のブログで、タグが英語で、意味わからず、やっぱり、高校講座、英語Iも、みときゃーよかったなあ等という、大勘違いした発言をしていたので、そいつの訂正っていうこともあります。




■そもそもXBRLとは

 XBRLは、XMLを利用した、財務情報を記述した言語。
 XBRLの特色として、XMLを利用しているものの、XMLのインスタンスの中に、構造を持つカタチではなく、XMLの定義のほうに、構造を記述し、それらを、タクソノミと呼んでいるところがあげられる。
 つまり、ふつうに財務諸表(以下の例ではBS)をかくと
<資産>
 <流動資産>
  <現金預金>1000</現金預金>
  <売掛金>3000</売掛金>
  <商品>3000</商品>
 </流動資産>
 <固定資産>
   :

等というようになりそうだが、そうはかかず、科目をぜんぶ、ならべてしまうようです

<資産>10000</資産>
<流動資産>7000</流動資産>
<現金預金>1000</現金預金>
<売掛金>3000</売掛金>
<商品>3000</商品>

で、資産、流動資産、各科目の関係は、タクソノミの所に書くようです。
(ちなみに、本当のXBRLの科目は、英語です)




■XBRLの構造
構造を定義したタクソノミと、実際の内容が書いてある、インスタンスに分かれます。

●タクソノミ
 タクソノミは、構造を書いたXMLSchemaと、そのタグを表示する場合の位置や表示する文字(ラベル)を記述したリンクがあります。リンクはXLinkで記述してあります。

具体的には、こんなかんじ
・構造を書いたXMLSchema
・定義リンク:包含関係を示す
・計算リンク:科目間の計算関係をしめす
・表示リンク:表示上の関係を示す
・ラベルリンク:勘定科目の表示を示す
・参照リンク:根拠法の関係を示す。

●インスタンス
 インスタンスには、科目ごとの値がかかれます。
 複数年度ある場合(今期、前期、来期などを同時に表示する場合)、contextであらわす。
 東証のXBRLの場合、contextで、今期、前期、来期などのIDを示し、
 各勘定科目の、各期で、1要素となる。
 つまり、
  営業利益の今期で1要素、
  営業利益の前期で1要素、
  営業利益の来期で1要素、
  経常利益の今期で1要素、
  経常利益の前期で1要素、
  経常利益の来期で1要素、
    :
 ということになります。この、今期、前期、来期については、contextRefという属性であらわし、この属性値が、上記contextのIDとなります。

 インスタンスには、このほかに、「脚注リンク」が記述されます。




■XBRLの現状
 さっきの情報処理の所に書いてあるのは
 日銀、
 国税庁
 帝国データバンク、東京商工リサーチ
 東証
と、あと、メーカー(日立、ワコール)が上がっているけど、それ以外に、金融庁のEDINETがある。ちなみに、金融庁で、このタクソノミきめる人を、募集してるよ!

 ここ
http://www.fsa.go.jp/common/recruit/17/20060202_syokuin.html


 すげーーーー!!

 課長補佐クラスだって(@_@!)

ってことは、施策を企画するレベルだよねえ(あれって、筆頭課長補佐だっけ?)
きっと、ここに、どーいう人が、選ばれるかで、使えるか、つかえねーかが決まりそう(^^;)やっぱ、中央青山の人とかが、なるのかなあ(^^;)

 ちなみに、ツールは、XBRL Japanのリソースセンターのツール(http://www.xbrl-jp.org/resourcecenter/tools.html)にいろいろあるよ




 ということで、初めに書いた、タグが英語って件は、タクソノミのラベルリンクを見れば、日本語名称との対応がわかるはず!

ってことです。

 高校講座の英語Ⅰをみてなくても、大丈夫そうです。
 でも、金融庁の職員になるには、多分、英語Ⅰなんかじゃーダメだと思います。
 あたりまえですが(^^;)

 

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

XMLの技術やJAXファミリ等、思いつくまま、まとめてみる

2006-05-17 11:28:16 | XML

きのうのXMLの暗号化で気付いたんだけど、XMLの知識を忘れかけているので、ここで、ざっとまとめてみましょう。
 なお、備忘録のためにメモしてるだけなので、内容はいいかげんです。
 違う意見がある人が多く居ることは承知の上で、却下します。はい。

 で、まず、大雑把に、サーバー側とクライアント側に分けて考えます
 わけられねーよ、そんな簡単にという意見があることは承知の上で、却下します。はい。
 わけるんです。説明しやすいように。




■サーバー側の技術
●XMLデータ
 サーバー側のXMLによる入出力は、永続的データ(コンピューターの電気をぶちっと切って、次の日に電気入れても、データが残っている)として、XMLファイルで残す方法と、XMLDBで残す方法がある。

 XML自体は、インスタンスと、スキーマがあり、
 スキーマとしては、XML Schemaと、Relax、DTDによる記述がある。

 XMLDBは、XPathを使って検索する

 通信による(永続的でない)データ入出力としては、SOAPによるもの、XML-RPCによるものなどがある。




●変換処理(ファイルによる変換)

・XMLからXMLへの変換処理は、XSLTを利用する。
 XSLTとしては、Xalan(Javaで出来ている)等がある。
 Xalanを利用する場合は、XMLパーザーが必要。パーザーとしてはxerces等がある。
 XSLTに、変換規則を記述したXSLと入力XMLファイルを指定する。
 出力はXMLも可能だが、それ以外のText,HTMLも可能。

・XMLから、印刷用への変換処理は、XSLT→フォーマッタを用いる。
 XSLTによって、FOフォーマットに変換し、FOフォーマットのものをPDFやPSなどの出力フォーマットに変えるプログラム(フォーマッタっていったと思った、ちがうかな)で、変換する。
 この処理を行うのが、FOPである(有料だと、アンテナハウスからなんか出してると思った)。

・XMLから、いろいろなフォーマットに変換させてWebで見たい場合、cocoonを使う
 上記のようにXSLTで各種フォーマットに変換させ、場合によってはFOPを利用して表示用のものを作るが、この一連の作業をやるソフトがcocoonである。




●プログラムによる処理
 一方、XMLからプログラムを利用して、各種処理を行いたいケースがある。
 このとき、XMLを読み込み、書き込みして、Javaで操作するためには、JavaのパーザーのAPIを使って読み込むか、バインディングによって、マーシャル、アンマーシャルする方法がある。

・前者のパーザーを使うほうがJAXPである。
 JAXPはさあに、パーザーには、頭から処理していくSAXと、XMLのツリーをつくって処理するDOMの2種類がある。

・後者のバインディングを使うほうがJAXBである。

・なお、JAXとつく、Java関係のものは、こんなものがある
JAXP   上記のとおり、パーザーなど
JAXM   SOAPなどのメッセージをまとめたものらしい
JAXB   上記のとおりバインディング
JAXR   Webサービスレジストリへのアクセス
JAX-RPC たしかXMLRPC関係
JAX-WS  JAX-RPCがばーじょんあーぷ!で名前変わった。
JAXTA  JavaによるP2PのAPI。。あんまりXMLには、関係ないか。。

 なお、JAXTAは、P2Pなので、まだ、Javaには関係あるが(こんな本もでてる)山手線の広告で見かけるJAXAは、Tが抜けてるだけだが、「宇宙航空研究開発機構」の略であり、Javaとは、関係ない。たぶん。




■クライアントがわの技術
●XMLとXSL、CSSによるブラウザ表示
 XMLで記述したものを、XSLやCSSで表示方法を指定し、ブラウザで見るというもの

データアイランド
 むかし、IEで行われていた方式で、XMLデータをHTML中に書くか、どっかにもつかして、表示させる方法
 なお、「ふたりのアイランド」というのは、ごろは似ているが、石川優子&チャゲ、もしくは少女隊、いずれかの歌の題名らしい*。つまり、XMLには関係ない。多分。

●AJAX(JavaScriptによる読み込み)
 JavaScriptによって、Domの操作ができる。

●ブラウザ以外のOffice製品
 アプリケーションからXMLの取り込みをするか、
 マクロで、MSXML2.DOMDocumentを使って操作できる。(Domの操作になる)

●それ以外のソフト
 ソフトが読みこみ、書き込みなどに対応していれば。。
 対応していない場合、サーバー側のようにXSLTで変換かけるなり、Javaで操作するなり。。




 とまあ、抜けはいっぱいあるし、書いている内容も正確でないけど、
 とりあえず、頭の中にあることをまとめると、こんなかんじかな。。

 ・・・って、昨日のXMLの暗号化が、出てこないジャン(^^;)
 全部まとめてないじゃん。だめじゃん(>_<!)??

*注:なお、このように2組がうたっているので、年齢を判別する有名な方法としては、

(棒読みで)

歌の出だしで「ようこそここへ」といったら、その先は?

と聞くといいらしい。

 「くっくくっく」と答えたら、おじさんまたはオバサン
 「遊ぼうよパラダイス」と答えるのが若者である。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

XML文書中にある個人情報を守るための暗号化について調べてみた

2006-05-16 11:23:35 | XML

そうそう、OfficeとかXML化っていうけど、個人情報とか書いた文書をそのままXMLのテキストにしちゃったら、まずいよね、見られちゃうから。。
 たしか、一般的に、そーいうXML文書を他のひとにみられたくなかったら、どーすんだっけ?なんか、前にきいたことがあったなあ。。。

 と、メモをみたら、「keytool」とかいてあった。。。

 なんじゃこりゃ、(って自分でもわけわかんないメモ書くんじゃなーい ^^;)
 てんで、YAHOOで、「keytool XML」といれて、あーだーこーだして、ここ
XML暗号化の基礎と実践
http://www.atmarkit.co.jp/fxml/tanpatsu/16xmlsecurity/xmlsecurity01.html

にたどり着いた。

で、暗号化などについて、わかったところをまとめると、こんなかんじ




■XMLの暗号化の規約「XML Encryption」
 XMLを暗号化する場合は、XMLのエレメント部分を暗号化するよーだ。
 そーだよねえ、ぜーんぶを暗号化したら、パーザーで通らなくなっちゃうから、XMLにしても、扱えなくなっちゃう。エレメントだけなら、暗号化しても、パーザーで通るし、中身もわかんない。

 で、その規約は、「XML Encryption」(って、まんま直訳じゃん(^^))っていうのがW3Cに提案されているそうだ。



■XMLの電子署名
 暗号ではないけど、暗号技術に関係したものとして、電子署名がありますよね。
 XMLで電子署名をする場合、署名データ、鍵情報を、SOAPで送信するらしい。
 ここ 

SOAP Security Extensions: Digital Signature
http://www.w3.org/TR/SOAP-dsig/





■これらの基盤としてのXKMS(XML Key Management Service)

 上記暗号化、電子署名を簡単に組み込める基盤として、米ベリサインや米マイクロソフト、米ウェブメソッドなど複数のベンダが提案したXKMSというのがあるそうな
ここ
XML Key Management Specification
http://www.w3.org/TR/xkms/





■無償で使えるセキュリティスイート
 で、IBMが「試用を目的に無償で」ダウンロードできるサイトアルファワークスに、今まで書いてきた、暗号化、電子署名、その基盤としてのXKMSその他もろもろXMLのセキュリティスイートもあって、ダウンロードできるそーな。

ここ http://www.alphaworks.ibm.com/tech/xmlsecuritysuite

使い方は、ここ
XML暗号化の基礎と実践 後編 XML暗号化と電子署名の実践 
http://www.atmarkit.co.jp/fxml/tanpatsu/16xmlsecurity/xmlsecurity04.html


 初めに書いたkeytoolっていうのは、この中のツールの1つのようです。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする