やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Python学習サイトにおける課題ページのテンプレートについて考えてみた

全然まとまらない。

前回まで

課題ページのテンプレート

< 見出し < 見出しの親 < 見出しの先祖 ...              △ | □ | ○

H1見出し 課題名


------------------------
print('Hello Python !!')
------------------------


< 前の課題名                                      次の課題名    >

AsciiDoc

include::{ナビ.パンくずリスト}

= {見出し}

include::{ソースコード}

include::{ナビ.前後}
  • {ナビ.パンくずリスト}はアイコンを使いたい。しかしAsciiDocでは編集できない。HTMLを直接編集せねば。どうするか。一旦保留。
    • テンプレートだけはHTMLテンプレートエンジンで編集したほうがいいかも?

どうするか

  • ソースコードは静的ファイルをincludeすればいい
  • しかし、見出しとナビは可変。いちいち手書きするのは面倒すぎる

変更する部分だけを渡せば、HTMLを作ってくれるようにするのが一番楽。課題ごとに変更する箇所はどこか。

  • ファイル名(英語名?日付?日本語名はやめたほうがいい)
  • 見出し

ソースコードmain.py固定にしてしまえば、そのファイルを書いて配置するだけでOK。1課題1コードで済む単位にするためこれでいけるはず。

手順

  1. 見出しの葉ノードにsubjects.tsvファイルを配置する
  2. 1にファイル名と見出しのテーブルを書く
  3. テンプレート生成ツールを実行させる
  4. tsvで指定したファイル名でテンプレートが生成される。
  5. main.pyソースコードを書く
  6. 完了

というのが望ましい。しかしテンプレの{ナビ.パンくずリスト}部分が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テンプレートエンジンでなんとかなるのか?調べてみるしかない。