プログラミングは難しいでしょうか!?
- プログラミングを勉強したいけど難しそう
- 独学だと何から始めたらいいかわからない
- どれくらいの期間で知識が習得できるのか不安
上記のような悩みをお持ちの方がおられると思います。
この記事では、Pythonをゼロから学ぶことにした私のことを紹介します!
Pythonに興味のある方は是非読んできただき、学習の参考にしていただければ嬉しいです!
このブログを読んでほしい方
このブログは、私のようなプログラミングの知識が全くないけど、プログラミングの知識を習得したいと考えている方や、独学で本当にプログラミング知識を取得できるのかを知りたい方に向けて書いています。
さらにこのブログは、プログラミングの先生が書いた記事ではなく、全くの初心者が勉強してスキルを習得していく様子を観察したい方にも向いてます!
このブログではプログラミング言語として、Pythonを選択しています。
プログラミングで特にpythonに興味のある方はこのブログを読んでいただき、一緒に学習に取り組みましょう!
初心者である私が理解に苦しんだ点やその解決方法も含めて学習記録を公開します!
自己紹介
まずはじめに、python独学の実験台となる私のプロフィールを紹介します!
私の背景と現在の職業
私は現在、医療関係の仕事(営業)に従事していますが、業務でプログラミングに関わることは全くありません。
高校や大学ではプログラミングどころか、パソコンに触れる機会も少なかったです。
ブログで記事を執筆するのにもコードはほとんどわかりませんので、ビジュアルエディターという文字を直接入力する方法で記事を書いています。
なぜPython(プログラミング)を学ぶことにしたのか
Pythonを学ぶことにした理由は、私の趣味である仮想通貨の取引で、pythonの自動売買BOTに興味を持ったことがきっかけです。仮想通貨の取引を自動化できるツールに魅力を感じ、調べていく中でPythonがその分野で強力なツールであることを知りました。
しかし、調べていくとそれだけではなく、Pythonが情報収集や分析、webサイトの作成等、幅広い用途に対応できることがわかり、私の興味はさらに広がりました。
業務では、ウェブからの情報収集やデータ分析が必要とされることが多く、これらのタスクを効率化できる手段を模索していた私にとって、Pythonはまさに理想的なツールでした。
また、pythonは初心者にとってわかりやすいシンプルなコードで構成されており、それでいて強力で豊富なライブラリがあるという情報を見て、非常に魅力的に感じました。
Pythonを習得することで、手作業に頼ることなく、より迅速かつ正確に情報を処理し、業務の質を向上させることができると考え、Pythonを学ぶことにしました。
私がPythonを学ぶことで得たいスキルと目標
Pythonを学ぶことで、まずはデータの収集、整理、分析を効率的に行うスキルを身につけたいと考えています。これにより、日々の業務を大幅に効率化し、より多くの時間を力を入れるべき業務に割けるようになります。
さらに、Pythonを使ったデータの可視化や機械学習の基礎知識も身に付け、現場での意思決定を支援できるスキルを習得することを目指します。
また、余力が出てくれば、仮想通貨の自動売買BOTにも手を出してみたいと考えています。
ブログで学習過程を公開する目的
このブログを通じて、学習のモチベーションを維持したいと考えています。
独学はやはり孤独で、誰かに見てもらっていることがモチベーションに繋がると考えました。
また、学びを記録することで、自分自身の理解を深め、後から振り返ることができます。
学んだことをアウトプット(言語化すること)は重要だと考えます。
さらに、ブログを通じて同じ志を持つ方と交流し、互いにフィードバックを与え合うことができれば、学習の質を向上させることができると考えています。学習過程を共有することで、新たな発見や意見交換が生まれることも期待しています。
学習の目標設定と進め方
私のPython学習の目標は、最終的にウェブから情報収集し、収集したデータの分析を効率化することです。これにより、日常業務の効率を高め、時間を節約することを目指しています。
裏の目標として、仮想通貨の自動売買BOTで利益をあげることを設定しています!
短期的な目標と長期的な目標
短期的な目標として、まずはPythonの基本的な構文を理解し、シンプルなプログラムを自力で書けるようになることを目指します。次に、データの処理や分析を行うスキルを身に付け、業務で活用できるレベルに到達することが目標です。
長期的な目標としては、Pythonを使って機械学習やデータサイエンスの基礎を学び、より高度な分析技術を習得することを目指しています。
短期目標 | ・Pythonの基本的な構文を理解し、シンプルなプログラムを自力で書くこと ・データの処理や分析を行うスキルを身に付け、業務で活用できるレベルに到達すること |
長期目標 | ・Pythonを使って機械学習やデータサイエンスの基礎を学び、より高度な分析技術を習得 ・仮想通貨の自動売買BOTで利益をあげること |
学習計画の概要と進め方
学習を効果的に進めるために、まずは基礎的な内容をしっかりと学び、その後、実際のプロジェクトを通じて応用力を養っていくという学習計画をchatGPTの力を借りて作成しました。
その際、条件としたのは次の通りです。
- 1日の勉強は2時間程度
- 全く基礎知識のない初心者が無理のない学習計画
- 短期目標の成果物として、ウェブスクレイピングからの情報収集するプログラムを指定
1日の学習時間は2時間程度しかとれないため、chatGPTを利用して効率的に学習を進めていきます。
30日間の学習計画(ChatGPTで作成)
30日間で、Pythonの基礎から実践的なスキルまでを段階的に学習します。最初の10日間で基礎を固め、その後20日間で応用技術とプロジェクトに取り組む計画です。
なお、学習の進捗状況によっては途中で学習計画を修正する可能性があります。
修正した場合は、その理由と修正履歴を残し、同じように学習を進めたい方の参考となるようにします!
30日間で学ぶ内容の概要
ChatGPTによると「30日間で学ぶ内容の概要」は次のとおりだそうです。
学習を始める前の心境としては、ついていけるか不安です。
この30日間で、Pythonの基礎構文から始まり、データ分析やWebスクレイピングのスキルを習得します。学習の流れとしては、最初に変数やデータ型、制御構文などの基礎をしっかり理解し、次にリストやディクショナリといったデータ構造の操作方法を学びます。その後、関数やオブジェクト指向プログラミングの基本を習得し、ファイル操作や例外処理といった実践的な技術に進みます。最後の10日間では、これらのスキルを活用してWebスクレイピングプロジェクトを行い、実際のデータを収集・分析する技術を身につけます。
上記の概要に出てくる用語はあまり理解できていません。
各Dayの目標
下記の表は、ChatGPTで作成した30日間の学習計画の詳細な目標です。各Dayごとに明確な目標を設定し、それに合わせて学ぶ内容を計画としました。
以下はChatGPTが出力した文章の引用です。
最初の10日間はPythonの基礎構文とデータ型の習得に焦点を当てています。
中盤の10日間で関数やクラスといったプログラミングの応用技術に進み、後半の10日間でWebスクレイピングやデータ分析の技術を身に付ける予定です。
最後の2日間では、学んだことを総合的に使い、プロジェクトを完成させることを目指します。
日数 | 項目 | 内容 | 目標 |
---|---|---|---|
Day 1-2 | Pythonの導入と環境設定 | Pythonとは何か、プログラミング言語の基礎。Google Colaboratoryのセットアップ | 環境設定を完了し、初めてのプログラム「Hello, World!」を実行する |
Day 3-4 | 変数とデータ型 | 変数の定義、基本的なデータ型(整数、文字列、リストなど)の理解と操作 | 変数を使った簡単な演算や操作を学ぶ |
Day 5-6 | リストとタプルの基礎 | リストとタプルの違い、リストの基本操作(追加、削除、ソートなど | リストとタプルを使いこなし、基本的な操作を行う |
Day 7-8 | 辞書とセットの基本 | 辞書とセットの定義、操作方法、実際の活用例 | 辞書やセットを使ったデータの管理方法を学ぶ |
Day 9-10 | 条件分岐(if文)の基礎 | if文を使った条件分岐の実装、論理演算子の理解 | 条件に応じた動作をするプログラムを作成する |
Day 11-12 | ループ処理(for文, while文)の基礎 | forループ、whileループの使い方、ループ制御(break, continue) | 繰り返し処理を行うプログラムを作成する |
Day 13-14 | 関数の基礎 | 関数の定義と呼び出し、引数と返り値、スコープの概念 | 再利用可能な関数を作成し、プログラム内で利用する |
Day 15-16 | モジュールとライブラリの活用 | 標準ライブラリや外部ライブラリのインストールと使用方法 | 外部のライブラリを使った簡単なプログラムを作成する |
Day 17-18 | ファイル操作 | ファイルの読み書き、CSVファイルの扱い、例外処理の基礎 | ファイルからデータを読み込み、保存するプログラムを作成する |
Day 19-20 | オブジェクト指向プログラミング(OOP)の基礎 | クラスとオブジェクトの理解、クラスの定義とインスタンスの作成 | シンプルなオブジェクト指向プログラムを作成する |
Day 21-22 | 継承とポリモーフィズム | クラスの継承、メソッドのオーバーライド、ポリモーフィズムの理解 | クラスの継承を使った応用的なプログラムを作成する |
Day 23-24 | 例外処理とデバッグ | 例外処理(try, except, finally)の応用、デバッグ手法の理解 | 安定したプログラムを作成し、バグを修正する方法を学ぶ |
Day 25-26 | リスト内包表記とラムダ式 | リスト内包表記とラムダ式の使い方と利点 | コードを簡潔にする方法を学び、実践に取り入れる |
Day 27-28 | Webスクレイピングの基礎 | BeautifulSoupやrequestsを使ったWebデータの取得と解析 | 実際にWebページをスクレイピングしてデータを収集するプログラムを作成する |
Day 29-30 | Webスクレイピングプロジェクトの完成 | ニュースサイトからの最新記事を収集し、キーワード分析を行うプロジェクトを実施 | 収集したデータを分析し、結果を可視化。ブログ記事としてまとめる |
Day 30のWebスクレイピングによるデータ収集と分析プロジェクトの詳細
目標とする成果物を明確にしておくことが頑張れる一つの要因だと考え、ここはしっかり決めることにしました。
ChatGPTに相談し、良さげな目標ができましたので、次の成果物を学習30日目で作成できるよう頑張ります。
現時点で詳細に出てくる用語はほとんど理解できていません!
プロジェクト名
ニュースサイトからの最新記事の収集とキーワード分析
概要・目標
目標は、特定(複数)のニュースサイトから最新の記事タイトルと概要をスクレイピングし、収集したデータを分析して、頻出キーワードやトピックの傾向を把握することです。
詳細
- サイト選定:
- スクレイピング対象となるニュースサイトを1つ(または複数)選定します。例えば、国内のニュースポータルや特定のカテゴリ(テクノロジー、ビジネスなど)に特化したサイト。
- データ収集:
- BeautifulSoupやrequestsを使用して、ニュースサイトの最新記事ページからタイトルや概要、URLなどの情報を取得します。
- 必要に応じて、複数のページにわたってスクレイピングを行い、記事データを蓄積します。
- データ保存:
- 収集したデータをCSVファイルやSQLiteデータベースに保存し、後からアクセスできるようにします。
- キーワード分析:
- Pythonの自然言語処理ライブラリ(例えば、NLTKやTextBlob)を使用して、記事タイトルや概要から頻出するキーワードを抽出します。
- 抽出したキーワードの出現頻度を集計し、トピックの傾向を把握します。
- データ可視化:
- MatplotlibやSeabornを使用して、キーワードの出現頻度をグラフ化します。例えば、ワードクラウドを作成することも考えられます。
- 結論と考察:
- 収集したデータと分析結果を元に、最近のニューストピックに関する考察を行い、どのようなトピックが注目されているのかをブログでまとめます。
ChatGPTの活用方法
ChatGPTに、pythonの学習においてどのような場面で役立つかを聞くと次のとおり提案してくれました。
1. 基本的な質問や概念の理解
- コードの説明: どんなコードでも貼り付けて、その動作や意味を説明してもらうことができます。例えば、
for
ループの意味やif
文の構造について質問することで理解を深められます。 - 用語の定義: プログラミングで出てくる専門用語(例: 変数、リスト、辞書など)の意味を簡単に理解するために、ChatGPTに聞いてみることができます。
2. エラーの解決
- エラーメッセージの解読: プログラムがエラーを出したとき、そのエラーメッセージをChatGPTに貼り付け、原因と解決策を尋ねることができます。特に初心者にとっては、エラーメッセージの解釈が難しいことが多いため、有効です。
- コードのデバッグ: 正しく動かないコードをChatGPTに見せて、どこが問題なのか指摘してもらうことができます。
3. コード例の提供
- サンプルコードのリクエスト: 特定の機能や処理を実現するためのサンプルコードをリクエストすることができます。たとえば、リストをソートする方法やファイルを読み込む方法など、具体的な例をすぐに取得できます。
- コードの改善: 自分で書いたコードを貼り付け、より効率的な書き方やベストプラクティスについてアドバイスを求めることができます。
4. 演習問題の作成と解答
- 練習問題の出題: 特定のトピックに関する練習問題を作成してもらい、それを解くことでスキルを高めることができます。
- 解答のチェック: 自分で解いた練習問題の解答をChatGPTに見せて、正しいかどうかを確認したり、別の解答方法を提案してもらうことができます。
ChatGPTの活用方法と限界
ChatGPTには限界もあります。複雑なエラーの診断や、コードの最適化といった高度なタスクには、必ずしも最適な答えが得られないことがあります。また、正確性や信頼性の面でも、提供される情報が100%正しいとは限りません。したがって、ChatGPTを活用する際には、他のリソースと併用し、自分で調査・確認する習慣を持つ必要があります。
そこで私はもう一つの勉強ツールとして参考書を1冊購入することにしました。
Python学習で利用する教材とリソース
勉強に時間があまりかけられないので、可能な範囲で学習に資金を投資していく方針です。
まず、次の参考書を1冊購入しました。
「スッキリわかるPython入門」
この参考書を選んだ理由は、レビューなどから次のような点が確認できたからです。
- プログラミング初心者にお勧めできる一冊であるということ
- 内容が丁寧に構成されており、基本からしっかりと学べること
- 豊富な図解や具体例が多く、初心者がつまずきやすいポイントも分かりやすく解説されていること
- 演習問題も充実しており、実践的に学習を進められること
複数の参考書を読んでも混乱すると考えましたので、まずはこちらの参考書とChatGPTをベースに学習していきます。
その他の良さげな教材とその理由
①progate(プロゲート)
いろいろとネット検索していると、progateというプログラミングのオンライン学習が勉強になりそうだと思いました。
1か月1500円かかりますが、PCに環境構築が不要でプログラミングを学べるそうです。練習問題が多く、回答例があり、自身の回答を添削できるそうなので、勉強がはかどりそうだと思いました。
試してみて良さそうなら紹介記事を書いてみます!
②Udemy(ユーデミー)
動画でプログラミングを学ぶのも効率的だと思いました。文字だけでなく、講師が解説してくれますので理解の助けになると思います。初心者用の動画もあるそうなので、視聴してみて理解の助けになったものがあれば紹介記事を書いてみます!
pythonの学習環境の構築
私はとりあえず、google Colaboratoryというgoogleが提供するオンラインpython開発環境を利用することにしました。
googleアカウントさえあれば無料で使える開発環境で、初期段階でPCに難しい環境構築を考える必要がないため、私のような初心者にとって取り組みやすいものだと考えました。
知識がついてくれば、自身のPCで環境構築をしたいと考えています。
まとめ
この記事では、プログラミング知識がゼロの私が、どのような学習計画を立てて、Python学習に取り組んでいくのかを紹介しました。
現在の計画では、参考書1冊とChatGPTがあればなんとかなるだろうと安易に考えていますが、うまくいかないことが出てくれば、それを記事にし、計画の修正を図っていこうと考えています。
皆様どうぞよろしくお願いします!
コメント