Skip to Content
Pythonによるテスト駆動開発, 3rd Edition
book

Pythonによるテスト駆動開発, 3rd Edition

by Harry Percival
October 2025
Intermediate to advanced
712 pages
9h 46m
Japanese
O'Reilly Media, Inc.
Content preview from Pythonによるテスト駆動開発, 3rd Edition

第19章 ユーザ 認証、スパイク、 およびデスパイク

この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com

我々の美しいリストサイトが公開されて数日が経ち、 ユーザからフィードバックが寄せられ始めた。 「サイトは気に入っている」と彼らは言う、 「だがリストを頻繁に失ってしまう。 URLを手動で覚えるのは大変だ。 作成中のリストを記憶してくれると助かる」

ヘンリー・フォードと速い馬を思い出せ。ユーザ要件を聞くたびに、 少し深く掘り下げて考えることが重要性だ。 本当の要件は何か? そして、試してみたかった新技術をどう絡められるか?

明らかにここでの要求は、 ユーザがサイトに何らかのアカウントを持ちたいということだ。 では、さっそく認証について掘り下げてみよう。

当然ながら、パスワードの記憶処理を自分たちでやるつもりはない——90年代っぽい上に、ユーザパスワードの安全な保管はセキュリティ上の悪夢だ。それは他人に任せたい。代わりに「パスワードレス認証」という面白い手法を使う。1

パスワードレス認証と「マジックリンク」

パスワード自体を保存せずに済む認証システムとは? OAuth?OpenID?「Facebookでログイン」?うーん。個人的にはどれも不気味なニュアンスが許せない。 GoogleやFacebookが、いつどのサイトにログインしたかを知る必要があるのか?

代わりに、第二版では2 面白い認証方法を発見した。 今は「マジックリンク」という名前付けがされているが、 「メールを使うだけ」と言ってもいい。

このシステムは2014年に考案された(少なくとも普及したのはその時だ)数多くのWebサイトで新しいパスワードの作成にうんざりした人物によって。 彼らは結局、ランダムで使い捨てのパスワードを使い、覚えようともせず、再ログインが必要になるたびに「パスワードを忘れた」機能を利用していた。 詳細はMediumで読める

その概念は単純だ:本人確認にはメールを使うだけ。 「パスワードを忘れた場合」機能を設けるなら、結局メールを信頼しているわけだから、徹底的にメールに頼ればいい。 誰かがログインしたい時は、その人専用のURLを生成してメールで送る。そのURLをクリックすればサイトにアクセスできる仕組みだ。

決して完璧なシステムではないし、 実際の本番Webサイト向けログイン解決策として機能させるには 考慮すべき細かい点も山ほどある。 だがこれは単なる遊び心のあるおもちゃプロジェクトだ。 やってみよう。

やや大規模なスパイク

注記

思い出せ:スパイクとは探索的コーディングの段階だ。 テストなしでコードを書いて、 新しいツールを試す順序で新しいアイデアを実験したりする。 後でTDDを使って「適切に」コードを書き直すことになる。

このマジックリンクプロジェクトをセットアップするにあたり、最初に既存のPythonとDjango認証パッケージ、 例えばdjango-allauthなどを調べた。 だがどちらも現段階では複雑すぎるように見えた (それに、自分でコードを書く方が楽しいだろう!)。

代わりに、いきなり飛び込んでハックを続けた。 何度か行き止まりや間違った方向に進んだが、 何とか動くものを作り上げた。 その仕組みを説明した後、 実装を「デスパイク」する手順を解説する。つまり、 プロトタイプをテスト済みで本番環境対応のコードに置き換えるのだ。

君も自分のサイトにこのコードを追加してみてくれ。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

イーサリアムをマスターする, 2nd Edition

イーサリアムをマスターする, 2nd Edition

Carlo Parisi, Alessandro Mazza, Niccolo Pozzolini, Gavin Wood, Andreas M. Antonopoulos
Excel用Python

Excel用Python

Felix Zumstein

Publisher Resources

ISBN: 0642572274771