特に(こだわ)りもないが

投稿日:

 平成18年頃からブログに読書記録を付けていた。使っていたブログサービス(OCNの『ブログ人』)が提供していたリスト化機能を使ったものだった。いつだったか、その機能のサービスが終了してしまうことになった。末端の一ユーザからは是非など言うべくもない。

 そのため、折角つけた記録が無くなってしまうことになってしまった。記録は100や200くらいはあったので、それが惜しく、「ブクログ」という今もあるサービスへデータを移し替えた。

 「ブクログ」を使ううち、ある時、「ブクレコ」というサービスの方が面白そうだな、と思った。友達がそっちを使い始めたから、ということもあった。それでブクレコへ移行した。データをインポートする機能がなかったので、手でゴリゴリと入力して移行した。

 ところが、先日、この「ブクレコ」はサービスを終了してしまった。慌ててデータを退避することになったが、以前と違ってデータも増えており、手作業にはちょっとつらいという量になっていた。なのにブクレコには読書データのエクスポート機能がない。やむなく、「wget」を使用してweb的に全部のページをダウンロードし、それをawkやperlなどを使って整形してデータ化した。

 データ化した読書記録はGoogle スプレッドシートに流し込んで保存した。

 消滅してしまった「ブクレコ」は、AmazonのASINにも対応していて、kindleの読書も管理できた反面、読書開始日や読書終了日を管理する機能が弱かった。そのため、上のようないきさつの際、日にちに関するデータが全部消滅してしまった。何を読んだかは記録が残っているが、いつ読んだかがわからなくなってしまったのは誠に残念なことであった。

 そんな今日この頃だったのだが、先ほどFacebookを見ていたら、突然、「4年前」と題してこのような記事が出てきた。坂口安吾の恋愛論の読書についてだ。

 そこで読書記録を見ると、この「恋愛論」から数えて、215冊の本を読んでいることがわかった。今日までちょうど4年だから、最近は年に50冊ほど読んでいるということになる。

 そこから分かる通り、私は決して多読家ではない。読書量は年によって多寡があり、この10年では100冊読む年があれば多い方である。しかも、100冊読むような年は、そのうち1割、10冊ぐらいが漫画である。また、kindleなどで「短編で1冊」のものを1冊とカウントしている場合もある。

 独身の頃は本代に糸目はつけなかったから、年に200冊とか、多い時で300冊ほど読んだこともあった。コクヨの事務本棚4本が一杯になっていたから、累年で数千冊は溜まっていたと思う。しかし、子供が生まれた頃、これらの本を全部捨ててしまった。今だったら「自炊」して取っておくところだと思うが――実際、数年前にも溜まりすぎた本を2000冊ほど全部デジタル化して、相当スッキリした――、20年前の当時は、そんなことなど思いもよらぬことであった。今でもその頃捨ててしまった本が惜しい。

 さておき、私は読書について、特に(こだわ)りと言うものがない。強いて言えば、自分が「読みたいなあ」と思う本を適当に読むことにしている。人に本を借りることや、人に薦められた本を読むことはあまりない。なんだか「読まなくちゃ」というような義務めいたものを覚えて面倒臭くなるからだ。

 流行している最新の本も、似たような理由で、結果としてあまり読まない。これは「読まないようにしている」というのではなく、単に読む気がしないだけだ。本屋の棚で見かけても、なんだか読むのが嫌なのである。同じ理由で、ビジネス本、啓発本の類も、結果として読んでいない。避けているのではなく、自分が読みたい本を自然な気持ちで選んでいると、そういう傾向になっていく、というだけのことだ。

 漫画は、面白そうだなあ、と思うと読む。娘二人が見つけてきた漫画などは、本当に面白いと思う。

 技術分野の本は沢山読むが、これは仕事なので、読書にはカウントしていない。いつ読んだかなんてことを記録しても、IT技術は進歩が速く、昔のことは覚えているだけ無駄になってしまう。読み方も「即実践」みたいな、「目を通す」というような読み方なので、あまり印象にも残らない。

 そんな読書傾向だから、多分、人に評されると「佐藤さんは変な本ばかり読むよね」と言われるようなことにもなる。

 ある時、参加している日本ITストラテジスト協会で、「ビブリオバトル」という書評レクリエーションに参加したことがあるが、その時は「日本書紀」の書評をした。熱弁をふるったが、ビブリオバトルは説明の良し()しではなく、紹介した本を読みたくなったかどうかで勝敗を判定するので、無論「日本書紀」を読みたくなるような人など多くいるわけはなく、負けたに決まっている。

古い方のブログのコピーを消す

投稿日:

 15年ほど前、自宅を建築した際にその記録をHTMLで書き、OCNのホームページサービス「Page ON」を使用して公開した。

 日々の変化事項などは、その中に日誌風に書き加えていたが、そうするうち、当時流行しだした「ブログ」サービスをOCNもやりはじめた。「ブログ人」だ。Movable Type ~ TypePadを活用したサービスだった。

 当時はいろいろ面白い試みもなされており、無料だったので私もそれを使うようになった。「Web2.0」などと言うことが当時言われており、スタティックで一方向だったWebが、ブログのトラックバックPingシステムにより双方向リンクを持てるようになったことが、私にとっても目新しかった。

 10年以上「ブログ人」を使っていたが、3年前、Page ONとともにサービスが終了してしまった。

 サービスが終了する前に、見たままを残しておこうと思い、wgetで丸ごとスナップショットをとった。

 その後、一時Gooブログなどにも移行してみたが、自由でないのが気に入らず、思ったように書けないのが不便なので、意を決してドメインを立て、レンタルサーバを借り、WordPressに移行した。それがこのブログだ。

 一方、レンタルサーバの容量には余裕があったので、wgetで丸ごとコピーした古い方のブログもそこに丸ごと放り込み、ずっと公開していた。

 しかし、記事そのものはこのブログにもインポートしており、並立の状態にあった。

 無駄だな、とも思ったので、意を決して古いブログのバックアップの公開はやめることにした。

ブクレコの本棚のバックアップ

投稿日:

 サービス終了が判明したブクレコだが、結局のところ、書棚データのエクスポートは出来ないから、手近のマシンの「wget」あたりで丸ごとコピーしておくより他にない。

$ wget -kpr -l0  -t3 -T5 -np https://www.bookreco.jp/bookshelves/59112

 まあ、仕方がない。

 で、こうやってできた「bookshelves」ディレクトリに下りて、

$ grep -h '<p class="title">' 59112?page=* |  sed -e 's/<p class="title">//' -e 's!</p>!!' -e 's/ //g' | sort | uniq | nkf -w   >booklist20160503.txt

……なんぞとやっておけば、一応書名のリストだけは取れる。

 残念なのは、ISBNとか読書日などの情報が全く保存できないことである。これをどうにかするには、Amazonか国会図書館のAPIでも使って変換するより他になさそうである。

 しかし、ふと取得した書棚ファイルを見ると、書籍の外見イメージを取得しているところがあって、そのURLでサイトを呼ぶと、その中にISBNや出版日が書かれていることに気付いた。

 なるほど。そこで、先に得た生の書棚データテキストからこのURLを切り出す。

$ grep -h 'book_image' 59112?page=? 59112?page=1? 59112?page=2? | sed -r 's!^.+(https://www.bookreco.jp/book/[0-9]+).+!\1!' >booksurl

 ファイル名をシェルに展開させるにあたり、「59112?page=*」とせずに「59112?page=? 59112?page=1? 59112?page=2?」としているのは、1番から20番までのファイルがある場合、「59112?page=*」としてしまうと、そのままだと1,11,12,13,14,15,16,17,18,19,2,20,3,4,5,6,7,8,9、というふうに、辞書順に並んでしまうからである。「ブクレコへの登録が新しい順」を保持させるためには、こうするより他にない。

 それから、このURLリストをwget -iに食わせ、データの入った生テキストを得る。

$ wget -O - -i booksurl | sed -rn -e '/<div class="summary">/, /<!-- \/\/end summary -->/p' >booksfulltext

 更に、この生テキストのタグを除き、csvにしてしまう。これをsedなどでのみやるには、結構ゴチャゴチャ書かなければならないのだが、美しく作業する気がてんからなく、行を建て増し建て増しして書いているうちに、結局自分でもなんだかわからない、次のような謎のワンライナーになった。

$ sed -nr -e '/(<span class="bold large">)|(<ul class="floatlist_left clearfix text_thin">)/,/(<\/span>)|(<\/ul>)/p'   booksfulltext | sed -e '/<span /d' -e 's/<\/span>/,/' -e '/<ul/d' -e 's/<\/ul>/-----/' -e 's/<li>出版日://' -e 's/<li>種類://' -e 's/<li>ISBN://' -e 's/<\/li>/,/' | sed -r -e 's/ +//g' -e ':loop;N;$!b loop;s/\n/ /g' -e 's/ +/ /g' -e 's/-----/\n/g' -e 's/, /,/g' -e 's/,\n$/\n/' | nkf -w
 >bookscsv_utf

 このようにして得たCSVをスプレッドシートに読み込ませるわけである。

 残念なのは、ブクレコには読書日が入れられないので、いつ読んだ本かと言うことが消失していることだ。

SSLと株

投稿日:

 もう10年以上くらいにもなるだろうか、株式売買の指標表示を自動化し、「小魚を釣る」ようにして株を売買している。ところが、先週頃から、その自動化システムが動かなくなってしまった。

 私の株式売買は、夜に自作の株式売買シミュレータを作動させ、そのシミュレーション結果に従って手動で翌日の注文を出すという方法だ。注文そのものの自動化もやればできるだろうが、証券会社がAPIを公開してでもくれない限り、多少技術的な敷居が高いので、そこまではしていない。

 株式売買にはいろいろな指標があるが、その指標を使うのに必要な日数などのパラメータは、銘柄ごとに違う。また、指標ごとにも違うので、色々な組み合わせが出てくる。サラリーマンの場合、何十もの銘柄について、銘柄ごとに手作業でそんな組み合わせ作業を毎日している時間など、あるはずがない。

 そこで、色々なパラメータを組み合わせて、過去のデータを使って売買のシミュレーションを行うのだ。トレーディング用語では「バックテスト」と言う。私のシミュレータでは、現在は1銘柄につき約1万通り程度の組み合わせで売買を試す。

 そのシミュレーション結果で、「90%~100%成功するパラメータの組み合わせ」を抽出して表示するのである。実際のところ、そのパラメータの組み合わせで売買サインが出た時に売買すれば、まず9割は儲かる。1割の確率で損をするのだが、これは10銘柄を束にして注文しておけば、「1銘柄はハズレでも、残り9銘柄は当たり」になる。つまり、期待値として「9割は儲かる」理屈になるわけである。

 だが、私が最も工夫した点は実はそこではない。

 私は勤めており、職務に専念する義務がある。これはサラリーマンなら誰でも同じだと思う。仕事中に株式の売買などすれば、免職になってしまう。そこで、このシミュレーションは、売買サインをリアルタイムの株価で出すのではなく、「前日までの株価でシミュレーションし、翌日約定の注文を出した場合で最適なパラメータの組み合わせ」をシミュレーションにより求める。こうすることで、「前日の夜から当日の朝にかけて、自宅で注文しておく」ことができる。つまり、「サラリーマンが職務外の余暇に自宅で自分の金融資産の管理をしているだけ」という形を整えることができるのだ。

 多くのサラリーマンは株で損をするが、それは、株式の必勝本などには、「今の株価」で売買しなければならないような方法しか書かれていないからだ。これだと、例えば、ある日の経済ニュースなどでその日の株価について知り、夜帰宅して、翌日の注文などを出しても、もう手遅れなのだ。だが、私のシミュレータは翌日の注文で十分なように計算するので、サラリーマン向けなのだ。

 シミュレーションに必要な日々の時系列データは、「Yahoo!ファイナンス」から無料で拝借してくる仕組みである。夜にその日の終値が確定した頃、自動的に株価をダウンロードしてくる。無料で済ませるため、生のhtmlを持ってきて株価データをその中から切り取り、データベースに格納する仕組みだ。

 システムはLinux上で動作する3層クライアントサーバシステムである。ユーザインターフェイスはphpで書かれており、Webサービスだ。株価データは、Perlで書かれたスクリプトを定期起動して、前述のようにしてネットから無料で持って来る。データベースはPostgreSQLを使用している。シミュレーションは高速化を図るためCで書いてある。

 ここ数年、何ら不調なく快調に作動していた。ところが、先週から急に動かなくなってしまった。

 短期の株式売買は毎日の値動きに注意していなければならない。私はこの値段の監視を自動化していたわけだ。ところがこれが動かなくなるとお手上げだ。自分で毎日株価を見なければならなくなってしまう。私もそれなりに忙しいので、何十銘柄もの株価チェックを自分でするなんて馬鹿々々しいことは御免である。

 早く原因を調べなければならなかったが、春の人事異動で職場が変わったりして、手が付けられないでいた。ようやく、今日になって原因を調べることができた。

 調べてみると、どうやら、株価データの拝借先である「Yahoo!ファイナンス」の仕様が変わったようだ。これまで非SSLでもサービスしていたのだが、先週頃完全にSSLに改まったらしい。他方、私の「株価データ拝借スクリプト」はPerlで書いてあり、内部で「wget」を呼び出し、これを用いて「時系列株価ページ」を持って来て、その中からデータを切り出す仕組みなのだが、ハードコーディングしてあるURLのスキームは「http」なのである。

 なるほどよしきた、とばかり、これを「https」に変えて試したが、wgetはブラウザのように簡単にはSSL証明書を扱うことができない。

 ググッてみると、「そういう時にはwgetのオプションに『––no-check-certificate』って書いとけ!」と、どなたかが既に調べて書いておられる。ありがたや。

 そこで、作動させるwgetのコマンドラインは次のようになるわけだ。

$ wget --no-check-certificate -q -O - https://info.finance.yahoo.co.jp/history/?sy=1983&sm=1&sd=1&tm=d&code=銘柄コード&p=1 | nkf -w 

 URLのスキーム部分を「https」にし、「––no-check-certificate」にするだけである。

 株価時系列データのページの作りが変わってしまっているとこれだけでは駄目なのだが、どうやらページの作りは同じらしく、今のところうまく行っているようだ。

旧ブログのエントリの大部分をインポート

投稿日:

 旧「オッサンとバイエル、ピアノ等」の記事のインポートは、せっかくの演奏データへのリンクが完全でなくなることなどからやっていなかった。

 しかし、昨日今日書き始めたブログだと誰かに思われるのも癪に触るので、インポートすることにした。しかし、もう元のブログはない。

 wgetでダウンロードしたものを加工して流し込もうかとも思ったが、それも億劫になった。

 ハードディスクを漁っていると、2014年にダウンロードしておいた旧ブログのエクスポートテキストが見つかった。

 MovableType/TypePadの記事をインポートするプラグインをインストールした。バージョンが合わないようだったが、特に問題なく作動した。

 サーバにアップロードできるファイルサイズが2MBまでで、エクスポートテキストは17MBある。20個に分割してアップロードした。

 なんだか記事に抜けもあるし、切れたリンクはどうにもならないようだが、ブログの「歴史感(笑)」はだいたい出たようだ。

 よく考えたら、旧ブログのファイル自体はサーバに上がっているので、エクスポートテキストのリンクを連続置換で書き換えれば良かったかも知れない。

 思いついて「wordpress 記事 連続置換」でググると、「Search Regex」というプラグインが見つかる。これも多少バージョンが合わないようだが、思い切って使ってみた。

 なんてことなく動き、特に問題もなく、多くのリンクが復活した。

ドメインとって、新しくブログを立ててみた。

投稿日:

 OCNのブログサービス「ブログ人」が廃止されてしまってだいぶ経った。しばらくは推奨された「gooブログ」を使ってみていたが、どうも気に入らなかった。

 意を決して、ドメインを取得し、WordPressでブログを立ててみた。

 前の「オッサンとバイエル、ピアノ等」は、wgetで丸ごとローカルにとっておいたのを、別のディレクトリにそのまま置いた。

 「旧・オッサンとバイエル、ピアノ等」
http://www.satotoshio.net/oldblog/

後日追記

 上記「旧・オッサンとバイエル、ピアノ等」は、併存しておくと検索エンジン対策上いろいろと不都合があるように感じたので、消去しました。