こんにちは。
新しくPyQチームに入りました新入社員のkenkenです。
私はマーケティングチームに所属しております。
自分が担当しているのは、コードを書かない仕事で、プログラミングスキルもほぼゼロです。
そんな私ですが、みなさんと一緒にPythonを学んで私と同じようなプログラミング初心者の方に役に立つ情報を伝えていきたいと思っています。
このブログでは、私の体験や失敗を踏まえてPythonに挑戦したい人向けに、Python習得過程のはじめの一歩で挫折しないためのコツをまとめていきます。
初心者でも独学を続けられる
おすすめの勉強方法
この記事で私のPython学習経験を踏まえて伝えたいことは、 Pythonやそのほかのプログラミングを始めたばかりの方は「入門書を読む」「エラーメッセージをコピペして調べる」ことから始めてもらいたいということです。
これに加えてPyQで勉強されている方には、「チュートリアルをもう一度受ける」「写経に頼り過ぎない」「本を読んで復習」することを推奨します。
私は最近PyQを使い始めたのですが、
私のような超初心者でも一つ一つ丁寧にクエストを解いていけばPythonを独学でマスターできる(具体的にはWebアプリをPythonで作れるレベルになる)ことを目指せると思います。
興味を持っている人はぜひ最初の一歩を踏み出して下さい。
「どんな入門書を読めばいいのか分からない」人はこちらへ blog.pyq.jp
Pythonに興味を持ったきっかけ
私は前職ではIT業界紙の記者の仕事に就いていました。
プログラミングに興味を持ったきっかけは、
記者の仕事をしていた頃に「プログラマーが減少している」「政府がプログラミング教育を推進している」という報道を耳にする機会が多かったからです。
そのためプログラマーはさらに需要が増えるのではないか、自分も勉強してみたいと思っていました。
そんな私が最初にPythonのプログラミングに触れたきっかけは、近くの大学の公開講座でした。(体を壊して記者を辞めることになり、時間ができたので行ってみました)
そこでPythonは文法が単純化されており、コードを読み書きしやすいようにデザインされた言語だから、高水準言語の中でPythonは習得難易度がそこまで高くないと習いました。(C言語やJavaの方が複雑で、初心者には難しいとのことです)
「それなら私でもできるかも!」と、統合開発環境を使って講座で薦められた本を見ながら初めてプログラミング学習を始めました。
原因が分からないエラー問題
何を意味しているのか分からなくて挫折
Pythonはインタープリター方式で1行ずつ実行できる設計になっています。そのためケアレスミスが多い自分でもすぐに修正できます。そのような中勉強する内にエラーが何を意味しているのか分からないことが増えてきました。
学習したての頃に頻出したエラーと、行き詰まった内容
SyntaxError: invalid character in identifier
SyntaxErrorと調べたので、構文エラーだということは分かったけど、どこが間違っているのか分からない
IndentationError: unindent does not match any outer indentation level
IndentationErrorを調べたので、字下げエラーだということは分かったけど、原因のインデントが見つからない
このような状態だったので、この時はfor構文から先に進めなくなってしまいました。
PyQとの出会い
そんな中、Pythonをオンラインで勉強できるオンライン学習サービスを提供しているビープラウドとPyQに出会い、自分はそのWebサービスをPRするために入社しました。
PyQは独学でPythonを勉強できるWebサービスなので入社前から気になっていました。 質問機能もあるし(独学するにあたって、行き詰った時に誰かに聞けるのは心強いですよね)、これを使って勉強すれば、分からないまま行き詰まる状態を打開できるのではないか、そして独学でもPythonで会話ボットを作ったり、Webアプリを作成できるようになるのでは、と想像を膨らませていました。
再び独学を始めて思ったこと
できない人ほど急がば回ろう
すると、入社してすぐにPyQでPythonを勉強する機会をいただきました。
早速使ってみると、クエスト(問題)を解いて次に進んでいく感覚が自分のレベル上げていくゲームのようで、早く次のクエストに進みたくなるような設計になっているので、楽しみながら問題を解けました。
また、正解のコードが分からなくても写経(模範回答を見ながらコードを写すこと)ができるので、一つの問題に時間を費やさないで次に進めます。
最初は目標を「早くPythonで実務に携われるレベルになりたい」と大きく設定してしまっていたので、簡単な問題でつまずいた時に「この段階で間違えるの?」と焦りが出てきました。だけど途中で難しいクエストに挑戦できるようになっても、理解していないまま進んでしまったら意味がないことに気づきました。
それからは丁寧に一つ一つ解くことを心がけるようにしました。
具体的には、プログラミングのコードを1行ごとに分解し、そのコードが実行するものが分かっているのか確認しました。
そしてコードの内容が分からなかった場合には参考書を読んで確認してから問題を解くようにしました。
そうする内に、クエストを解くことがまた楽しくなってきました。
先輩と質問機能を使って相談
しばらくすると、丁寧に解いているのにエラーが頻発するようになりました。
そのまま以前と同じような状態で行き詰まってしまい、
「やっぱり文系人間の私はプログラミングの才能がないのか」と落ち込みました。
PyQには模範回答を丸ごとコピペして、難しい問題をスキップできる機能もあります。しかし私の場合、この機能を使って次の問題に進んでも、次の問題でもエラーが出るのでなぜ間違えているのか理解しないといけないと思っていました。
そんな自信喪失した状態で会社の先輩にそのことを話たり、PyQの質問機能を使ってわからないところを相談しました。
すると
・「エラーメッセージを丸ごとコピペして調べればエラーの原因が分かるし、どうしても分からなくなったらもう一回PyQのチュートリアルを受けてみて」
・「エラーの意味も少しずつ理解できるようになるといいけど、第一歩としてわからないものは自分で調べてみるという習慣をつけるのが、プログラミング学習では大事」
と回答を頂きました。
早速このアドバイスを実行してみました。
具体的に調べてみた結果
解読不明だったエラーその1
SyntaxError: invalid character in identifier
を丸ごとコピペして検索してみると、全角スペースが文字列以外の箇所に含まれている場合にも、SyntaxError が出ることを発見しました。
この時分かったことは、
→構文エラーが表示されたときに今までは文字だけを確認してたけど、原因は全角スペースだった。(文字列中以外の全角スペースはエラーになってしまう)
→他にもシングルクオート(またはダブルクオート)を全角で囲っていたり、指示された通りの言葉を打てていないことが原因でした。
またこの記事内の「SyntaxErrorの後ろに考えられる原因が記述してあります」と書かれてる部分を見て、冒頭以外も調べることでやっと意味が理解できるようになることが分かりました。(これは今まで私が調べ方が雑だったせいで起きたミスです)
これらを踏まえて、
SyntaxError: invalid character in identifierが出た場合、
「invalid character in identifier」も翻訳する→「識別子に無効な文字がある」ことが分かる→「プログラムの名前や符号、数字に間違いがあるからシングルクオート(またはダブルクオート)で囲ってるコードを確認しよう」と、間違いが見つけやすくなりました。
解読不明だったエラーその2
IndentationError: unindent does not match any outer indentation levelを丸ごとコピペして検索してみると、if文などのスイーツ(ブロックとも呼ばれる)部分のインデントは揃える必要があることが分かりました。
ちなみにPyQでは、「学ぶ前の注意点」の項目でSyntaxErrorに特化したクエストが出てきます。私はそこが十分に理解できていなかったので、復習しました。
PyQで復習したい問題をサクッと探したい人はこちらへ
blog.pyq.jp
まとめ
継続は力なりで、少しずつでも知識を積み重ねていけば、いずれ「あれ?結構できるようになってる」というレベルに近づけると思って頑張っています。
そのため以前は初めから写経に頼っているところがあったのですが、現在は「今日はfor構文を理解できるようにしよう」と、小さな目標を設定してから問題を解いていき、写経はある程度考え込んでも分からなかった時のみに使用することにしています。
また、PyQを使うようになってからPythonの入門書を読まなくなってしまったのですが、最近は入門書でクエストで学習しているところと同じ単元を勉強しています。読んで理解しながら手を動かすことで脳への定着度が変わる気がします。
最後に、私が一番苦労していたエラー問題ですが、Python初心者で私と同じような悩みを抱えられている方はコピペで検索しながらエラー問題に慣れていくのがPythonと長く付き合うコツだと思います。 (いずれはその都度調べなくても「このエラーは確かこういう意味だったな」と頭に浮かべられるようになりたいのですが)
私はこんな感じでちょこちょこ挫折しかけながらも独学でPythonの勉強を続けられています。
もしあなたが超初心者で悩んでいても、やり方次第でPythonを独学することができると思います。また、学習を始めたばかりでエラーに悪戦苦闘しているPython初心者のあなたも一緒に勉強しませんか?
また、Pythonが気になっているあなたも、気軽にPython学習してみてはいかがですか?PyQには無料プランもあります。