機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【2020年初心者向け】pythonの勉強法と手順を紹介!プログラミング初心者がpythonを独学で勉強してアプリを作れるようになるまで

プログラミング初心者が独学で勉強して、アプリを作れるようになるまでの手順・勉強法を紹介します

1. 誰に向けた記事か

・これまでプログラミングをやったことない人

pythonを始めたいが勉強の仕方がわからない人

 

2. はじめに

近年、AIや機械学習などを筆頭にプログラミングが注目されています。

皆さんの中には、「プログラミングを始めようと思ったけど何から手を付ければ良いかわからない」と思ってる人も多いのではないでしょうか。または「始めてみたけど勉強法が分からず、また勉強が辛くなり諦めてしまった」という方もいるのではないでしょうか。

結論から言うと、適切な手順を踏めばプログラミングの習得は難しくありません。

そこで今回は私が独学で勉強して自作アプリを作れるようになった実体験をもとに、こうすれば無理なく習得できるという手順・勉強法を紹介します。

 

3. そもそもpythonって?

pythonとはプログラミング言語の一種です。

世界中で使用されており、非常に人気が高い言語です。

噂によるとTwitterYoutubeのようなメジャーサイトでも利用されているようです。

ちなみにプログラミング言語とは、例えば、コンピューターの画面に「こんにちは」と表示させたいとします。

しかしコンピューターは0と1しか判断できません。そのためこのままでは0110001001...と二進法で「こんにちは」に対応したコードを打たないといけません。

これは非常に大変ですし、0と1だけ並んでても何が何だかわかりません。打ち間違いなんかしてしまった日には間違いを探すのに非常に苦労しそうです。

それに対し、pythonでは「print('こんにちは')」で済みます。このように人間が分かりやすい・書きやすい形でコンピューターに指示を与えられる文法や書き方をプログラミング言語と言います。

 

pythonが人気な理由

プログラミング言語には、pythonC言語JAVAC#、Swift、HTML、CSSJavascriptCOBOLFortranなど様々な種類があり、それぞれ得意な分野があります。その中でもpythonが非常に人気な理由は主に以下の3つです。

  1. 豊富なライブラリ

  2. webの操作、機械学習スクレイピング(webから自動で情報を集めること)、ゲーム制作、アプリ制作などほぼ何でもできる

  3. 人気な言語のため、分からないことがあればネットですぐに調べられる 

 

豊富なライブラリ

pythonには、

  • numpy(行列計算など数値解析のライブライ)
  • matplotlib(グラフを表示するためのライブラリ)
  • tkinterGUIを作るためのライブラリ)
  • python-control (制御工学のためのライブラリ)
  • pypdf2 (pdfを扱うためのライブラリ)
  • ...etc

などなど、様々なライブラリがあります。

ライブラリとは必要な動作を一つの塊にして、たった数行で呼び出せるようにしたものです。

例えばnumpyで行列Aの逆行列を計算したい場合、

numpy.linalg.inv(A)

と書けばOKです。非常に簡単ですね。

しかしnumpyがない場合はガウスの消去法やLU分解などをすることになります。

ここでは具体的なコードは省きますが、ガウスの消去法やLU分解を行おうとするとコードは数100行になります。(おそらくこの苦労は工学部出身の方ならわかってくれると思います...)

このようにpythonには様々なライブラリがあるので、それらを組み合わせれば複雑な動作でも簡単に少ないコードで実現させることができます

 

web操作、機械学習アプリ制作などほぼ何でもできる

これは先ほどの話と被りますが、pythonには様々なライブラリがあるのでほぼ何でもできます。

 webページを作ることもできるし、ゲームも作れますし、Excelなども操作できます。

また機械学習・深層学習などAIの分野ではpythonは頭一つ抜けている印象です。

「作りたい物が決まっていないがキャリアアップのために習得しておきたい」という人にお勧めの言語です。

 

人気な言語のため、分からないことがあればネットですぐに調べられる 

これは非常に重要な点です。

pythoは人気が高く愛好者も多いため、コードや動作説明がネットにたくさんあります。

ある程度pythonを習得したら、後はネットで情報を集めれば自然に学習していくことができます。またprogateなどのプログラミングスクールも充実しています。

 

pythonで作れるアプリ例

このブログでもpythonで作ったアプリとそのコードを紹介しています。

過去に作成したアプリを紹介します。

1. タイマー機能

f:id:stjun:20200125212533p:plain

www.stjun.com

 

2. PDFを結合・分割・パスワードを付けるアプリ

f:id:stjun:20191110163358p:plain

www.stjun.com

 

3. Pythonで制御工学

f:id:stjun:20200125162350g:plain

www.stjun.com

 

4. CSVの中身を読み取り、Excelを自動作成

f:id:stjun:20190825184914p:plain

f:id:stjun:20190825170306p:plain

www.stjun.com

 

4. pythonの欠点

pythonの欠点はずばり、「何でもできるが何かに特化してるわけじゃない」です。

例えばweb作成などもできますが、webに特化したいならHTML,CSS,Javascriptなどを学ぶ方が早いです。

またExcelを自動操作したいならpythonでもできますが、Excelに特化したVBAVB.netを習得した方が良いです。

このように作りたいシステムが決まっているのなら、pythonではなくそれに特化した言語を学んだ方が早いです。

ただ今はこれがしたいけど、将来的に別のこともしたいかもって思うなら、まずはpythonを選んでおいた方が無難だと私は思います。

 

5. python勉強の具体的手順

それではプログラミングを全くしたことがない初心者を対象に勉強手順を紹介します。

 

5.1 プログラミングの概念・基本を知る

まずpythonを学ぶ前に、プログラミングの概念と基本を知る必要があります。

私は次の本を強くお勧めします

ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本

ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本

 

pythonなのになぜExcel VBAなのか気になると思いますが、ここがポイントです。

pythonで素晴らしい書籍があれば良いですが、私が知る限りでは単純に構文だけをつらつら書いているだけの書籍が多く、プログラミングの概念を丁寧に説明してくれる書籍は見つけられませんでした。

プログラミング初心者にとって構文よりも、まずプログラミングの概念や動き方を頭の中でイメージできるようになる方が重要です。

この本は「if文はどういう動きをするのか」、「このコードはどのような動きをするのか」といったプログラミングの概念から非常に丁寧に、時には図解を用いて分かりやすく説明してくれます。

変数の扱い方、for文の動作、if文の動作、while文の動作など基本的構文とその動き方はどの言語でも同じなため、この本で学んだことはそのままpythonに活かせます。

だまされたと思って買ってみて下さい、後悔しません。

当然、私も購入し何度も読んで勉強したので自信を持ってお勧めできる本です(以下は購入した証拠)

※ExcelVBAを使用するにはExcelの入ったPCが必要です。ほとんどのPCには標準で入っていると思いますが一応ご確認お願いします。

f:id:stjun:20200125215203p:plain

f:id:stjun:20200125215143p:plain

 

5.2 Anacondaをインストールする

Anacondaとはpythonのプログラミング環境です。

python公式HPからpythonをダウンロードしても良いのですが、Anacondaはnumpyやmatplotlibといった良く使うライブライが始めからインストールされていて非常に便利なためAnacondaを推奨しています。もちろん無料です

以下のHPにアクセスし、python3系(図ではpython3.7)をダウンロードしてください。

https://www.anaconda.com/distribution/

f:id:stjun:20200125215751p:plain

なおmacの方は画像上部のタブからmacOSをクリックして同じようにダウンロードしてください。

なおAnacondaで使用されているJupyter notebookに関する入門書もあります。

Anacondaのインストール、コードの実行方法、ライブラリの使用方法が載ってます。以下にリンクを張っておきますが、個人的には必須ではなく勉強していって気になったら買うで十分だと思います。

PythonユーザのためのJupyter[実践]入門

PythonユーザのためのJupyter[実践]入門

 

 

5.3 pythonに慣れる

ここまで来たら、次はpythonに慣れる工程になります。

個人的に以下がお勧めです。

Pythonスタートブック [増補改訂版]

Pythonスタートブック [増補改訂版]

 
Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ

  • 作者:森 巧尚
  • 出版社/メーカー: 翔泳社
  • 発売日: 2017/12/05
  • メディア: 単行本(ソフトカバー)
 

ここで初めてpythonに触ります。

しかし内容は5.1の「ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本」で学んだこととほとんど同じです。なので「あ、これね」って感じると思います。既に知っていることをpythonでどうやって書けば良いのか学ぶ段階なので、そこまで負担を感じることもないと思います。

本での学習が苦手な人は、progateなどの有料の学習アプリ(https://prog-8.com/)を利用するのも良いと思います。

もし私が勉強始めた時にprogateがあったら頻繁に利用していたと思います。

 

5.3 pythonで何か作ってみる

pythonの書き方を概ね理解したら、次は何か作ってみるのが良いです。

プログラミング能力は「自分で仕組みを考えてコードを書いた時に最も伸びる」と自分の体験からも断言できます。

お勧めは次の本です。

ニューラルネットワーク自作入門

ニューラルネットワーク自作入門

 

この本は読んで感動した数少ない本の1つなので、ブログで何度も紹介している本ですがここでも紹介させてください。

この本は1からニューラルネットワーク、俗にいう人工知能を作る本です。

最終的には1から9の手書きの数字を95%以上の高い認識率で認識できるシステムを作れます。

難しそうに聞こえますが、それに至るまでの考え方、pythonでの書き方を丁寧に教えてくれるので初心者でも大丈夫です。また本の最初の方にはpythonの使い方も載ってるので復習もできます。

私はこの本を読んだとき、ニューラルネットワークの動作原理をこんなにも簡単に・優しく説明できるのかと感動しました。

ニューラルネットワークは近年非常に注目を集めていますが、論文等では難解な数式を用いていて、この本を見つけるまでは手を出しづらい雰囲気でした。それがこの本のおかげでニューラルネットワークを初心者でも1から自分で作ることができるようになったと思います。

なお以下の本も有名で自分も読みましたが、上記の本の方が個人的にはお勧めです。

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

 

 

 

5.4 tkinterを学ぶ

個人的にはpythonの基本的な書き方が分かったら、次にtkinterを学ぶのが良いと思っています。

理由は2つあります。1つは「プログラムの動きを目で見れるので達成感が非常に大きい」こと。2つ目は「作ったアプリを他人に使用してもらいやすい」ことです。

例えば以下は冒頭でも紹介した私の自作アプリです。PID制御をマウスクリックだけで出来るソフトです。 

f:id:stjun:20200125162350g:plain

 このように、スライダーを動かしたり値を入力してボタンを押すとグラフが変化すると、自分の作ったアプリがちゃんと動いているんだと視覚的に確認ができて達成感が得られます。

また今後、自分で便利なアプリを作り業務効率化などで例えば会社や学校で使用したい・配布したい場合に役立ちます。

もしtkinterを学んでいない場合、数100行のコードを相手に送り、使用するPC全てでpython環境を構築し、送ったコードを入力してもらうしかありません。現実的ではありませんね。もしコード内の変数を変えたい場合などは多分無理でしょう、周りから使いづらいと言われて終わります。

でもtkinterを学んでいれば、上記のGIF画像のようにマウスクリックだけで動作が可能なため、プログラムを知らない他人にも使ってもらいやすいです。

私のブログでもtkinterについて多く紹介しているので、良かったらぜひチェックしてみて下さい。

tkinterは参考書が非常に少ないです、というより日本語の参考書はほぼ皆無です。個人的には以下がお勧めです。

Amazonの月額読み放題サービス「Kindle unlimited」でも読めます。

初回30日間は無料、退会も簡単なので試しに無料体験して読んでみてもよさそうです。

 

6.  最後に

いかがだったでしょうか。

今後、機械学習や画像認識、スクレイピングの勉強方法についても紹介できれば良いなと思います。