PyLadies Tokyo - 8周年記念オンラインパーティ
2022/11/19 nikkie
お祝い8つ持参しました(1️⃣〜8️⃣)
Python 大好き、にっきー(アスタリスク好き)
株式会社ユーザベースでデータサイエンティスト(自然言語処理、XP)
2018年 4周年記念以来 の参加(Django Girls Tutorial翻訳のLT)
#pyconjp
— nikkie にっきー 🎤10/1 XP祭り 10/14-15 PyCon JP (@ftnext) October 15, 2022
Python Boot Campのページ(静的なHTML)は
実は今年にっきーがSphinxに移行しました✌️(GitHub Pagesでサーブ)https://t.co/0QTfwXGxBh
📣なんとSphinxでLPが作れちゃうんです!
日本各地での初心者向けPythonチュートリアルイベント
概要を伝える ランディングページ がある
ペライチの仕様が3月28日から変更になり、無料プランは累計10,000PVを超えると有料プランへの切り替えが必要になった(切り替えないとページが強制的に非公開になる)。
Sphinxを使ってGitHub Pagesに移すなら、個人的な型があるので、私はやってみたいです (nikkie
あるルールに従って記述されたテキストファイルを、HTMLやPDFなどの形式に変換する
📖『Sphinxをはじめよう 第3版』(1章)
「あるルール」の例:reST (reStructuredText)
reSTはマークアップ言語で、テキストのままでも読みやすい(『Sphinxをはじめよう 第3版』1.2)
========================================
すごいランディングページ
========================================
Sphinxで作っています
========================================
* Sphinxはドキュメント変換ツール
* reSTからHTMLへの変換を使っています
$ make html
ブラウザでHTMLを開く
reSTから変換したHTMLは、静的サイトホスティングサービスを使ってWebに公開できる
今回のランディングページの例では GitHub Pages を使用
GitHub Pages用のブランチにHTML一式をpushする
ランディングページにはあるけど、ドキュメントではあまり見かけないモノたち
sphinx_design
も使ってできます!.. button-link:: https://docs.google.com/forms/d/1IANh21fievi_lyyQyL8II66RSxlVuHBdAhr05C1qv9c/viewform
:align: center
:class: sd-rounded-pill sd-px-4
問い合わせる
https://sphinx-design.readthedocs.io/en/furo-theme/badges_buttons.html#buttons
.. grid:: 1 1 2 3
.. grid-item-card:: `@pyohei <https://github.com/pyohei>`_
:img-top: _static/impressions/pyohei.jpg
:class-header: sd-text-center
:class-title: sd-text-center sd-fs-3
運営スタッフ
^^^
運営スタッフとしてPythonを学ぶ方たちのサポートができ、やりがいと充実感を感じました。
https://sphinx-design.readthedocs.io/en/furo-theme/grids.html#placing-a-card-in-a-grid
html_theme = 'alabaster'
html_theme_options = {
"font_family": "sans-serif",
"font_size": "16px",
"link": "#4EBBE2",
}
https://alabaster.readthedocs.io/en/latest/customization.html#fonts
4️⃣〜6️⃣🎂
Sphinxのイベントの1つ doctree-resolved
(ドキュメント)
入力したテキストファイルを 木 構造(doctree)に変えたとき
木をたどって、HTMLでh1, h2にあたる要素に sd-text-center
クラスを付与
sphinx-designが提供する 中央揃え のクラス
時間とともにpycampの 開催数は増える (connpassのイベント一覧)
実装に精通していなくても、参加人数の表を 更新 できるよう容易にするべきと考えた
nikkieに毎回更新を頼む形は避けたい
開催地,URL,参加人数
静岡県沼津市,https://pyconjp.connpass.com/event/251468/,一般参加8人、学生3人
新潟2nd,https://pyconjp.connpass.com/event/255600/,一般参加10人、学生5人
class EventHistoryCSVTable(CSVTable):
...
def setup(app):
app.add_directive("event-history-csv-table", EventHistoryCSVTable)
開催地にリンクのマークアップ をした上で、参加人数と合わせて CSVTable
に渡す実装(CSVテーブルディレクティブ)
CSVファイルに「開催地,URL,参加人数」だけ追加しさえすれば、後はコードが責務を果たす
(少なくとも私は)ランディングページの説明とそこからのリンクを タブを切り替えて行き来 したい
pip install sphinx-new-tab-link
extensions = [
"sphinx_new_tab_link",
]
詳しくは SphinxでビルドしたHTMLの中の外部リンクを、ブラウザの新しいタブで開くように設定する拡張 sphinx-new-tab-link を公開しました!🎉
7️⃣🎂 sphinx.ext.githubpages
がGitHub Pagesでの公開をサポート(こちらのブログ)
8️⃣🎂 make singlehtml
使ってます!
技術的に少し挑戦 しつつコミュニティに 貢献 という今回のやり方はとても楽しかった🤟
拡張が作れるようになるとSphinxは自在に使えるし、他の拡張の凄さも伺い知れる(Alabasterすごい!)
アスタリスク(星印)が好きなので、GitHubでスター🌟ください!(笑)
https://pycamp-lp.pycon.jp/ はSphinxとGitHub Pagesでできています
ランディングページに必要な要素(ボタンやカード)は sphinx_design で
Sphinx拡張を自作 して、ランディングページの細かい要素を実現
地方でPythonイベントを開催してみたい方、pycampいかがですか?(コアスタッフの方のブログ)
参考にランディングページ作りたい方、困ったらお気軽に @ftnext をお呼びください!