2020/9/12(土)から開催される「技術書典9@技術書典オンラインマーケット」まであと1ヶ月となりましたが、そこで「あきよこブログ」として5回目のサークル参加をします。
4冊目の新刊は『現場で使える Django 管理サイトのつくり方』です。
安心してください。今回も Django 本ですよ~ 😉
タイトルからお察しの通り、Django の管理サイト(Django Admin)だけにフォーカスした、ニッチでオンリーワンな一冊 です。注目すべきはイカレたその分厚さ。「Django」という Python 製の Webフレームワークの中の「管理サイト」という一機能だけに特化したオンリー本でありながら、本文 152ページの大ボリュームに仕上がっています。
技術書典9の開催まであと1ヶ月あるのですが、実は すでに執筆は終わっていて、あとは入稿するだけという状況 です。というのも、この本は2月・3月に開催予定だった「技術書典8」で頒布するはずだったのですが、新型コロナウィルスの感染拡大防止に伴ってイベント自体がなくなってしまった(その後オンラインで開催)のと子供の出産が4月に控えていたため、8割ほど完成させていたにもかかわらず途中で放置してしまっていたのでした。そしてこの度、育休を取れたのをきっかけに無事執筆を終えることができたという次第なのです。
そしてこの度、ヒマだったので 事前にアンケート調査をしてみました(アンケートはすでに締め切っています)。
皆さま、ご協力ありがとうございました。アンケートの結果発表を兼ねて、新刊『現場で使える Django 管理サイトのつくり方』がどんな本なのか? どんな課題を解決してくれるのか? について解説します。
どんな本なの?
皆さんは、管理サイト(Django Admin)を使っていますか?
おそらく Django を利用している開発者の ほとんどが「イエス」と答えるでしょう。 実際、事前アンケートでは Django 利用者の9割近くが「いつも使っている」あるいは「たまに使っている」と回答しています。
しかしながら、その仕組みをきちんと理解せずに使っている人が意外と多いのではないでしょうか。 管理サイトは Django の仕組みや設計思想をうまく活かしたアプリになっており、管理サイトを理解することはそれらを知る手助けにもなります。これからも Django を長く使っていくのであれば、管理サイトを深く知っておくことは必ず強力な武器になるでしょう。
また、管理サイトはあらゆるモデルに対応できるように汎用的に作られており、ある程度のカスタマイズも考慮されていて幅広いユースケースで利用することができます。実際の現場では「開発中のテストデータ投入」や「システム利用ユーザーの情報管理」で利用しているケースが多いようです。
管理サイトには利用するメリットがたくさんありますが、これについても事前にアンケートを採ってみました。
結果を見ると、デフォルトで使える点やほんの数行書くだけでモデルの CRUD 機能が追加できる点が特に高く評価されていて、お手軽で簡単に使えるというのが管理サイトの大きなメリットになっています。
しかし、当然ながら管理サイトは「万能」ではありません。たとえば「少しカスタマイズすれば一般ユーザー向けの画面として使えそう」と目論んでいたら、後になって管理サイトの特性や限界を無視した要望がいっぱい出てきて余計に工数が膨らんでしまったというのはありがちな失敗パターンです。
メリットばかりがクローズアップされがちな管理サイトですが、ここで敢えて負の面に目を向けてみます。次のアンケート結果を見てください。
「ある程度以上のカスタマイズになると難易度が上がる」や「簡単にカスタマイズできるかどうかのジャッジにノウハウや調査が必要」など、カスタマイズ系のデメリットが圧倒的に多いことが分かります。「日本語の情報が少ない」や「仕様を把握するのにひと苦労」が多いのは、困ったときのヒントが得られにくいという状況を表しているものと考えられます。これらを踏まえると、管理サイトをカスタマイズする場合は 事前にその限界(基本仕様でどこまでできるのか)とカスタマイズの特性(どんなカスタマイズが簡単でどんなカスタマイズが難しいのか)を十分に把握しておく必要があるでしょう。
そこで本書では、いつも使う管理サイトだからこそ知っておきたい現場レベルの知識やノウハウについて、次の3つのポイントを中心に解説していきます。
- 管理サイトの基本仕様
- 管理サイトの仕組みを活かしたカスタマイズ戦略
- カスタマイズ後のテスト
本書を読めば、管理サイトの基本から応用に至るまでの幅広い知識が得られ、Django への理解がさらに深まるでしょう。
対象読者
本書の読者としては、
- 管理サイト(Django Admin)のことをもっと知りたい方
- これから管理サイトのカスタマイズをしようとしている方
を想定しています。
特に、これから管理サイトのカスタマイズをしようとしている方には是非とも読んでほしい 内容になっています。
もし管理サイトに興味がなくても、
- ユーザーモデルやパーミッションの仕組み
- テンプレートや静的ファイルのルックアップの仕組み
- Selenium を使ったブラウザテストの書き方
などに興味があれば刺さるかもしれません。
最低限必要な知識としては「Django の仕組みが何となく理解できていること」です。Django 公式チュートリアル や Django Girls チュートリアル をひと通り終えたくらいであれば問題はないでしょう。また、拙著『現場で使える Django の教科書《基礎編》』を読み終えたくらいの知識があれば万全です。
以降で、章ごとの読みどころを紹介していきます。
第1章: 管理サイトの基本仕様
管理サイトは意外と機能が豊富で、その仕様を把握するのにもひと苦労です。そこで本書では手始めに、管理サイトの基本仕様を詳しく紹介しています。
まず、管理サイトの全体像が捉えやすいように画面遷移図(紙面サンプル ① を参照)を示しています。こういった画面遷移図ってググっても何故かなかなか見つからないんですよね。。
その後、Django 初心者向けに利用手順を紹介したあとで、管理サイトが利用している Django の仕組みである「ユーザーモデル」「パーミッションによるアクセス制御」「変更履歴」について解説しています。パーミッションあたりはあまり理解していない人も多いのではないでしょうか。
最後に、画面ごとに詳細な説明をしています。管理サイトは普段は気付かないような隠れ機能があったりするので、手の込んだ仕掛けに驚かされるでしょう。
- 第1章: 管理サイトの基本仕様
- 1.1: 管理サイトとは
- 1.2: 基本機能
- 1.3: 利用手順
- 1.4: ユーザーモデルについて
- 1.5: パーミッションによるアクセス制御
- 1.6: 変更履歴について
- 1.7: 各画面の詳細説明
- 1.8: まとめ
《 紙面サンプル ① 》
《 紙面サンプル ② 》
第2章: 管理サイトのカスタマイズ
この章で気を付けたのは、なるべく図を多くするということです。公式ドキュメントや特に Stack Overflow などで検索した場合は図が無かったりするので、「一体どんなカスタマイズができるのかイメージが掴めない」ということが多いのです。そういう不満を払しょくするために、このカスタマイズをするとどんなことが実現できるのかがビジュアルで掴めるようにしてみました。
そしてこの章の目玉は、カスタマイズに利用できる AdminSite と ModelAdmin のクラス変数とメソッドの一覧表(紙面サンプル ④ を参照)と、管理サイトで使われるテンプレートファイルの一覧表です。こういうのがあると便利だなという気持ちと書くのがめちゃくちゃ大変だなという気持ちで随分葛藤しましたが、今となっては書いて正解だったと感じています。
- 第2章: 管理サイトのカスタマイズ
- 2.1: 内部構造とカスタマイズ方針
- 2.2: AdminSite を利用したカスタマイズ
- 2.3: ModelAdmin を利用したカスタマイズ
- 2.4: テンプレートのカスタマイズ
- 2.5: CSS のカスタマイズ
- 2.6: Django パッケージを使ったカスタマイズ
- 2.7: まとめ
《 紙面サンプル ③ 》
《 紙面サンプル ④ 》
第3章: 管理サイトのテスト
管理サイトのカスタマイズをする場合は AdminSite や ModelAdmin のクラス変数、メソッドをオーバーライドすることになりますが、それらの断片化したコードだけをユニットテストして例えカバレッジを100%にしたところで、機能が想定通りに動作することを保証したことにはなりません。そんなわけで、管理サイトのテストでは画面ごとにビューのテストをした上で、「lxml」などのパッケージを利用してレンダリングされた HTML から要素をパースして検証するなどの工夫が必要になります。第3章の前半では、そういったテストケースのコード例を挙げて解説しています。
章の後半では、Selenium を使ったブラウザテストについて解説しています。Selenium を使ったテストでは通常、テンプレートの HTML 要素自体や class 属性に変更が加わるとテスト側にも修正を加えねばならず保守が大変になりますが、管理サイトはテンプレートが固まっているためブラウザテストとの相性がよいです。特に、管理サイトでは、Selenium によるブラウザテストをするための AdminSeleniumTestCase が提供されています。章の最後に、このクラスを継承したテストコード例を紹介しています。
- 第3章: 管理サイトのテスト
- 3.1: テスト方針
- 3.2: 通常のユニットテスト
- 3.3: Selenium によるブラウザテスト
- 3.4: まとめ
《 紙面サンプル ⑤ 》
《 紙面サンプル ⑥ 》
頒布本情報
現在、BOOTH で紙版、Amazon で電子版が購入可能です。
■ BOOTH
現場で使える Django 管理サイトのつくり方(技術書典9バージョン) | BOOTH
booth.pm
■ Amazon
現場で使える Django 管理サイトのつくり方 | Kindleストア | Amazon
www.amazon.co.jp
技術書典マーケットでは技術書典9 期間終了後、販売を一時停止しています。
書評
Django のイベント関係でいつもお世話になっている方々に献本させていただきました。その書評をいくつか紹介させていただきます。
.@aki_yok さんに『現場で使えるDjango管理サイトのつくり方』を献本していただきました。図を使いながら基本仕様やカスタマイズ、テストまでカバーしていて、Django Adminでどこまでできるのか?が知れる本だなーと思いました。 #技術書典 https://t.co/HXnJLliOyt pic.twitter.com/rBEu3rzIn5
— かしゅー (@kashew_nuts) September 12, 2020
まさに「管理サイトでどこまでできるのか?」を把握するためにも有用な本だと自負しています。今回の本は図表が多いので、152ページだけど読み流しやすいはず。セキュリティ対策のところは最後の最後に追記したところなので追記しておいてよかったです 😄
「Django完全に理解した」勢は絶対オススメです。これがあればDjangoの管理サイトのほんとの便利さが理解できます。
— 初代しんせいたろう🐷 (@shinseitaro) September 12, 2020
「Djangoチョットワカル勢」にとっても、え?マジ?そんな使い方あったの?早く言ってよー!って(自分が知らなかっただけなのに)ツッコミたくなるとおもいます😆
「管理サイト」は本当に便利なんですよね。スクレイピングしたデータを保存して画面で操作するとか、そのためだけに Django を使うのもアリだと思ってます。
著者の .@aki_yok さんから献本いただきました。
— むらおか (@jbking) September 12, 2020
管理サイト(admin)もDjango本体からしてみれば一つのアプリなんですが、そのアプリが結構複雑なつくりになってるので、その取り扱い説明書として良い本でした。
フックポイントとテンプレート継承の順などが整理されているので pic.twitter.com/u5lZwNYT8m
管理サイトはちょっとしたカスタマイズまでは簡単なのですが、それ以上のことをやろうとすると少し大変なんですよね。そんなときにこの本があれば安心ですよね 😉
id:electricSheep さんによる新刊の感想ブログです。
>「え、管理サイトのソースどこ??この2行????」
分かります…😅 これだけで動いちゃうので、いろいろカスタマイズできるとか気付かないですよね。管理サイトの網羅的な情報ってまだまだ少ないですよねぇ。
id:nikkie-ftnext さんの感想ブログです。
本にたくさん付箋紙が貼ってあったのが嬉しかったです!!
確かに DjangoGirls チュートリアル では管理サイトについてあまり触れられていないのですが、公式チュートリアルの「はじめての Django アプリ作成、その2」や「はじめての Django アプリ作成、その 7」では少し触れられています(が、ちょっと分かりにくいかもですね)。
Django の管理サイトを10年以上も前からカスタマイズしている tokibito さんの書評ブログでは、いろいろなオススメポイントを紹介していただきました。おっしゃる通り、「Djangoのチュートリアルをこなした後、次にやることを探してるひと」にもぜひ読んでいただきたいですね!
最後に
今回、いわゆる「管理サイト本」を書いた理由としては、自分の知識の整理のためということもありますが、どちらかというと Django をもっと現場に普及させたいという気持ちの方が強いです。つまり、現場で頻繁に使う管理サイトのまとまった日本語情報があれば、Django がもっと現場で使われやすくなるんじゃないか と思ったのです。
きっかけは、現場で管理サイトのカスタマイズ案件が二つ続いたことでした。そこには主にレビューで参加したのですが、「担当者が違うとこんなにも書き方が違うのか。保守が大変そうだなぁ」「わざわざこんなことしなくてもフックポイントがあるのに」「あらら、全部 Selenium テストで書いちゃったのね」などとガク然としたのです。そのときに「これを見といてね」と言えるものがなかった苦い経験から、管理サイトを少し真面目に使おうとするときに現場に一冊あれば安心な本 を書こうと思い至ったのでした。
ということで、Django 開発のお供に『現場で使える Django 管理サイトのつくり方』を是非どうぞ!!😊
宣伝
これまで Django の本を3冊出しました。Django 開発のお供にどうぞ。
現場で使える Django の教科書《基礎編》
「現場で使える Django の教科書」シリーズ第1弾となる Django の技術同人誌。Django を現場で使うための基礎知識やベストプラクティスについて、初心者・初級者向けに解説した本です。B5・本文180ページ。
★ Amazon(電子版/ペーパー版)
★ BOOTH(ペーパー版)
現場で使える Django の教科書《実践編》
《基礎編》の続編にあたる「現場で使える Django の教科書」シリーズの第2弾。認証まわり、ファイルアップロード、ユニットテスト、デプロイ、セキュリティ、高速化など、さらに実践的な内容に踏み込んでいます。現場で Django を本格的に活用したい、あるいはすでに活用している方にピッタリの一冊。B5・本文180ページ。
★ Amazon(電子版)
★ BOOTH(ペーパー版)
現場で使える Django REST Framework の教科書
Django で REST API を構築する際の鉄板ライブラリである「Django REST Framework」(通称「DRF」)にフォーカスした、「現場で使える Django の教科書」シリーズの第3弾。B5・本文204ページ。
★ Amazon(電子版)
★ BOOTH(ペーパー版)