Pythonの勉強方法

雑記

Python(というかプログラミング)ってどうやって勉強すればいいか、分かりにくいですよね。私も分からないです。分からないなりに試行錯誤してきたので、その経緯などを共有してみようと思います。ポエムに近いかもしれません。

Pythonの学び始め

私の場合、Pythonを勉強する動機は「競技プログラミングで使えるようになるため」でした。競技プログラミングはC++が広く使われているのですが、当時Pythonも使われ始めていて、競技プログラミングで出題された問題の解説がPythonのコードしか見つからないこともありました。また、ゲーム開発にも興味があったので、「ゲームを作りながら学べるPythonプログラミング」という本で勉強していました。ちなみに紙の本ではなく電子書籍で買いました。

目的と手段がはっきり決まっていたのが良かったですね。

文法の基礎を学んだ後は、競技プログラミングの問題をPythonで解いたり、簡単なゲームを作ったりしていました。

実務経験

その後、FastAPIを使ったAPI開発を業務で経験させていただきました。ありがたいことにまかせていただけたので、試行錯誤しながらの開発となり、とても良い経験をさせていただけました。

Pythonで何かしようと思っても、Pythonだけで完結することはほぼありません。AWSなど、周辺技術とPythonをどのように結合するかも考える必要があったので、実践的な力が身についたように思います。

経験から言えること

Pythonの学習経緯を振り返ると、以下のような順で学んできたことが分かりました。

  1. 基礎文法の学習
  2. 自分で簡単なプログラムを作成する
  3. 実務で使用する

要するに、だんだんと難しいことをやっていました。

勉強内容のレベルを上げるときは、「自分ができることより”ちょっとだけ”難しいことをする」ことが重要だと思います。レベルが飛躍しすぎると、内容が分からなすぎて楽しくないですからね。業務で使用するからと、焦って中途半端な理解で学習を進めてしまうと、理解不足が顕在化したときが大変です。例えば、「変数」の理解が曖昧で、「変数のスコープ」がよく理解できない、とかです。

おすすめのアウトプット方法

プログラミングは文法を勉強し理解しても、「書ける」状態にはなりません。自分で試行錯誤して特定の目的のコードをひねり出す、という経験が必要です。

でも、「自由に何かプログラムを書いてみて」と言われても、何を書けばいいか分からないと思います。

そこで、私のおすすめのアウトプット方法を紹介します。かなり私の経験に寄っているので、参考程度に。こういうのは数を打つのが大事です。自分に合ったものを探しましょう。

  • ゲーム開発(ブロック崩しなど簡単なもの)
    成果物が分かりやすく目に見える形でできるので、理解度とモチベーションの両面で優秀な選択肢です。ただ、難易度は少し高いです。
  • ソートアルゴリズムの実装
    やることは簡単です。ランダムに並んだ数字の配列を定義して、それを昇順または降順にソートする(並べ替える)関数を定義し、実行するだけです。ただし、標準ライブラリのsort関数は使ってはいけません。ソートアルゴリズムはたくさん種類がありますが、まずはバブルソートがおすすめです。実装難易度が低く、ぽこぽこと端からソートされていく感覚がクセになります(?)。慣れてきたらクイックソートやマージソートなど、難易度は上がりますがより効率のよいアルゴリズムに挑戦してみるのも良いでしょう。
  • 数学の問題をプログラミングで解いてみる
    「360の約数を全て列挙しなさい」「360を素因数分解しなさい」などの整数問題を解くプログラムを書いてみるのも面白いですね。問題が思いつかなかったら「整数 問題 中学」などで検索するといろいろと思いつくかもしれません。生成AIに聞いてみるのもいいですね。
  • 競技プログラミングの問題を解いてみる
    よりプログラミングに特化した問題を解きたいなら、競技プログラミングの問題を見てみるのも良いでしょう。AtCoderの場合は過去の問題を提出して、正解か不正解かを判定してもらえるのでモチベーションにもつながりそうですね。

まとめ

私の経験をもとに、Pythonの学習方法について書いてみました。プログラミングの勉強方法は多岐に渡るため、どの方法が適しているか、少しずつ味見しながら勉強するのがおすすめです。

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