SlideShare a Scribd company logo
1 of 33
Download to read offline
Pelican による www.python.jp の構築 
2014/9/13 PyCon JP 2014 
Atsuo Ishimoto
自己紹介 
2 
いしもと 
石本 
敦夫 
あつお 
python.jp 管理人
㈱ UNCOVER TRUTH勤務 
3 
社員募集中!
Python本を書きました 
4 
Python文法詳解 ← NEW 
パーフェクトPython
5 
python.jp の歴史 Zope(2001年9月 ~) 
Zope2 
Squishdot 
DTML
python.org専用ツール (2012/9 ~) 
6 
YAML 
reStructuredText 
mako
Pelican (2014/5 ~) 
7 
reStructuredText 
Markdown 
AsciiDoc 
jinja2
Pelican 
Static Site Generator, Powered by Python 
8 
コンテンツ 
(reStructuredText, 
Markdown., 
HTML…) 
テンプレート 
(jinj2) 
HTML 
RSS 
CSS 
etc., 
http://docs.getpelican.com 
設定ファイル
Pelican 
9 
非技術者でも使えるサイト構築ツール
コンテンツ 
10 
ブログのエントリ 
日付・カテゴリ・タグなどを設定 
サイトを構成する静的なページ 
著者紹介、Aboutなど 
アーティクル 
ページ
テンプレート 
11 
Pelican テーマ集 
https://github.com/getpelican/pelican-themes
Pelicanのインストール 
12 
pip3 install pelican 
Markdownを使う場合は、 
pip3 install Markdown 
を追加
Pelicanサイトの作成 
13 
$ pelican-quickstart 
Welcome to pelican-quickstart v3.3.0. 
This script will help you create a new Pelican-based website. 
Please answer the following questions so this script can generate the files needed by Pelican. 
Where do you want to create your new web site? [.] 
> What will be the title of this web site? Test Site 
> Who will be the author of this web site? Atsuo Ishimoto 
… 
pelican-quickstart コマンドでひな形を作成
pelican-quickstart で生成されるファイル 
14 
プロジェクトディレクトリ 
├── content 作成した記事を格納 
│ └── (pages) 
├── output 記事を変換したHTMLなど 
│ └── (html, css, etc.,) 
├── develop_server.sh テスト用HTTPサーバ 
├── fabfile.py サイト構築用fabfile 
├── Makefile ビルド用 Makefile 
├── pelicanconf.py 設定ファイル 
└── publishconf.py 本番環境用設定ファイル
contentディレクトリ 
15 
content 
│ 
├─ アーティクルA.rst 作成した記事 
├─ カテゴリ1 カテゴリ1の記事 
│ ├── アーティクルA.rst 
│ └── アーティクルB.rst 
├─ カテゴリ2 格納カテゴリ2の記事 
│ └── アーティクルC.rst 
├─ pages ページを格納 
│ ├── ページ1.rst 
│ └── ページ2.rst 
├─ images 画像ファイル等 
│ └── picture1.png
reStructuredText 
16 
Python公式ドキュメントで採用 
高機能 
拡張性 
デフォルト設定が、Pythonドキュメントの記述用 
西洋語向けのマークアップ
Markdown 
17 
Githubなどでおなじみ 
シンプル・覚えやすい
記事のメタデータ 
18 
記事タイトル 
############## 
:date: 2014-09-14 12:00 
:tags: Python, プレゼン 
:category: python 
:slug: file_name 
rstのサンプル 
本文中や、ファイル名にメタデータを記述 
•タイトル 
•日付 
•タグ 
•著者 
•urlのパス 
•etc
メタデータでURL/ファイル名を指定 
19 
記事タイトル ############## :save_as: path/to/save/index.html :url: path/to/save/ 
output/path/to/save/index.html を作成 
ページへのリンクは、 path/to/save/ となる
カテゴリ 
20 
pelicanconf.py で設定 DEFAULT_CATEGORY = "blog" 
メタデータで指定 
記事タイトル 
############## 
:category: python 
ディレクトリで指定 
Contentディレクトリの、サブディレ クトリ名をカテゴリとする ex) ./content/python/article.rst 
デフォルトカテゴリ
ページ間リンク 
21 
ページ間リンクの記述方法 ######################### rstでの `相対リンク <{filename}page1.rst>`_ と `絶対リンク <{filename}/page1.rst>`_
構文ハイライト 
22 
.. code-block:: python3 
def say(): 
print('hello') 
Pygmentsで構文ハイライト
ページ 
23 
作成方法 
content/pages ディレクトリに作成 
ブログエントリ以外の、Aboutや著作権表示など 
表示方法 
•DEFAULT_CATEGORY = True ならリンクを表示 
•リンクしないページは、メタデータで :status: hidden
スタティックファイル 
24 
content 
│ 
├─ images 
│ └── picture1.png 
./content/imagesに配置 
./output/images/ にコピーされる 
./content/images/picture1.png → ./ountput/images/picture1.png
サイトのビルド 
25 
コマンド 
機能 
make html 
プロジェクトをローカル環境用にビルドします 
(pelicanconf.pyを実行) 
make publish 
プロジェクトをプロダクション環境用にビルド します (pelicanconf.py + publishconf.py を実行) 
make regenerate 
ファイルの変更を検出すると自動的にビルド します 
make devserver 
develop_server.sh を実行し、プロジェクト の自動ビルド・テスト用HTTPサーバを起動 します
設定ファイル 
26 
pelicanconf.py 
publishconf.py 
•make html と make publish で使用 
•make publish でのみ使用 
•プロダクション環境用
テーマ 
27 
pelican-themesコマンド 
指定方法 
pelicanconf.py で、ディレクトリ名を指定 
THEME = "my_theme" 
テーマ設定コマンド 
$ pelican-themes --list notmyidea two-column@ simple
記事インデックスページ 
28 
インデックスページ /index.html 
すべてのアーティクルのインデックス 
カテゴリ別インデックスページ 
/category/カテゴリ名/index.html 
カテゴリごとに作成される、アーティクルの インデックス 
その他、タグ別・ 著者別・年別など
アーティクルの保存パスとURL 
29 
ARTICLE_SAVE_AS 
【例】 ARTICLE_SAVE_AS = 'articles/{slug}/index.html' 
アーティクルの保存ディレクトリを指定 
ARTICLE_URL 
【例】 
ARTICLE_URL = 'articles/{slug}/' 
アーティクルのURLを指定
SLUGIFY_SOURCE = 'basename' 
30 
•デフォルトは、SLUGIFY_SOURCE = 'title' 
•アーティクルのタイトルから、slugを生成 
•日本語のタイトルだと、カオスなURLに 
:title: Zipファイル一個で実行可能なPythonアプリケー ションを作ってみる 
ziphuairu-ge-deshi-xing-ke-neng- napythonapurikeshiyonwozuo-tsutemiru.html 
•SLUGIFY_SOURCE = 'basename' なら、ファ イル名からslugを作成できる
スタティックファイルのコピー先 
31 
EXTRA_PATH_METADATA = { 
'images/favicon.ico': {'path': 'favicon.ico'}, 
} 
EXTRA_PATH_METADATAで、ファイルを配 置するパスを指定する
フォーム 
Python関連ニュースなどの登録 
------------------------- 
:url: news/submit.html 
:save_as: news/submit.html 
:category: news 
ニュース登録フォーム 
++++++++++++++++++ 
.. raw:: html 
<form method="POST" action="/cgi-bin/submit_news.py"> 
<p> 
<label>タイトル <i>(必須)</i></label> 
<input name="title" id="input_title" size=80> 
<span class='form_sample'> 例: Python関連書籍 出版のお知らせ 
32 
submit_news.rst
www.python.jp 
33 
https://github.com/pyjug/pelican.python.jp

More Related Content

What's hot

Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Masahito Zembutsu
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドktateish
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -onozaty
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPFShuji Yamada
 
Unity In App Purchase (IAP)の使い方
Unity In App Purchase (IAP)の使い方Unity In App Purchase (IAP)の使い方
Unity In App Purchase (IAP)の使い方Makoto Ito
 
KubeClarity - CNCF Webinar.pptx
KubeClarity - CNCF Webinar.pptxKubeClarity - CNCF Webinar.pptx
KubeClarity - CNCF Webinar.pptxLibbySchulze
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...Tatsuya Watanabe
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Masahito Zembutsu
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテストKLab Inc. / Tech
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門土岐 孝平
 

What's hot (20)

Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンドコンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
 
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
Apache Hadoop & Hive 入門 (マーケティングデータ分析基盤技術勉強会)
 
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
 
Guide To AGPL
Guide To AGPLGuide To AGPL
Guide To AGPL
 
Unity In App Purchase (IAP)の使い方
Unity In App Purchase (IAP)の使い方Unity In App Purchase (IAP)の使い方
Unity In App Purchase (IAP)の使い方
 
Gstreamer Basics
Gstreamer BasicsGstreamer Basics
Gstreamer Basics
 
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門するKeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
 
KubeClarity - CNCF Webinar.pptx
KubeClarity - CNCF Webinar.pptxKubeClarity - CNCF Webinar.pptx
KubeClarity - CNCF Webinar.pptx
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
 
Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技Docker 9 tips~意外と知られていない日常で役立つ便利技
Docker 9 tips~意外と知られていない日常で役立つ便利技
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテストゴリラテスト  モバイルゲームのUIを自動的に検出・操作する モンキーテスト
ゴリラテスト モバイルゲームのUIを自動的に検出・操作する モンキーテスト
 
OpenID Connect入門
OpenID Connect入門OpenID Connect入門
OpenID Connect入門
 

Similar to Pelicanによる www.python.jpの構築

Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botdcubeio
 
debexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはkenhys
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of PythonTakanori Suzuki
 
Programming AWS with Python
Programming AWS with Python  Programming AWS with Python
Programming AWS with Python Yasuhiro Matsuo
 
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらsoishino
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門Tomoya Kawanishi
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大openrtm
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
Getting Started with Graph Database with Python
Getting Started with Graph Database with PythonGetting Started with Graph Database with Python
Getting Started with Graph Database with Pythonロフト くん
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころJunya Hayashi
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力ThinReports
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてTakahiro Kambe
 
Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018Takayuki Shimizukawa
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうTakahiro Kambe
 
ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01Takeshi Komiya
 
OSS開発勉強会-01B
OSS開発勉強会-01BOSS開発勉強会-01B
OSS開発勉強会-01BKohei KaiGai
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验Ryan Poy
 
Metahub for github
Metahub for githubMetahub for github
Metahub for githubSuguru Oho
 

Similar to Pelicanによる www.python.jpの構築 (20)

Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
debexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするには
 
「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python「Python言語」はじめの一歩 / First step of Python
「Python言語」はじめの一歩 / First step of Python
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Programming AWS with Python
Programming AWS with Python  Programming AWS with Python
Programming AWS with Python
 
ドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながらドキュメントの継続的改善―Sphinxを使いながら
ドキュメントの継続的改善―Sphinxを使いながら
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大160705-03 RTミドルウエア講習会・名城大
160705-03 RTミドルウエア講習会・名城大
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
Tekton 入門
Tekton 入門Tekton 入門
Tekton 入門
 
Getting Started with Graph Database with Python
Getting Started with Graph Database with PythonGetting Started with Graph Database with Python
Getting Started with Graph Database with Python
 
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころPython におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Contao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えてContao Open Source CMS / Contao 3.3を越えて
Contao Open Source CMS / Contao 3.3を越えて
 
Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018Sphinx customization for OGP support at SphinxCon JP 2018
Sphinx customization for OGP support at SphinxCon JP 2018
 
Contao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こうContao Open Source CMS / 3.3と、その向こう
Contao Open Source CMS / 3.3と、その向こう
 
ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01ドキュメントの話、しませんか? #428rk01
ドキュメントの話、しませんか? #428rk01
 
OSS開発勉強会-01B
OSS開発勉強会-01BOSS開発勉強会-01B
OSS開発勉強会-01B
 
Sohu邮箱的python经验
Sohu邮箱的python经验Sohu邮箱的python经验
Sohu邮箱的python经验
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 

More from Atsuo Ishimoto

NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】Atsuo Ishimoto
 
行列演算とPythonの言語デザイン
行列演算とPythonの言語デザイン行列演算とPythonの言語デザイン
行列演算とPythonの言語デザインAtsuo Ishimoto
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Atsuo Ishimoto
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cythonAtsuo Ishimoto
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
Python3と向かい合ってみる
Python3と向かい合ってみるPython3と向かい合ってみる
Python3と向かい合ってみるAtsuo Ishimoto
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理Atsuo Ishimoto
 
Pythonのガベージコレクション
PythonのガベージコレクションPythonのガベージコレクション
PythonのガベージコレクションAtsuo Ishimoto
 
Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29Atsuo Ishimoto
 
String representation in py3k
String representation in py3kString representation in py3k
String representation in py3kAtsuo Ishimoto
 

More from Atsuo Ishimoto (14)

Pythonの紹介
Pythonの紹介Pythonの紹介
Pythonの紹介
 
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
NumPyの歴史とPythonの並行処理【PyData.tokyo One-day Conference 2018】
 
行列演算とPythonの言語デザイン
行列演算とPythonの言語デザイン行列演算とPythonの言語デザイン
行列演算とPythonの言語デザイン
 
Django pgroonga
Django pgroongaDjango pgroonga
Django pgroonga
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
python.jpの使い方
python.jpの使い方python.jpの使い方
python.jpの使い方
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
Python3と向かい合ってみる
Python3と向かい合ってみるPython3と向かい合ってみる
Python3と向かい合ってみる
 
Pythonのシグナル処理
Pythonのシグナル処理Pythonのシグナル処理
Pythonのシグナル処理
 
Pythonのガベージコレクション
PythonのガベージコレクションPythonのガベージコレクション
Pythonのガベージコレクション
 
Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29Slide at PyCon mini JP on 2011/1/29
Slide at PyCon mini JP on 2011/1/29
 
String representation in py3k
String representation in py3kString representation in py3k
String representation in py3k
 

Recently uploaded

動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Componentsokitamasashi
 
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxivanwang53
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ivanwang53
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンivanwang53
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元ivanwang53
 
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]Taka Narita
 

Recently uploaded (6)

動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components動的 & 非同期コンポーネント / Dynamic & Async Components
動的 & 非同期コンポーネント / Dynamic & Async Components
 
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docxWindows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
Windows Defenderのフル・クイック・カスタム・オフラインスキャンを実行する方法.docx
 
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
ダウンロードがダウンロード(Downloads)フォルダに表示されない」問題の対処法
 
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーンWindowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
Windowsアップデート後の黒い画面を修正する方法|データ復元|ブラックスクリーン
 
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
Windows 10、Windows 11の付箋を簡単に復元する6つの方法|データ復元
 
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
あらゆる通信環境で切れない「ネットモーション」のモバイルアクセス [NetMotion]
 

Pelicanによる www.python.jpの構築

  • 1. Pelican による www.python.jp の構築 2014/9/13 PyCon JP 2014 Atsuo Ishimoto
  • 2. 自己紹介 2 いしもと 石本 敦夫 あつお python.jp 管理人
  • 3. ㈱ UNCOVER TRUTH勤務 3 社員募集中!
  • 4. Python本を書きました 4 Python文法詳解 ← NEW パーフェクトPython
  • 5. 5 python.jp の歴史 Zope(2001年9月 ~) Zope2 Squishdot DTML
  • 6. python.org専用ツール (2012/9 ~) 6 YAML reStructuredText mako
  • 7. Pelican (2014/5 ~) 7 reStructuredText Markdown AsciiDoc jinja2
  • 8. Pelican Static Site Generator, Powered by Python 8 コンテンツ (reStructuredText, Markdown., HTML…) テンプレート (jinj2) HTML RSS CSS etc., http://docs.getpelican.com 設定ファイル
  • 10. コンテンツ 10 ブログのエントリ 日付・カテゴリ・タグなどを設定 サイトを構成する静的なページ 著者紹介、Aboutなど アーティクル ページ
  • 11. テンプレート 11 Pelican テーマ集 https://github.com/getpelican/pelican-themes
  • 12. Pelicanのインストール 12 pip3 install pelican Markdownを使う場合は、 pip3 install Markdown を追加
  • 13. Pelicanサイトの作成 13 $ pelican-quickstart Welcome to pelican-quickstart v3.3.0. This script will help you create a new Pelican-based website. Please answer the following questions so this script can generate the files needed by Pelican. Where do you want to create your new web site? [.] > What will be the title of this web site? Test Site > Who will be the author of this web site? Atsuo Ishimoto … pelican-quickstart コマンドでひな形を作成
  • 14. pelican-quickstart で生成されるファイル 14 プロジェクトディレクトリ ├── content 作成した記事を格納 │ └── (pages) ├── output 記事を変換したHTMLなど │ └── (html, css, etc.,) ├── develop_server.sh テスト用HTTPサーバ ├── fabfile.py サイト構築用fabfile ├── Makefile ビルド用 Makefile ├── pelicanconf.py 設定ファイル └── publishconf.py 本番環境用設定ファイル
  • 15. contentディレクトリ 15 content │ ├─ アーティクルA.rst 作成した記事 ├─ カテゴリ1 カテゴリ1の記事 │ ├── アーティクルA.rst │ └── アーティクルB.rst ├─ カテゴリ2 格納カテゴリ2の記事 │ └── アーティクルC.rst ├─ pages ページを格納 │ ├── ページ1.rst │ └── ページ2.rst ├─ images 画像ファイル等 │ └── picture1.png
  • 16. reStructuredText 16 Python公式ドキュメントで採用 高機能 拡張性 デフォルト設定が、Pythonドキュメントの記述用 西洋語向けのマークアップ
  • 17. Markdown 17 Githubなどでおなじみ シンプル・覚えやすい
  • 18. 記事のメタデータ 18 記事タイトル ############## :date: 2014-09-14 12:00 :tags: Python, プレゼン :category: python :slug: file_name rstのサンプル 本文中や、ファイル名にメタデータを記述 •タイトル •日付 •タグ •著者 •urlのパス •etc
  • 19. メタデータでURL/ファイル名を指定 19 記事タイトル ############## :save_as: path/to/save/index.html :url: path/to/save/ output/path/to/save/index.html を作成 ページへのリンクは、 path/to/save/ となる
  • 20. カテゴリ 20 pelicanconf.py で設定 DEFAULT_CATEGORY = "blog" メタデータで指定 記事タイトル ############## :category: python ディレクトリで指定 Contentディレクトリの、サブディレ クトリ名をカテゴリとする ex) ./content/python/article.rst デフォルトカテゴリ
  • 21. ページ間リンク 21 ページ間リンクの記述方法 ######################### rstでの `相対リンク <{filename}page1.rst>`_ と `絶対リンク <{filename}/page1.rst>`_
  • 22. 構文ハイライト 22 .. code-block:: python3 def say(): print('hello') Pygmentsで構文ハイライト
  • 23. ページ 23 作成方法 content/pages ディレクトリに作成 ブログエントリ以外の、Aboutや著作権表示など 表示方法 •DEFAULT_CATEGORY = True ならリンクを表示 •リンクしないページは、メタデータで :status: hidden
  • 24. スタティックファイル 24 content │ ├─ images │ └── picture1.png ./content/imagesに配置 ./output/images/ にコピーされる ./content/images/picture1.png → ./ountput/images/picture1.png
  • 25. サイトのビルド 25 コマンド 機能 make html プロジェクトをローカル環境用にビルドします (pelicanconf.pyを実行) make publish プロジェクトをプロダクション環境用にビルド します (pelicanconf.py + publishconf.py を実行) make regenerate ファイルの変更を検出すると自動的にビルド します make devserver develop_server.sh を実行し、プロジェクト の自動ビルド・テスト用HTTPサーバを起動 します
  • 26. 設定ファイル 26 pelicanconf.py publishconf.py •make html と make publish で使用 •make publish でのみ使用 •プロダクション環境用
  • 27. テーマ 27 pelican-themesコマンド 指定方法 pelicanconf.py で、ディレクトリ名を指定 THEME = "my_theme" テーマ設定コマンド $ pelican-themes --list notmyidea two-column@ simple
  • 28. 記事インデックスページ 28 インデックスページ /index.html すべてのアーティクルのインデックス カテゴリ別インデックスページ /category/カテゴリ名/index.html カテゴリごとに作成される、アーティクルの インデックス その他、タグ別・ 著者別・年別など
  • 29. アーティクルの保存パスとURL 29 ARTICLE_SAVE_AS 【例】 ARTICLE_SAVE_AS = 'articles/{slug}/index.html' アーティクルの保存ディレクトリを指定 ARTICLE_URL 【例】 ARTICLE_URL = 'articles/{slug}/' アーティクルのURLを指定
  • 30. SLUGIFY_SOURCE = 'basename' 30 •デフォルトは、SLUGIFY_SOURCE = 'title' •アーティクルのタイトルから、slugを生成 •日本語のタイトルだと、カオスなURLに :title: Zipファイル一個で実行可能なPythonアプリケー ションを作ってみる ziphuairu-ge-deshi-xing-ke-neng- napythonapurikeshiyonwozuo-tsutemiru.html •SLUGIFY_SOURCE = 'basename' なら、ファ イル名からslugを作成できる
  • 31. スタティックファイルのコピー先 31 EXTRA_PATH_METADATA = { 'images/favicon.ico': {'path': 'favicon.ico'}, } EXTRA_PATH_METADATAで、ファイルを配 置するパスを指定する
  • 32. フォーム Python関連ニュースなどの登録 ------------------------- :url: news/submit.html :save_as: news/submit.html :category: news ニュース登録フォーム ++++++++++++++++++ .. raw:: html <form method="POST" action="/cgi-bin/submit_news.py"> <p> <label>タイトル <i>(必須)</i></label> <input name="title" id="input_title" size=80> <span class='form_sample'> 例: Python関連書籍 出版のお知らせ 32 submit_news.rst