AI時代の到来を受けて、大人気プログラミング言語となった「Python」。
ただ興味を持ってみたものの『何から始めたらいいのかわからない。』
という人は意外と多いです。
そこでこの記事では、非情報系Python未経験者が、自走できる中級者なるまでの「最短独学ロードマップ」を紹介していきます。
機械学習への応用方法や、上級者になるための道標も紹介するので、ぜひ最後まで見ていってください。
独学Step.1-1:まずはPythonに慣れる
まずは入門レベルPythonに触れましょう。
取り組む教材は「Progate」でOK。有料版までやってしまってください。
この段階のポイントは2つ。
- 「なれちゃったなー」と思うまでなんども回す
- 意味不明すぎるところは無理に理解しなくていい
特に「クラス」をはじめとするオブジェクト指向の概念は、具体例をいくつか見てからでないと理解するのは厳しい。
なので無理しなくて大丈夫です。
独学Step.1-2:最低限の基礎知識
入門的なPythonに慣れるのと同時に、最低限の基礎知識も入れる必要があります。
- CPU、メモリー、ハードディスクなどのハードウェア
- Windows、Linux、macOSなどのオペレーティングシステム(OS)
- プログラムが動く上でのメモリの使い方
- データベース、サーバ、ネットワーク、セキュリティ
この辺をざっくり理解する必要があります。
非情報系の人はココをきちんとやらないと確実に摘むので絶対にやってください。
逆にこの段階を踏めば、何を学べばいいかすぐわかると思います。
もうこの記事は読まなくていいですね。(読んで。)
初学者にオススメなのは、こちらのシリーズ。
それぞれの特徴は、
- 赤 ⇒ 常識的な事項を広く薄く
- 青 ⇒ 「メモリの使い方」を中心に、プログラムの基礎構造、OSなんかをちょっと深堀り
- 水色 ⇒ クラスをはじめとするオブジェクト指向関連の概念をちょこちょこ。
あとサーバー、ネットワーク、セキュリティに関してはこちらのシリーズが易しくて良い。
データベースに関しては、ちょうど良いものを選ぶのが難しかったので、僕が一番最初に読んだものを載せておきます。
何度も言いますが、非情報系の人はココが肝です。
次のステップをやりながらでもいいので、じっくりと取り組んでください。
全体像を把握することなしに、正しい道を見極めることはできません。
独学Step.2:本格的なPython基礎
つづいて本格的なPython基礎を学んでいきましょう。
Python実行環境は、「Anaconda」をインストールすればいいです。
もしくは、これから紹介していく書籍でオススメされているものでもOK。
「Anaconda」のインストールは次の記事が参考になります。
Caution! Anacondaは、日本語などを含むフォルダにはインストールできません。 Windowsのアカウント名…
この段階でのオススメ書籍はこちら。これ以上ないくらい丁寧な書籍です。
ここでのポイントは次の2つ。
- 最初は理解しながら写経する。3周くらい回してもOK。
- 意味不明すぎるところは、一旦飛ばす。最終的に8割の完成度でOK。
レベルの高めをご所望なら次の書籍。結構むずいです。
Pythonの基礎概念や目的別テクニックを網羅的に紹介するだけでなく、それを応用したプロジェクトサンプルまで掲載されています。
Part2, Part3は、ある程度Python以外の知識がないとキツいので無理せずに。
標準ライブラリまで網羅したい人には、次をオススメ。
全部まとめて学びたい人には、次のUdemy教材を進めておきます。
この動画、文法から何から「全部乗せ」です。
ただ講義のスライドが凄く分かり辛いので、初学者にはオススメしません。
ここまでやれば、「Pythonを使って、なんとなく動くものを作れる」というレベルにはなっているでしょう。
独学Step.3-1:アルゴリズムとデータ構造
さらなるレベルアップには、「アルゴリズムとデータ構造」について学ぶ必要があります。
なぜなら「アルゴリズムとデータ構造」の学習は、プログラミングを使った問題解決能力に直結しているから。
例えば次のような問題を考えます。
- データの集まりの中に、ある特定の値が入っているかどうか調べたい
- 配列の要素を小さいほうから順に並べたい
- 常に50音順に並ぶように、データの集合を構造化したい
「アルゴリズムとデータ構造」とは、これらの問題を簡単に解決する能力を身に着けるための基礎。
中級者を目指す人は必ず学習しましょう。
ちょっと堅めの内容ですが、理論面でのオススメ書籍はこちら。
Pythonはデータ構造がかなり特殊ですので、必ず勉強しましょう。
AtCoderの問題を解きながらゲーム感覚(というのは嘘つきか?)でアルゴリズムだけを学びたいならこちらもオススメ。
独学Step.3-2:オブジェクト指向プログラミング
実は現代のコーディングには、実行速度などの「プログラムの性能」よりも、コード改良のしやすさ・バグ修正のしやすさ・起こりにくさのような「保守・運用性の高さ」が求められています。
それを実現するのがオブジェクト指向プログラミングです。
ただ、これがかなり難しい(というより理解できているのかわからない。)
こちらは、Pythonでオブジェクト指向のソフトウェアデザインを学べるレアな書籍です。(和書はほとんどがjava)
デザインパターンを学ぶ
オブジェクト指向の思想を守ったまま、実際に存在する機能を実装するためのパターン。
それが「デザインパターン」です。
まぁなんでもかんでもオブジェクト指向を守って実装できるわけではないのですが、ある程度覚えておけば何かを設計するときの「良い指針」となってくれます。
独学Step.3-3:OSへの理解を深める
自走できる中級者なるには、開発環境の基礎も理解しておく必要があります。
ちなみに開発環境とは、めちゃめちゃざっくり次のように分解できます。
開発環境 = OS + ハードウェア
このうちCPU、メモリ、ハードディスクなどのハードウェアの基礎に関しては、一番最初に紹介した書籍で十分です。
次の書籍でOS(Linux)の仕組みについて基礎的な部分を理解しておきましょう。
本書ではGO, Python, bashのコードを使って、OSの機能を可視化しながら進めていきます。
文章の説明だけではわかりにくい部分を、すっきり理解できるでしょう。
コマンドラインの使い方に不安があるなら、「Progate」や「Envader」で環境構築なしで学べるのでオススメ。
Python独学:更なる学び
ここからは、さらに上級者を目指すための学習のヒントをいくつか挙げていきます。
ただ何をもって「上級者」とするかは、どのタイプのエンジニアを目指すかで異なると思うので、ここでは主にアプリケーションなどのソフトウェア開発の視点で紹介します。
コードを洗練する
上で現代は保守・運用のしやすさを求められる時代だという話をしました。
その中にはシンプルなコードの読みやすさ、いわゆる可読性も含まれています。
可読性はいくら良くしても、やりすぎということはありません。
コードの可読性に関しては次の書籍が有名です。
Pythonに特化したものだと、ややレベルが高いが、以下の書籍がオススメ。
強力な機能を備えながらもシンプルで使いやすい、Pythonの魅力と威力を体感できる一冊。
現場での開発の流れを知る
当たり前ですが、実際の現場の仕事はコーディングだけではありません。
プロセス設計、業務分析・要件定義、システム設計など、コーディング以前の重要なことがいくつもあります。
これらは現場でしか学べなさそうですが、概要をつかむだけなら書籍でも可能です。
同じ著者からシリーズで出ているこちらがいいでしょう。
また具体的にPythonにフォーカスしたものが良いなら、以下の書籍がオススメ。
PythonのフルスタックフレームワークDjangoでの開発を題材に、開発の流れで注意すべきポイントを解説してくれます。
各種開発ツールの習得
どこの会社に入っても使うことになる開発ツールがいくつかあります。
それが「Git」と「Docker」。
特にGitは個人でプログラミング学習を進めていく上でも、いたるところで登場するので学習しておくと良いでしょう。
以下に参考記事を載せておきます。
今回は、非エンジニア向けのGit学習ロードマップをご紹介。 Gitを学ぶ前提となる知識や、おすすめ書籍・動画教材、Gitの効率的な学び方についてまとめていきます。 ぜひ最後まで読んでいってください。 まずはLi[…]
機械学習への応用
最後に機械学習・データサイエンスへの応用について、説明していきましょう。
実は機械学習への応用に関して、Pythonでのコーディングレベルを上げる必要はほとんどありません。
もちろん理解できているほうがスムーズではあるのですが、実際に必要とされるのはデータ分析用Pythonライブラリの使いかたを覚えること。
その基本を学ぶには以下の書籍が超オススメですので、ぜひ取り組んでみてください。
機械学習・データサイエンス分野へ進みたい人が、本当に学ぶべきことは次の三つです。
- 数学(微分積分・線形代数・フーリエ解析・ラプラス変換・最適化数学など)
- 統計学(数理統計学まで)
- 機械学習・深層学習・強化学習のそれぞれの理解
それぞれの学習がかなり重いので、できる限り早い段階から始めましょう。
いくつか参考になる記事を載せておきます。
統計学や機械学習アルゴリズムなど、データサイエンスを学んでいくと数学力不足で理解が進まないことが良くありますよね。 お察しの通り、データサイエンスを学ぶなら数学は避けられません。 どうせ必要になるなら、取り組むのは早ければ早い[…]
[word_balloon id="1" size="M" position="L" radius="true" name="" balloon="talk" balloon_shadow="true"]こんにちは、ツクダンです![/wo[…]
Python独学まとめ
この記事では、非情報系Python未経験者が、自走できる中級者なるまでの「最短独学ロードマップ」を紹介しました。
さらには、より上級者を目指すヒントや機械学習・データサイエンス分野への応用に必要な勉強もまとめてきました。
ぜひあなたの学習の参考にしてみてください。