Python初心者、基礎ガタガタのまま黒本に突撃した話

Python初心者、黒本に挑戦する湖畔デスク 資格試験

こんにちは、晶(あき)です。

Pythonの勉強を始めて、もうすぐ1か月。

問題集を何周かして、模試も受けて、少しずつ点数も取れるようになってきました。

ところが最近になって、かなり重大なことに気づきました。

私、基礎がかなり抜けています。

しかも「ちょっと苦手な単元がある」というレベルではありません。

関数やクラスの問題を解いている途中で、

「ところで、この () は何をしているんだ?」

と止まる。

selfは長いこと、

「よく分からないけど、ここに書く必要があるもの」

くらいの認識でした。

それなのに私は、Pythonエンジニア認定基礎試験の問題集、いわゆる黒本をせっせと解いていました。

今振り返ると、

自転車にまだちゃんと乗れないのに、マウンテンバイクで琵琶湖一周に出発しようとしていたようなものです。

そりゃ途中で転びます。

チュートリアルを読んだけれど、よく分からなかった

最初から基礎を無視するつもりだったわけではありません。

Pythonの勉強を始めたとき、まずチュートリアルを読んでみました。

でも、いきなり読むと私には難しかった。

書いてある文章は読める。

コードも載っている。

でも、

「つまり、これは何の話をしているんだろう?」

という状態でした。

分からないものを説明する文章の中に、さらに分からない言葉が出てくる。

その言葉を調べると、また別の言葉が出てくる。

だんだん何を調べていたのか分からなくなってきます。

そこで私は、

「問題を解きながら覚えたほうが分かりやすいのでは?」

と思いました。

そして黒本へ。

今思えば、この時点ですでに琵琶湖へ向けて走り出していました。

黒本を解きながら覚えることにした

黒本を進めていくと、最初は分からないことだらけでした。

それでも何度か解いていると、

「これはこの形だから、たぶんこれ」

「この書き方は前にも見た」

というものが少しずつ増えてきます。

問題も以前より解けるようになる。

コードにも見慣れてくる。

すると、

なんとなくPythonが分かってきた気がします。

ところが、少し形を変えられると分からない。

コードを一行ずつ説明しようとすると、途中で止まる。

特に関数、引数、スコープ、クラスあたりになると怪しい。

そこで私も、

「さすがに、もう少し基礎を補強したほうがいい」

と思うようになりました。

スキルアップ教科書も導入した

そこで途中から『Python 3 スキルアップ教科書』も使い始めました。

私にはチュートリアルより読みやすく、黒本で分からなかったところを教科書で確認するようになりました。

動画を見たり、分からないことを調べたり。

問題演習も続けました。

模試にも挑戦しました。

自分なりに、かなり真面目に立て直していたつもりです。

最初のころより、分かることは確実に増えました。

模試の点数も上がってきました。

よし。

少しずつ基礎も固まってきた。

……と思っていました。

それでも「基礎の基礎」が抜けていた

ところが、問題を細かく確認していると、とんでもないところで止まります。

たとえば関数の中に、

inner()

と書かれている。

そこで私は、

「ところで、この () って何?」

となりました。

今なら分かります。

関数を呼び出して実行しているだけです。

でも、そのときの私は、

def で関数を定義すると何が起きるのか。

関数の中身はいつ実行されるのか。

インデントが戻るとはどういうことなのか。

関数名だけの場合と、()が付いた場合では何が違うのか。

そのあたりが、きれいにつながっていませんでした。

問題集を解いている。

教科書も読んでいる。

模試の点数も上がっている。

それなのに、

もっと根っこのところに穴がある。

ここでようやく気づきました。

私が一生懸命補強していた「基礎」の、さらに下にも基礎があったのです。

selfも長いこと「おまじない」だった

クラスで出てくるselfもそうでした。

問題を解くために、

「ここにはselfを書く」

という形は覚えていました。

でも、なぜそこにselfがあるのかは、かなり曖昧。

私の中では長いこと、

「よく分からないけど必要なおまじない」

でした。

問題を解くときにも、

「このselfは何を指している?」

「次のselfは?」

と、一個ずつ追いかけていました。

でも、本当に必要だったのはselfだけを凝視することではありませんでした。

一度コードから少し離れて、

クラスがある。
その中にメソッドがある。
そこからインスタンスを作る。
そのインスタンスからメソッドを呼ぶ。

という全体の構造を見る。

そこがつながったとき、

「ああ、この○○がselfになるのか」

と、ようやく見え方が変わりました。

細かいものを必死に追いかけるより、一度ズームアウトしたほうが分かることもある。

これも、問題演習を続けていなければ気づかなかったことでした。

装備は増えた。でも自転車の乗り方が怪しかった

ここまでの私の勉強を、例の琵琶湖で考えてみます。

最初は、

自転車にちゃんと乗れないのに、マウンテンバイクで琵琶湖一周へ出発。

途中で、

「このままではまずい」

と気づきます。

そこでスキルアップ教科書を導入。

動画も見る。

分からないことも調べる。

問題演習も増やす。

模試も受ける。

ヘルメットを買った。

地図も買った。

装備はだいぶ揃ってきました。

ところが、走っている途中で突然、

「待って。私、そもそも自転車の乗り方をちゃんと分かってない」

と気づいた。

そんな感じです。

なかなかひどい。

でも、黒本から始めたことを後悔はしていない

では、最初から入門書をじっくり読んで、基礎を完璧にしてから黒本へ進めばよかったのか。

たぶん、それが王道なのだと思います。

でも私は、黒本から始めたことをそれほど後悔していません。

なぜなら、問題にぶつかったから、自分が何を分かっていないのかが見えてきたからです。

最初にチュートリアルを読んだときには、

「ここ、重要なのかな?」

と通り過ぎていた内容もあります。

ところが、問題で実際につまずいてから読むと、

「ああ、これのことを説明していたのか」

と意味が変わります。

私の場合、

問題を解く
→ 分からない
→ 調べる
→ 途中で「そもそもこれ何?」が出てくる
→ さらに基礎まで戻る
→ 理解してから、もう一度問題を見る

という勉強方法のほうが合っていたようです。

ずいぶん遠回りではあります。

「解ける」と「分かる」は違った

今回のPython学習でかなり大きかったのが、

問題に正解できることと、理解していることは同じではない

と気づいたことです。

選択肢があれば答えられる。

以前に似た問題を見たから正解できる。

でも、

「どうしてこの答えになるの?」

と聞かれたら説明できない。

そこには、まだ穴があります。

逆に、ひとつの基本をちゃんと理解すると、それまで苦労していた別の問題まで急に読みやすくなることがあります。

一個の答えを覚えたというより、

今まで見えていなかったものが見えるようになる。

最近、そんな感覚が少しずつ増えてきました。

基礎が抜けていたなら、今から埋めればいい

勉強を始めてしばらく経ってから、

「こんな基本的なことも分かっていなかったのか」

と気づくと、ちょっとへこみます。

これまで勉強してきた時間は何だったんだろう、と思うこともあります。

でも、今は少し考え方が変わりました。

抜けていることに気づいたなら、その時点で埋めればいい。

分かったふりをしたまま進むより、そのほうがいい。

40代から始めたPython。

きれいな順番では勉強できていません。

関数で転び。

引数で転び。

スコープで転び。

クラスでも転びました。

そのたびに、少し戻って乗り方を確認しています。

それでも、最初はまったく読めなかったコードが、少しずつ読めるようになってきました。

出発してから、自転車の乗り方を覚えている

振り返ってみると、やっぱり私のPython学習は、

自転車にちゃんと乗れないのに、マウンテンバイクで琵琶湖一周へ出発してしまった

という表現が一番しっくりきます。

途中で装備を揃えました。

地図も手に入れました。

それでも転んで、

「まず乗り方から確認しよう」

と今さら練習しています。

効率のいい方法だったかと聞かれたら、たぶん違います。

でも、一度出発してしまいました。

そして、転びながらここまで来ました。

だったら今さら、

「最初の勉強方法を間違えたから、もう無理」

と引き返す必要もないと思っています。

昨日分からなかったことが、今日ひとつ分かる。

それを繰り返していけばいい。

出発する順番は、だいぶ間違えました。

でもまあ。

一度走り出してしまったので、このまま琵琶湖一周してこようと思います。

読んでくれてありがとう。また気が向いたら遊びに来てください。

コメント

タイトルとURLをコピーしました