Django Girls チュートリアルには足りないものが1つある

タイトルを「Django Girls チュートリアルに欠けている、たった一つのこと」みたいな感じの惹句にしようかと思ったけど、これは不正確だなと思ったのでやめた。

f:id:soratokimitonoaidani:20191215234556p:plain

Djangoの初心者がDjango Girlsチュートリアルを通してやってみたけど、モヤモヤする部分があり、考えるうちにこれが足りないんじゃないかと気づいたので書き留めておく。 難しくて分からないと感じた初心者がいたら、もしかしたら参考になるかもしれない。

筆者の状況:

Django Girlsチュートリアルが終わってからDjango公式チュートリアルに取り掛かったが、 Django Girlsチュートリアルのほうを先にやったのは正解だったと断言できる。 Django Girlsチュートリアルは、最初にやる教材としては他よりも良いが、まだ改善点もあるよね、という趣旨だ。

Django Girlsチュートリアルには「ページが表示されるまでの概要」の説明が足りない

チュートリアルの作業指示はかなり明確に書かれていて、あまり迷うことは無かった。 指示する通りに実行すれば、無事にアプリを作ってページを表示させることができる。 それは間違いない。
では何がいけないのだろうか。

チュートリアル「ここをこう書き換えなさい」
俺「はい」
チュートリアル「この状態で実行すると、このようなエラーになります」
俺「はい」
チュートリアル「このページを表示するにはビューを作る必要があります」
俺「……え、そうなの?」
チュートリアル「では次に、このファイルをこう書き換えなさい」
俺「はい」

という調子でコーディングをしていた。
コードを書きながら、「譬えて言えば以下のようなテキストだけを渡されて目的地まで歩かされる感じだなぁ」と思った。

100m行くと、コンビニがあるので、そこを右に曲がりなさい。
その後、3つ目の交差点に郵便局があるので、そこを左にまがりなさい。
その後、2つ目の交差点でスーパーマーケットがあるので、そこを右に曲がりなさい。
……

目的地には着ける。 チュートリアルの通りに実装すれば、動くものはできるのと同じだ。 だけど何かが足りない。それは、現在地から目的地までの全体を表す地図だ。 URLを入力してからページが表示されるまでに、views.pyが何をやって、models.pyが何をやっているのか、それが分からなかった。

単体の動作を変更しても、全体の理解にはつながらない

上記の書き方だと「何も考えずに脳みそを空っぽにしてコードを書いていた」ように見えるので、少し説明しておく。 一応これでも、チュートリアルをただ単純になぞるだけでは無く、いろいろ試してはみた。 例えば単語を打ち間違えたら、わざとtypoしたまま動かしてみてどうなるか見てみたり、色を変えてみたりした。

他の例を挙げると、チュートリアルの終盤のDjangoフォーム · Django Girls Tutorialでは「"glyphicon glyphicon-pencil"」というのが登場する。 「glyphicon」で検索すると、どうやらこれはアイコンのセットであるらしい。 じゃあComponents · Bootstrapでアイコンの一覧を見て、"glyphicon glyphicon-pencil""glyphicon glyphicon-book"に変更してみよう、確かに鉛筆のアイコンが本のアイコンに変わったね、くらいは試してみた。

これらの行動が無意味だったとは言わない。 しかし、上記は個々の部分を単純に入れ替えて変更しているに過ぎない。 いくら個々のパーツを変えても、全体がどういう仕組みで動いているかは分からないのだ。 そして全体を説明してくれる図は全然無かったのだ。

初学者・初級者向け Django の学習ロードマップ - akiyoko blog というdjango初心者向けの記事がある。 よく見て学習の参考にさせてもらった。
この記事には以下のような記述がある。

その中でも「Django 公式チュートリアル」から入る初学者の方が多いと思いますが、少し注意が必要です。というのも、公式チュートリアルには図が一切なく、全体像が把握しづらいです。

「公式チュートリアルには図が一切ない」のは正しい。
ただし、実はDjango Girls チュートリアルの方にも図がほとんどない。 画像ファイルはほとんどが作成したアプリケーションのスクリーンショットだ。
図と言えるのは2枚だけで、毛玉が絡まったような「Webの図示」だけだ。 理解の助けになるのかならないのかわからない謎の毛玉を載せるくらいなら、各Pythonファイルの関連を示した図を入れてくれよ!
個人的には、Django Girls チュートリアルの説明も「全体像が把握しづらい」ものだった。

それではどういう図があればよいか?

Djangoを最速でマスターする part1 - Qiita
このページの「リクエストを受けてからレスポンスを返すまで」というセクションに非常に分かりやすい図があった。これだよ、俺が求めていたのは!
これがあれば各pythonファイルを書いてるときに「これはこういう部分なんやなー」と思いながらコーディングできただろう。


追記(2020年1月15日)
Django チュートリアル 難しい」で検索すると出てくる記事が、まさに俺と同じことを書いていた。全く同感である。

少し長くなるが、引用しておく。

Tutorialに言われるがままモデルをつくり有効化しAPIと戯れてみたが...わからん。ここをこうしろと言われて(それでもミスすることはあるが)書いてあるとおりに反応が帰ってきて、だからオレは何ができるようになったというの。
(中略)
初心者にはひと目でわかる全体像が必要である
これで今自分がやっていることの意味がわかる。今自分がどこにいて、どこに行こうとしているのかわかる。ざっくりと全体像がわかることが初心者には大切だ。Tutorialでポチポチ入力するのは、暗い森のなかを親切に手を引かれて案内されてる感じ。ゴールまではたどり着くんだろう。でもその後は?放り出されて何をしていいかどこへ行けばいいのかわからない。地図(全体像)があったら、手探りでも確認しながら自分で歩いていける気がする。この感覚が欲しかった。
https://qiita.com/soh506/items/63a656f26ee24014c04b

全体像すなわち地図が必要だという比喩まで一致していてビックリである。俺と同じ感想を持っていた初心者がいることが確認できた。