今回はおすすめのPython本と独学による学習方法をご紹介します。どのように本を選び、どんな勉強をすれば、挫折することなく、無事になんとかプログラムを書けるようになるのか。自分の経験をもとにまとめてみました。
私も最初は挫折の連続でした。しかし、何とかまず1つの言語を覚え、その後、他の様々な言語も学んでゆくうちに、ようやく「プログラミングの学習方法」がわかってきました。
世の中には、いとも簡単に習得してしまう才人もいますが、普通の人はそれなりに苦労します。ここでは、普通の人がどうやったらプログラミングを習得できるかを、Pythonを対象に紹介します。
この記事の目次
挫折しない学習方法とは
プログラミングの学習方法と言えば、「書籍による独学」が主流でしたが、最近では「オンライン講座」など選択肢が多くなってきました。
書籍による学習のメリットは、自分に合った参考書を自分で選べることですが、デメリットは、継続できなかったり挫折してしまうことです。つまり、挫折しないで続けられる方法があれば、「書籍による独学」の方がコスト面でも有利になります。
その方法とは非常に簡単なことで、やさしくて絶対に挫折しない本を「最初の1冊目」に選び、何が何でも最後まで写経しながら読むということです。
そして、「2冊目以降」は、自分が興味があったり、作ってみたいプログラムについて詳しく書かれた入門書で学ぶということです。例えば、Webアプリに興味があれば、そこに関するページ分量が多い入門書で学習します。
プログラミングの挫折しない学習方法
- 絶対に挫折しないやさしい本を1冊最後まで写経しながら読む
- 2冊目以降は、興味がある分野に詳しい入門書で学ぶ
以下では、Pythonを対象に、この1冊目、2冊目以降におすすめの書籍を紹介します。
1冊目におすすめの挫折しない本
1冊目を選ぶ基準は、とにかく「挫折しないで最後まで学習できるかどうか」です。以下の4冊ともわかりやすい本ですが、通常はよりわかりやすい「Python1年生」の方をおすすめします。
挫折しないために重要な「本の厚さ(ページ数)」
挫折しない本を選ぶ基準として、ページ数が適度に少ないことも非常に重要です。はじめてのプログラミングで「分厚い本」を読破することは、想像以上に難易度が高いからです。1冊目におすすめしている本は、300ページ以内と無理のないボリュームになっています。
Python1年生 第2版: 体験してわかる!会話でまなべる!プログラミングのしくみ 森 巧尚、2022.08
iPhoneアプリの教科書で定評のある著者によるPython超入門書です。以前iPhoneアプリの書籍を読み、そのわかりやすさに感激していたので、Pythonの入門書が出版されたのを知るや即座に購入しました。期待以上のわかりやすさです。
多くのプログラミングの書籍は、独特のくどさがあります。それが、読みづらさの原因にもなっています。しかし、この本の文章には、くどさがありません。すっきりとして頭に入りやすいのです。くどさが無くなるまで、相当推敲していると思います。イラストとの調和も秀逸です。
内容は、Pythonの基本の他に、GUIアプリと機械学習(scikit-learnを使用)も体験できます。超入門書でこれはすごいです。しかも、オブジェクトという言葉を使わないで正確に説明しています。
正直言って、挫折したくても挫折できない入門書です。私はやさしい説明の勉強に使わせていただいてます。まずは、この本を最初から最後まで、実際にパソコンで動かしながら読んでください。
第2版でさらに学習しやすくなりました!
初版(2017.12)につづき第2版(2022.08)が出版されました(上記のリンクは第2版に更新済み)。内容はほとんど一緒ですが、最新の環境(Win11やPython3.10)に対応しました。また、ライブラリのインストール方法がやさしくなったり、エラーの読み方が追加されたりとさらに学習しやすくなってます。
よくわかるPython入門 富士通ラーニングメディア、2022.09
最初の1冊目で「プログラミングの基本をしっかり学びたい」、「ビジネスで日常的に使うための基礎も学びたい」という場合におすすめです。
この本の特徴は、プログラミングの基本を体系的にわかりやすくまとめていることです。データや制御の構造、入出力、関数、オブジェクト指向プログラミングといった一般的なプログラミングの基本事項がちゃんとカバーされています。章立てもわかりやすいです。
また、様々なファイル形式の読み書き、Excelの操作についても触れているので、ビジネスで日常的に使うための基礎も学ぶことができます。
挫折しないための様々な工夫
つまずきやすいポイントがしっかりとフォローされていることもこの本の特徴です。コードは全行について「解説」があり、「よくおきるエラー」が随所で説明されていますので、自分で実行しながら学習するときにとても助かります。
例題でわかる Pythonプログラミング入門 佐村 敏治、堀 桂太郎、2022.11
Google Colab で学習することを想定した本なので、環境構築で手間取ることなくすぐにPythonを学習できます。
順次、分岐、反復の3つの基本処理、リスト、関数といったプログラミングに必要不可欠な内容をちゃんと理解して使えることに重点を置いています。さらに、グラフ(Matplotlib)とアルゴリズム(探索、ソート)についても触れています。
単語の定義や読み方がしっかりと書かれており、わかりづらい処理はフローチャートで視覚化してくれています。全部で85ほどある例題の解説もとても丁寧です。はじめてでも学習しやすい内容になっています。
170ページとボリュームは少ないですが、本当に必要な重要の部分だけをまとめているので、まずこの1冊をしっかり学習すれば、プログラミングの基礎を固めることができます。
Pythonではじめるゲーム制作 超入門 知識ゼロからのプログラミング&アルゴリズムと数学 (ゲーム開発スキルアップ) 廣瀬 豪、2023.9
ゲームからPythonをはじめたいという方には、以前は「たのしいプログラミング Pythonではじめよう! (著:Jason R.Briggs、訳:磯蘭水、藤永奈保子、鈴木悠.2014.2)」をおすすめしていました。
しかし、発行から10年近く経ってしまったので、もっと新しくて入門者におすすめできる本を探していたところ、ゲームからはじめるのに最適な本がありました。それが本書です。
この本の特徴は、初歩からひとつ一つ丁寧に説明していることです。そのため、プログラミングが全くはじめてでも、Pythonとゲームづくりの基本が無理なく学習できるようになっています。
コンピュータの仕組みからはじまり、Pythonのインストール、開発ツールの使い方、Pythonプログラミングの基本、ゲームづくりに欠かせない数学の基本を段階的に積み上げた後に、実際のゲームづくりでしっかりとプログラミングを身に付けます。
開発ツール(IDLE)やグラフィックのライブラリ(tkinter)には、Pythonにはじめから備わっているものを利用しているので、Pythonをインストールすればゲームづくりがはじめられるのも入門者にはうれしいです。
2冊目におすすめの入門書
2冊目は、「今後どのようなプログラムをつくりたいか」、「何に興味があるか」によって入門書を選んでください。以下の目的や興味の対象で分類してみましたので、参考にしてください。
オールラウンドに学習したい場合
入門 Python 3 第2版 Bill Lubanovic(監訳:鈴木駿、訳:長尾高弘)、2021.3
プログラミングをする上で考えられることを広範囲に網羅しています。多種多様なキーワードを載せてくれているため、詳しくはネットで調べることができるので、非常に重宝します。
この本の特徴は知識量の多さです。複素数や有理数の計算まで記載している入門書は少ないです。一方で、クラウドでPythonがどのように使えるか、ということまで簡単に説明してくれています。
Pythonの言語としての基本をしっかり学習したい場合
1冊目にご紹介した本では、まずPythonについて必要最小限のことだけを学ぶので、もっと「プログラミング言語としてのPython」を体系的に学んでおきたい場合もあると思います。そのような場合は以下のPython本がおすすめです。
独習Python 山田 祥寛、2020.6
プログラミング言語の入門書でわかりやすさに定評がある著者によるPythonの教科書です。プログラミング言語を学ぶうえで必要となるポイントをしっかりとおさえていますので、この一冊を習得すれば、他のプログラミング言語も学びやすくなります。
本職のエンジニアに興味がある場合
Pythonのエンジニアになるための基本を学ぶことができる書籍として、以下の4冊おすすめします。どれもエンジニアになるのにはどういったスキルが必要になるのかをイメージしやすい内容になっています。
独学プログラマー Python言語の基本から仕事のやり方まで コーリー・アルソフ(監訳:清水川貴之、訳:清水川貴之、新木雅也)、2018.2
Pythonエンジニア ファーストブック 鈴木 たかのり 清原 弘貴、嶋田 健志、池内 孝啓、関根 裕紀、2017.9
シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全 酒井 潤、2022.8
VTuberサプーが教える! Python 初心者のコード/プロのコード サプー、2024.7
Webアプリに興味がある場合
Head First Python 第2版 ―頭とからだで覚えるPythonの基本 Paul Barry(監訳:嶋田健志、訳:木下哲也)、2018.3
Pythonの基本の後に、ひたすらWebアプリケーションを作成することで、Pythonを身に付けます。Flaskという人気の軽量Webフレームワークを使います。
素朴な疑問に答えてくれる丁寧な説明が特徴です。ただし、「あえて冗長にしている」と著者が記している通り、しつこいくらい丁寧です。それが人によっては苦痛に感じる可能性もあるので、購入する場合は、書店で文体を確認した方が良いです。
プログラマーになりたい! 改訂新版 長岡 英史、2022.10
Webアプリの開発から配置(デプロイ)までを一通り学ぶことで、プログラマーの仕事の大枠を理解できる本です。約240ページの本ですが、Webアプリ開発の全体の流れをうまく網羅しています。
この本の特徴は、開発から配置までをすべてクラウド上で行う点です。開発には「AWS Cloud9」、配置先には「Heroku」を使用し、その間の配置作業を「Git」というバージョン管理ソフトで行います。この作業を体験しておくと、現在の開発手法を理解しやすくなります。なお、Webアプリは、「Django」という本格的なサイト構築に用いられるPythonフレームワークを用いています。
仕事自動化に興味がある場合
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング Al Sweigart(訳:相川愛三)、2017.6
Excel、Word、PDF、Webスクレイピング、フォルダ管理、画像など、業務に使えそうなネタが詰まってます。業務でPythonを使う方には必携です。
前半にPythonの基本もあるので、これ一冊あれば大抵事足ります。開発環境はIDLEを使用しており、IDLEによるデバッグ方法がしっかり書いてあります。
2023年3月に第2版が出版されました。第2版では、入力検証、Googleスプレッドシート、Gmail APIの3つが追加されています。Pythonと各種ライブラリの最新版への対応もされているので、これから購入する場合は第2版をおすすめします。
以下のページでこの本をおすすめするポイントをまとめています。ぜひ参考にしてください。
PythonでExcel、メール、Webを自動化する本 中嶋英勝、2020.09
日頃よく使うExcel、メール、Webの3つに絞って、Pythonによる仕事の自動化の方法を学べます。プログラミングが初めてのビジネスパーソンを対象に1つひとつのプログラムを丁寧に説明しているので、上記の「退屈なことは〜」がまだ難しいと感じる方にもおすすめです。
Excel編では請求書を自動作成し、メール編ではその請求書のPDFを添付して顧客に一斉メール送信します。Web編ではSeleniumを用いてブラウザを自動操作・スクレイピングして、特定サイトの新着情報をExcelに保存する作業を自動化します。
ビジネスパーソンが、デジタルスキルを向上したいなら、この本は最適です。以下のページに学べるポイントをまとめています。ぜひご覧ください。
データサイエンスに興味がある場合
よくわかる Pythonデータ分析入門 富士通ラーニングメディア、2024.07
よくわかるPython入門 の姉妹本です。この本の特長は、NumPyの基本を最初にしっかりと学べることです。242ページとそれほど厚い本ではありませんが、1/4近いページがNumPyの説明です。
PandasもNumPyのデータ構造を利用しているので、NumPyの基本がわかっているとその後のデータ分析の学習がスムーズになります。1冊目に「よくわかるPython入門」を選んだ方だけでなく、まず基礎を固めたい方にもおすすめのデータ分析入門書です。
Python2年生 データ分析のしくみ 第2版 体験してわかる!会話でまなべる! 森 巧尚、2024.06
1冊目におすすめした「Python1年生」のシリーズ3作目です。シリーズ2作目の「スクレイピングのしくみ」ではデータを集めましたが、本書ではその次の工程となる「データ分析」を学びます。
データ分析と聞くと統計学が難しそうな印象がありますが、本書では「なんでも平均値で代表してしまってよいのか」「正規分布の意味合い」など、統計学の根本のところを誰でも分かるようにやさしく説明しています。Pythonで実際に手を動かしながら学べるので、統計学の入門書よりも分かりやすいと思いました。
このシリーズではこれまでIDLEを使用してきましたが、本書ではAnacondaをインストールしてJupyter Notebookを使います。ライブラリは、pandas、NumPy、matplotlib、seaborn、scipyを利用しています。
文系のためのPythonデータ分析: 最短で基本をマスター 友原 章典、2024.10
初心者でもつまずかないでスルスルと読めるように工夫されています。理系向けの数学やプログラミングの書籍は積み上げ方式が多く、本題に入る前に挫折してしまうことが多いのですが、本書はその都度簡潔に説明することで、どんどん先に進めるようになっています。
タイトルに「文系のための」とありますが、文系理系を問わずこれからPythonでデータ分析をはじめたい方におすすめの書籍です。コンパクトな書籍ですが、データ分析の基本事項は網羅しているので、本書の内容を全部ちゃんと習得すれば、十分ビジネスに活かせると思います。
最短コースでわかる Pythonプログラミングとデータ分析 赤石 雅典、2022.12
現場でデータ分析ができるようになるための最低限の内容を、Pythonの基本からまとめています。まさにこの1冊で「最短コース」でわかる構成になっています。最初にPythonの基本が100ページ近くありますので、まず復習しながら読み始めることができます。
本書では「Google Colab」を利用して学習できます。Google Colabの使い方を詳しく説明している類書は比較的少ないのですが、本書ではちゃんとスクリーンショットを使いながら操作方法がわかりやすく説明されています。
データ分析で欠かせない3つのライブラリ「NumPy」「Matplotlib」「pandas」について順序立てて基本を説明したのちに、実例を用いながらそれぞれの使い方を学ぶので、着実にデータ分析力を身に付く内容になっています。また、pandasのベースとなるNumPyについても最初に説明されているように、しっかりとした基礎を学べるのも本書のポイントです。
本記事で紹介している本と比べると少し難しく感じるかもしれませんが、データ分析を現場で活かすには欠かせない内容ばかりですので、本腰を入れて取り組みはじめるには最適な本です。
Pythonデータサイエンス 杜世橋、2016.11
実に簡潔にうまくまとまっています。知りたい箇所がすぐに見つかり、非常に使い勝手が良いです。NumPy、Pandas、scikit-learnの基本的な使い方がメインですが、普段使いには十分です。
何かしたい時に、とっかかりがすぐにつかめるので重宝してます。余白が多いので、補足事項を自分で書き込んで使用しています。最後に、Flaskを使った機械学習のWeb APIの作成例があり、社内でAPIを立ち上げる時などに参考になります。
みんなのPython 第4版 柴田 淳、2017.1
通称「みんパイ」と呼ばれ、長年親しまれてきました本の最新版です。おそらくPythonの国内普及に最も貢献した本です。
Pythonの入門書として基本事項をしっかり網羅していますが、この第4版の特徴は、データサイエンスや機械学習の概要にも触れている点です。本書のコードは、Anacondaで動かすことを前提にしています。
機械学習を始めたい場合
Python3年生 機械学習のしくみ 体験してわかる! 会話でまなべる! 森 巧尚、2021.12
1冊目におすすめした「Python1年生」のシリーズ4作目です。3作目の「データ分析のしくみ」では統計処理の基本を学習できましたが、本書では「機械学習」にステップアップできます。
教師あり学習の代表的なモデルを理解できるように、非常に初歩的なことから順序立てて説明しています。最後には、1年生で取り上げた「画像から数字を予測するプログラム」を今度は本書で学習した知識を踏まえて作成します。
本書では、2年生で使用していたAnacondaからインストールする「Jupyter Notebook」に加えて、「Google Colaboratory(Colab Notebook)」でも学習できるようになっています。そのおかげで、パソコンに環境をインストールしなくても始められます。
Notebookの使い方から説明してありますので、機械学習を始めることがPython学習の目的ならば、「2年生」を飛び越えて「1年生」の後すぐにこの「3年生」で学習しても大丈夫だと思います。
機械学習は非常に奥深く、実務で使えるようになるにはそれなりの知識と経験が必要です。本書はそのための本当の一番最初のとっかかりです。本書を足掛かりに以下のような様々な書籍でステップアップしてください。
さらに、ディープラーニングの学習にすすみたい場合には、同じ「3年生」のシリーズからディープラーニングの入門書も出版されています。こちらもわかりやすくておすすめです。
Webスクレイピングに興味がある場合
Python2年生 スクレイピングのしくみ 第2版 体験してわかる!会話でまなべる! 森 巧尚、2024.05
1冊目におすすめした「Python1年生」の続編です。
タイトルは「スクレイピング」ですが、pandasとmatplotlibというライブラリを用いたデータの加工・集計、可視化もカバーしていますので、スクレイピングからさらにデータサイエンスに進みたい方の足掛かりには最適な入門書です。
さらにはオープンデータやWeb APIも学べます。詳しくは以下の特集ページをご覧ください。
Python最速データ収集術 〜スクレイピングでWeb情報を自動で集める (IT×仕事術) 清水 義孝、2022.01
WebページやWeb APIの仕組みから丁寧に説明されているので、はじめてでもWebスクレイピングを学習できる内容になっています。Pythonの基本についてもコンパクトにまとめられていており、本書で用いるJupyter Notebookの操作方法もしっかりと説明されています。
本書では requestsとBeautiful Soup を用いてWebスクレイピングを行います。そのインストール方法や使い方の説明もくわしく書かれています。
さらに、オープンデータ(e-Stat)やTwitter APIを用いる実践例、データ保存・クレンジング・可視化まで書かれているので、この1冊でWebスクレイピングの基本が一通り学べます。
数学に興味がある場合
数学好きの方におすすめなのが、プログラミングと数学を一緒に学ぶことです。この2つの相性は抜群です。両方の理解が深まります。興味のある方はぜひ以下のページを参考にしてください。
ゲーム開発を始めたい場合
ゲーム好きならば、ゲームをつくることがプログラミング習得の一番の近道です。つくりたいものが明確なので効率的に習得できます。
グラフィカルなゲームを一から開発するのは大変ですが、Pythonには PyGame という人気のゲーム開発用ライブラリがあります。本格的なゲームもつくれます。以下でおすすめする本では、PyGameを利用したゲーム開発の基本が学べます。
Pythonでつくる ゲーム開発 入門講座 廣瀬 豪、2019.07
ゲーム作りで楽しく学ぶ Pythonのきほん 森 巧尚、2021.06
デスクトップアプリをつくりたい場合
Pythonには、TkinterというGUIを作成するためのツールがはじめから備わっています。そのため、以下の記事にあるようなボタンや入力欄を配置した「デスクトップアプリ」をすぐにつくりはじめることができます。
ただし、Tkinter自体の使い方は、若干わかりづらいところがあるので、以下のようにわかりやすく説明している本があるととても重宝します。
仕事を自動化する! Python入門講座 廣瀬 豪、2020.06
本のタイトルには「仕事を自動化する!」とありますが、自動化のプログラムは最後の第9章で紹介されており、ほとんどは「Python入門」と「Tkinterを用いたGUIの作り方の基本」が丁寧に説明されています。
特に、Tkinterの使い方は、実際のプログラムを例にしたわかりやすい説明です。ここまでTkinterをやさしく丁寧に書いている類書はあまり見当たらないので、GUIを用いたデスクトップアプリをつくってみたい場合には、とても役立つと思います。
Python2年生デスクトップアプリ開発のしくみ 森 巧尚、2022.12
TkinterはPythonにはじめから備わっているので、すぐに使えて便利ですが、見た目がちょっと古い感じがします。使い方もすこし取っ付きにくいところがあります。
一方、本書で利用している PySimpleGUI であれば、インストールする手間はかかりますが、もっとカラフルなアプリが作れます。使い方もTkinterとくらべてシンプルです。
本書では、Tkinterは紹介程度で、PySimpleGUIをメインに利用しています。そのため、コードが複雑になりやすくデスクトップアプリを、極力シンプルに作れるようになっています。
最後に
むかし全く理解できなかった K&R(著者ふたりの頭文字で呼ばれている代表的名著「プログラミング言語C 」、難解なことでも有名)も、今では読むたびに少しずつわかります。
何の分野でもそうですが、時間を置いて名著に触れると「これはそういうことだったのか」と感心することが良くあります。
そのような意味では、「名著に挑戦して撃沈しておく経験」も否定できませんが、時間がかかり過ぎます。無理だと思ったら、やさしい本に切り替えて、紹介した方法を試してみてください。
プログラミングは職業プログラマだけのものではありません。「本業+プログラミング」が人生を面白くしてくれます。自分の専門分野をプログラミングの題材にできるのですから、面白くない訳がありません。多くの方々が、プログラミングを覚えることを願っています。
そうです、Pythonが生まれた背景には、「万人のためのコンピュータプログラミング 」という哲学があるのですから。