# IRサイト修正項目 ## 1. プルダウンメニューの矢印がクリックできない(テストサイト確認済) - 社内外でクリックができずに過去の情報が参照できないと報告があったため改善したい ## 2. IRライブラリの表示が旧サイトと異なる ### 適時開示 - 旧サイトでは - https://xml.irpocket.com/2193/JS/release-irnews-all.js の - `category_name` が `適時開示書類` のものから - `title`に `決算説明会` または `決算補足説明資料` を**含まない**ものを - `publied`の年(西暦)でまとめて - 表示していたようです。 (以前はIRポケット配布のスクリプトを使っていたため、 `決算説明会` または `決算補足説明資料` を含む要素を強引に非表示にしていたようです) ### 決算説明資料(テストサイト確認済) - 旧サイトでは - https://xml.irpocket.com/2193/JS/release-irnews-all.js の - `category_name` が `適時開示書類` のものから - `title`に `決算説明会` または `決算補足説明資料` を**含む**ものを - タイトルに含まれる期情報をパースして、それぞれの決算期期ごとにまとめて - 表示していたようです。 - ドロップダウンについては上記でパースした決算期から選択できるようにしてください 下にJavaScriptのサンプルコードを追記しました(旧サイトと年月期と内容が合致するのを確認済みです) ~~期情報のパースについては、以下のプログラムを杉田さんから共有いただいて参考にしてください。 (2014年に期の入れ替えがあり、2013以前は期末が現在と異なるため少し工夫していたようです)~~ 決算期の変更についてはに↓あるとおり、2013年までは4月が決算月で、2014年は決算月が4月と12月の2回あり、その後は12月が決算月となっています。 https://shikiho.toyokeizai.net/viewer-pdf?fileName=140120140605083406.pdf ``` 2010年4月期 2011年4月期 2012年4月期 2013年4月期 2014年4月期(2013/5/1 - 2014/4/30) 2014年12月期(2014/5/1 - 2014/12/31) 2015年12月期 2016年12月期 2017年12月期 2018年12月期 2019年12月期 2020年12月期 2021年12月期 2022年12月期 ``` という感じです。(2014年は決済期が2つあります) #### 決算説明資料の仕様サンプルコード ```javascript const init = async () => { const data = await fetch('https://xml.irpocket.com/2193/JS/release-irnews-all.js '); const text = await data.text(); eval(text); } window.ir20handler = data => { const res = {} data.item.filter(item => item.category_name === '適時開示書類' && item.title.match(/決算説明会|決算補足説明資料/) ).forEach(item => { // `YYYY年M期`のフォーマットを抽出して該当する記事をpush const title = normalize(item.title); const term = title.match(/\d{4}年\d{1,2}月期/)[0]; if (!res[term]) { res[term] = []; } res[term].push(item); }); console.log(res) } // 全角英数を半角に const normalize = str => str.replace(/[A-Za-z0-9]/g, s => String.fromCharCode(s.charCodeAt(0) - 0xFEE0)); init(); ``` ### 決算短信・有価証券報告書・その他 - ドロップダウンは「西暦」ではなく「決算期」`2021年12月期` としてください - この3ページで扱っている情報では `term_name` に決算期がはいってますので参考になるかと思います <hr /> これ以下は観察メモです。 # 適時開示 ## 旧サイトコンテンツ ```html <!--IRPOCKET--> <link rel="stylesheet" href="//irpocket.com/2193/irpocket/style_r201704.css"> <script type="text/javascript"> function selectmenu(linkLoc) { if(linkLoc !="") { window.location.href=linkLoc;} } </script> <!--/IRPOCKET--> <section class="mb30"> <div class="main_inner"> <!-- IR POCKET START --> <nav class="yearnav mt40"> <form action="#"> <select class="yearnavmenu irp-press-navi" id="irp-press-navi2" name="irnews" onchange="selectmenu(this.options[this.selectedIndex].value)"> </select> </form> </nav> <div class="indexnewslist"> <dl id="irp-press-list2" class="newslist irp-press-list"></dl> <!--/IRPOCKET--> <p class="text_right"><span class="icon-left icon-arrow-left"><a href="//irpocket.com/notice.html" target="_blank">IRサイトについて</a></span></p></div> <!-- IR POCKET END --> </div> </section> <!--IRPOCKET--> <script type="text/javascript" src="//irpocket.com/2193/irpocket/loader_r201705.js" charset="utf-8"></script> <!--/IRPOCKET--> ``` ## 旧サイトの観察 まず、https://irpocket.com/2193/irpocket/loader_r201705.js をロード ↑から↓の3ファイルをロード 1. https://irpocket.com/2193/irpocket/config_r201705.js 2. https://irpocket.com/2193/irpocket/utils_r201705.js 3. https://irpocket.com/2193/irpocket/main_r201705.js `config_r201705.js` には各種設定項目が格納されている。 `utils_r201705.js` はユーティリティ関数(年号の変換やカンマ揃えなど) `main_r201705.js` 実際の表示などを実行 表示の際に以下2のjsをロード 1. http://xml.irpocket.com/2193/JS/release-irnews2-latest-12m.js 2. http://xml.irpocket.com/2193/JS/release-irnews2-all.js jsonpのような形になっているので、`window.ir20handler()`にデータ渡してリストを描画しているっぽい 年度を切り替えると http://xml.irpocket.com/2193/JS/release-irnews2-12m-202101.js など、それぞれの年度のデータをロードしている また、後述する決算説明資料に出す項目との重複を避けるため、`決算説明会`か`決算補足説明資料`を含む文書を非表示している HTML内には`irp-press-list2`というclassがふられたHTMLがあり、そこに`release-irnews2-latest-12m`で取得されたデータが配置されているが、それは `config_r201705.js` 内にruleとして定義されている ``` 'irp-press-list2': [ 'release-irnews2-latest-12m', 'release', 'latestTerm' ], ``` ## 新サイトの観察 - https://xml.irpocket.com/2193/JS/release-irnews2-all.js をロードしているが、release-irnews2-12m-202101.jsのように個別の年度のデータをロードしていない。 - release-irnews2-all.js には適時開示の全情報がはいっているので、このデータを何かしらのルールで各年度に切り出して表示しているものと思われる # 決算短信 ## 旧サイトコンテンツ ```html <!--IRPOCKET--> <link rel="stylesheet" href="//irpocket.com/2193/irpocket/style.css"> <script type="text/javascript"> function selectmenu(linkLoc) { if(linkLoc !="") { window.location.href=linkLoc;} } </script> <!--/IRPOCKET--> <section class="mb30"> <div class="main_inner"> <!-- IR POCKET START --> <nav class="yearnav mt40"> <form><select id="irp-term" class="yearnavmenu"></select></form> </nav> <div class="irp-library-category irp-library-category-2" id="irp-library-category-per-term2"></div> <div class="text_right irp_comment"><a href="//irpocket.com/notice.html" target="_blank">IRサイトについて</a></div> <!-- IR POCKET END --> </div> </section> <!--IRPOCKET--> <script type="text/javascript" src="//irpocket.com/2193/irpocket/loader.js" charset="utf-8"></script> <!--/IRPOCKET--> ``` http://irpocket.com/2193/irpocket/loader.js を介して - http://irpocket.com/2193/irpocket/config.js - http://irpocket.com/2193/irpocket/utils.js - http://irpocket.com/2193/irpocket/main.js を呼び出し http://xml.irpocket.com/2193/JS/ir-tanshin-all.js でデータを取得して描画している。 config.jsに ``` 'irp-library-category-per-term2': [ 'ir-tanshin-all', 'libraryCategoryPerTerm2' ], ``` と記載があるので、 ```html <div class="irp-library-category irp-library-category-2" id="irp-library-category-per-term2"></div> ``` のidを参照してデータの取得先を変更している模様 こちらのページは適時開示と異なり http://xml.irpocket.com/2193/JS/ir-tanshin-all.js に全期間のデータが入っており、それをJavaScirptでフィルタして出している模様 適時開示とは異なり、データの中に ``` quarter: "1" term_end: "2022-12-31" term_name: "2022年12月期" ``` など、期を判断するためデータが付与されている。 ## 新サイトの観察 https://xml.irpocket.com/2193/JS/ir-tanshin-all.js をロードして内部でフィルタして表示している。 こちらは適時開示とちがって、どの期のデータなのかがわかるため、全情報が表示されている しかし、旧サイトではプルダウンメニューが「2011年12月期」の形式だが、新サイトでは「2011」だけになっている。 ## 感想 - 新サイトの実装でもプルダウン内の表記が直せれば問題なさそう(`term_name`でグルーピングすればよさそう) # 有価証券報告書 ## 旧サイトコンテンツ ```html <!--IRPOCKET--> <link rel="stylesheet" href="//irpocket.com/2193/irpocket/style.css"> <!--/IRPOCKET--> <section class="mb30"> <div class="main_inner"> <!-- IR POCKET START --> <nav class="yearnav mt40"> <form><select id="irp-term" class="yearnavmenu"></select></form> </nav> <div class="irp-library-category irp-library-category-3" id="irp-library-category-per-term3"></div> <div class="text_right irp_comment"><a href="//irpocket.com/notice.html" target="_blank">IRサイトについて</a></div> <!-- IR POCKET END --> </div> </section> <!--IRPOCKET--> <script type="text/javascript" src="//irpocket.com/2193/irpocket/loader.js" charset="utf-8"></script> <!--/IRPOCKET--> ``` ## 旧サイトの観察 これまのパターンどおり、`id="irp-library-category-per-term3"` をみてconfig.jsの ``` 'irp-library-category-per-term3': [ 'ir-yuho-all', 'libraryCategoryPerTerm3' ], ``` をみて、http://xml.irpocket.com/2193/JS/ir-yuho-all.js をロードしている 決算短信と同様に全期情報がはいっているいて、JavaScriptでフィルタしている ## 新サイトの観察 決算短信と同様のデータ構造だが、こちらは表示順がずれている。参照している期情報が異なるからかもしれない。published(公開日)を見てる? また、決算短信と同様にプルダウンの表記が異なる # その他 ## 旧サイトコンテンツ ```html <!--IRPOCKET--> <link rel="stylesheet" href="//irpocket.com/2193/irpocket/style.css"> <!--/IRPOCKET--> <section class="mb30"> <div class="main_inner"> <!-- IR POCKET START --> <nav class="yearnav mt40"> <form><select id="irp-term" class="yearnavmenu"></select></form> </nav> <div class="irp-library-category irp-library-category-5" id="irp-library-category-per-term5"></div> <div class="text_right irp_comment"><a href="//irpocket.com/notice.html" target="_blank">IRサイトについて</a></div> <!-- IR POCKET END --> </div> </section> <!--IRPOCKET--> <script type="text/javascript" src="//irpocket.com/2193/irpocket/loader.js" charset="utf-8"></script> <!--/IRPOCKET--> ``` ## 旧サイトの観察 決算短信、有価証券報告書と同様に` id="irp-library-category-per-term5"`からhttp://xml.irpocket.com/2193/JS/ir-sonota-all.js をロードし、期情報をベースにフィルタリングしている ## 新サイトの観察 有価証券報告書と同様にフィルタの条件が旧サイトと異なるため、2022/2/4発表文の資料などが表示されていない # 決算説明資料 https://info.cookpad.com/ir/library_index/presentation/ ## 旧サイトコンテンツ このページだけIRポケットのJavaScirptを使わず、PHPで情報を取得・加工して表示している https://github.com/cookpad/corporate-2017-ir/blob/master/cookpad_ir_theme/page.php#L21 可能であれば杉田さんからソースコードを提供いただく ## 旧サイトの観察 1. https://xml.irpocket.com/2193/JS/release-irnews-all.js から情報を取得してjsonをパース 2. `category_name`が `適時開示書類` で タイトルに `決算説明会 ` か `決算補足説明資料` を含むものを[フィルタしている](https://github.com/cookpad/corporate-2017-ir/blob/master/cookpad_ir_theme/page.php#L54) 3. 期の情報を含まないため[公開日から期を割り出している](https://github.com/cookpad/corporate-2017-ir/blob/master/cookpad_ir_theme/page.php#L85) 4. プルダウンも独自に生成している ## 新サイトの観察 上記の仕様を推測して、 `category_name`が `適時開示書類` で タイトルに `決算説明会 ` か `決算補足説明資料` を含むものをフィルタしているようにみえる しかし、期の割り出し方が異なるため最新の1件など一部のデータが表示されていない ## 感想 できれば適時開示はhttp://xml.irpocket.com/2193/JS/ir-tekiji-all.js 、決算説明資料は http://xml.irpocket.com/2193/JS/ir-setsumei-all.js を参照するようにすれば、統一的な処理で完結できるが、過去の経緯上それはむずかしいとのことなので、運用方法は変更せず旧サイトの仕様に合せてプログラムを変更する。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up