inlineXBRL について調べているけど...(その3)
java から XSLT 処理を起動し、その XSLT では、currentFolder にファイルを出力している。
この 出力先を java 側から指定できるようにしたい。
どうすればよい?
java から XSLT 処理を起動し、その XSLT では、currentFolder にファイルを出力している。
この 出力先を java 側から指定できるようにしたい。
どうすればよい?
- http://www.xbrl.org/SpecCRs/
> Inline XBRL (Rendering) Specification - CR5 - CALL FOR IMPLEMENTATIONS September 28, 2009
に Conformance Suite (.zip file) として、inline XBRL の実装テストがある。
これを
http://sourceforge.net/projects/inlinexbrl/develop (last commit on 2009-10-14)
という 変換実装例で試してみた。
うーん、45ケースのうち1つが FAIL する。
でも FAIL していないケースでも、想定変換結果と実際の変換結果に どれも差が検出される!
Conformance Suite 自体もまだ 洗練されていないようなので、
Conformance Suite と 変換実装のどちらに問題があるのか よくわからない。
こういった仕様を制定する場合は、きちんとした reference 実装 (速度やメモリ効率は無視してよい)
と合わせて公開をしてほしいなぁ。
(一つの inlineXBRL ファイルが複数の XBRL データを持っているサンプルデータは公開されているけど、
テストケースは用意されていないみたいだし...)
俺がテストの為に構築した環境を以下に置いてある。
http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/iXBRL/?root=ruby-xbrl
firedictionary への追加辞書データして、EDINET でのタクソノミ中の用語を pdic 形式で作ってみた。
方法 (ruby スクリプト) と PDIC データは 以下を参照。
http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/lib/pdic/?root=ruby-xbrl
現状ではなぜか、日本語 -> 英語 しか引けない。何故?
次は IFRS 用語辞書を作る予定。
// IFRS 用語辞書からボランティアを募ってデータ作成していく?
firewatir の使い方が分かったので、EDINET サイトから XBRL データをダウンロードする ruby スクリプトを書いてみた。
- http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/tools/watir/edinet/edint-download.rb?view=markup&revision=93&root=ruby-xbrl
> View of /trunk/Edinet/tools/watir/edinet/edint-download.rb - ruby-XBRL - SourceForge.JP
# firefox の download 動作の設定を
# "ダイアログを開かずに 特定フォルダ以下に保存する"
# ようにしておくことが必要。
XBRLデータは、これで完全に download することができそうだ。
PDF データもダウンロードしたかったが、こちらは まだ完全にはできていない。
PDF ダウンロード時に 別window がひらくのだが、これを close する方法が不明...
20ファイルまでは download されるのだが、それ以上は 別window がひらかなくなり、download もされない。
(エラーにはならないので、XBRL データの download は それ以降も問題な実行はされる)
これで、SEC と EDINET の 最新 XBRL データを集めることができるようになったことになる。
次は これらのファイルを簡易検索して download できるようなサービスを sinatra でつくる予定。
RSS リーダーをつかえば、RSS 閲覧はできる。
でも RSS リーダーを使わずに web ブラウザ画面に 直接 SEC の RSS を表示させてみた。
http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/tools/sec/rss.html?root=ruby-xbrl&view=log
設置方法:
* rss.htm, jquery/, jquery-plugin/ を httpサーバーの document エリアに置く。
例:MacOSX の場合
~/Sites/ や /Users/youichikato/Sites
jquery は以下から download できる。
http://docs.jquery.com/Downloading_jQuery#Download_jQuery
jFeed は以下から download できる。
http://plugins.jquery.com/project/jFeed
外部サイトの RSS データを取得するための jFeed に含まれている proxy.php を利用する。
php が動作するように http サーバーの設定をすることも必要。
proxy.php の設置場所に合わせて、rss.html 中のproxy.php のパスの変更もすること。
// 現状は、jFeed 中のproxy.php を直に指定している。
http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/tools/sec/?root=ruby-xbrl
を更新した。
更新内容は、submit ボタンに disabeld 制御を追加した事だ。
検索条件が空の場合にsubmit ボタンを 無効にし、そうでないときにボタンを有効にするようにした。
これは、jquery に本を買ってきて、selector や イベントに処理関数を割り当てる方法を勉強した成果である。
SEC の SIC コードの検索 web アプリを sinatra で作成している。
favicon.ico の設定、jquery の tablesorter, pager の組み込みもできるようになった。
http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/tools/sec/?root=ruby-xbrl
つぎのいずれの方法でも起動できる。
$ jruby web-app.rb // このあと ブラウザで http:;pcalhost:4567 にアクセス
$ ruby web-app.rb // このあと ブラウザで http:;pcalhost:4567 にアクセス
$ rackup config.ru // このあと ブラウザで http:;pcalhost:9292 にアクセス
この後は SIC, CIK コードの検索アプリ/Restful サービスとして完成をさせていこう。
先日は SEC サイトの SIC コード全体を取得するプログラムを作ったが、
取得データの検索をする web アプリを sinatra + haml で作成してみた。
http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/tools/sec/?root=ruby-xbrl
(ruby web-app.rb として走らせる)
favicon.ico の表示ができるようにする、
jquery で、検索結果表のソートをできるようにする、
SIC, CIK の両方の検索を可能にする、
などの機能も追加していく予定。
sqlite3 での DB 作成時間、検索時間は使用に耐えないので、
利用する DB を sqlite3 から mydql5 に変えてみた。
DataMapper.setup(:default, "sqlite3://#{File.dirname(File.expand_path(__FILE__))}/db.sqlite3")
を
DataMapper.setup(:default, "mysql://root:root@localhost/dm_test")
に変更するだけ。
ただし、 コンソールから Database を作成しておく必要がある。
$ mysql -u root -p
> create database dm_test;
> quit
しかし、走らせるといくつかエラーが発生した。
その1:
======
$ ruby XbrlDatamap.rb file init
で
Incorrect date value: '-4712-01-01' for column 'period_instant' のエラーが出た。
対処:
Date.new => Date.today
に変更。
Date 値に対するチェックが sqlite3 は甘いみたいだ。
その2:
======
$ ruby sample00.rb -i /Users/youichikato/work/www/EDGAR/data/*/*/*-*[0-9].xml
で
Data too long for column 'val' at row 1 (MysqlError) のエラーがでた。
対処:
fact の DataMap 定義
property :val, Text
=>
property :val, String, :length => 4096
デフォルトの文字列の長さの扱いが sqlite3 と mysql では異なってる?
上記変更後の DB 作成は
364.710000 9.420000 374.130000 (465.242776)
約 8 分!
sqlite3 の 25 倍の速さ!
NetIncomeLoss 科目の検索も
2.040000 0.040000 2.080000 ( 2.368310)
と 2 秒程度で、sqlite3 の 8 倍の速さ!
変更したソースコードは 以下に commit 済み。
http://sourceforge.jp/projects/ruby-xbrl/svn/view/trunk/Edinet/tools/datamap/?root=ruby-xbrl
つぎは、この検索機能を sinatra で web アプリに仕立てる予定。
(jruby でも動作するようにするのは、その後だな...)
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
最近のコメント