自分用同人小説を縦書きEpubファイルにするための作業手順

この記事は、自分の試行錯誤の垂れ流しなので、いつも以上に突っ込み歓迎です

本手順書でEPUBと称しているファイルはEPUB Validator (beta)EPUB 3.0.1で合格できるものであり、EPUBファイルとして仕様に準拠している保証はありません

自分用同人小説を縦書きEPUBファイルにするための作業手順を書き留めておきます

本手順はあくまで自分 (木俣) 用ですのでご注意ください

ディレクトリィ構造を作る

今回作成するEPUBファイルの用のディレクトリィを用意し (以下、「EPUB ルートディレクトリィ」と呼ぶ) その中に META-INF ディレクトリィと content ディレクトリィを作る

META-INF は固定、content は任意

content ディレクトリィ (以下、「content ディレクトリィ」と呼ぶ) の名称は任意で、更にその配下に任意のディレクトリィ構造を作ることができる

本手順では content とし、すべてのリソースを直下に配置する

ファイル名、ディレクトリィ名などの制約事項は以下を参照

mimetype の作成

mimetype を作成し、EPUB ルートディレクトリィに格納する

ファイル名は mimetype 固定であり、内容は application/epub+zip のみの固定で、エンコードは必ずUS-ASCIIエンコードとなる

container.xml の作成

container.xml ファイルを作成し、META-INF ディレクトリィに格納する

ファイル名は container.xml 固定であり、変更対象は rootfile 要素の full-path 属性の値のみ

本手順では content/content.opf とする

以下、テンプレート

<?xml version='1.0' encoding='utf-8'?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="content/content.opf" media-type="application/oebps-package+xml" />
  </rootfiles>
</container>

本文のXHTMLの作成

本文となるXHTMLファイルを作成し、content ディレクトリィに格納する

XHTMLファイルは複数、例えば章ごとに別ファイルでも良い

EPUBはファイル名、ファイルパスの大文字小文字を区別するので、このXHTMLファイルのファイル名や、参照するファイルパス (リンクやCSSなど) の記述なども大文字小文字を区別して記述する

過去の実装との互換性の為に、拡張子はすべて小文字にした方が良いらしい

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xml:lang="ja" lang="ja" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta charset="utf-8" />
    <title>タイトル</title><!-- 変更対象 -->
    <link rel="stylesheet" type="text/css" href="default.css" /><!-- 変更対象 -->
    <link rel="stylesheet" type="text/css" href="custom.css" /><!-- 変更対象 -->
  </head>
  <body>
    <!-- 変更対象 -->
  </body>
</html>

奥付のXHTMLの作成

奥付となるXHTMLファイルを作成し、content ディレクトリィに格納する

奥付はEPUBとして必須ではないが本手順では作業対象とする

以下、テンプレート

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xml:lang="ja" lang="ja" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta charset="utf-8" />
    <title>タイトル - 奥付</title><!-- 変更対象 -->
    <link rel="stylesheet" type="text/css" href="default.css" /><!-- 変更対象 -->
    <link rel="stylesheet" type="text/css" href="custom.css" /><!-- 変更対象 -->
  </head>
  <body>
    <h1>タイトル</h1><!-- 変更対象 -->
    <dl class='version'>
      <dt>初版</dt>
      <dd><time datetime="yyyy-MM-dd">yyyy年MM月dd日</time></dd><!-- 変更対象 -->
      <dt>電子版 初版</dt>
      <dd><time datetime="yyyy-MM-dd">yyyy年MM月dd日</time></dd><!-- 変更対象 -->
    </dl>
    <hr/>
        <dl>
            <dt>著者</dt>
            <dd>著者名</dd><!-- 変更対象 -->
            <dt>発行</dt>
            <dd>サークル名</dd><!-- 変更対象 -->
            <dt>Web site</dt>
            <dd><address><a href='https://example.com'>example.com</a></address></dd>
            <dt>E-mail address</dt>
            <dd><address>john@example.com</address></dd>
        </dl>
        <p></p>
    <hr/>
    <p>他、注意書き等</p><!-- 変更対象 -->
  </body>
</html>

表紙絵となる画像と表紙となるXHTMLの作成

表紙絵となる画像ファイルと表紙となるXHTMLファイルを作成し、content ディレクトリィに格納する

表紙はEPUBとして必須ではないが本手順では作業対象とする

EPUBは画像ファイルとしてSVGPNGJPEG、GIFが使える

予め表紙絵の Cover.png を用意した上で表紙として以下の様なXHTMLファイルを作成する

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xml:lang="ja" lang="ja" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta charset="utf-8" />
    <title>タイトル</title><!-- 変更対象 -->
  </head>
  <body>
    <div>
    <p><img alt="タイトル - 作者名等" src="cover.png" /></p><!-- 変更対象 -->
<!-- 2018-09-19 一部リーダーが object要素に対応してないようなのでimg要素によるマークアップへ変更
      <object data="Cover.png" type="image/png">
        <h1>タイトル</h1>
        <p>著者名など</p>
      </object>
-->
    </div>
  </body>
</html>

CSSの作成

XHTMLに適用するCSSファイルを作成し、content ディレクトリィに格納する

CSSEPUBとしては必須ではないが、縦書きの為に必要となる

XHTMLに直接style要素で書き込んでも良いが、本手順では独立したCSSファイルを用意する

以下、自分が使っているテンプレート

html {
  writing-mode: vertical-rl;
  -webkit-writing-mode: vertical-rl;
  -epub-writing-mode: vertical-rl;
}

body {
  text-orientation: upright;
  line-height: 180%;
}

* {
  font-size: 1.0em;
  text-align: justify;
  font-weight: inherit;
  font-style: inherit;
}

h1, h2, h3, h4, h5, h6 {
  font-weight: bold;
  margin: 3em 3em 1em 3em;
}

p {
  margin: 0;
  padding: 0;
}

hr {
  visibility : hidden;
  margin:0 1em;
}

補足説明

  • FirefoxにてXHTMLファイルとして表示した場合 writing-mode: vertical-rl; はbodyでなくhtmlにすると横スクロールバーが右側の状態で始まるのでそのようにした
  • text-orientation: upright; は内容による
  • 縦中横については考慮していない
  • p要素に text-indent:1em; を書く場合、役物が先頭に来た場合はclassで制御する
  • 他、q要素などを使い引用符を制御する場合その記述を追加する

目次の作成

目次ファイルとなるXHTMLファイルを作成し、content ディレクトリィに格納する

目次ファイルは nav 要素でマークアップし、nav 要素には名前空間 http://www.idpf.org/2007/opstype 属性で値 toc を記述する

以下、テンプレート

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xml:lang="ja" lang="ja" xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
<head>
  <meta charset="utf-8" />
  <title>タイトル - 目次</title><!-- 変更対象 -->
  <link rel="stylesheet" type="text/css" href="default.css" /><!-- 変更対象 -->
</head>
<body>
  <nav epub:type="toc"><!-- 以下、nav要素の子要素全般が変更対象 -->
    <h1>タイトル - 目次</h1>
    <ol>
      <li><a href="cover.xhtml">表紙</a></li>
      <li><a href="chapter1.xhtml">第一章</a></li>
      <li><a href="chapter2.xhtml">第二章</a></li>
      <li><a href="chapter3.xhtml">第三章</a></li>
      <li><a href="colophon.xhtml">奥付</a></li>
    </ol>
  </nav>
</body>
</html>

XHTMLの確認

Nu Html CheckerXHTMLファイルの確認を行う

XML宣言、目次の http://www.idpf.org/2007/ops 名前空間の宣言とその名前空間type 属性以外でError、warningが出たら直す

content.opf の作成

content.opf を作成し、content ディレクトリィに格納する

metadata 要素

metadata 要素には書籍情報を記述する

manifest 要素

manifest 要素には、content ディレクトリィにあるcontent.opf以外のすべてのファイルを item 要素としてマークアップする

item 要素

item 要素には、id 属性、href 属性を記述する

href 属性の値はcontent ディレクトリィ内の相対パスとする

表紙画像には properties 属性で cover-image を記述する

目次には properties 属性で nav を記述する

spine 要素

spine 要素には、itemref 要素としてEPUB内で独立して内容となるファイルを昇順で記述する

ここでいう独立して内容となるとは、例えばXHTML内で参照される画像やスタイルシートを含まないことを意味する

本手順で作成するEPUBはページ送りが右から左であるため、spine 要素にpage-progression-direction 属性を記述し値を rtl とする

itemref 要素

itemref 要素には idref 属性を記述する

以下、テンプレート

<?xml version="1.0" encoding="utf-8"?>
<package unique-identifier="BookId" version="3.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.idpf.org/2007/opf">
  <metadata>
    <dc:title>タイトル</dc:title><!-- 変更対象 -->
    <dc:creator>作者名</dc:creator><!-- 変更対象 -->
    <dc:language>ja-JP</dc:language>
    <dc:identifier id="BookId">tag:example.com,yyyy-MM-dd:BookId</dc:identifier><!-- 変更対象 -->
    <meta property="dcterms:modified">yyyy-MM-ddThh:mm:ddZ</meta><!-- 変更対象 -->
  </metadata>
  <manifest><!-- 以下、manifest 要素の子要素全般が変更対象 -->
    <item id="cover" href="cover.xhtml" media-type="application/xhtml+xml" />
    <item id="navigation" href="navigation.xhtml" media-type="application/xhtml+xml" properties="nav" />
    <item id="chapter1" href="chapter1.xhtml" media-type="application/xhtml+xml" />
    <item id="chapter2" href="chapter2.xhtml" media-type="application/xhtml+xml" />
    <item id="chapter3" href="chapter3.xhtml" media-type="application/xhtml+xml" />
    <item id="colophon" href="colophon.xhtml" media-type="application/xhtml+xml" />
    <item id="defaultStlye" href="default.css" media-type="text/css" />
    <item id="navigationStyle" href="navigation.css" media-type="text/css" />
    <item id="chapterStyle" href="chapter.css" media-type="text/css" />
    <item id="colophonStlye" href="colophon.css" media-type="text/css" />
    <item id="coverImage" href="cover.png" media-type="image/png" properties="cover-image" />
  </manifest>
  <spine page-progression-direction="rtl"><!-- spine 要素の子要素全般が変更対象 -->
    <itemref idref="cover" />
    <itemref idref="navigation" />
    <itemref idref="chapter1" />
    <itemref idref="chapter2" />
    <itemref idref="chapter3" />
    <itemref idref="colophon" />
  </spine>
</package>

ZIP化する

EPUB ルートディレクトリィをZIP化し、拡張子を .epub とする

互換性の問題でEPUBの拡張子はすべて小文字で .epub とするのが良いらしい

ZIPファイル内には先頭に非圧縮で mimetype ファイルを配置した上でそれ以外のファイルを格納する

本手順ではbashにて実行する

  1. EPUB ルートディレクトリィへ移動する
  2. mimetypeのみを非圧縮でZIP化
    zip -0Xq Document.epub mimetype
  3. 他のファイルをZIP化
    zip -Xr9Dq SampleEpub.epub *

コマンドのオプション

-# (-0 ... -9)
0が非圧縮、9が最大圧縮
-X
no extra
余計なファイル属性を保存しない
-q
quiet
サイレント実行
-r
recurse paths
ディレクトリ構造を再帰的に取得し対象とする
-D
no dir entries
ディレクトリのzipアーカイブディレクトリィエントリを作成しない

EPUB Validatorで確認する

EPUB Validator (beta) を使って生成したEPUBファイルを確認する

Error、Warningが出たら直す

同人小説を初めてEPUBにした時の覚書

この記事は、自分の試行錯誤の垂れ流しなので、いつも以上に突っ込み歓迎です

過去発行していた同人小説のEPUB版を作ることにしました

EPUBを選んだ理由は縦書きにしたい固定レイアウトにする必要はない内容なのでリフロー版にしたいだったので、EPUBでも3.0.1か3.1が対象になります

その上で、今回参照した本がEPUB3を対象としており、これに従ってEPUBを作ったらValidatorからEPUB3.0.1と認定されたので下記は3.0.1 (としてValidatorを通過できるファイル) を作る作業記録になります

仕様 (邦訳) とか参考文献とか資料とかツールとか

サンプルEPUBを作ってみる

EPUBファイルは特定のディレクトリィ構造、ファイルを持つZIPファイルです

今回作るSample EPUBの構成は以下の通りです (下記の ContentSampleEpubNavigation は任意の名称)

mimetype
META-INF/container.xml
Content/SampleEpub.opf
Content/SampleEpub.xhtml
Content/Navigation.xhtml

ファイル名、フォルダ名

EPUBの内容となるファイルのファイル名、フォルダ名は基本的に任意ですが、複数OS間での互換性の為や、予約されているファイル名などもありますので、以下を参照してください

雑に言えばファイル名は大文字小文字を区別した上でUTF-8で表現可能かつ記号は避け、またMETA-INFフォルダ配下には所定のファイル (今回の例示では container.xml) のみみしておけば大丈夫っぽいです

mimetype

4.3 OCF ZIP Container Media Type Identification - EPUB Open Container Format (OCF) 3.1

mimetypeファイルは application/epub+zip のみを内容物として持つファイルで文字コードはUS-ASCIIです

META-INF/container.xml

META-INF/container.xml は以下の通りです

フォルダ名の META-INF ファイル名の container.xml 共に名称は固定です

<?xml version='1.0' encoding='utf-8'?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
  <rootfiles>
    <rootfile full-path="Content/SampleEpub.opf" media-type="application/oebps-package+xml" />
  </rootfiles>
</container>

rootfile 要素の full-path 属性の値は、実際のopfファイルの相対パスになり、それ以外の内容は固定になります

Content/SampleEpub.opf

Content/SampleEpub.opf (フォルダ名、ファイル名は container.xml で指定した任意の物) は以下の通りです

フォルダ名の Content ファイル名の SampleEpub は任意の名称になりますが、拡張子の '.opf' は多分固定です (あるいは変えない方が無難です)

<?xml version='1.0' encoding='utf-8'?>
<package unique-identifier="BookId" version="3.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.idpf.org/2007/opf">
  <metadata>
    <dc:title>Sample Epub</dc:title>
    <dc:language>ja</dc:language>
    <dc:identifier id="BookId">tag:example.com,2018-09-11:BookId/Sample Epub</dc:identifier>
    <meta property="dcterms:modified">2018-09-11T00:00:00Z</meta>
  </metadata>
  <manifest>
    <item id="Navigation" href="Navigation.xhtml" media-type="application/xhtml+xml" properties="nav" />
    <item id="SampleEpub" href="SampleEpub.xhtml" media-type="application/xhtml+xml" />
  </manifest>
  <spine>
    <itemref idref="Navigation" />
    <itemref idref="SampleEpub" />
  </spine>
</package>

opfファイルはXMLファイルで、document要素は package 要素となります

package 要素の unique-identifier 属性の値は任意のIDとなる値です

package 要素の子要素は metadatamanifestspine の3要素となり、それぞれについて説明します

metadata 要素

metadata 要素は要素名の通りEPUBファイルのメタデータ (書誌情報) を格納する要素です

dc名前空間の子要素として最低限 titlelanguageidentifier を記述します

title 要素は文字通りの本のタイトルを記述し、language 要素はIETF言語タグ (RFC 4646 および RFC 4647) で日本語の場合は ja または ja-JP を記述します

identifier要素は id 属性に document 要素の package 要素の unique-identifier 属性の値と同一の値を設定し、子要素としてIDREF (XML)のTextNodeを記述します

この identifier 要素の内容となる IDREF は、 property 属性に dcterms:modified を持つ meta 要素の日付と合わせて同一の書籍の同一性と異なる版の判別に使われます

Sample EpubのIDについて

例では RFC 4151のThe 'tag' URI Scheme をIDとして使っています

Examples of tag URIs are:
     tag:timothy@hpl.hp.com,2001:web/externalHome
     tag:sandro@w3.org,2004-05:Sandro
     tag:my-ids.com,2001-09-15:TimKindberg:presentations:UBath2004-05-19
     tag:blogger.com,1999:blog-555
     tag:yaml.org,2002:int

2.1. Tag Syntax and Examples - The 'tag' URI Scheme

manifest 要素

manifest 要素には子要素として順不同でEPUB内に格納しているコンテンツを item 要素として記載します

XHTML内から参照される画像や直接コンテンツとはならないstyle sheetなどもEPUBを構成するファイルは item 要素となります

item 要素

item 要素には id 属性、href 属性、media-type 属性を記載します

id属性は任意のid、href属性にはopfファイルから見た相対パスmedia-typeにはMINEの値を記載します

なお参照するファイルがXHTMLの場合、拡張子は.xhtmlMIMEapplication/xhtml+xmlとします

また、カバー絵となる画像を参照する item 要素には properties 属性でcover-image を設定し、目次となるXHTMLを参照する itme要素には同じくproperties 属性で nav" を記述します

spine 要素

spine 要素には子要素としてEPUBの内容を昇順で itemref 要素として記述します

itemref 要素

itemref要素にはidref属性で各リソースのIDを記述します

このidは manifest 要素の子要素の item 要素の id 属性の値になります

目次を記述する

XHTMLで目次を記述します

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html>
<html xml:lang="ja" lang="ja" xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops">
  <head>
    <meta charset="utf-8" />
    <title>Sample Epub</title>
  </head>
  <body>
    <nav epub:type="toc">
      <h1>Sample Epub - 目次</h1>
      <ol>
        <li><a href="Sample Epub.xhtml">Sample Epub</a></li>
      </ol>
    </nav>
  </body>
</html>

EPUBの目次は opf ファイルの item 要素には properties 属性で properties 属性で nav" を記述した上で、XHTML文書内ではnav要素を使ってマークアップし、更に nav 要素には http://www.idpf.org/2007/ops 名前空間type 属性として toc を記述します

ZIP化してみる

Windows上でEPUBファイルとなるZIPファイルを作ろうとしたがどうしてもうまくいかなかったので、今回は EPUB で電子書籍を作成するEPUB ファイルを ZIP アーカイブとしてバンドルする を参考にbashでコマンドを叩くことにしました

以下、bashでZIPファイルを作ったときの作業

  1. 身近なbashWindows 10上のWindows Subsystem for LinuxUbuntu 18.04のbashだったのでそれを起動
  2. WSLにZIPがインストールされていなかったので $ sudo apt install zip unzip でZIPをインストール
  3. Windows上のドライブはrootの mnt ディレクトリィにマウントされているので $ cd /mnt/c/users/(以下略) でEpupファイルを作りたいディレクトリィに移動
  4. 最初に mimetype ファイルを非圧縮でzipに追加するために $ zip -0Xq SampleEpub.epub mimetype を実行
  5. 続いてmimetype以外のファイルをZIPに追加するために$ zip -Xr9Dq SampleEpub.epub *

EPUBファイルの名称

互換性の問題でEPUBの拡張子はすべて小文字で .epub とするのが良いそうです

チェッカーで確認してみる

EPUB Validator (beta) を使ってチェックしてみます

ここでエラーやワーニングが出たらGoogle翻訳先生に聞きながら直します

色々弄ったら、3.0.1 のファイルとして合格しました

右綴じ、縦書きのEPUBファイルにする

右綴じのEPUBの場合、opfファイルのspine要素に page-progression-direction 属性として rtl を記述します

縦書きの場合、各XHTMLファイルにCSSwriting-mode: vertical-rl; を適用することで縦書きになります

なお、筆者が不勉強のため各ビュワーの対応状況などについて把握していないのですが、-webkit- プレフィックス-epub- プレフィックスを付けた writing-mode プロパティも併せて記述した方が良いようです (-webkit- の方は問題がないことを確認したら外したい)

writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
-epub-writing-mode: vertical-rl;

現時点ではざっくりこんな感じで

2018年の抱負の進捗状況 (9月1日時点)

この記事は自分向けの記事です

もうちょっと頻繁にblogを更新する

Twitterでつぶやいてそれきり、と言う話をもう少しblogに書くかな、と思っています

今のところは未だ思っているだけです

体重を60kgまで落とす、改め体重60kg前後を維持する

からの体重がそれぞれ59.90kg、59.35kg、59.95kgとなり、目標を達成しました

今は59kgから61kgの間で揺れている感じでこのままこの体重を定着させたいと思っています

もともと運動不足ではあるので、NHKみんなで筋肉体操を録画して観ています

観ているだけです

HTML5.2の仕様書を一通り読む、改め HTML LS Developer's Editionを読む

3月ごろに一度中断したHTML5.2の仕様を読む企画ですが、どうしてもやる気が戻らず、やる気の問題で再開が困難なため、HTML5.2を読むのを辞めて改めて HTML: The Living Standard Developer's Edition を読み始めることにして準備中です

Developer's EditionはWEB開発者向けの仕様でブラウザなどUser Agent開発者向けの実装方法の情報などは省かれた版になります

自分としてはこのDeveloper's Editionの部分が大事で、HTML5.2のブラウザの実装の記述は面白く読める部分もあるのですが、本当に全く理解できない部分も多く精神的に苦痛なのでWHATWGのHTML LSのDeveloper's Editionに乗り換えます

もし、HTML5.2にもDeveloper's Editionがあればそちらを読んだと思うのですが、今回はこの違いは気にしないことにします

応用情報技術者試験に合格する、改め情報処理安全確保支援士を受験する

とりあえず情報処理安全確保支援士試験に申し込みました

肝心の勉強のですが、8月上旬はOctopath Travelerをずっとやっていて、今は7 Billion HumansをSTEAMで購入してやっています

さてはお前合格する気ないな

HTML4.01文書 (XHTML1.x文書) を最新のHTML5 (HTML LS) 文書に換えるべきか

私の結論

建前としては、すべてのHTML文書は最新の仕様に準拠すべきと思いますが、HTML4.01/XHTML1.x (以下、「HTML4.01」のみの表記とする) をHTML5/HTML LS (以下、「HTML5」のみの表記とする) へは自動変換出来ないため人間が内容を理解して適切なマークアップに変換する必要があります

つまり、HTML4.01からXHTML1.0の時のような自動変換が可能だった時と違い、HTML5への変換はかなりの労力が必要になる行為になりますので、そのHTML4.01文書はHTML5に換える価値があるのかを個別に判断する必要が生じます

よって、本音としては、単に人間が読めればよいならHTML4.01文書のままでもよいと思います

ただし、HTML5文字コードが実質utf-8のみになったことにより今後utf-8決め打ちでHTMLを解析するツールなどが増えると思いますし、HTML4.01をサポートしないUAの存在を想定した場合、マークアップはHTML4.01のままでも文字コードutf-8にした方が良いと考えます


以下は蛇足です

HTML4.01文書はHTML5文書へは自動変換することができないということ

もし既存のHTML4.01文書をHTML5文書にツールなどで自動変換できるなら、HTML4.01文書をHTML5文書に換えるべきかなどと考える必要はなくサーバーやブラウザにでも任せればよい話でです

しかし、以下のHTMLの断片を考えてみます

<div class='section'>
  <h1>A</h1>
  <p>B</p>
  <div class='section'>
    <h2>C</h2>
    <p>D</p>
  </div>
</div>

<div class='section'> とあるので、HTML5のsection要素の様な気がしますが、内容を読んでみないとsection要素なのか、それともarticle要素やaside要素、header要素、footer要素なのか判断できません

他にもHTML4.01からHTML5になるにあたり同名要素だが要素の意味が変わっているものがあり、そのままの要素名でよいか別な要素としてマークアップすべきかは人間が個別に判断せざるをえない場合が多々あります

人間が読めればよいならそのままでも困らない

恐らく各browserは当面HTML4.01のサポートを辞めないと思いますし、辞めたとしてもHTML4.01文書として適切にマークアップされていればHTML5として処理されても人間が読む分には困らないと思われます

ただ、次善の状況としてHTML4.01文書がHTML5文書として処理されることを期待するならマークアップはHTML4.01文書のままでも文字コードだけはutf-8に変更した方が良いと考えます

不特定多数にWeb scraping対象として提供している場合、書き換えるべき

既存のHTML4.01文書が今後とも不特定多数にWeb scraping対象として解析されること期待するなら、内容を更新する予定がなくてもHTML5文書へ換えた方が良いでしょう

ただし、HTML4.01文書をWeb scraping対象としている利用者が具体的に想定できる場合、HTML4.01文書とHTML5文書を共存させる移行期間などが必要になるかもしれません


Web scrapingの対象という意味ではSEOも話に範疇に入りますが、特定の検索エンジンへの対応についてはその検索エンジンの運営者に聞いてください

減量して分かったいくつかの事

元日時点で74.30kgだったのですが、今年の目標として体重60kg (BMI 22.0) を目指して減量したところからの3日間連続で60.0kg未満の体重になり、めでたく目標達成となりました

覚書として今回得られた知見をまとめておきます

一般的に言えること (将来の自分の体でも言えること)

  1. 個人差が大きい
  2. 標準体型の人向けの話と肥満体系の人向けの話を分ける
  3. 「バランスの良い食事」は健康的な人向けの話
  4. 毎日の体重、体脂肪率を食事や排便、運動と共に記録をつけて自分の体の動きを分析すべき
  5. 最初は「食べなければ太らない」レベルのところから
  6. 説明と検証ができないことは全部オカルト

私の体でやったこと

  1. 1日1食、カロリイ摂取は4時間以内に納める
  2. 基本的に食事の時間以外カロリイを摂らない
  3. 食事を「カロリイを摂取する行為」と考える
  4. コーヒーやジュースを飲むのも食事
  5. 空腹感ではカロリイを摂取しない
  6. 完全にばててしまった時だけ、カフェオレの缶コーヒー程度のカロリイ (100kcal未満) を摂取する
  7. 食事では最初に食物繊維 (サラダ) を食べる
  8. 次に脂身の少ない赤身の肉や豆腐などを食べる
  9. 最後に満腹感が不十分なら炭水化物をデザートとして食べる
  10. 食べすぎたら翌日は少なめにするか抜く

今の私の体に言えること

  1. 空腹でもやる気は出る
  2. 1日1食でも頭は動く
  3. 食後、直ぐに寝ても太らない
  4. 1日1食で十分調子が良い
  5. カロリイ摂取を全くしない時間が長いと痩せる
  6. 食事内容は翌々日の体重に反映される
  7. 意識して食物繊維と蛋白質多めの食事にした方が痩せる
  8. 1日1食で食物繊維多めの食事にすると便秘になるので対策が必要
  9. 満腹感が得られないときは、食後にお茶碗1杯位のお米を食べれば十分
  10. 1日1食にして以降、1か月に1度くらい発生していた謎の片頭痛がおこならなくなった (因果関係は不明。オカルト)

2018年の抱負の進捗状況 (8月1日時点)

この記事は自分向けの記事です

もうちょっと頻繁にblogを更新する

最近HTML5.2関連の記事を書いていないので、この月次報告とその他に記事を思いつきで1本、みたいな状態になっております

HTML5.2を読むのが止まっている方が問題なので、そちらを再開して何とかしたいと思っています

体重を60kgまで落とす

の朝が61.40kgでの朝が60.75kgでした

7月中旬は殆ど体重が減らず足踏み状態でしたが、1か月で見れば緩やかですが減少傾向にあり、リバウンドなども起こしていないので今のやり方のまま続ける予定です

ただ、無理な減量をして酷暑にやられては真の目的である健康的になるに対して本末転倒となるので、夏ばてで体調を崩しそうになったら減量を気にせず栄養補給はするつもりです

HTML5.2の仕様書を一通り読む

3月中旬に応用情報技術者試験の勉強の名目で作業を止めてからそのまま止まってしまっています

8月中旬まではコミックマーケットに参加するため忙しいので8月下旬から作業を再開したいところです

あと、なんとなくでは作業が進まなくなってしまっているので、もう少し小分けに目標を立て、期限を作って管理したい所存です

応用情報技術者試験に合格する、改め情報処理安全確保支援士を受験する

情報処理安全確保支援士を受けることに成りました

合格は厳しい見通しですが、知識は役に立つので勉強します

GPD WIN2のSSD換装でいろいろ失敗したので覚書

GPD WIN2を購入したのですが、その時色々失敗したので、失敗の経験の共有として覚書

SSD購入、しかし、精密ドライバがないから蓋が開けられない

先端サイズ+000の精密ドライバーが必要になるがなかった (持っていたはずだが失くしていることに気が付いた)

仕方がないので購入した……のだが、後にダブるのである

SSDを刺し込み損ねてリカバリを開始し、リカバリメディアをフォーマットする

後に気づくのだが、SSDがちゃんと刺さっていない状態で本体付属のリカバリUSBメディアを挿入しリカバリを開始した

SSDが刺さっていないのでリカバリ先のドライブがない

するとリカバリ用のブートプログラムは唯一のドライブであるUSBメモリリカバリメディアをリカバリ先とみなしてUSBメモリをフォーマットするらしい (というか、フォーマットされた)

結果、当然リカバリには失敗するし、リカバリ用メディアも失う羽目になる

改めてリカバリメディアを作るためにドライバなどをダウンロードする

公式サイトの GPD WIN 2 Pocket WIN XD Laptop Game Console Game box Video Game Player Gamepad からリカバリメディア用のファイルを改めて取得する

これが9.33GBもあり、さらにダウンロード元のMEGAというストレージサービスはアカウント作らないと大きなファイルはダウンロードできない

仕方がないのでアカウント作ったのだが、無料ユーザーだと帯域制限があり、合計9.33GBに及ぶファイルをダウンロードするには金を払うか、5GBダウンロードする毎に数時間のインターバルが必要になる

と言う訳でここで半日程度かかる

無事SSDを換装できたので古いSSDUSBメモリ化するケースを購入する

Amazon.co.jp: ELUTENG SSD M.2 ケース NGFF USB3.0 変換 5Gbps ps4 外付けhdd M.2 2280 SSD ポータブル UASP高速 B-Key/B+M Key SSD 対応 アダプター M.2 外付けケース for 2230 2242 2260 2280 ドライブ ボックス 大容量 2TB: パソコン・周辺機器

このUSBメモリ化するケースに精密ドライバーがついてくる

じゃあ最初に精密ドライバー買わずにこれ買えばよかったじゃん

ギャフン