Python学習サイトにおける課題ページのテンプレートについて考えてみた
全然まとまらない。
前回まで
- http://ytyaru.hatenablog.com/entry/2018/03/17/000000
- http://ytyaru.hatenablog.com/entry/2018/03/16/000000
- http://ytyaru.hatenablog.com/entry/2018/03/15/000000
- http://ytyaru.hatenablog.com/entry/2018/03/14/000000
- http://ytyaru.hatenablog.com/entry/2018/03/13/000000
- http://ytyaru.hatenablog.com/entry/2018/03/12/000000
課題ページのテンプレート
< 見出し < 見出しの親 < 見出しの先祖 ... △ | □ | ○ H1見出し 課題名 ------------------------ print('Hello Python !!') ------------------------ < 前の課題名 次の課題名 >
AsciiDoc
include::{ナビ.パンくずリスト} = {見出し} include::{ソースコード} include::{ナビ.前後}
- {ナビ.パンくずリスト}はアイコンを使いたい。しかしAsciiDocでは編集できない。HTMLを直接編集せねば。どうするか。一旦保留。
- テンプレートだけはHTMLテンプレートエンジンで編集したほうがいいかも?
どうするか
- ソースコードは静的ファイルをincludeすればいい
- しかし、見出しとナビは可変。いちいち手書きするのは面倒すぎる
変更する部分だけを渡せば、HTMLを作ってくれるようにするのが一番楽。課題ごとに変更する箇所はどこか。
- ファイル名(英語名?日付?日本語名はやめたほうがいい)
- 見出し
ソースコードはmain.py
固定にしてしまえば、そのファイルを書いて配置するだけでOK。1課題1コードで済む単位にするためこれでいけるはず。
手順
- 見出しの葉ノードに
subjects.tsv
ファイルを配置する - 1にファイル名と見出しのテーブルを書く
- テンプレート生成ツールを実行させる
- tsvで指定したファイル名でテンプレートが生成される。
main.py
にソースコードを書く- 完了
というのが望ましい。しかしテンプレの{ナビ.パンくずリスト}部分がHTMLでないと編集できない点が曲者。編集はAsciiDocでやりたいが…。ソースコード以外テンプレならテンプレ作成はHTML直接編集でもいいか?
ディレクトリ構造
- `/pydoc見出し/pydoc見出し/pydoc見出しの葉/
- index.html
- subjects
- subjects.tsv`
- kadai1
- index.html
- main.py
- kadai2
- index.html
- main.py
- kadai3
- index.html
- main.py
- questions
ディレクトリ | 説明 |
---|---|
subjects/ |
Pythonドキュメントの見出しの部分集合。1コード分。 |
questions/ |
Pythonドキュメントの見出しで出た疑問。 |
index.htmlを減らす
上記ではすべてindex.html
という名前になってしまう。課題名が重複しない英名なら、以下のようにもできる。
- `/pydoc見出し/pydoc見出し/pydoc見出しの葉/
- index.html
- subjects
- subjects.tsv`
- kadai1.html
- kadai1.py
- kadai2.html
- kadai2.py
- kadai3.html
- kadai3.py
ファイル名
文字コードの関係から英名にすべき。PythonドキュメントのURLに倣うならhttps://docs.python.jp/3/reference/introduction.html#alternate-implementations
のように英名で名前をつけるべき。
しかし名前の付け方に苦労しそう。記事の作成をしながら学習するので内容を把握しきれず整理できない可能性が高い。後になって名前を変更したくなりそう。名前は日時にするのが無難か。yyyyMMddHHmmss.html
。これならファイル名の編集をせずに済む。見出しだけを変更すればいい。ダサいがファイル名を途中で編集するとリンク切れになってしまう。
所感
まとまらない。HTMLのテンプレートと、AsciiDocのテンプレート、両方作らねばならないのか?いっそAsciiDocはやめてHTMLテンプレートエンジン+Pythonソースコード+subjects.tsvだけで作る?
根本的にブレてきた。もしAsciiDocをやめるならincludeの代用どうしよう。HTMLテンプレートエンジンでなんとかなるのか?調べてみるしかない。