KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

「日本の産業遺産」読んでみた

  日本の産業遺産がどこにあるかについて書かれている。 工学的な歴史の遺物について網羅的に調べようと思って読んでみた。ただ、原理的な説明が少なくて、写真はあるけどなんか物足りなかった。用語がいっぱい乗っていたのでその言葉を基に調べるといいのかも。

風・水車 原動機 工作機械 電力 電気・通信 応用化学・醸造 精密・産業機械 (日本の産業遺産300選)

風・水車 原動機 工作機械 電力 電気・通信 応用化学・醸造 精密・産業機械 (日本の産業遺産300選)

 

どうも電気史的な読み物で、動力源として水力、火力、原子力、その他を習ってはいたが、昔はどういう機械だったのかが知らなかった。

 水車等を見ると国内では江戸期以降になるが、日本以外では、西暦600年以降から始まっている。明治期以降には直接間接的に伝わっている。江戸期以前はどうだったのかがわからない。

 日本の水車だけにしかないものとして螺旋水車を挙げていた。

www.youtube.com

原動機

小野田セメント工場用の蒸気機関として、大阪砲兵工廠で蒸気機関が製作された。

sts.kahaku.go.jp

単筒型蒸気機関

焼玉エンジン

ガス機関

世界最古のディーゼルエンジン ドイツMAN社製

小型石油機関 Z式石油発動機 ノボー灯油発動機 アンドロー式竪型揮発油発動機

石油エンジン

蒸気タービン

蒸気機関

 

工作機械

立削盤

鍛鉄製足踏み式旋盤

菊花御紋章付平削盤

普通旋盤

S形旋盤

数値制御ジグ中ぐり盤

OS型普通旋盤

平削盤

形削盤

スチームハンマー

 

電力

ペルトン水車

スタンレー型直流発電機

回転変流器

誘導発電機

水銀整流器

エジソン式直流発電機

www.youtube.com

 

電気・通信

真空管式コンピュータ

電子顕微鏡

浜松高工式テレビジョン

アイコノスコープ(撮像管)

コヒーラー検波器

無装荷ケーブル

NE式写真電送装置

ブレゲ指字電信機

島津感応起電機

 

カラーテレビカメラ

ダブルボタンマイクロホン

電池

TYK無線電話

 

応用科学・醸造

 

カザレー法アンモニア合成塔

圧力反応窯

ホフマン式輪窯

耐火煉瓦

ガラス

徳利窯

登窯

ベンゼン精留塔

碍子

酸素工業

セルロイド工業

塗料製造

 

 

小説家になろうページの分析

小説家になろうからのスクレイピング方法を調べてみた。

node.jsでスクレイピングするにはどうすればいいのか。

 

目次ページ

目次のページでは各話のリンクが張ってあり、それらのアドレスからページを取得すればいいのだろう。

 

タイトルは <p class="novel_title">

小説概要 <div id="novel_ex">

 

目次ページ

 

<div class="index_box">

<dl class="novel_sublist2">
<dd class="subtitle">
<a href="/小説の番号/1/">各話タイトル</a>
</dd>
<dt class="long_update">
日付
<span title="日付 改稿">
(<u>改</u>)</span>
</dt>
</dl>

 

 

各話ページ

小説の本体となるページから情報をとるにはどうするか。よく見ると、行ごとに個別のIDがふられているので、アクセス自体は難しくないかも。

 

本のタイトルは<title>タグからとれるみたい。

作者:<a href="https://mypage.syosetu.com/">作者名</a>

<div id="novel_no">1/579</div>

<p class="novel_subtitle">

 

見出し部分

 

<div id="novel_p" class="novel_view" style="line-height: 28.8px; font-size: 16px;">

<p id="Lp1">

 

本文

<div id="novel_honbun" class="novel_view" style="line-height: 28.8px; font-size: 16px;">

<p id="L1">

 

フッダー

<div id="novel_a" class="novel_view" style="line-height: 28.8px; font-size: 16px;">

<p id="La1">

 

ルビ

ルビはHTML4対応のために複雑になっている。

<ruby><rb>漢字</rb><rp>(</rp><rt>ルビ</rt><rp>)</rp></ruby>

人類はどうやって時計を作ってきたのか

 最近とあるサイトで交流周波数を利用した時計の話が出てきたんだ。今ではフロッピーディスクよりも見かけない時計である。水晶発振器が高価な時代に代替えとして出た時計で、今では100円均一でも水晶発振器を使ってるので。交流周波数を利用した時はwikipediaの時計の歴史にも出てこない。電力会社も、時計として使っても精度を保証してない。

 

パタパタ時計という名前のほうが検索したら出てくる。

パタパタ時計 - Wikipedia

このサイトでの分解記事がわかりやすかった。同期モータに減速ギアで回転を遅くするのだが、交流電源の周波数を使うと周波数が変動すると時間が狂う。問題は故障すると発火するので使わないほうがいいことだ。

ameblo.jp

 

 時計の歴史

時計の歴史 - Wikipedia

 時計の歴史は面白い、昔の精密時計でも一日の時間のずれが30秒ほどあったのが。今では数億年に一秒ずれるかどうかという精度になっている。数億年も時計は動かないだろうが。

 

時計の科学 人と時間の5000年の歴史 (ブルーバックス)

時計の科学 人と時間の5000年の歴史 (ブルーバックス)

 

 

 日時計

  太陽の位置と影を利用した時計だけど、緯度と方位がわかっていないと使えない。

3インチ 真鍮製日時計コンパス

3インチ 真鍮製日時計コンパス

 

 


日時計の仕組み


日時計を作ってみましょう。

 

昔の人はどのようにして時間を計っていたのか

 昔の人はどのような時計を使っていたのだろうか。割と時間に縛られることなくのびのびしていたのだろうかと思ったりする。航海時代では方位磁石と精密時計が重要だったらしい。

大航海時代と精密時計 その1 | NEEZの時計ブログ

 

 太陽が昇ったり沈んだりするので、日時計が初めにあるというのはわかりやすい。基準点として、

  1. 太陽が昇り始めた
  2. 太陽が真上に来た
  3. 太陽が沈んだ

を考えると。例えば6、12、18時を基準とする。

12と18の間を3分割すると14、16時になる。いや2分割がいいとすると、15時になる。で12を0として、1,2,3,4,5,6と分割されたこんな風に時間が定義されたのだろうか。

 一秒を決めたのは、平常時の心拍に基づいていると思ったが違うようである。ただ、身近な近いもので昔の人は考えていたのではないかと思っているが。

60秒で1分、60分で1時間、24時間で一日。

 60×60×24は86400で1日を86400で割ったのが一秒になる。

水時計などもあるが、ここから一気に振り子時計の話をしたい。

振り子時計

www.youtube.com

www.youtube.com

 

www.youtube.com

振り子の等時性つうのがある。

振り子が同じところに戻ってくるのが同じ周期になっている。それで、その長さは振り子の糸の名がで調整できる。

 懐中時計が好きで集めていたことがある。2種類あった、機械式時計とクォーツ式時計がある。

機械式時計とクォーツ式

 クォーツ式はゼンマイ式と思って買ったら電池式で、水晶発振のタイプで間違って買ったやつ。

 機械式時計はゼンマイを巻いて下のような時計を持っていた、人に見せると反応が実に面白い。ただ、今の時代スマホで十分なので全く実用性がない。ただ、持っているだけでわくわくする。落とすとすぐに壊れるで注意したほうがいい。

 どっちも3000円ぐらいで買った記憶がある。

 

 機械式時計を作る動画が面白かった。

www.youtube.com

 機械式とクォーツ式を両方使った、スプリングドライブが載っていた。だけで、ゼンマイでエネルギーをためて、発電しながらクォーツを動かす。ゼンマイは腕につけている動きで自動で巻き上がる。正直機械式の良さがほとんどない気がするが、日本で売られているのは高価なモデルしかなく海外向けに7000円から売られている。 

 

 

水晶発振器

教えて!水晶デバイス | リバーエレテック 世界最小の水晶振動子・水晶発振器

 水晶に電気を流すと周期的な信号を出す。それをカウントすると時間が図れる。

デジタル電子回路の設計で、水晶発振器をフリップフロップ回路をつなげて、ストップウォッチの回路設計をしたことがある。あまりうまくいったとも思えないが。今の時計のベースが水晶発振器とプラスアルファでできている。

 プラスアルファというのは、時刻のずれを修正すること。水晶発振器でも時間のずれは大きくなるので、電波時計で電波を受信して合わせたり、テレビの電波で合わせたり。携帯だと基地局から受信したり、インターネットから受信したりして時間のずれを修正している。

 その前はどうやって合わせていたかというと、テレビやラジオの時報だったり、電話の117だったり。今だったら想像つかないだろうけどそれを頼りに時計の時間を合わせてたんだ。

 本では腕時計にするための、省エネの手法。なぜ秒針は一秒刻みなのかが載っている。

青空文庫の構文解析

 青空文庫のパーサーを作ってみようかなと思ったので調べてみた。正規表現でやっていたこともあってオライリー本を流し読みしてたのだけど。複雑になると変換が失敗しそうだと危惧はしている。構文解析をまじめにやってみよう。

 

 構文解析ではPEGというのがあるらしい。またAST木というのもあるようだ。

この辺全然わかっていないのでちゃんと勉強する必要がある。

投稿小説サイト変換ツールを作った時にもっと精度を上げるには正規表現から、構文解析をきちんとする必要がありそうだ。できるかはわからないが青空文庫のパーサーを利用するには、ほかもAST木で表す必要がありそうである。

github.com

qiita.com

抽象構文木

github.com

kmizu.hatenablog.com

でんでんコンバーター互換機製作4回目

 npmにでんでんコンバーターのルビ変換があるなら、node.jsにすればいいじゃないと思いついて迷走中。

 node.jsの本は何冊か読んでいたのだけれど、chromeで動かすjavascriptとの違いに困惑している。同じV8ではないか、わかるはずだろ思ったがなんか違う気がする。

  • jszip.min.js
  • FileSaver.js
  • uuid.js
  • vkbeautify.js

 ライブラリとして前はこれらを使ってたがnode.jsだとxmlの生成はもっとましなライブラリがあるかも。テンプレートエンジンを使ったほうが楽できるかもしれない。などといろいろ考えた。さくっと作ったほうが早い気がする。

 今までだと、XHTMLテンプレートをDOMパーサーでパースしてから書き換えて、シリアライズしていたが。テンプレートエンジンで、XMLに出力するほうが早いかもしれない。

でんでんコンバーターのライブラリ

  でんでんコンバーターのルビ変換ライブラリをインストールする

npm install markdown-it --save

npm install markdown-it-ruby --save

npm install ejs

これ、マークダウンパーサーを書き換えるためには、こまごまと追加しないといけないパターンかな。

var md = require('markdown-it')()

var md = require('markdown-it')()

            .use(require('markdown-it-ruby'));

 var origin = fs.readFileSync(__dirname + '/kurofune/kurofune/kurofunezengo.txt', 'utf-8'); 

var pagetemplete = fs.readFileSync(__dirname + '/ejs/page.ejs', 'utf-8');

 var markFO=[]; markFO = origin.split(/^={3,}$/gm);

var result = md.render(markFO[1]) 

var data =ejs.render(pagetemplete,{ title: "title" , body: result })

page.ejs

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xml:lang="ja" lang="ja">
<head>
<meta charset="utf-8" />

<link rel="stylesheet" href="style.css" type="text/css" />

<title><%= title %></title>
</head>
<body class="bodymatter" epub:type="bodymatter">
<%- body %>
</body>
</html>

 

黒船読み込んで、マークダウンパーサーでhtmlに変換してejsテンプレートから、page.htmlを生成までをやった。

 

 jszipがnode.jsで動かないのかなと思ったが、下のページにnode.jsでのファイル生成の仕方があったので使ってみた。

How to write a file / give it to the user

var JSZip = require("jszip");
var zip = new JSZip();
zip.file("mimetype", "application/epub+zip");
var meta = zip.folder("META-INF");
meta.file("container.xml", containerXML);
var item = zip.folder("OEBPS");

zip
.generateNodeStream({type:'nodebuffer',streamFiles:true})
.pipe(fs.createWriteStream('out.zip'))
.on('finish', function () {
// JSZip generates a readable stream with a "end" event,
// but is piped here in a writable stream which emits a "finish" event.
console.log("out.zip written.");
});

 こうやるだけで、EPUBのフォルダー構造が作成できたので、簡単な気がする。

 

github.com

github.com

github.com

Node.js超入門

Node.js超入門

 

  node.jsの勉強と思ってこの本やってみたんだけで、いきなり文字化けしてしまったのでよくわからない。はじめは文字コードがshift-jisだったのがいけなかったのかなと思って、utf-8にしたのいまだに文字化けしておるは。

 

github.com

ほかのnode.jsでどうやってEPUBに圧縮しているのかを調べると。epub-genでachiverjsを使っておった。テンプレートエンジンでXML生成したり編集しているようだ。

github.com