Okada Hiroshi の blog

typo が多いです

SSL ワイルドカード証明書を購入しました

個人で所有しているドメイン toycode.com のワイルドカード証明書の期限が近づいてきたので新しい物を購入しました。

最近は Let's Encrypt があるので SSL 証明書を自前でもっているメリットは少なくないのですが、それでもワイルドカード証明書を一つ用意しておくと色々実験したりするのに便利です。

前回は namecheap という所から買いましたが、今回はさらに安く買える所がないか調べてみました。

プロバイダ サイトURL SSLブランド名 1年 2年
SSL2BUY https://www.ssl2buy.com/ AlphaSSL Wildcard $42.00 $80.00
Cheap SSLL https://cheapsslsecurity.com Comodo PositiveSSL Wildcard $72.95 $127.66
namecheap https://www.namecheap.com Comodo EssentialSSL Wildcard $74.88 $145.76

SSL2BUY という所が 2年で $80 (9000円程度) なので、ここで購入することにしました。

なお、日本語で展開しているところは例えば SSLストア だと2年で3万5000円、サイフにやさしいSSL証明書だと 4万4800円 と高いです。

基本的には持っているドメインの admin 等のメールアドレスか、ドメインwhois に登録されているメールアドレスがあれば、 あとはメールと Web サイトの指示に従っていけば良いのですが、CSR と private key は手元で作成する必要があります。

CSR と private key は openssl がインストールされていれば以下のようにして作成することが出来ます。

$ openssl req -new -newkey rsa:2048 -nodes -keyout toycode.key -out toycode.csr
Generating a 2048 bit RSA private key
...............................+++
.........................+++
writing new private key to 'toycode.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Shinjuku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Hiroshi Okada
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:*.toycode.com
Email Address []:okadahiroshi@miobox.jp

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

なお、SSL の証明書は XXXXXXX: Your SSL Certificate for *.toycode.com has been issued のような題名の email で送られてきて、添付ファイルでなく、本文中の末尾に

-----BEGIN CERTIFICATE-----

... 30行以上の文字列...

-----END CERTIFICATE-----

というふうに書かれれいるので、この部分をコピペして、例えば toycode.cer みたいなファイルに保管します。

SSL サーバの起動にはこのファイルと先ほど作ったキーファイル (上記の例だと toycode.key) が必要です。

markdown-it のプラグインを書いてみました

nodejs の有名な Markdown パーサの markdown-it で 出力される html のエレメントタイプごとに class 属性を追加したかたので

www.npmjs.com

というプラグインを書いてみました。

markdown-it の内部構造はよくわかっていないので、他のプラグインのコードを参考に書きましたが、パフォーマンス等は悪いと思います。

$ npm install markdown-it @toycode/markdown-it-class --save-dev

みたいにインストールして

const MarkdownIt = require('markdown-it')
const markdownItClass = require('@toycode/markdown-it-class')
 
const mdText = '# テスト文書\n## サブタイトル\n今日は良い*天気*です'
const mapping = { h1: ['title', 'is-4'], h2: 'subtitle', em: 'tag' }
const md = MarkdownIt().use(markdownItClass, mapping)
console.log(md.render(mdText))

<h1 class="title is-4">テスト文書</h1>
<h2 class="subtitle">サブタイトル</h2>
<p>今日は良い<em class="tag">天気</em>です</p>

のようにクラスが付加できます。

EDINET API 仕様書説明会に参加しました

今までは、EDINET から有価証券報告書等の書類をダウンロードするには。手作業でEDINETの閲覧画面から取得するか、ウェブスクレイピングするか、第三者が開発したツールやAPIを使う必要があって非常に面倒なものでした。

幸いなことに、来年3月下旬より API を使って、書類の一覧の取得とダウンロードができるようになると言うことなので、今日説明会に行ってきました。

金融庁に行くのははじめてなので、ちょっと緊張しました。 f:id:OkadaHiroshi:20180821202051j:plain

説明は非常にわかりやすく、 API も REST (しかも GET だけ) なので、誰でも簡単に書類をダウンロードするプログラムを書けそうです。 ( 一覧等の情報は JSON で返ってくる )

なお、今後は以下のスケジュールで進行するようなので、 EDINET閲覧のサイト等をチェックしておいた方がよいと思われます。

日程 イベント
9月下旬 EDNET API 規約案、API仕様書案を EDINET閲覧サイトに公開。
11月〜12月上旬 外部接続実施要領を EDINET閲覧サイト上に公開。外部接続テストの参加希望者を募集。EDINET API利用者向けのサンプルプログラム、書類一覧のサンプルデータを掲示
12月中旬 外部接続テスト参加希望者に個別にスケジュールを連絡
2019年1月中旬〜2月末 β版を用いた外部接続テストを実施
3月中旬 本番サービス開始

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・シリーズ)

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