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

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

GitHub Sponsorsを申請してみた

 簡単に言うとFANBOXやEnty、FantiaなどのGitHub版みたいなものです。何故か手数料がゼロとなっているが、いずれは手数料は引かれるようになるそうだ。手数料はジャパネットじゃではなくギットハブが負担するようだ。ギットハブはマイクロソフトが買収したのでマイクロソフトが手数料を負担してくれるのかもね。申請書類を提出したら承認されました。手続きは基本的に英語です、マイナンバーや運転免許証がいります。

github.com

 1ドルから500ドルまで幅があるけど、特にお返しもなくソフトウェアの更新するための費用として書いています。

 

GitHub スポンサーができた経緯はソフトウェアの更新が放置されがち。オープンソースなので使っている人間は多いが、更新されなくなって時代に合わなくなっていく。OSSは基本的に放置されがちである、なのでスポンサーを付けて維持しようというのが最近の傾向なのだろう。

help.github.com

 

 ソフトウェアを公開したときに収益化するならば、有料で売ればいいのだけど。 

 AozoraEpub3がメンテナンスされなくなってから4年ぐらい経った。現在のEPUBとはだいぶ違いが大きくなっているし、JAVAの問題もある。テコ入れのために色々やってみているが正直、ブログ更新やキンドルで出版している方が収益が大きい。補う意味で登録してみた。

 

github.com

 

qiita.com

AozoraEpub3でクラッシュする原因の除去

 AozoraEpub3でクラッシュする原因のcom.sun.image.codec.jpeg.JPEGCodecを使わず、javax.imageio.ImageIOを利用するように書き換えていきたい。

 

OpenJDKにcom.sun.image.codec.jpegが含まれていないので、度々エラーで止まる。いちおう、catchするように書かれてるのだけど、この際書き換えるべきだとは思う。

 
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageDecoder;

 

static public BufferedImage readImage(String ext, InputStream is) throws IOException
{
BufferedImage image;
if (ext.equals("jpg") || ext.equals("jpeg")) {
try {
ImageDecoder dec = ImageCodec.createImageDecoder("jpeg", is, null);
RenderedImage ri = dec.decodeAsRenderedImage();
image = new BufferedImage(ri.getWidth(), ri.getHeight(), BufferedImage.TYPE_INT_RGB);
image.createGraphics().drawRenderedImage(ri, NO_TRANSFORM);
} catch (Exception e) {
image = ImageIO.read(is);
} catch (NoClassDefFoundError e) {
// OpenJDKではcom.sun.image.codec.jpegがなくてエラーになるので
// それをキャッチする
image = ImageIO.read(is);
}
} else {
image = ImageIO.read(is);
}
is.close();
return image;
}

これを下のように書き換えた。ImageIOが動かないJAVAがあるかのだろうか。上のif try catchを組み合わせた書き方で、画像の読み込みが失敗していることがあった。

 

static public BufferedImage readImage(String ext, InputStream is) throws IOException
{
BufferedImage image;
try {
image = ImageIO.read(is);
} catch (Exception e) {
throw new RuntimeException(e);
}
is.close();
return image;
}

 表紙の画像とか、内容とかを編集する機能が果たして必要なのかと思うことがしばしば。いっそ、画像の編集機能自体をなくしてもいいかなとも考えている。そうすればもっとコードがシンプルになるのにな。

docs.oracle.com

 

docs.oracle.com

 

qiita.com

qiita.com

ケーブルや分配器を変えたら、テレビの映りがきれいになった

 アンテナは地デジにして変えたが、ケーブルや分配器はアナログのときからのものを使っていた。それで劣化してきたのか、テレビにノイズが増えてきた。どうやら調べていくと、分配器やケーブルが劣化するとこういう症状が出るようだ。

分配器を変える

 分配器を調べてみるとめっちゃ錆びてました、よくこれで今まで映ってたなと感慨深い。交換しただけで、格段にテレビの映りがきれいになりました。ただケーブルも変えたほうがいいかなという思いがある。

  各部屋でテレビを見るために分配器を使っています。ブースターに電流を送るために通電型を選ぶ必要があるようだ。この一個400円程度のものなので簡単に変えてテレビの映りが良くなって満足です。工事を頼むと数千円ぐらい取られるし時間がかかるようだ。通電させたまま交換したら手がピリピリと感電しているのに気づきました。それほどの電気が流れていないのでそのまま続けたけど。

  ケーブルは棚の奥の方にあったのを流用したのでただです。

 

 

AozoraEpub3の電書協css対応作業7 ゴシック体、明朝体、太字、斜体、区切り線

 最近こればっかしている気がするが、今月中には終わらせたいからなんだが、終わるのかこれ。電書協cssとAozoraEpub3のcssを比較して差をなくすようにしていっている。ただ、どうしても電書協cssだけでは表現できない部分を別途cssを追加する必要がある。

  • 電書協のCSSの差をなくす
  • CSSの差を別のファイルとして書き出す
  • 縦書き横書きを同じCSSを使う
  • htmlのcssの読み込みをbook-style.cssとfixed-layout-jp.cssだけにする

という工程が必要だと思われる。

 

 もう一つはファイル名の変更だ。電書協cssを使っていることを明確に示すために、CSSのファイル名も電書協の名前に変えようと思う。電書協ではbook-style.cssから@importを使って他のcssを読み込んでる。この部分に余ったcssを別ファイルとして読み込めばいいかなと思っている。

 @charset "UTF-8";
@import "style-reset.css";
@import "style-standard.css";
@import "style-advance.css";

 

フォント指定の追加

 

###ゴシック体

###ゴシック体

ゴシック体 <span class="gfont">

ゴシック体終わり </span>

ここからゴシック体 <div class="gfont"> 1

ここでゴシック体終わり </div> 1

ここまでゴシック体 </div> 1
###明朝体明朝体 <span class="mfont">

明朝体終わり </span>

ここから明朝体 <div class="mfont"> 1

ここで明朝体終わり </div> 1

ここまで明朝体 </div> 1

 

####太字

####太字

太字 <span class="bold">

太字終わり </span>

ここから太字 <div class="bold"> 1

ここで太字終わり </div> 1

ここまで太字 </div> 1
####斜体

斜体 <span class="italic">

斜体終わり </span>

ここから斜体 <div class="italic"> 1

ここで斜体終わり </div> 1

 

区切り線

注記は同じだった。

区切り線 <hr/> 1

AozoraEpub3の電書協css対応作業6 罫線、罫囲み

 青空文庫で傍線で表していた部分が、電書協では罫線で表している部分がある。どっちの表記がいいのかわからないが、とりあえず青空文庫の方で書いている。機能を追加したければ追加すればいいかなと思う。

 電書協では文字をぐるっと線で囲むだけではなく、上だけや下だけといった部分的な指定もできる。線の種類も多かったので鎖線と二重線を追加した。

 

####罫囲み 点線(鎖線)dotted、二重線double
罫囲み <span class="k-solid">
罫囲み終わり </span>
破線罫囲み <span class="k-dashed">
破線罫囲み終わり </span>
破線の罫囲み <span class="k-dashed">
破線の罫囲み終わり </span>
枠囲み <span class="k-solid">
枠囲み終わり </span>
破線枠囲み <span class="k-dashed">
破線枠囲み終わり </span>
ここから罫囲み <div class="k-solid"> 1
ここで罫囲み終わり </div> 1
ここから破線罫囲み <div class="k-dashed"> 1
ここで破線罫囲み終わり </div><br/> 1
ここから枠囲み <div class="k-solid"> 1
ここで枠囲み終わり </div> 1
ここから破線枠囲み <div class="k-dashed"> 1
ここで破線枠囲み終わり </div> 1

鎖線罫囲み <span class=".k-dotted">
鎖線罫囲み終わり </span>
二重線罫囲み <span class="k-double">
二重線罫囲み終わり </span>
ここから鎖線罫囲み <div class=".k-dotted"> 1
ここで鎖線罫囲み終わり </div> 1
ここから二重線罫囲み <div class="k-double"> 1
ここで二重線罫囲み終わり </div><br/> 1

 

/* 罫線
----------------------------------------------------------------
線種や線幅など、細かな調整が必要なときは、
無理に既存のクラスを用いず新たにクラスを作成すること
---------------------------------------------------------------- */
/* 線種【実線】 */
.k-solid-top,
.k-solid-right,
.k-solid-bottom,
.k-solid-left,
.k-solid-topbottom,
.k-solid-rightleft {
border-width: 1px;
border-color: #000000;
}
/* 線位置【実線】 */
.k-solid-top { border-style: solid none none none; }
.k-solid-right { border-style: none solid none none; }
.k-solid-bottom { border-style: none none solid none; }
.k-solid-left { border-style: none none none solid; }
.k-solid-topbottom { border-style: solid none solid none; }
.k-solid-rightleft { border-style: none solid none solid; }

/* 線種【点線】 */
.k-dotted-top,
.k-dotted-right,
.k-dotted-bottom,
.k-dotted-left,
.k-dotted-topbottom,
.k-dotted-rightleft {
border-width: 2px;
border-color: #000000;
}
/* 線位置【点線】 */
.k-dotted-top { border-style: dotted none none none; }
.k-dotted-right { border-style: none dotted none none; }
.k-dotted-bottom { border-style: none none dotted none; }
.k-dotted-left { border-style: none none none dotted; }
.k-dotted-topbottom { border-style: dotted none dotted none; }
.k-dotted-rightleft { border-style: none dotted none dotted; }

/* 線種【二重線】 */
.k-double-top,
.k-double-right,
.k-double-bottom,
.k-double-left,
.k-double-topbottom,
.k-double-rightleft {
border-width: 4px;
border-color: #000000;
}
/* 線位置【二重線】 */
.k-double-top { border-style: double none none none; }
.k-double-right { border-style: none double none none; }
.k-double-bottom { border-style: none none double none; }
.k-double-left { border-style: none none none double; }
.k-double-topbottom { border-style: double none double none; }
.k-double-rightleft { border-style: none double none double; }

/* 線種【破線】 */
.k-dashed-top,
.k-dashed-right,
.k-dashed-bottom,
.k-dashed-left,
.k-dashed-topbottom,
.k-dashed-rightleft {
border-width: 1px;
border-color: #000000;
}
/* 線位置【破線】 */
.k-dashed-top { border-style: dashed none none none; }
.k-dashed-right { border-style: none dashed none none; }
.k-dashed-bottom { border-style: none none dashed none; }
.k-dashed-left { border-style: none none none dashed; }
.k-dashed-topbottom { border-style: dashed none dashed none; }
.k-dashed-rightleft { border-style: none dashed none dashed; }

/* 線幅 */
.k-0px { border-width: 0; }
.k-1px { border-width: 1px; }
.k-2px { border-width: 2px; }
.k-3px { border-width: 3px; }
.k-4px { border-width: 4px; }
.k-5px { border-width: 5px; }
.k-6px { border-width: 6px; }
.k-7px { border-width: 7px; }
.k-8px { border-width: 8px; }
.k-thin { border-width: thin; }
.k-medium { border-width: medium; }
.k-thick { border-width: thick; }

/* 1C用の線色 */
.k-black { border-color: #000000; }
.k-dimgray { border-color: #696969; }
.k-gray { border-color: #808080; }
.k-darkgray { border-color: #a9a9a9; }
.k-silver { border-color: #c0c0c0; }
.k-gainsboro { border-color: #dcdcdc; }
.k-white { border-color: #ffffff; }

/* 基本色 */
.k-red { border-color: #ff0000; }
.k-blue { border-color: #0000ff; }
.k-cyan { border-color: #00ffff; }
.k-magenta { border-color: #ff00ff; }
.k-orangered { border-color: #ff4500; }


/* 罫囲み
.border {
border: 1px solid #000;
margin: 0.25em;
padding: 0.25em;
}
破線罫囲み
.dashed_border {
border: 1px dashed #000;
margin: 0.25em;
padding: 0.25em;
}

 

 

打ち消し線と取り消し線が重複していたので解消。

打ち消し線 <span class="line-through">
打ち消し線終わり </span>

.line-through {
text-decoration: line-through;
}

 

取り消し線 二重

/* 取り消し線 */
.strike { text-decoration:line-through; }
.dbl_strike { text-decoration:line-through; }