今回は実際に私の体験談として独学でPythonを学べたワケについて紹介する。これからPythonを学ぼうと思っている人、すでに学んているが挫折している人は読み進めてほしい。
本記事では大学生の私が主人公だが、社会人がPythonを学ぶことができるかについては以下の記事で解説している。
-
【Pythonを独学】社会人が1人で学習できるのか。結論、学べるが...
今回は社会人がプログラミング言語「Python」を独学で学習 ...
続きを見る
なお、現在は独学で学習したスキルを活かしてエンジニアとしてさまざまな言語を使いながら働いている。独学ででもPythonを学習して良かったと感じている。
大学4年生までプログラミング未経験
実は私は大学4年までプログラミングに触れる機会はなかった(本当は3年の時に半期だけ講義を受けたがどの言語で何をしたのかさえ覚えていないからノーカン)。
4年生に進級・研究室に配属されて初めてPythonという名前を知り、初めてプログラムを組んで実装したんだ。
そのままPythonを使ったデータ解析を使って大学を卒業、大学院に進学後の研究もPythonを使ったデータ解析で修士号を取得した。
一応、講義は受けたがさっぱりわからない
研究室に配属された直後にPythonレクチャー会なるものを受けたが、レクチャーしてくれた先生の説明が下手すぎ・内容がぶっ飛びすぎで何も理解できなかった。
- いきなり
for
ループ - いきなり
if
の条件分岐- インデントの説明はなし
- 解説ほぼ無しの再帰関数
- グラフ化の説明は一瞬
このレクチャーで得られたのは「Pythonというプログラミング言語がこの世には存在する」「とにかく意味がわからない」ということだけ。実務的なことはさっぱりわからなかった。
そもそもa = a + 1
が成り立つ意味さえわからなかった。数学的に考えるとハマり「代入」として考えればわかる話。当然、こんな解説もなく進んでいった。参加者は全員ポカンだった。
Excelでの処理に限界を感じる
Pythonについては全く理解できなかったので、使い慣れたExcelを使ってデータ解析を進め1, 2ヶ月経った頃、Excelでの限界を迎えた。
使っているデータが重すぎて1回のEnter入力で5分ほどフリーズする。計算量とPCスペックが完全にミスマッチしていたのだ。
そこでPythonとやらを学習したことを思い出し、最悪、先輩に丸投げしようと思いPythonについて調べ始めた。
初めての処理はCSVファイルの読み込み
Excelでしていた処理は複数のCSVを読み込むという作業。この作業を当時の自分の解像度で見たら以下のステップだった。
- CSVを読み込む処理
- どこからどこまでをデータとするかの範囲指定
- 複数ファイルをループで読み込む処理
- 正常に読み込めたか否かの確認
もちろんいきなりこれらのステップを立てたわけではないが、自分で調べて実践していく中で徐々に必要なものが見えてきた。
最終的に以下のようなコードになったような気がする。
import numpy as np
data = []
for i in range(1, 2 + 1):
csv = np.loadtxt('example' + str(i) + '.csv', skiprows=1, delimiter=',')
data.append(csv)
print(data)
やっていることは単純で「example1.csv」「example2.csv」といったCSVファイルの連番をforループで回しながらnumpy
のloadtxt
で順番に読み込み、その結果をdata
というlist
に格納しているだけ。
ただ、自分で1から調べてエラーと戦いながら実際にデータを読み込むことができたのは達成感があった。
Pythonの処理の速さに感動
2, 3個のCSVファイルを読み込めたので、Excelのデータ解析で使っていた10ファイルほどを読み込んでみた。
読み込みの処理が終了するのに1秒ほどだった。当時の私としては衝撃的だった。たったこれだけのコードを書くだけで一瞬でやりたかったことができる。感動ものだった。
さらに、以下の点にも注目した。
for
ループにより全ファイルに一律の処理が可能- いちいちCSVファイルを開く必要ない
- 一度、処理を作ればコードをコピペで使い回せる
とにかくExcelでの度重なるフリーズで「楽に」「効率的に」ということを気にしていた私にとってPythonとの出会いは運命のようなものを感じた。
この経験のおかげでそれ以降はExcelではちょっとした計算の検算やグラフの確認などをするにとどめ、メインの作業をPythonに委ねた。
なお、これらの処理のほとんどは自分で調べて行なっていた。本当に行き詰まったら先輩に助けを乞うたが、基本は自分の力で進んでいった。
大学生が独学で学ぶメリットとデメリット
ここまで私とPythonの出会いについて紹介したが、誰もがこのような運命的な出会いをするわけではない。
実際に大学生がプログラミング・Pythonを独学で学習するにはメリットとデメリットが存在する。順番に紹介する。
大学生が独学で学ぶメリット
まずは大学生が独学で学ぶメリットを紹介する。基本的に「自由」にできるというのが独学のメリットだ。
- 自分のライフスタイルに合う
- 夜型は特に
- 普段の大学生活やバイトに合わせられる
- 自分の好きなものを追求できる
- カリキュラム通りにしなくていいからやりたいことができる
- お金がかからない
自分のペースで自分の好きなものを追求できる、これが独学の良い点だろう。
大学生が独学のデメリット
一方で、この「自由」というメリットがデメリットにもなる。以下に示したデメリットの一部は実際に私が感じるものでもある。
- 自己流のコーディングになる
- 一般的なコーディングとは異なる可能性
- 非効率的になる可能性
- 技術が偏りがちになる
- 簡単なコーディングに偏る
- できることが狭く深くなる(時には狭く浅いままで止まる場合も)
- 学習の方向性が定まりにくい
- やる気に左右される
- 挫折する
- やらなくなる
デメリットは自由すぎるが故に一般的なコーディング・プログラムの組み方などに則らなくなるということ。
ネット上で調べた例文をつぎはぎするだけでもプログラムを組むことも可能だが、それでは一般的と乖離するケースも多々ある。
また、自分でペースを制御できるので独学でやるのもやらないのも自分次第になってしまう。この点がデメリット。
独学でPythonを学ぶのに重要だったこと
ここから私が独学でPythonを学ぶことができたワケについて詳しくお話しする。といってもプログラミングを学習するのに必要な以下の項目をクリアしていたから、というのが結論。
- 実行したい・作りたいものが明確:目的
- 何から始めたらいいかはっきりしている
- 最終的にどうしたいかはっきりしている
- ある程度のまとまった時間
- 学習・作業する根気
これらの詳しい内容については以下の記事で解説している。
-
【Pythonを独学】社会人が1人で学習できるのか。結論、学べるが...
今回は社会人がプログラミング言語「Python」を独学で学習 ...
続きを見る
また、独学で学ぶための事前準備については以下の記事で紹介している。
-
【独学でPython】プログラミング初心者が学ぶために準備すること
今回はプログラミング初心者が独学でPythonを学ぶために準 ...
続きを見る
目的と第一歩、ゴールが明確だった
まず、1つ目と2つ目そして3つ目について、当時はcsvデータをExcelで計算しグラフ化していた作業をもっと楽で高速にしたいというのが目的だった。
まずはCSVデータを読み込むことから
そのためにまずはPythonでCSVデータを読み込んでグラフ化する、というのが最初の目的で最初のステップだった。
この処理ができない限り、のちに続くデータの加工やグラフ化と保存などが何もできなくなる。
第一歩目を踏み出すための道順が見えているというのはとても重要だ。
データの加工、グラフ作成とステップアップする
CSVファイルを読み込むことができたら少しずつステップアップしていく。私の場合は複数のCSVファイルのデータに対して一律に定数をかけたり、複数ファイルの平均を取ったりした。
これらのデータの加工ののち2次元の線のグラフを作成し表示と保存を行った。そして最後に加工した後のCSVを別のCSVファイルに保存するという一連の流れを行った。
大きな目標・ステップを掲げるのではんく、細かく小さなステップを踏み出すのが継続のコツだ。
目的・最終目標は必要
これらの小さなステップを踏んで進むのはとても重要だが、最終目標・目的を掲げることも重要だ。私の場合は大学・大学院の卒業がそうだ。
あくまでも研究なので適当な内容では卒業が認められない。なので卒業に必要なデータは何か、そのデータを得るためにどんな処理が必要か、というのを1つ1つ着実にこなしていった。
学生だったので時間はあった
当時は研究室所属の学生で超ホワイトということもあり時間があまり余っていた。もちろん研究はしないといけないが特にノルマがなくのんびり研究できた(もちろんサボれば後々しんどくなるのは明白)。
なので勉強・作業するための時間は十分に確保でき、エラー対処にも時間を割くことができた。また、+αな実装にも時間を使うことができた。
意志力では継続できない
ただ、ホワイト研究室だからこそ遊びとバイトに時間を使いすぎてプログラミングの勉強が疎かになりがちだ。特に文系だと研究とは名ばかり(らしい)で遊ぶ人も多い。
そんな中、必死に「頑張るぞ」と意志の力で進もうとしてもすぐに挫折する。習慣化させるための仕組み化が必要だ。
例えば毎日決まった時間になったらスマホに勉強することを通知させたり、毎週末は勉強の時間とカレンダーに書くなどだ。自分に合った習慣・仕組みを作ってほしい。
他の人と比べることを捨てよ
といっても周りが遊んでいる中で自分だけが黙々とプログラミングの学習で苦しんでいる。周りの人が羨ましいと思うのは当然のことだろう。
しかし、他人と比べても見えてくるのは他人の優れた部分ばかりだ。逆に自分の方が優れている部分は優越感に浸りすぐに忘れる。
なので私は他人がどうしているのはなんてものは無視して自分は自分のことを精一杯こなした。
自分を生きるのが最重要
結局、他人は他人で自分は自分。他人に振り回される人生ではなく、自分の人生を生きるのが最重要だ。
学生という短い時間をどう使うのか、もう一度考え直して自分はどう生きたいのか問うてほしい。
Pythonを使わないと卒業できない
すでに書いたが大学なので卒業が待っている。そして研究なので研究の成果を発表しないと卒業することができない。
4年生になってしばらくしてからPythonを始めたので卒業までの猶予は1年を優に切っている。そういう時間的な制限があったのも、独学で学習するきっかけだったのかもしれない。
必要に迫られる締め切りを作る
学生なら卒業や実験のレポートデータの解析などでPythonを使えば提出という期限があるだろう。しかし、社会人ならそういう締め切りはない。
そういう人はTwitterなり何なりでいつまでにどういうシステム・アプリといった成果物を作ると宣言すればいい。もし無理そうなら正当な理由付きで後日、伸ばせばいい。
必要に迫られる締め切りを作ると自然と人間は頑張ることができる。
何のために大学に行ったのかも考える
また、現座、大学生の方はなぜ大学に行ったのかも考えてほしい。遊び呆けるために大学に行ったのならまだしも、勉強・研究しに行っているのなら、この時間を無駄にしてはいけない。
大学生活をより充実させつつ自分の知識・スキルを上げるためにも時間的制約をかけて学習してほしい。
要するに時間がありやることが決まっていた
要するに私が独学でPythonを学ぶことができたのは学生という身分で時間があり、かつ、卒業研究で必要なデータ・グラフを作成するという目的があったから。
この目的がないとどう進めば良いかわからなく何もできなくなってしまう。強くこれがしたいという目的・目標・成果物がない限り、独学での学習はおすすめできない、と今になって思う。
今ならChatGPTを活用するのもの有効
今ならAIチャットサービスであるChatGPTを活用して最初のとっかかりを得るのも1つの手だろう。例えば上の例はChatGPTにPythonの環境構築の仕方を聞いたもの。
もちろんChatGPTはAIなので間違ったことや古い情報を提供することもあるが、それでもかなり有益な情報を得られる。
実はChatGPTをPythonで動かすことも可能で、以下の記事で解説している。ここからAI関連でやりたいことが見つかるかもしれない。
-
【PythonでChatGPT】話題のAI(人工知能)を簡単に試す(Google Colaboratoryもあり)
今回は2022年末にOpenAIがリリースし公開5日程度でユーザー数{ ...
続きを見る
さらに上の回答ではライブラリのインストールも例文を紹介してくれている。このライブラリで何ができるのか、を調べることで初歩的なことを学ぶこともできる。
ChatGPTはまだまだ一般人には馴染みがない。この機会に是非とも使ってほしい。
大学生だからこそ独学で学べる可能性が高い
今回は体験談として大学生の私が独学でPythonを学ぶことができた理由について紹介した。要するに学習する時間と目的とやることが明確化されていたからだ。
大学生は社会人に比べてかなり時間的な自由度が高いので、この機会に独学でPythonを学ぶのが良いだろう。
あなたがこれからのPython人材になることを切に願う。
社会人はなかなか難しい
一方で、社会人がこれから独学でPythonを学ぶことはできるのか。これは以下の記事でも解説したようになかなか難しいように感じる。
社会人では時間的な制約が大きく、残りの時間で余暇の時間やその他の自分の時間を使うことになる。その中でさらにプログラミングを独学で学ぶというのが難しい。
詳しくは以下の記事で解説している。
-
【Pythonを独学】社会人が1人で学習できるのか。結論、学べるが...
今回は社会人がプログラミング言語「Python」を独学で学習 ...
続きを見る
学ぶ前に十分な準備が必要
本記事の内容でプログラミングを始めようと思ってくれたのは光栄だが、始める前に準備をしておかないと挫折しやすい。
以下の記事ではプログラミングを始める際に必要な準備について解説している。こちらの記事を読んでからプログラミング人生を歩み始めてほしい。
-
【独学でPython】プログラミング初心者が学ぶために準備すること
今回はプログラミング初心者が独学でPythonを学ぶために準 ...
続きを見る