PiecesとThinkingのつくりの話

2020-10-05

実は「PureBuilder Simplyでサイト作るの大変説」を覆すための仕様だったりする。

Thinkingが先にあって、当初ありもののCSSとデフォルトのPandocテンプレートで書いてた。

結局気に食わなかったので、CSSは全面的に書き直して、元のコードはほぼ残ってない。 あと、テンプレートも少しだけ手を入れた。

だから、成果としては満足できなかったんだよね。 ほら、簡単でしょ、って感じにならなかったから。

だから、Piecesはもっと徹底的に簡単にした。

テンプレートはこんな感じ。

<!DOCTYPE html>
          <html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
          <head>
            <meta charset="utf-8" />
            <meta name="generator" content="PureBuilder Simply" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
          $for(author-meta)$
            <meta name="author" content="$author-meta$" />
          $endfor$
          $if(date-meta)$
            <meta name="dcterms.date" content="$date-meta$" />
          $endif$
          $if(keywords)$
            <meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
          $endif$
            <title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
            <style>
              $styles.html()$
            </style>
            <link rel="stylesheet" type="text/css" href="/skin.css" />
          </head>
          <body>
            <div id="ArticleBox">
          $if(title)$
          <header id="HeaderBlock">
          <h1 class="title">$title$</h1>
          $if(date)$
          <p class="date">$date$</p>
          $endif$
          </header>
          $endif$
          $if(toc)$
          <nav id="$idprefix$TOC" role="doc-toc">
          $if(toc-title)$
          <h2 id="$idprefix$toc-title">$toc-title$</h2>
          $endif$
          $table-of-contents$
          </nav>
          $endif$
          <article>
          $body$
          </article>
          </div>
          <footer>
            <p>by Harukamy, with <a href="https://github.com/reasonset/purebuilder-simply" rel="external">PureBuilder Simply</a></p>
            <p><a href="/">Back to Pieces</a></p>
          </footer>
          </body>
          </html>

で、デフォルトのテンプレートからテンプレートに直接書いてしまえば良い値は全部ハードコーディングして、全体をdivで囲って、$body$articleで囲って、footerを足しただけ。 5分もかからない。

CSSもぱぱっと書いて

body {
            background-color: #e0e0e0;
            line-height: 1.45;
          }
          
          #ArticleBox {
            background-color: rgb(125, 168, 182);
            background-image: url('/wp/check.png');
            max-width: 54em;
            min-height: 100vh;
            margin: auto;
            padding: 5px;
          }
          
          article {
            margin: 35px 45px;
            padding: 0.35em 0.72em;
            background-color: #fafafa;
            color: #4a4a4a;
          }
          
          body, table {
            font-family: 'Raleway', 'Hiragino UD Sans Rd StdN', 'Honoka Maru-Gothic', 'Migu 1C', 'VL PGothic', 'Meiryo', sans-serif;
          }
          
          h1, h2, h3, h4, h5, h6, ul, ol {
            font-family: 'Sen', 'Oxygen Sans', 'YuGothic', sans-serif, 'Source Han Sans JP', 'MMCedar P', 'IPAPGothic';
          }
          
          code, pre {
            font-family: 'Courier Prime Code', 'Fira Code', monospace;
          }
          
          a {
            text-decoration-line: underline;
            text-decoration-style: dashed;
            text-decoration-thickness: 2px;
            text-underline-position: under;
            color: #6c7bb9;
          }
          
          a[rel="external"]:after {
             content: '【ext link】';
             vertical-align: super;
             font-size: 80%;
          }
          
          footer {
            text-align: right;
          }
          
          footer p {
            margin: auto;
          }
          
          em {
            text-decoration-line: underline;
            text-decoration-style: solid;
            text-decoration-thickness: 2px;
            text-underline-position: under;
          }
          
          #TOC {
            border: #6c7bb9 double 5px;
            padding: 0.5em;
            background-color: #fafafa;
            margin: 15px 55px;
            font-size: 90%;
          }
          
          #HeaderBlock {
            background-color: transparent;
            padding: 0.35em 1.4em;
          }
          
          #HeaderBlock h1 {
            display: inline-block;
          }
          
          #HeaderBlock p.date {
            display: inline-block;
            margin-left: 3.5em;
          }
          
          div.sourceCode, article > pre {
            margin: 1.25em;
            padding: 0.35em;
            font-size: 90%;
            border: #909ff2 solid 1px;
          }
          
          div.sourceCode > pre, div.sourceCode > pre > code {
            white-space: pre-wrap;
          }
          
          p code, li code, dd code {
            color: #da391d;
          }

って感じ。

CSSは足りないところがあるかもしれないけど、とりあえず使う要素だけ書いた。 たとえばblockquoteとかは書きたいかもね。

でもいずれにせよ、Pandocはかなり綺麗なHTMLを吐き出すから、単純にpandoc -D html5 > template.htmlして、CSSはからっぽから始めてどうしても必要だと思うところだけ書けばいいし、初学者にも易しいと思う。

いや、そもそもの話、デフォルトで何が不満なのか。 そこから考えるほうが大事かな。

PC前提だったら思うことは色々ある。 例えば、Firefoxのデフォルトの文字がすごく小さくなっちゃってるとかね。16ポイントなんか絶対にない。 けど、スマホだと、ページCSSのないドキュメントってかなり読みやすい。

そもそも、UAテーマってその状態で可読性が高いように作られてるってことを忘れちゃいけない。 ページのmarginを削るのが正しいわけじゃない。

まぁ、私は一番はヘッダー周りをいじりたいかな。初期状態だと目立たないから少し読みづらいしね。 それと、TOCは本文と同じじゃないほうが目次なんだなってわかりやすい。 何も見た目を変えるってだけの話じゃなくて、

#TOC:before {
            text-align: center;
            font-size: 160%;
            content: '目次';
          }

とかやってもいい。

いずれにせよ、そんなふうにちょちょいと、それこそテンプレート触るところ含めて15分くらいでこれくらいのデザインはできるんだよっ、て話。