機械学習やデータサイエンスにも広く用いられ、学びたいプログラミング言語ランキングでも1位を獲得するなど注目を集めている「Python」。
その実用性や人気から学んでみたいと思う方も多いのではないでしょうか。そして、いざ勉強するのであれば、「効率的な勉強方法を知りたい!」と思うはず。
そんなPython初心者のために、そもそもプログラミング未経験でも独学で勉強できるものなのか、効率的な勉強方法はあるのかを現役データサイエンティストである当社の金指に聞きました。
この記事は、Pythonを勉強してデータ分析や機械学習に活用したい方を対象としています。Web開発の言語としてPythonを活用したい方向けの勉強法には触れていません。
【金指(かなざし)】
アイデミーのデータサイエンティスト。高専在籍時代より機械学習について学習し、フリーランスのAIエンジニアとしての経歴を持つ。E資格は2019#2試験、2020#1試験に合格。
ノーコードツールもある中、あえてPythonを使うメリットは柔軟性
ーー機械学習やデータサイエンスに興味があってPythonを勉強したいと思っている方が増えているそうです、一方で、最近だとプログラミングせずにノーコードで使えるサービスもありますよね。そんな中でPythonのメリットって何があるんでしょうか?
BIツールやAutoMLツールと比べたPythonのメリットは柔軟性だと思います。
確かにBIツールやAutoMLツールには、ノーコードどころか数クリックで使えてしまうほど簡単で便利なものがあります。一方で簡単に使えてしまうほど簡略化されているがゆえに、設定できる項目が足りなかったり、細かな調整ができなかったりすることもあるんです。
AmazonやGoogle、Microsoftなど各社がAutoMLツールを提供していますが、設定できる項目は限られています。Pythonでプログラミングすることで、より柔軟に得たい結果が得られるようにパラメーター等の調整を行うことができます。
ーー自社のデータから最適な結果を得るにはPythonの方がよいということですね。
また、Pythonを使って自分でプログラミングすることで最新の技術もすぐに取り入れることができる柔軟性もメリットです。
例えば、Googleが公開している「BERT」という自然言語処理モデルがあります。論文は30,000件近くの論文に引用されるほどの優れたモデルで、発表当初は「AIが人間を超えた」とも言われました。今ではBERTの進化版も発表されるなど研究は進んでおり、人間の言語処理能力を遥かに上回るモデルがいくつも登場しています。
ーー人間の言語処理能力を遥かに超えているなんて想像つかないですね……。BERTがいかにすごいかわかります。
こういった最新手法がAutoMLで使えるようになるには時間がかかりますし、使えたとしても適用できるタスクはまだ限定的です。
AutoMLツールでは最新のモデルや技術を提供することが難しく、何年も前の技術を使っていることがあります。そのためどうしても最新の技術と比べて精度は劣ってしまうんです。
その点、自前でPythonを使ってプログラミングすれば最新技術をすぐに取り入れることができます。機械学習に関する最新の技術はもともとPythonで実装されていることがほとんどですしね。
ーーなるほど。Pythonだとプログラミングすることに工数がかかってしまうものの、最新技術の登場に合わせて精度をどんどん改善していくことができるんですね。
Pythonは易しいプログラミング言語。現役エンジニアが振り返る効率的な勉強法
ーーPythonを勉強する重要性がますます高くなるように思えるお話ですね。でも、プログラミング未経験でもPythonは使えるようになるんでしょうか?
むしろPythonはプログラミング未経験者にとって易しい言語だと思います。
Pythonで記述するコードは非常にシンプルで読みやすいです。他の言語で長々と書かなければいけないコードも、Pythonなら数行におさめることができます。文法がシンプルで読みやすいのも特徴です。JavaやC言語など他の言語をかじったことがある方であれば、Pythonの文法のわかりやすさには驚くでしょう。
ーーなるほど、それならプログラミング未経験の方でも学習を始めるハードルは低そうですね!ちなみに、金指さんはどうやってPythonを勉強したんでしょうか?プログラミングスクール等に通われたんですか?
僕は独学で勉強しました。ただ僕の勉強方法が他の方にもおすすめできるかと言われれば、そうでもないのかなと思います。僕の勉強方法がたまたま僕に合っていて、ラッキーなケースだったんです。
ーー具体的にはどのようにPythonを勉強していったのでしょうか?
まずはProgateで学習を開始しました。ProgateではPythonの書き方のような基礎中の基礎の内容と、自分で書いたコードが動く楽しさを学びましたね。一通り学んだ後はPyQで2ヶ月間、全講座を受講して、よく使われるライブラリの種類や使い方の基礎を固めました。その後はAtCoderというサイトで競技プログラミングに参加して課題を解く、という方法で勉強していました。
Progate(https://prog-8.com/)
PyQ(https://pyq.jp/)
AtCoder(https://atcoder.jp/)
ーー未経験から数ヶ月で競技プログラミングって凄いですね。
実はそんなことないんですよ。「競技」と聞くと難しく感じるかもしれませんが、基礎を理解できていれば解けるような内容も多いんです。
とにかく書いたコードを動かしてみる経験は非常に大事ですし、課題に挑戦してみるという経験自体も楽しいです。当然分からない内容もありますが、理解するために調べるとまた勉強になります。
ーー金指さんの勉強法が他の方には合わないかもしれないとのことでしたが、当時の勉強法を振り返ってみて、未経験からPythonを勉強する際に、他の方でも当てはまる大事なポイントってなんだったと思いますか?
やはり自分でコードを書いて、動かして、結果を確認すること、それができる環境が大切ですね。
ProgateやPyQ、書籍など何を使って勉強するにしても当てはまりますが、解答例通りに書き、その解答を覚えて終わりにせず、解答例はあくまで参考にいろいろなコードを書いてみるといいと思います。自分が書いたコード次第で結果が変わることを楽しめば学習も続きますし、上達も早くなります。
そういった意味で、僕にとってはProgateもPyQもあくまで基礎を学べるツールでした。基礎はしっかり学び、興味が湧くものをインターネットで探して読んでみて、「これなら理解できるかも!」と思った内容を自分でコーディングして動かしてみる、という流れで学習を進めました。
どの勉強法にも言えることですが、僕の勉強法にももちろんメリットとデメリットがあります。メリットは、自分が興味を持てることがすぐに見つかる可能性が高いことす。書籍などで体系的な内容を順番に進めていく勉強法では、自分が「これだ!」と思える内容にたどり着くまで時間がかかってしまいますからね。
デメリットとしては、人に教えることに特化した内容でないため分かりにくかったり、自分のスキルに合った内容なのかが明示されておらず自分の知識との乖離が大きくなったりすることが挙げられます。インターネット上の記事などは、割と自己ログ的に作成された内容が多いからです。
ーー初めて勉強する内容を、あえて順番に学ばないのは確かに少し抵抗ありますよね…。知らない内容ができてしまうのが不安だったり。学校のテスト勉強も、テスト範囲を順番に勉強していたのを思い出しました笑
そういう方もきっと多いですよね。体系的にしっかり学びたい方はAidemy Premium Planのようなプログラミングスクールを利用するのも良いと思います!
ただし、プログラミングスクールなどで体系的に学ぶ場合は、興味の持てない内容に差し掛かった際に、興味を維持したり、モチベーションを上げたりするかは難しいかもしれません。
学生時代に授業を受けていたときのように「今学んでいることは今後、何の役に立つの?」と感じる期間もあるかもしれません。
もちろんプログラミングスクールの講師陣からすると、学習内容には全てに意味があって、学ぶ順番も考えて体系立ててはいるんですけどね。体系的に順序立てて学習していくと、実際に使うイメージが湧かないと感じる方もいらっしゃるはずです。
ーー金指さんが当時を振り返って、こんな勉強法ならもっと効率よく勉強できたなと思う方法はありますか?
現役のデータサイエンティストの方や、最新技術の学習まで一通り勉強した方に質問できる環境の必要性を感じますね。
そういう方に聞くと、分からない内容を教えてくれるだけでなく、自分がやりたいことに対して必要な学習内容や効率的な学習方法まで教えてくれるので、有識者に気兼ねなく質問できる環境があることは大切だと思います。
ただし、ここにも一点気を付けないといけないことがあります。聞く人を1人に固定してしまうと、1人の意見しか吸収できないんですよね。スキルが相談相手に強く依存してしまいます。
相談相手が1人しかいない場合は、せめて自分で答えまでの道筋を考える癖をつけましょう。もし相手が、答えは教えてくれるけれど答えまでの道筋は教えてくれないような人だった場合は、「公式ドキュメントのどこを参考にしたんですか?」というように、次は自分だけでも解決できるようになる聞き方をしてみると良いと思います。
ちなみに宣伝になってしまいますが、Aidemy Premium PlanではPythonを扱う講師の層が厚く、いろいろな講師に質問できる環境があります。また、各々が「教える」ことを仕事にしているということもあり、受講生に考えさせる、実践的なアドバイスを行うことに長けているので、未経験からPythonを勉強するにはとてもいい環境だと思います。
Pythonを学んでも今のスキルを投げ出すな
ーーPythonを一生懸命勉強すれば、プログラミング未経験からでもAIエンジニアやデータサイエンティストといった職業に就けますか?
僕は、「AIエンジニアとして食っていこう!」「データサイエンス一本で生計を立てよう!」というように、今の仕事を全てなげうつことを決めて、Pythonの勉強を始めることはあまりおすすめしません。もちろん、そういったモデルケースがない訳ではありませんが、現実味がないように思います。
今持っているスキル、プラス自分の提供できる価値の1つとして、AIやデータサイエンスの知識を持つことで、現在お勤めの方であれば勉強した内容を生かすこともできるでしょうし、より具体的な目的意識を持った勉強ができると思います。
ーーPythonを勉強するにあたっての注意点はありますか
成果物主義になりすぎないようにすることだと思います。
特に受講期間が決まっているプログラミングスクールに通っている方が、その数ヶ月間で講師に頼りながらも目標とする成果物を作りたいという気持ちになることはとてもよく分かります。
人に聞きながらも成果物を「作り終える」ことに主眼を置くのではなく、スクール卒業後も1人で作りたいものを作れるようになることを目標に据えることが大事だと思います。そのためにも自分1人で自立してエラーを修正できたり、何かを作る際に何が必要かを考えたりすることを普段から意識して学習して欲しいと思います。