Okada Hiroshi の blog

typo が多いです

EDINET から有価証券報告書・取引報告書をダウンロードしてくる CLI ツールを(node.jsで)作成しました。

株式投資をしていると、有価証券報告書を読んで分析する必要があります。

日本の会社の有価証券報告書は、EDINET という所からダウンロードできるようになっているのですが、 SSL 証明書が 政府認証基盤(GPKI) なので、ブラウザーによっては認証局を追加しないと警告がでたりして面倒です。

そのそも Webサイトをブラウザーで開いて、検索して、ダウンロードボタンを押してと、結構手間がかかって面倒くさいです。

もちろん探すと、いつくつかそれを簡単にできるようにしてあるサイトやサービスがあるのですが、どれも本格的すぎて今ひとつ僕の要求とは一致しませんでした。

そこで node.js でコマンドライン証券コード又は EDINET で指定しただけで、簡単にダウンロードできる CLI コマンドを作りました。

EDINETでは、平成31年3月下旬からEDINETに提出された書類を取得するAPI(EDINET API)の提供を予定しています。

ということで、それ以降だと、簡単に API を呼び出して書類を取得できそうですが、今はまだできないので

github.com

を利用して、ごりごり スクレイピング をすることにしました。

一応 npm として公開してあるのでもしよろしけば使ってみて下さい。

インストール方法

  • Node.js は 8.11 以上のものをインストールしてください

開発は、 ubuntu デスクトップ上で、10.8.0 Current で開発しています。

動作確認は Windows Server 2016 と macOS High Sierra でも行っています。

  • コマンドをインストールします。

グローバルではなくて適当なディレクトリを作ってそこに入れた方が良いでしょう。

$ mkdir 適当なディレクトリ
$ cd 適当なディレクトリ
$ npm i @toycode/getufo

使い方の例

$ npx getufo はてな
E32141, 39300, 株式会社はてな, カブシキガイシャハテナ, Hatena Co., Ltd
$ npx getufo E02144
$ npx getufo 7832
  • 引数を何も与えないとヘルプを表示します。
$ npx getufo

  Usage: getufo [options] <codes>

  Download financial statements from EDINET.

  Options:

    -v, --version          output the version number
    -f, --folder [folder]  Set download folder (default: current working directory)
    -n, --numpdf [num]     How many pdf files to download (default: 4)
    -h, --help             output usage information


    Codes are either security codes, EDINET codes or fund codes.

  Extra:
    Enter a part of the company name instead of the code to display
    a list of codes. (In this case, nothing is downloaded.)

リンク

www.npmjs.com

GitHub - HiroshiOkada/getufo: Download securities reports from EDINET

以上です。

Google スプレッドシートで Markdown の表を作成 (車輪の再々発明)

車輪の再々発明であるのは知っているのですが、必要に迫られた上に安全性を確認できないプラグインGoogle スプレッドシートのアプリで走らせたくなかったので、 Google スプレッドシートMarkdown の表を作成するスクリプトを書きました。

Google スプレッドシートの選択範囲をマークダウンの表にする(gist)

f:id:OkadaHiroshi:20180729202620p:plain

Google AppsスクリプトJavaScript エンジンはかなり古いので、ちょっと戸惑いました(結局 babel で変換した)。

Google スプレッドシートのコードエディタに上のスクリプトを貼りつけて開き直すと メニューに Utils -> 選択範囲をmarkdownの表に という項目が増えるので、適当な範囲を選択して実行すると markdown にしたものをダイアログ上で表示してくれます。

初回実行の時は、セキュリティーのためのダイアログが出るので承認してあげる必要があります。


f:id:OkadaHiroshi:20180726152656p:plain


f:id:OkadaHiroshi:20180726152752p:plain


f:id:OkadaHiroshi:20180726152846p:plain

詳細の部分が隠れているので開く必要あり。


f:id:OkadaHiroshi:20180726152932p:plain

1月に読んだ本

これから毎月読んだ本を記録することにしました。

人生にゆとりを生み出す 知の整理術 (pha)

人生にゆとりを生み出す 知の整理術

人生にゆとりを生み出す 知の整理術

この本の基本的なテーマは、自分の考え方とも一致するし、他の書籍でも言及されていて今更という感じもするけれども、いろいろ実践的な Tips が詰まっていて参考になりました。

詳解! GoogleAppsScript完全入門 ~GoogleApps & G Suiteの最新プログラミングガイド (高橋宣成)

GoogleAppsScript の日本語の本は珍しいので応援したのですが、正直言って前半の JavaScript の文法等の解説は他の本や Web の情報でも十分賄えるので不要だと思いました。 それよりももうすこしパーミッションに関連についての解説を充実させて欲しかったです。 API や Web アプリとして公開する場合の情報もほとんど書かれていないので、少し肩透かしを食らった感じです。

天鳴地動 アルスラーン戦記14, 戦旗不倒 アルスラーン戦記15, 天涯無限 アルスラーン戦記16 (田中芳樹)

天涯無限 アルスラーン戦記 16 (カッパ・ノベルス)

天涯無限 アルスラーン戦記 16 (カッパ・ノベルス)

アルスラーン戦記もやっと完結したので最後の3冊をまとめて読みました。終盤になって大量にキャラクターが死ぬのは構わないのだけれども、ちょっと敵がショボすぎる感じがしていまいち盛り上がりに欠けるような気がしました。

クロックワーク・ロケット, エターナル・フレイム (グレッグ・イーガン)

 
エターナル・フレイム (新☆ハヤカワ・SF・シリーズ)

エターナル・フレイム (新☆ハヤカワ・SF・シリーズ)

残念ながら グレッグ・イーガン の理論パートは僕にはちょっとちょっと難しすぎるけれども、ストーリー的にも十分面白いので頑張って読んでみました。一応アロウズオブタイムも読むつもりです。

自宅の Linux サーバーにハードディスクを増設しました。

しばらくぶりに自宅の Linux サーバーにハードディスクを増設したので記録しておきます。

自宅サーバーでそれほど重要なデータでもないので、普通のPC用のハードディスクを増設しました。

ハードディスクの増設は何回もやったことがあるのですが、 最近はGUIで設定してばかりだったので、コマンドラインでやるのは久しぶりです。

増設前の /etc/fstab は以下のようなものでした。

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=9a65b311-ec87-47ae-9a45-5d1c0636d912 /               ext4    errors=remount-ro 0       1
# /tmp was on /dev/sdb2 during installation
UUID=5550e624-abfb-49eb-8708-06c7b0df64e6 /tmp            ext4    defaults        0       2
# swap was on /dev/sdb1 during installation
UUID=95b623db-53b0-4bd4-bce3-de3dc817bceb none            swap    sw              0       0

今度増設するドライブは /dev/sdc になります。 GPT ディスクなので フォーマットには gdisk コマンドを使いました。

$ sudo gdisk /dev/sdc
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating new GPT entries.

Command (? for help): o   「新しい空の GUID partition table (GPT) を作成」
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

Command (? for help): n「新しいパーティションを作成」
Partition number (1-128, default 1): 
First sector (34-3907029134, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-3907029134, default = 3907029134) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): w 「パーテーションテーブルを書き込んで終了」

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/sdc.

hiroshi@hp1:~$ sudo mkfs.ext4 /dev/sdc1 
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 488378385 4k blocks and 122101760 inodes
Filesystem UUID: 3627b957-fd37-4147-84e4-62ff8400d177
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
$ 

次にファイルシステムを指定してフォーマットします

$ sudo mkfs.ext4 /dev/sdc1 
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 488378385 4k blocks and 122101760 inodes
Filesystem UUID: 3627b957-fd37-4147-84e4-62ff8400d177
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done  
$

lsblk で UUID を確認します

$ lsblk -o NAME,UUID
NAME   UUID
sda    
└─sda1 9a65b311-ec87-47ae-9a45-5d1c0636d912
sdb    
├─sdb1 95b623db-53b0-4bd4-bce3-de3dc817bceb
└─sdb2 5550e624-abfb-49eb-8708-06c7b0df64e6
sdc    
└─sdc1 3627b957-fd37-4147-84e4-62ff8400d177

/etc/fstab に次の行を追記します。

UUID=3627b957-fd37-4147-84e4-62ff8400d177 /srv            ext4    defaults        0       2

$ sudo mount -a でマウントします。

以上でした。

手抜きの人用の favicon ジェネレータを作りました。

昔に比べて、クライアントサイドの JavaScript だけで、かなり色んな事ができるようになったので、手抜きの人(自分とか)用の favicon ジェネレータを作ってみました。

拙速 favicon ジェネレーター

https://hasty-favicon.toycode.com/

文字を入れるだけでとりあえず favicon ができるので、デザインがあまり必要ではい (でもブラウザのタブを沢山開いた時でも区別したいので、最低限の favicon はつけたい) 時には便利ではないでしょうか。

なお、同様のサイトとして Favicon Generator とうのがあります。もう少しこった物が欲しい人はこちらを使った方がよいかもしれません。 (僕はもう歳なので、複数文字だと見づらいのですが)

NISAの5年目の配当金の税金について

NISAで外国株を買って持っているのですが。5年目の配当の課税について気になったので、SBI証券に問い合わせてみたら以下のような回答をもらいました。

NISA口座で保有する外国株式・海外ETFの配当金・分配金は、権利取得時にNISA預りで保有していて、効力発生日(支払開始日)が5年間の非課税期間内であることが条件になります。

例えば、2016年にNISA口座で買付した株式を最終年(2020年の5年目)の12月に権利を獲得し、翌年の3月に受取る配当金は課税されるかと存じます。

つまり5年目の終わりギリギリに売却してその時、配当金を受け取る権利が発生していると、あとで申告しないといけないという事です。(外国税額控除の適用申請) NISA以外の株取引は特定口座でやっているので、株については申告手続きを省略できていたですが、NISAを使っていると (5年以内に売っても) 場合によっては申告の処理をしなくてはいけなくなるというのは意外でした。