これからPythonを習得したいと考える人と中にはどれくらい勉強すればどのレベルになれるのかイメージがつかない人がいるはずです。
この記事では、Pythonで学習期間や習得難易度について紹介をしていきます。
これまで私は以下のようなプログラムを本サイトで紹介をしてきました。
事例1|GoogleSpreadSheet|データ集計
事例2|Excel|データ集計
事例3|CSV|フォルダ内のCSVファイルを解析してChatworkへ出力
事例4|Outlook1|受信メールを一覧化(添付ファイルも保管)
事例5|Outlook2|メール送信
事例6|Word|フォルダ内の全てのワードファイルを自動翻訳するツール
事例7|PDF|フォルダ内の全てのPDFファイルに自動作成したパスワードを付与
事例8|ウェブスクレイピング1|Googleで検索キーワード上位10記事のH1,H2,H3タグをエクセルに出力
事例9|ウェブスクレイピング2|サイトからCSVをダウンロード
そこで私のPython学習談を紹介します。
具体的には、以下の内容についてお伝えしていきます。
Pythonの学習期間
Pythonを仕事で使えるレベルとは?
目次
そもそも私が Python 学習を始めた経緯
私はこれまでに数年間、独学でPythonの勉強をしてきました
現在は、定期的にウェブから情報を取得したりデータ解析結果をチャットボットで通知したりするプログラムを毎日動かしています。
実際に以下の記事で、詳細を紹介しています。
実は私はPython学習を始める前、VBA(Visual Basic for Applications)やGAS(Google Apps Script)を勉強して仕事で使ってきました。
VBAやGASのプログラムを作ることで少なくとも年間100時間以上は仕事を効率化し、その威力を感じてきました
とくにVBAについてはこちらの記事で、事例をまとめて紹介しています。興味がある人はぜひご覧ください
しかし、同時にVBAやGASの限界も感じていたのです。
そしてこの限界がPython学習を始めたきっかけでした。
VBAやGASの4つの限界
VBAやGASを使っていると、以下の4つをVBAやGASの限界として感じることがありました。
VBAの限界1|VBAではGoogleアプリとの相性が悪い
VBAはGoogleスプレッドシートやGoogleドキュメントを使えない。
(使えるかもしれないが、調べてすぐには出てこない)
VBAの限界2|VBAではウェブスクレイピングがやりにくい
VBAはウェブスクレイピングに関する情報が出回っていない。
そのため、VBAでウェブスクレイピングするプログラムを書くのは時間がかかる
GASの限界1|GASはMicrosoft Office系のアプリとの相性が悪い
Google Apps ScriptはMicrosoftオフィスのエクセルやワードの操作ができない。
(使えるかもしれないが、調べてすぐには出てこない)
GASの限界2|5分以上の処理ができない
GASはプログラム処理時間が5分を超えると、途中で強制終了する。
上記の限界があったため、作業によってはVBAやGASを使い分けていました。
またVBAやGASでは、どうしても実現できないプログラムがありました。
しかしあるとき、Pythonについて調べてみると、VBAやGASで出来ないことであっても、Pythonなら実現できるかもしれないと思ったのです。
VBAやGASで出来ないことがPythonならできる
実はPythonを習得する前、売上情報をGoogleスプレッドシートでチームに共有していたことがあります。
しかしその情報共有の方法には、ある欠点がありました。
それはVBAで取得した情報を、Googleスプレッドシートにコピペしないといけなかった点です。
なぜならウェブスクレイピングに5分以上の時間がかかっていたため、GASが使えなかったからです。
GASは5分以上の処理は、強制終了してしまいます。
一方で、情報共有はGoogleスプレッドシートで行わないといけませんでした。
そのため、「VBAでウェブスクレイピング」→「エクセルにデータを出力」→「Googleスプレッドシートへコピペ(手作業)」→「チームに共有」という流れになっていました。
そのような課題に直面していたとき、Pythonを知りました。
そして、Pythonを使うことで「ウェブスクレイピング」→「Googleスプレッドシートにデータを出力」→「チームに共有」という一連の流れをすべて自動化できました。
このようにPythonを使って解決することができたのです。
Python学習の隠れた動機|機械学習
Python学習は上記の課題を解決することが狙いだったのですが、勉強の動機はそれだけではありませんでした。
その動機とは機械学習です。というのも機械学習は今後の仕事で生きる分野だったからです
そのような理由があり、Python学習をすることに決めました。
Python学習は簡単ではなかった
書籍を大量購入したりオンライン学習教材を試したりして勉強をしていきました。
当初、VBAやGASを学んできた経験があるから、「Python習得は簡単だろう」と思っていました。
なぜなら、プログラミングが得意な友人たちと話をしていると、「プログラム言語を一つ習得すれば他の言語習得はそこまで難しくない」と聞いていたからです。
実際、プログラミングの基本として for、if、リスト(配列)のようなプログラミングの基本で躓(つまづ)くことはありませんでした。
このような基本はVBAやGASの学習で一通り経験してきたからです。
しかしそれでも学習当初は思うようにPythonを書けるようになりませんでした。
なぜならPython学習には2つの課題があったからです。
Python習得における2つの課題
課題2|ライブラリのインストール
この課題について、以下で紹介していきます。
課題1|Python特有の記載方法やエラー
PythonにはPython特有の記載方法があり、その方法に則(のっと)ってプログラム作成しないとエラーがj発生します。
たとえば、PythonにはVBAやGASと違ってTuple(タプル)という考え方があります。
このTupleはList(配列)と似ているのですが、一部異なる点がありました。
このTupleの厄介な点はウェブサイトによって、Tupleを使ったりListを使ったりすることがことです。
Tuple_X = (“apple”, “orange”, “melon”)
List_X = [“apple”, “orange”, “melon”]
この2つは使用する目的が異なるため、使い分けることで威力を発揮します。
しかし書き方が似ていることもあり、私は混同して使用していました。
そのためTupleとListを間違えて使用した結果、「エラーが発生する」ことがありました。
しかし、そもそもTupleとListの違いを理解していなかったので、エラーの原因が分かりませんでした。
ここでは、Tuple(タプル)について紹介しましたが、他にもPython特有のプログラムでエラーが発生することがあり、勉強がはかどらない時期がありました。
課題2|ライブラリのインストール
Pythonを使えば、エクセルとGoogleスプレッドシートを同時に扱うことができます。
分かりやすくいえば、エクセルのデータをGoogleスプレッドシートに移し替えることができるのです。
しかし、ただ単純にプログラムを書いてもいいわけではありません。プログラムを作る前の準備が必要になります。
たとえば、エクセルを使うためのライブラリをインストールしたり、GoogleスプレッドシートのAPIをつなげたりしないといけないのです
このような準備はVBAやGASでは、経験が少なかったためピンとこないことが多かったです。
課題2|ライブラリのインストール
この2つの課題に悩まされた結果、Python勉強をはじめてすぐにプログラムが書けるようにはなりませんでした。
10万以上の費用と数年間の学習期間の結果、Pythonを使って仕事の幅を広げることができた
しかし、このような課題を解決すべく、「ウェブ情報」、「書籍購入」、「オンライン教材」などをいろいろと試していくことになります。
作成したプログラムが動かないときは、ウェブ情報でエラーの原因を探る。
友人に勧められたら、すぐに書籍を購入する。
Pythonの新しい分野を学ぶときは、オンライン学習教材を購入して動画学習する。
その結果、費用にして10万以上、時間にして数年間をかけてPython学習をしてきました。
その過程でPythonの理解が少しずつ深まっていき、仕事を効率化したりプログラムでなければできない処理を実装したりしていきました。
実際に以下のような事例です。
事例1|GoogleSpreadSheet|データ集計
事例2|Excel|データ集計
事例3|CSV|フォルダ内のCSVファイルを解析してChatworkへ出力
事例4|Outlook1|受信メールを一覧化(添付ファイルも保管)
事例5|Outlook2|メール送信
事例6|Word|フォルダ内の全てのワードファイルを自動翻訳するツール
事例7|PDF|フォルダ内の全てのPDFファイルに自動作成したパスワードを付与
事例8|ウェブスクレイピング1|Googleで検索キーワード上位10記事のH1,H2,H3タグをエクセルに出力
事例9|ウェブスクレイピング2|サイトからCSVをダウンロード
上記の内容は以下の記事で紹介しています。興味がある人はぜひご覧ください。
ここまでPythonを勉強してきて感じるのは、仕事効率化から機械学習まで幅広く仕事に活用することができる「優れモノ」ということです。
条件がそろえば、VBAやGASより威力を発揮します。
実際、エクセルとGoogleスプレッドシートの両方に対応できる点は、私にはとても魅力的です。
多くの人にPythonを学んでほしいと感じます。
しかし、Python学習をこれから始める人にとって、Python習得難易度や学習期間については気になるはずです。
そこで、以下でPython習得難易度や学習期間について紹介していきます。
Python学習におけるプログラムの難易度
Python学習の難易度は、実際に私が作成した事例をもとに難易度を紹介します。
★☆☆|かんたん(低い)
★★☆|フツウ
★★★|難しい(高い)
# | プログラム | 難易度 | 説明 |
---|---|---|---|
1 | ★☆☆ | エクセルでデータ分析 | Openpyxlというエクセル操作ライブラリを設定するだけなので、難易度は低い |
2 | ★☆☆ | グーグルスプレッドシートでデータ分析 | GoogleスプレッドシートのAPI設定するだけなので、難易度は低い |
3 | ★★☆ | Youtube AnalyticsのデータをGoogleスプレッドシートへ出力(定期実行) | Youtube AnalyticsとGoogleスプレッドシートの2つのAPI設定を行い、Youtube Analyticsは欲しい情報を参考資料を読み込んで自分で取得する必要があるため、難易度は普通。 |
4 | ★★☆ | フォルダ内の全てのPDFにパスワードを設定 | 「フォルダ内のPDFのみ処理する」「パスワードをランダムで設定する」「ランダム作成したパスワードをエクセルに一覧にする」という3つを組み合わせているため、難易度は普通。 |
5 | ★★☆ | ウェブスクレイピングした結果をエクセルへ出力 | あるキーワードの検索上位10位のURLを取得し、その10コに対して、目次を取得してエクセルに書き出すというプログラムであり、複数の処理をまとめているため、難易度は普通。 |
6 | ★★★ | ログインが必要なウェブからCSVをダウンロードして、売上データを解析してチャットへ出力(定期実行) | ウェブにログインするプログラムを作成、CSVをダウンロード、売上データをPandasで加工、チャットへ定期出力。ギミックがいる処理が多いため、難易度は高い。 |
7 | ★★★ | ブログ記事の順位変動を定期通知 | Google Search ConsoleのAPIからデータを取得、データをCSVでダウンロード、各記事の順位変動をグラフ化、結果を定期通知。4つ以上のプログラムを組み合わせる、かつプログラムのアイデアも必要なため、難易度が高い |
Pythonを仕事で使えるようになるまでの学習期間
私がPythonの各プログラムを作れるようになるまでに必要だった学習期間を以下の表で紹介します。
以下の期間で習得しないといけないわけではありません。
参考程度としてご覧ください。参考程度にご覧いただいたほうがいい理由は表の下で説明しています。
学習期間 | プログラム |
---|---|
~半年 | エクセルでデータ分析 |
グーグルスプレッドシートでデータ分析 | |
Outlookのメール送信 | |
~1年 | フォルダ内の全てのPDFにパスワードを設定 |
ウェブスクレイピングした結果をエクセルへ出力 | |
1年~ | Youtube AnalyticsのデータをGoogleスプレッドシートへ出力(定期実行) |
ログインが必要なウェブからCSVをダウンロードして、売上データを解析してチャットへ出力(定期実行) | |
ブログ記事の順位変動を定期通知 |
上記の期間ですが、プログラミング未経験者の人には参考にしないほうがいいです。
なぜなら、2つの理由があるからです。
プログラミング初心者が上記の習得期間を参考にしないほうがいい2つの理由
プログラム言語をある程度書けるようになってから、Python勉強を行いました。
したがってPythonで作成できないことでも、VBAで対応できたため、Pythonのプログラムを作成できなくても「まあいいか」と思い、すぐに諦めてしまっていました。
実際、私の場合VBAが最初のプログラム言語でしたが、VBA習得したときは、もっとしぶとく学習していました。
VBA習得については、こちらの記事で紹介していますので、プログラミング言語習得の体験談としてはそちらも参考になるはずです。
上記の学習期間は、Python学習を辞めて何も手を付けていなかった時期を含んでいます。
もし勉強を継続できていたら、もっと早くいろいろなことができたと思います。
この2つの理由から、上記のプログラムを自作できるようになるまでの学習期間は参考にならないです。
これからPython学習をする人は、上記の内容を参考にするなら、私の学習期間より早く習得することを目標にしてほしいです。
どのレベルになれば仕事で使えるレベルになるのか?
「どのレベルになれば仕事で使えるレベルになるのか?」という質問をもらうことがあります。
それについては、以下の表の「★★☆|フツウ」と「★★★|難しい(高い)」のプログラムを書けるレベルであれば、仕事で使えるはずです。
以下の表はすでに紹介した内容と同じものです。
★☆☆|かんたん(低い)
★★☆|フツウ
★★★|難しい(高い)
# | プログラム | 難易度 | 説明 |
---|---|---|---|
1 | ★☆☆ | エクセルでデータ分析 | Openpyxlというエクセル操作ライブラリを設定するだけなので、難易度は低い |
2 | ★☆☆ | グーグルスプレッドシートでデータ分析 | GoogleスプレッドシートのAPI設定するだけなので、難易度は低い |
3 | ★★☆ | Youtube AnalyticsのデータをGoogleスプレッドシートへ出力(定期実行) | Youtube AnalyticsとGoogleスプレッドシートの2つのAPI設定を行い、Youtube Analyticsは欲しい情報を参考資料を読み込んで自分で取得する必要があるため、難易度は普通。 |
4 | ★★☆ | フォルダ内の全てのPDFにパスワードを設定 | 「フォルダ内のPDFのみ処理する」「パスワードをランダムで設定する」「ランダム作成したパスワードをエクセルに一覧にする」という3つを組み合わせているため、難易度は普通。 |
5 | ★★☆ | ウェブスクレイピングした結果をエクセルへ出力 | あるキーワードの検索上位10位のURLを取得し、その10コに対して、目次を取得してエクセルに書き出すというプログラムであり、複数の処理をまとめているため、難易度は普通。 |
6 | ★★★ | ログインが必要なウェブからCSVをダウンロードして、売上データを解析してチャットへ出力(定期実行) | ウェブにログインするプログラムを作成、CSVをダウンロード、売上データをPandasで加工、チャットへ定期出力。ギミックがいる処理が多いため、難易度は高い。 |
7 | ★★★ | ブログ記事の順位変動を定期通知 | Google Search ConsoleのAPIからデータを取得、データをCSVでダウンロード、各記事の順位変動をグラフ化、結果を定期通知。4つ以上のプログラムを組み合わせる、かつプログラムのアイデアも必要なため、難易度が高い |
「★★☆|フツウ」と「★★★|難しい(高い)」であれば、仕事で使えるレベルとお伝えしました。
これはあくまで私の評価です。
しかし、実際に仕事で使えるかどうかケースバイケースです。
「ケースバイケースとは何を意味しているのか?」については以下の3つの注意点をご覧ください。
注意点1|仕事で使えるレベルは相対的
注意点2|プログラミングはスキルより仕事を見つける力
注意点3|プログラミングスキルよりデータの質
以下で詳しく説明していきます。
注意点1|仕事で使えるレベルは相対的
仕事で使えるレベルは働く職場環境で相対的に決まります。
たとえば一緒に働く人がPython上級者が多い場合、高いレベルのPythonスキルが求められます。
したがって、上記で高レベルと紹介した内容も低レベルとして評価されるかもしれません。
逆に、一緒に働く人がPythonはおろかプログラミングを使えない人であれば、低レベルでも高レベルと評価されるかもしれません。
そのため職場によって、仕事で使えるレベルの水準は変化することは念頭に入れておくことをオススメします。
注意点2|プログラミングはスキルより仕事を見つける力
プログラミングは、実装するスキル(ifやforなど知識)に焦点があてられがちですが、実際はクリエイティブなスキル(どのような仕事をプログラミングで作り上げるかというアイデア)を考えるほうが重要です。
実際、プログラミングの実装スキルはウェブ情報を調べたり人に聞いたりすれば、なんとかなります。
しかし、プログラミングで「何を作るのか」というクリエイティブなスキルは、人に聞いても出てきません。
つまり、クリエイティブなスキルのほうが希少価値が高いのです。
しかしながら、上記の表で紹介した内容はあくまで、実装するための知識に過ぎません。
実装するための知識は、たとえるなら、模試の合格判定(A判定、B判定など)のようなものです。
しかし当然ですが、模試の合格判定で高い評価をもらったとしても、大学に入学するための指標であって、社会で活躍できる指標ではありません。
実際、仕事で使えるためにはクリエイティブなものにお金が集まります。
つまり、上記の表のレベルは実際の仕事の評価とはほとんど関係ありません。
注意点3|プログラミングスキルよりデータの質
機械学習のようなデータサイエンスは、処理する元データの集め方が肝になってきます。
たとえるなら料理人の腕より、食材の質が料理の味に大きく寄与するわけです。
実際、機械学習を実装する場合、元データが良くないと、よい結果を得ることができません。
つまりプログラミング処理をする前のデータ入手やデータ加工が、結果に大きな影響を及ぼします。
残念ながら、プログラミングの知識の深さが仕事の評価につながらないのです。
要は、上記のレベルの一覧表はPythonプログラミングスキル知識をもとに作成しています。
当然、最低限の知識は必要です。
しかし知識だけあっても、それだけで仕事でPythonを使えることにはなりません。
したがって、上記のレベル一覧表はあくまで参考程度のものとご理解ください。
Pythonの勉強をしたいなら
ここまで私のPythonプログラム学習の経験をお伝えしてきました。
Pythonの勉強は試行錯誤の連続です。今もプログラムを書いたらエラーが出たり、思うような結果が得られなかったりすることもあります。
ただ、思うようにいかないときこそ、新しいことを身につけるチャンスでもあります。
実際、私もうまくいかないときは、教材を購入したりウェブで調べたりして問題解決することで知識を深めています。
また、オンライン教材でまとめて知識をインプットしたり、どうしても一人で解決できないときは人に聞いたりすることもあります。
この記事を読んでいるあなたがもしPythonを勉強したいなら、試行錯誤の連続になると思います。
Python学習に決まったやり方はありません。
一人一人の実力も違えば、やりたいことや達成したいことも異なるからです。
そのため、あなたのしっくりくる勉強方法を見つけて実践してみるのが一番です
ただ何から始めればいいか分からない人もいるはずです。
そこで以下に私が作ってきたPythonプログラムの事例を紹介します。
これまで10万円以上の学習費用と数年間の学習時間をかけてPythonを勉強してきたので、参考になる部分もあるかと思います。
興味がある人はご覧ください。