
こんにちは、ツクダンです!
AI時代の到来を受けて、現在使用率No.1プログラミング言語となった「Python」。
ただ興味を持ってみたものの『何から始めたらいいのかわからない。』
という人は意外と多いです。
そこでこの記事では、非情報系Python未経験者が、自走できる中級者なるまでの「最短独学ロードマップ」を紹介していきます。
機械学習への応用方法や、上級者になるための道標も紹介するので、ぜひ最後まで見ていってください。
独学Step.1-1:まずはPythonに慣れる

まずは入門レベルPythonに触れましょう。
取り組む教材は「Progate」でOK。有料版までやってしまってください。
この段階のポイントは2つ。
- 「なれちゃったなー」と思うまでなんども写経
- 意味不明すぎるところは無理に理解しなくていい
特に「クラス」をはじめとするオブジェクト指向の概念は、具体例をいくつか見てからでないと理解するのは厳しい。
なので無理しなくて大丈夫です。
独学Step.1-2:最低限の基礎知識

入門的なPythonに慣れるのと同時に、最低限の基礎知識も入れる必要があります。
- CPU、メモリー、ハードディスクなどのハードウェア
- Windows、Linux、macOSなどのオペレーティングシステム(OS)
- プログラムが動く上でのメモリの使い方
この辺をざっくりでも理解する必要があります。
非情報系の人はココをきちんとやらないと確実に摘むので絶対にやってください。
逆にこの段階を踏めば、何を学べばいいかすぐわかると思います。
もうこの記事は読まなくていいですね。(読んで。)
初学者にオススメなのは、こちらのシリーズ。
上から「赤 ⇒ 青 ⇒ 水色」の順でやるのがオススメです。
何度も言いますが、非情報系の人はココが肝です。
次のステップをやりながらでもいいので、じっくりと取り組んでください。
焦って先を急いでは、大事なものを見落としてしまいます。
独学Step.2:本格的なPython基礎

つづいて本格的なPython基礎を学んでいきましょう。
Python実行環境は、「Anaconda」をインストールしてください。
「Anaconda」のインストールは次の記事が参考になります。
Caution! Anacondaは、日本語などを含むフォルダにはインストールできません。 Windowsのアカウント名…
この段階でのオススメ書籍はこちら。
Pythonの基礎概念や目的別テクニックを網羅的に紹介するだけでなく、それを応用したプロジェクトサンプルまで掲載されています。
ここでのポイントは次の三つ。
- 初学者のうちは10章の基礎概念までで十分
- 最初は理解しながら写経する。3周くらい回してもOK。
- 意味不明すぎるところは、一旦飛ばす。最終的に8割の完成度でOK。
Part2, Part3は、ある程度Python以外の知識がないとキツいので無理せずに。
色々経験して、知識がついてからまた戻ってきましょう。
ここまで終えれば基礎は終了。
「Pythonを使って、なんとなく動くものを作れる」というレベルにはなっているでしょう。
もし余裕がある人は、文法事項の確認もかねて次の書籍に取り組んでみると、かなり楽しめるようになっていると思います。
独学Step.3-1:アルゴリズムとデータ構造

さらなるレベルアップには、「アルゴリズムとデータ構造」について学ぶ必要があります。
なぜなら「アルゴリズムとデータ構造」の学習は、プログラミングを使った問題解決能力に直結しているから。
例えば次のような問題を考えます。
- データの集まりの中に、ある特定の値が入っているかどうか調べたい
- 配列の要素を小さいほうから順に並べたい
- 常に50音順に並ぶように、データの集合を構造化したい
「アルゴリズムとデータ構造」とは、これらの問題を簡単に解決する能力を身に着けるための基礎。
中級者を目指す人は必ず学習しましょう。
ちょっと堅めの内容ですが、理論面でのオススメ書籍はこちら。
AtCoderの問題を解きながらゲーム感覚でアルゴリズムを学びたいならこちらがオススメ。
独学Step.3-2:オブジェクト指向プログラミング

実は現代のコーディングには、実行速度などの「プログラムの性能」よりも、コード改良のしやすさ・バグ修正のしやすさ・起こりにくさのような「保守・運用性の高さ」が求められています。
そしてそれを可能にするのが、オブジェクト指向プログラミングを活用したソフトウェアデザインであり、中級者を目指すうえでその学習は欠かせません。
こちらは、Pythonでオブジェクト指向のソフトウェアデザインを学べるレアな書籍です。(和書はほとんどがjava)
独学Step.3-3:OSへの理解を深める

自走できる中級者なるには、開発環境の基礎も理解しておく必要があります。
ちなみに開発環境とはざっくり次のように分解できます。
開発環境 = OS + ハードウェア
このうちCPU、メモリ、ハードディスクなどのハードウェアの基礎に関しては、一番最初に紹介した書籍で十分です。
次の書籍でOS(Linux)の仕組みについて基礎的な部分を理解しておきましょう。
本書ではGO, Python, bashのコードを使って、OSの機能を可視化しながら進めていきます。
文章の説明だけではわかりにくい部分を、すっきり理解できるでしょう。
コマンドラインの使い方に不安があるなら、「Progate」や「Envader」で環境構築なしで学べるのでオススメ。
Python独学:更なる学び

ここからは、さらに上級者を目指すための学習のヒントをいくつか挙げていきます。
ただ何をもって「上級者」とするかは、どのタイプのエンジニアを目指すかで異なると思うので、ここでは主にアプリケーションなどのソフトウェア開発の視点で紹介します。
コードを洗練する
上で現代は保守・運用のしやすさを求められる時代だという話をしました。
その中にはシンプルなコードの読みやすさ、いわゆる可読性も含まれています。
可読性はいくら良くしても、やりすぎということはありません。
コードの可読性に関しては次の書籍が有名です。
現場での開発の流れを知る
当たり前ですが、実際の現場の仕事はコーディングだけではありません。
プロセス設計、業務分析・要件定義、システム設計など、コーディング以前の重要なことがいくつもあります。
これらは現場でしか学べなさそうですが、概要をつかむだけなら書籍でも可能です。
同じ著者からシリーズで出ているこちらがいいでしょう。
デザインパターンを学ぶ
ソフトウェアを使った問題解決には、「デザインパターン」と呼ばれる典型パターンがあります。
この「デザインパターン」は問題に対して有効なソリューションを考える上で非常に効果的。
パターンに付けられた名前を参照することで、チーム内での共通の理解が得られ、それだけで生産性が上がることもあります。
各種開発ツールの習得
どこの会社に入っても使うことになる開発ツールがいくつかあります。
それが「Git」と「Docker」。
特にGitは個人でプログラミング学習を進めていく上でも、いたるところで登場するので学習しておくと良いでしょう。
以下に参考記事を載せておきます。
[word_balloon id="1" size="M" position="L" radius="true" name="" balloon="talk" balloon_shadow="true"]こんにちは、ツクダンです![/wo[…]
Pythonらしいコーディング
こちらはちょっとおまけ。
すべてのプログラミング言語は特有の文法を持っているので、それぞれ「効果的なコーディングの仕方」が存在します。
もちろんPythonにも。
以下の書籍は、強力な機能を備えながらもシンプルで使いやすい、Pythonの魅力と威力を体感できる一冊です。
機械学習への応用

最後に機械学習・データサイエンスへの応用について、説明していきましょう。
実は機械学習への応用に関して、Pythonでのコーディングレベルを上げる必要はほとんどありません。
もちろん理解できているほうがスムーズではあるのですが、実際に必要とされるのはデータ分析用Pythonライブラリの使いかたを覚えること。
その基本を学ぶには以下の書籍が超オススメですので、ぜひ取り組んでみてください。
機械学習・データサイエンス分野へ進みたい人が、本当に学ぶべきことは次の三つです。
- 数学(微分積分・線形代数・フーリエ解析・ラプラス変換・最適化数学など)
- 統計学(数理統計学まで)
- 機械学習・深層学習・強化学習のそれぞれの理解
それぞれの学習がかなり重いので、できる限り早い段階から始めましょう。
いくつか参考になる記事を載せておきます。
統計学や機械学習アルゴリズムなど、データサイエンスを学んでいくと数学力不足で理解が進まないことが良くありますよね。 お察しの通り、データサイエンスを学ぶなら数学は避けられません。 どうせ必要になるなら、取り組むのは早ければ早い[…]
[word_balloon id="1" size="M" position="L" radius="true" name="" balloon="talk" balloon_shadow="true"]こんにちは、ツクダンです![/wo[…]
Python独学まとめ

最後まで読んでいただき、ありがとうございます!
この記事では、非情報系Python未経験者が、自走できる中級者なるまでの「最短独学ロードマップ」を紹介しました。
さらには、より上級者を目指すヒントや機械学習・データサイエンス分野への応用に必要な勉強もまとめてきました。
ぜひあなたの学習の参考にしてみてください。