SlideShare a Scribd company logo
1 of 16
Download to read offline
DJANGO製CMS
WAGTAILでBLOGを
作ってみる
⾃分のブログをリニューアルする際にDJANGO製CMSである
WAGTAILを選び、GATSBYJSで静的HTML化しつつさらにはサーバー
レスにも⼿を出すというあくなき挑戦の記録。
BY IOSIF TAKAKURA
⾃⼰紹介
• 1981年、東京⽣まれ。
• 修⼠(史学)。専攻は中国とモンゴルの祭祀史。
• 発達障がい当事者。ADHDと⾃閉スペクトラム、多分両⽅ある。
• プログラミング歴は社会に出てから。
• 現在の所属:株式会社サザビーリーグHR
• Pythonは今回の個⼈開発がほぼ始めて。
• 簡単な分析系プログラムは書いたことがある。
• 業務での開発では主に.NET(C#)を使⽤。
• 他に興味あるのはRuby、JavaScript/TypeScriptなど。
• 同⼈で評論も書いていたり。
• ちょっとカウボーイの気がある……
今回のキーワード
$30
30秒
5分
今回の⽬的
• Middleman(Ruby製)で作ったブログのリニューアル
• Markdownをファイルで書く⽅式からの脱却
• モバイル環境でMarkdownのファイル管理はやりづらい
• 将来的に執筆者を増やす際、CMSがあると便利
• 技術的負債がたまりにたまっていたのでリプレース
• ⾃社HPリニューアルに向け技術PR
• やっていることは現⾏ブログと同じ
• リニューアルの計画がある模様
現在のブログサイト。Middleman製。
https://huideyeren.info/
WAGTAILとは?
• Django製CMS
• 制作にはDjangoの知識が必要
• 基本的にModelを書けばCMSになるようになっている。
• 今回もほとんどModelの編集で事⾜りた
• 拡張もDjangoの流儀に則って⾏えば⼗分
• Djangoベースなので情報が得やすい
• akiyokoさんの『現場で使えるDjangoの教科書』シリーズに
はお世話になりました
• ⽇本語化、いやi18n対応されている
• ITリテラシーと英語⼒が⼗分でない⼈にも使いやすい
• その気になればHeadless CMSにする事も可能
• 今回はここが最重要
• モバイルでも使えないことはない
今回の構成図
AWS Cloud
VPC
Amazon API
Gateway
AWS
Lambda
Amazon Aurora
Serverless
Amazon Simple
Storage Service
NetlifyReaders
Writer
Trigger at
11:30
Request for build
WAGTAILを選んだ理由
ちょうどよいCMS
がWagtailだった
Pythonで何か作ってみる
のにちょうどよい
Headless CMSにできるの
にちょうどよい
Django Rest Frameworkも
あるし、APIとして使うの
は⼗分
他の⾔語で要件を満
たすCMSがなかっ
た
Rubyでは良さそうな物が
なかった
ちょっとSquidex(.NET
製)が気になったが採⽤
しなかった
運⽤代はかかっても
よいのでインストー
ル型の⽅がよい
でも、かかって$30ぐらい
までが理想
HEADLESS CMSの⻑所と短所
PROS
• 表⽰とバックエンドを分離できる
• 疎結合になるので、技術の進歩に追随しやすい
• JavaScriptエコシステムの恩恵を受けやすい
• サーバーサイドがサーバーレスだから
• バックエンドにアクセスするのは編集者のみとする事で、
サーバーレスのコストダウンの恩恵を受けられる
• フロントエンドは静的コンテンツのみを配信する設計とする
ことで、負荷に耐えやすい構成を取ることができる
CONS
• 設計が⼤変になる
• Python側で⾏うかJavaScript側で⾏うか考えなければいけない
• 連携させることによって複雑さが増す
• Pythonだけではなく、JavaScriptやアプリ開発の知識が
別途必要になる
• フロントエンドとの連携がうまくいかないと使い物に
ならない
サーバーレスへの挑戦
• 更新頻度はそれほど⾼くない
• どうせ⽉に1~2回ぐらいしか更新しないし……
• 常時サーバーを動かしておくのはコストがかかる
サーバーレスアーキテクチャーの採⽤を決定
(ただし、負荷に関しては考慮しない)
• 開発中の⽉額コスト:$13~$14
• 運⽤時の⽉額コスト:$30以内におさまることを想定
• ⽉額コスト上限:$40までに収まってくれればよい
そこで、WSGIアプリケーションをサーバーレス化できる
Zappaを採⽤することで開発体験が普通のDjango開発からそ
れないことを⾒込んだ。
ZAPPAとAPI GATEWAY、
そしてLAMBDA、
AMAZON AURORA SERVERLESS
• ZappaはAWS LambdaとAPI Gatewayを使って、WSGIに
対応するアプリケーションをAWSにデプロイできる
ツール
• 当然のことながらDjangoにも対応
• コマンドを実⾏することによってデプロイ
• Djangoのマイグレーション等も拡張でできる
• ただし、デバッグがめんどくさい
• ログを吐いて確認していくしかない
• API Gatewayにある30秒制限がきつい
• 30秒かかるとリクエストは失敗になってしまう
• なおDBはAmazon Aurora Serverlessを採⽤
• Serverlessタイプなのでそんなに使わなければ安い!
• リクエストを受けると約30秒のタイムラグの後起動するが、
最後のリクエストから5分経つと⽌まってしまう
• なのでDBが⽌まっているときに管理画⾯にアクセスする
と最初の1回は必ずエラーになる!!
GRAPHQLとの格闘
• WagtailとGatsbyの間のインターフェイスはGraphQLを
使⽤することに
• WagtailでGraphQLを扱うプラグインはwagtail-graphql-
api (https://pypi.org/project/wagtail-graphql-api/)を使⽤
• これもModelにGraphQLで扱う項⽬を書き込む事でGraphQLの
スキーマに加えることができる。
• なので、最初Django Rest Frameworkを使ったときよりサー
バーサイドの実装は楽になった
• が、⼤量のSQL⽂、とりわけSelect⽂が出⼒されてい
る
• GraphQLのクエリをDjangoのO/R Mapperが上⼿に作れていな
い可能性がある
• パフォーマンスに関わる問題なので、PyCon JP後に改めて対応
したい。
• とりわけ記事が多くなってくると30秒でリクエストを完
遂できるかが⼼配
• ⾃分の書いたコード以外のところに原因があるとしたら、
できればコントリビュートしたい
責務を分ける
• サーバーサイドとフロントエンドで分割されたシステ
ムを作るには、サーバーサイドで何をするか、フロン
トエンドで何をするかしっかり決めないといけない
• サーバーサイド(Wagtail)でする事
• 全ての記事の内容を保持
• ブログ記事以外のURL管理
• 画像やドキュメントなどの静的ファイルの保持
• GraphQL APIの配信
• フロントエンドサイド(Gatsby)でする事
• HTML、CSS、JavaScript、Markdownのレンダリング
• ブログ記事のURL管理
• 年別、⽉別の記事⼀覧の⽣成
• RSSの⽣成
• このRSSをもとにSNSに新着記事を投稿する
• sitemap.xmlの⽣成
クライアントサイドとの連携
• 当初は、記事をWagtailに登録したらWebhooksを
Netlifyに投げる予定だった。
• Wagtailに内蔵されている、DjangoのSignalsを使うつもりだった
• しかし、リクエストが⾶ばない……
• AWS LambdaでVPCを使っている場合は外部のインターネット
に送る通信ができないと判明
• NAT Gatewayを使えば通信できるようにはなるが……
• これだけに⽉$30かける余裕はない!
• これだけで当初の予算を軽くオーバーしてしまう
• そこで、Wagtailから即時にWebhooksを送ることをあ
きらめた
• NetlifyはURLにPOSTリクエストを投げるとビルドが⾛る仕様
• ということは即時の更新が必要でなければ、Wagtailから
直接Webhooksを送らなくても良い
• Google Apps Scriptで毎⽇11:28と11:30にリクエストを送る
ことで1⽇1回定期的に更新されるようにした
クライアントサイドの進捗と今後
の⽅向性
• 正直、進捗ダメです
• Wagtailサイドはほぼ出来上がっていても、Gatsbyに関しては
まったくと⾔っていいほどできていない
• テンプレートへのデータの連係ができた程度
• デザインすらまだできていない
• できればユニバーサルWebデザインを⼼がけたい
• けっこう多くのことをGatsby頼りにする予定
• そもそも、1回Reactに挑戦しようとして痛い⽬にあっ
た経験あり
• 業務でアンケートフォームを作ったときに採⽤しようとした
• その時は完全に感覚だけで進もうとしていた
• Reactは、概念を理解していかないと痛い⽬を⾒る
• 問題は、動きの速いフロントエンドとそのコミュニ
ティの動きにどれだけ追随できるか
技術的負債の問題をどうするか
• どうも私は技術的負債を抱えるコードを書きやすい
• 社内向けのSphinxのドキュメントを技術的負債にして
しまった悲しい過去がある
• 過去の発表『社内のマニュアルをSphinxで作ってみた』参照
• https://www.slideshare.net/iosiftakakurayusuke/sphinx-
82892226
• なのに、docstringも書けてない
• 追って対応予定
• そもそもTestが書けてない
• ⽇頃からTestを書く習慣を付けなければ……
• データの作り⽅も綿密に設計されていない
• Userクラスとは別に著者情報を持つことに
• 投稿⽇もWagtailの投稿⽇を使っていない
• インポート記事の扱いもあるのでこれは仕⽅ない
• というか、どういう情報を載せたいのか明確にならないまま
開発を始めてしまった
• フロントエンドに⾄っては未完成
PYTHONでのWEB開発に挑戦して
みてどう考えたのか?
(とりわけC#との違いとか)
• 選択肢は豊富にある感じ
• PEP-8やdocstringからのドキュメント⾃動⽣成など、
Pythonは「読まれる」コードの共有というところに重
きが置かれている感じがした
• docstring、書かなきゃなぁ……
• 現在業務で書いているC#は「レガシーコード」
• モノリシックな構造で、ユニットテストもない
• ユニットテストのないのは全て「レガシーコード」
• 今回フロントエンドとバックエンドを分けて作ったことが、
今後のシステム作りに対してよい経験になると思う
• C#の実⼒を活かすとまた違ったプログラムになる
• C#⼤統⼀理論
• クライアントもサーバーサイドもC#でまとめて開発
• コードも共有できる
• JavaScriptに頼らざるを得ない以上、JavaScriptでできる
ことはJavaScriptにやった⽅がよいと思う。
• Pythonでクライアントサイドを書くのはまだ実⽤的ではない

More Related Content

What's hot

モダンフロントエンド開発者に求められるスキルとは
モダンフロントエンド開発者に求められるスキルとはモダンフロントエンド開発者に求められるスキルとは
モダンフロントエンド開発者に求められるスキルとはTakuya Tejima
 
60分でわかった気になるISO29119 #wacate
60分でわかった気になるISO29119 #wacate60分でわかった気になるISO29119 #wacate
60分でわかった気になるISO29119 #wacateKinji Akemine
 
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Shinya Okano
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうTakuya Ueda
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門zaru sakuraba
 
Ansible AWXを導入してみた
Ansible AWXを導入してみたAnsible AWXを導入してみた
Ansible AWXを導入してみたsugoto
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようTakayuki Shimizukawa
 
Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)
Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)
Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)NTT DATA Technology & Innovation
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行gree_tech
 
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。Teppei Sato
 
ESP32開発環境まとめ
ESP32開発環境まとめESP32開発環境まとめ
ESP32開発環境まとめKenta IDA
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門Shingo Tamaki
 
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるMicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるKenta IDA
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~JustSystems Corporation
 
初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptxAkifumi Niida
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメSatoshi Takami
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
デザインのリファクタリング (慣れを大切に)
デザインのリファクタリング (慣れを大切に)デザインのリファクタリング (慣れを大切に)
デザインのリファクタリング (慣れを大切に)Yukio Andoh
 
スクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell next
スクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell nextスクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell next
スクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell nextTakahiro Kaihara
 

What's hot (20)

モダンフロントエンド開発者に求められるスキルとは
モダンフロントエンド開発者に求められるスキルとはモダンフロントエンド開発者に求められるスキルとは
モダンフロントエンド開発者に求められるスキルとは
 
60分でわかった気になるISO29119 #wacate
60分でわかった気になるISO29119 #wacate60分でわかった気になるISO29119 #wacate
60分でわかった気になるISO29119 #wacate
 
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
 
Goでこれどうやるの? 入門
Goでこれどうやるの? 入門Goでこれどうやるの? 入門
Goでこれどうやるの? 入門
 
Ansible AWXを導入してみた
Ansible AWXを導入してみたAnsible AWXを導入してみた
Ansible AWXを導入してみた
 
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けようDjango ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
 
Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)
Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)
Grafana Lokiの Docker Logging Driver入門 (Docker Meetup Tokyo #34, 2020/01/16)
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。本当のClosure Compilerをお見せしますよ。
本当のClosure Compilerをお見せしますよ。
 
ESP32開発環境まとめ
ESP32開発環境まとめESP32開発環境まとめ
ESP32開発環境まとめ
 
iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門iOSアプリ UIテスト自動化入門
iOSアプリ UIテスト自動化入門
 
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるMicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみる
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
 
初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx初学者のためのプロンプトエンジニアリング実践.pptx
初学者のためのプロンプトエンジニアリング実践.pptx
 
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
[JJUG CCC 2021 Spring]Eclipse ユーザのための VSCode のススメ
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
デザインのリファクタリング (慣れを大切に)
デザインのリファクタリング (慣れを大切に)デザインのリファクタリング (慣れを大切に)
デザインのリファクタリング (慣れを大切に)
 
スクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell next
スクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell nextスクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell next
スクラムナイト#8 地獄のデイリースクラム ~ 19時半だヨ!全員集合 ~ Daily scrum from hell next
 

Similar to Django 製 CMS Wagtail で Blog を作ってみる

Git hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかGit hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかKakigi Katuyuki
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5jToshiaki Maki
 
Cmsdou oosaka
Cmsdou oosakaCmsdou oosaka
Cmsdou oosakaonagatani
 
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオンはじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオンHajime Fujimoto
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるShuhei Iitsuka
 
a-sap08「a-blog cmsとMovable Type」
a-sap08「a-blog cmsとMovable Type」a-sap08「a-blog cmsとMovable Type」
a-sap08「a-blog cmsとMovable Type」Seiko Kuchida
 
人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2Ryohei Kamiya
 

Similar to Django 製 CMS Wagtail で Blog を作ってみる (7)

Git hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうかGit hubで雑誌記事を執筆するのは間違っているだろうか
Git hubで雑誌記事を執筆するのは間違っているだろうか
 
続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j続・Twitter bootstrap入門 #html5j
続・Twitter bootstrap入門 #html5j
 
Cmsdou oosaka
Cmsdou oosakaCmsdou oosaka
Cmsdou oosaka
 
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオンはじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオン
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
a-sap08「a-blog cmsとMovable Type」
a-sap08「a-blog cmsとMovable Type」a-sap08「a-blog cmsとMovable Type」
a-sap08「a-blog cmsとMovable Type」
 
人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2
 

More from Iosif Takakura

取り込んだネガ画像の色を変換する Python スクリプトを書いてみた
取り込んだネガ画像の色を変換する Python スクリプトを書いてみた取り込んだネガ画像の色を変換する Python スクリプトを書いてみた
取り込んだネガ画像の色を変換する Python スクリプトを書いてみたIosif Takakura
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドIosif Takakura
 
scikit-image でフィルムスキャナで取り込んだネガ画像をポジ化する
scikit-image でフィルムスキャナで取り込んだネガ画像をポジ化するscikit-image でフィルムスキャナで取り込んだネガ画像をポジ化する
scikit-image でフィルムスキャナで取り込んだネガ画像をポジ化するIosif Takakura
 
Zappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるZappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるIosif Takakura
 
Django と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMSDjango と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMSIosif Takakura
 
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメントSphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメントIosif Takakura
 
DocFXで脱Excel方眼紙!
DocFXで脱Excel方眼紙!DocFXで脱Excel方眼紙!
DocFXで脱Excel方眼紙!Iosif Takakura
 
技術的負債との戦い方
技術的負債との戦い方技術的負債との戦い方
技術的負債との戦い方Iosif Takakura
 
社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみたIosif Takakura
 
C#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみたC#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみたIosif Takakura
 
Sphinxで同人誌を書いてみた
Sphinxで同人誌を書いてみたSphinxで同人誌を書いてみた
Sphinxで同人誌を書いてみたIosif Takakura
 
ようこそ先輩 - 2014年8月2日
ようこそ先輩 - 2014年8月2日ようこそ先輩 - 2014年8月2日
ようこそ先輩 - 2014年8月2日Iosif Takakura
 
Osuncが終わったら帰りは警察署に行きましょう
Osuncが終わったら帰りは警察署に行きましょうOsuncが終わったら帰りは警察署に行きましょう
Osuncが終わったら帰りは警察署に行きましょうIosif Takakura
 

More from Iosif Takakura (13)

取り込んだネガ画像の色を変換する Python スクリプトを書いてみた
取り込んだネガ画像の色を変換する Python スクリプトを書いてみた取り込んだネガ画像の色を変換する Python スクリプトを書いてみた
取り込んだネガ画像の色を変換する Python スクリプトを書いてみた
 
Marp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライドMarp for VS Code で作る PowerPoint スライド
Marp for VS Code で作る PowerPoint スライド
 
scikit-image でフィルムスキャナで取り込んだネガ画像をポジ化する
scikit-image でフィルムスキャナで取り込んだネガ画像をポジ化するscikit-image でフィルムスキャナで取り込んだネガ画像をポジ化する
scikit-image でフィルムスキャナで取り込んだネガ画像をポジ化する
 
Zappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるZappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみる
 
Django と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMSDjango と Wagtail で作る Headless CMS
Django と Wagtail で作る Headless CMS
 
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメントSphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメント
 
DocFXで脱Excel方眼紙!
DocFXで脱Excel方眼紙!DocFXで脱Excel方眼紙!
DocFXで脱Excel方眼紙!
 
技術的負債との戦い方
技術的負債との戦い方技術的負債との戦い方
技術的負債との戦い方
 
社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた社内のマニュアルをSphinxで作ってみた
社内のマニュアルをSphinxで作ってみた
 
C#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみたC#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみた
 
Sphinxで同人誌を書いてみた
Sphinxで同人誌を書いてみたSphinxで同人誌を書いてみた
Sphinxで同人誌を書いてみた
 
ようこそ先輩 - 2014年8月2日
ようこそ先輩 - 2014年8月2日ようこそ先輩 - 2014年8月2日
ようこそ先輩 - 2014年8月2日
 
Osuncが終わったら帰りは警察署に行きましょう
Osuncが終わったら帰りは警察署に行きましょうOsuncが終わったら帰りは警察署に行きましょう
Osuncが終わったら帰りは警察署に行きましょう
 

Django 製 CMS Wagtail で Blog を作ってみる