- pythonを独学で習得したいけど、何から始めればいいのかわからない
- pythonを独学で習得するための具体的な勉強方法を知りたい
- pythonを独学で習得するのにどれくらい時間がかかるか知りたい
こんな悩みを解決します。
こんにちは、タナカです。
この記事は、これからpythonの勉強を始めたいけど、どうすればいいのか悩んでいる人のために書いています。
この記事を書いている現在、私は29歳です。28歳の時に初めてpythonを勉強し、そこから約1年半経ちました。
私の場合は、プログラミングスクールを受講せず、独学でpythonを習得しました。ちなみにプログラミング自体も今回が初めてです。
スキルの習熟度を測るのは難しいですが、今では画像処理や機械学習をはじめ、ある程度何でも記述することが可能です。実際に、自社で使う画像検査システムを内製化できるまで成長しました。
話は戻りますが、プログラミングを始めるきっかけは人それぞれあると思います。
- 本業で必要になった
- エンジニアとして転職したい
- プログラミングで副業を始めたい
- 教養として身につけたい
この記事では、私がどうやってpythonを習得したのか、習得するまでにどれくらいかかったのか、何を勉強してきたのか、これまでの経緯をお伝えしていきます。
pythonを独学で習得した体験談として、少しでも皆様のお役に立てればと思います。
- pythonを勉強するモチベーション
- pythonの始め方
- pythonの学習ボリューム
1. なぜpythonを習得したいのか
そもそも、あなたはなぜpythonを習得したいのでしょうか。
pythonを使って何か実現したいことがあるのでしょうか。
このなぜを明確に言語化することが非常に大切になります。なぜなら、「なぜ」が明確でないと継続しないからです。
pythonはプログラミング言語の中でも比較的簡単な言語と言われますが、正直難しいです。
難しいですが、継続さえできれば誰でも必ず習得可能です。
できるだけ最短で習得したい、効率的に習得したい、挫折したくない、どこまで行ったら習得したと言える?など様々な思いや不安、感情を持つ方もいると思います。
これから勉強しようとしているもののイメージがつかないのは非常に怖いですよね。
これらのイメージをできるだけ具体化できるように私のこれまでの学習経緯をお伝えしていきます。
2. どうやって独学でpythonを勉強したのか
ここからは、私が学習当初に実際に書いていたコードや何にお金をかけたかなどできるだけ具体的に説明していきたいと思います。
まず、私がpythonを始めた理由は、本業で必要になったからです。画像検査システムを内製化するというミッションが与えられ、pythonを勉強するようになりました。
今回が会社として初の取り組みであったこともあり、周りにはプログラミングを知る人はだれもおらず、一人でコツコツと勉強する必要がありました。
基本的には、会社で勉強する時間はなく、自己啓発という形で残業代も出ない状況の中、勉強していましたね。今思えば、よくやってたなと自分を褒めたいです(笑)
自分の場合は、pythonで画像検査システムを作るための勉強をする必要がありました。
目的がある程度はっきりしているので、どういう知識が必要なのか、どういった勉強が必要なのかという具体的な取り組みをイメージできていました。
例えば、「python 画像検査」といった具体的に検索するキーワードがあるっていうのが大事ですね。これで「opencv」というpythonで画像処理をするためのライブラリの存在を知ることができました。
冒頭でもお伝えしましたが、画像に限らず、目的を明確にすることが重要です。
その目的は、pythonで作業を効率化するアプリケーションを作りたいでも、web上の情報を自動的に収集したいなど、何でも大丈夫です。
目的が明確になっていれば、「検索できる」、これが非常に大切です。
勉強を開始してから約6ヶ月間やってきた内容を時系列でまとめるとこのような表になります。
約6ヶ月間で使ったお金の総額は、約17,000円です。内訳はこんな感じです。
- progate: 1,000円
- 入門python3(本): 4,000円
- udemy: 7,000円
- coursera: 5,000円
udemyとcourseraは機械学習を勉強するためにお金をかけました。なので、pythonのみなら約5,000円ですね。
毎日の学習時間は平日3時間、休日6時間はやっていたと思います。独学で一番ネックなのは、とにかく時間がかかることです。
エラーが出た時や実現したいことを検索して見つけ出すのに時間がかかります。聞ける人がいないので、当然自分1人で解決しなければいけません。
それでは、実際に勉強してきた内容を具体的に説明していきます。
2-1. progate
pythonの「パの字」も知らない状況でしたので、まずは基礎を勉強しました。
基礎を勉強するにあたっては、progateという月額1000円で学習できるweb教育サービスにすぐ課金しました。
これは基礎中の基礎を勉強できますし、かなりわかりやすく作られているので、やってよかったなと今でも思っています。これからpythonを勉強する人はぜひ活用を検討してもいいのではないでしょうか。
progateとしては、pythonの学習コースが全5コースあり、約1~2週間ほどかけて1周のみ行いました。
もちろん1周だけでは、すべてを理解することはできないですが、ある程度pythonがどういったものかをイメージできたので、そこでprogateをやめました。
この段階で、関数やクラスを理解する必要はまったくないです。なぜなら、progateを何10周も時間をかけて覚えても、それはただの暗記になってしまうからです。
学校の試験があるわけではないので、ある程度の文法の理解で十分です。わからないことは検索すればいいのです。
2-2. 画像処理に関するコードを書く
progateをやめてからはすぐに画像処理に関するコードを書くようにしました。即実践という感じです。pythonを書くための環境構築は、anacondaとvisual studio codeでpythonの環境構築(for windows)で説明しているので参考にしてください。
具体的な例を示すとこのようなコードを3week目で書いていました。
import cv2
import numpy as np
def BGR2RGB(img):
b = img[:,:,0].copy()
g = img[:,:,1].copy()
r = img[:,:,2].copy()
out = 0.2126 * r + 0.7152 * g + 0.0722 * b
out = out.astype(np.uint8)
return out
def binalization(img, th = int(input('しきい値を入力してください:'))):
img[img < th] = 0
img[img > th] = 255
return img
img = cv2.imread('yo.jpeg').astype(np.float32)
print(img)
out = BGR2RGB(img)
out = binalization(out)
cv2.imwrite('out_yo.jpeg',out)
cv2.imshow('result',out)
ちなみに上に示したコードは私が考えて書いたものではなく、「python 画像 色変換」や「python 画像 二値化処理」と検索して出てきたコードをほぼ丸写ししたものです。
変えたのは、処理をかけたい画像のファイル名くらいです。当然、いきなり関数を使って書けるわけありませんのでご安心ください。
ここで重要な点を一点お伝えしておくと、コードは丸写しですが、必ず自分の手で写経していました。つまり、コピーして貼り付けるのではなく、自分の手で実際に書くということです。
これがかなり重要だったと考えています。めんどくさいかもしれませんが、必ず自分の手を使って書きましょう。
初めのうちは、自分で関数を作ったり、考えて書くってことが非常に難しいので、ひたすらやりたいことを実現するためのコードを検索して、出てきたコードを写経するということを繰り返し行っていました。
このとき、写経したコードの一部を変更したり、行ごとに何が行われているかを確認するためにprint文で結果を出力したりもしました。
2-3. 検索/写経/実行/確認の繰り返し
5week目以降は、画像処理やpython基礎、機械学習など興味があることをひたすら検索して、出てきたコードを写経し、実行、確認を繰り返し行っていました。
この時くらいに画像処理アプリケーションを作りたいと考えるようになり、グラフィックユーザーインターフェース(GUI)の勉強もするようになりました。
pythonの習得では、このサイクルを回すことがかなり有効です。正直1ヶ月、2か月勉強したところでは自分で考えて、新しいことを実装するってなかなかできないと思います。
まずは、ひたすら写経することでコードを書くという感覚を養うことが重要です。忘れても、自分で考えて書けなくても全然気にしなくてOKです。
写経しているはずなのになぜかエラーで動かないってこともあります。その時は、エラー文を直接貼り付けて検索してみてください。
たいていのことは解決策を提示してくれていると思います。しかし、調べてもエラーが修正できないときは、忘れて次にいきましょう。どうしても実現したいコードなら、解決できるまで粘ってもいいですが、そうでもないものならそのまま放置で別のことをやりましょう。
今のタイミングではわからないことも、やっているうちに昔出たエラーの解決策がわかるなんてざらにあります。
これらを繰り返し行っていると9week目くらいでようやく関数の使い方がわかってきました。関数については、pythonの関数とは。どうやって使うの?で説明しているので参考にしてください。
関数が使えるようになるとだいぶコードを書いている感が出てきて、モチベーションも上がってきます。
14-15week目で、もう一度pythonの基礎を勉強したいと思い立ち、初めてpythonの参考書を買いました。読んでみると、意外と自分理解できているなと少し自信をつけれたことを覚えています。曖昧なところをつまんで読むという使い方をしましたね。
ここまでで、だいぶ力もついてきた感がありますが、14-15weekやっても正直、自分で考えて書くなんてできないです。そもそもそんなことしなくていいのです。プログラミングでは実現したいことをキーワードで検索できることが重要だからです。
そして、17weekくらいでようやくクラスについてなんとなくわかってきました。本当になんとなくです。4ヶ月勉強して、やっとクラスとは何かを意識できるレベルです。
クラスの勉強で一番いい教材は、tkinterやPyQtなどのGUIを作成するためのライブラリを使っているソースコードを見ることです。それらのソースコードはQittaやGithubなどで結構紹介してくれている人がいます。
私の場合は、画像処理をメインにコードを書いてきましたが、どの分野においても検索、写経、実行、確認を繰り返していれば、気づけばpythonを書けるようになっていると思います。
画像処理に限らず、自分の興味のある分野で勉強して頂ければと思います。
3. どれくらいでpythonを習得したのか
まず、習得したという定義ですが、関数を使ってコードが書けるになったらとさせてください。
結論、私の場合はpythonの習得に約3ヶ月くらいかかりました。時間にすると約300時間くらいですね。なので、1ヶ月で約100時間くらい勉強しています。
ちなみにクラスを理解するのに約8ヶ月かかっています。クラスに関しては、たぶん理解しようとしないと(書く意識をしないと)できるようにならないと思います。
これが遅いのか、早いのかわかりませんが、独学で習得するのにこれだけ時間がかかっています。
独学だと分からなことが出てきた場合、自分で解決しなければいけないため時間がかかるのは仕方がないと思います。
4. これからpythonを勉強する人へ
これまで紹介してきたやり方や時間は、あくまで私の場合です。
pythonを習得するやり方や手段はたくさんあると思います。
独学は、pythonを取得するための1つの手段です。こんなに時間をかけれない人やもっと効率的に習得した人はプログラミングスクールに通うのも1つの手段だと思います。
ただし、どんな手段を選択したとしても、共通して言えることは自分の手を動かし、コードを書き続けないと習得は難しいということです。
難しいですが、誰でも習得は可能です。絶対に習得できます。
ここからは、pythonを習得する過程の中でやっていればよかったなと思うことを1つ紹介します。
それは、pythonと同時にブログを始めればよかったということです。今読んでいただいているこれです。
なぜなら、ブログは絶好のアウトプット場だからです。学んだことを文章に起こすことで整理もできますし、何より知識のデータベースとして活用できます。
アウトプット前提で勉強をするとインプットの質も上がります。理解していないと言語化自体難しいですよね。
勉強していると同じことを何度も検索することが多々あります。そのたびに答えまでたどり着くのに時間がかかってしまいます。そんな時でも自分のブログ内で検索して、やったことを復習できれば、知識の定着にもつながると考えています。
ちなみに私はこのブログを2021年8月下旬から始めました。結構遅いですね。
まとめ
プログラミング未経験がpythonを独学で習得した方法を紹介しました。
少しでもpythonを勉強するとはどういうことかのイメージを掴んでい頂ければ幸いです。
プログラミングは難しいですし、習得にも時間がかかります。
しかし、私自身pythonを習得したことで人生が大きく好転したと思っています。かなり自信もつきました。
今はまだ、会社員として働いていますが、pythonを習得できればフリーランスエンジニアやITエンジニアへの転職など選択の幅が確実に広がります。
これを読んでいるあなたにとって最善の方法でプログラミングを習得していただければ幸いです。