プログラミング初心者が独学で勉強して、アプリを作れるようになるまでの手順・勉強法を紹介します
1. 誰に向けた記事か
・これまでプログラミングをやったことない人
・pythonを始めたいが勉強の仕方がわからない人
2. はじめに
近年、AIや機械学習などを筆頭にプログラミングが注目されています。
皆さんの中には、「プログラミングを始めようと思ったけど何から手を付ければ良いかわからない」と思ってる人も多いのではないでしょうか。または「始めてみたけど勉強法が分からず、また勉強が辛くなり諦めてしまった」という方もいるのではないでしょうか。
結論から言うと、適切な手順を踏めばプログラミングの習得は難しくありません。
そこで今回は私が独学で勉強して自作アプリを作れるようになった実体験をもとに、こうすれば無理なく習得できるという手順・勉強法を紹介します。
3. そもそもpythonって?
世界中で使用されており、非常に人気が高い言語です。
噂によるとTwitterやYoutubeのようなメジャーサイトでも利用されているようです。
ちなみにプログラミング言語とは、例えば、コンピューターの画面に「こんにちは」と表示させたいとします。
しかしコンピューターは0と1しか判断できません。そのためこのままでは0110001001...と二進法で「こんにちは」に対応したコードを打たないといけません。
これは非常に大変ですし、0と1だけ並んでても何が何だかわかりません。打ち間違いなんかしてしまった日には間違いを探すのに非常に苦労しそうです。
それに対し、pythonでは「print('こんにちは')」で済みます。このように人間が分かりやすい・書きやすい形でコンピューターに指示を与えられる文法や書き方をプログラミング言語と言います。
pythonが人気な理由
プログラミング言語には、python、C言語、JAVA、C#、Swift、HTML、CSS、Javascript、COBOL、Fortranなど様々な種類があり、それぞれ得意な分野があります。その中でもpythonが非常に人気な理由は主に以下の3つです。
-
豊富なライブラリ
-
人気な言語のため、分からないことがあればネットですぐに調べられる
豊富なライブラリ
pythonには、
- numpy(行列計算など数値解析のライブライ)
- matplotlib(グラフを表示するためのライブラリ)
- tkinter (GUIを作るためのライブラリ)
- 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. タイマー機能
2. PDFを結合・分割・パスワードを付けるアプリ
3. Pythonで制御工学
4. pythonの欠点
pythonの欠点はずばり、「何でもできるが何かに特化してるわけじゃない」です。
例えばweb作成などもできますが、webに特化したいならHTML,CSS,Javascriptなどを学ぶ方が早いです。
またExcelを自動操作したいならpythonでもできますが、Excelに特化したVBAやVB.netを習得した方が良いです。
このように作りたいシステムが決まっているのなら、pythonではなくそれに特化した言語を学んだ方が早いです。
ただ今はこれがしたいけど、将来的に別のこともしたいかもって思うなら、まずはpythonを選んでおいた方が無難だと私は思います。
5. python勉強の具体的手順
それではプログラミングを全くしたことがない初心者を対象に勉強手順を紹介します。
5.1 プログラミングの概念・基本を知る
まずpythonを学ぶ前に、プログラミングの概念と基本を知る必要があります。
私は次の本を強くお勧めします。
pythonなのになぜExcel VBAなのか気になると思いますが、ここがポイントです。
pythonで素晴らしい書籍があれば良いですが、私が知る限りでは単純に構文だけをつらつら書いているだけの書籍が多く、プログラミングの概念を丁寧に説明してくれる書籍は見つけられませんでした。
プログラミング初心者にとって構文よりも、まずプログラミングの概念や動き方を頭の中でイメージできるようになる方が重要です。
この本は「if文はどういう動きをするのか」、「このコードはどのような動きをするのか」といったプログラミングの概念から非常に丁寧に、時には図解を用いて分かりやすく説明してくれます。
変数の扱い方、for文の動作、if文の動作、while文の動作など基本的構文とその動き方はどの言語でも同じなため、この本で学んだことはそのままpythonに活かせます。
だまされたと思って買ってみて下さい、後悔しません。
当然、私も購入し何度も読んで勉強したので自信を持ってお勧めできる本です(以下は購入した証拠)
※ExcelVBAを使用するにはExcelの入ったPCが必要です。ほとんどのPCには標準で入っていると思いますが一応ご確認お願いします。
5.2 Anacondaをインストールする
Anacondaとはpythonのプログラミング環境です。
python公式HPからpythonをダウンロードしても良いのですが、Anacondaはnumpyやmatplotlibといった良く使うライブライが始めからインストールされていて非常に便利なためAnacondaを推奨しています。もちろん無料です。
以下のHPにアクセスし、python3系(図ではpython3.7)をダウンロードしてください。
https://www.anaconda.com/distribution/
なおmacの方は画像上部のタブからmacOSをクリックして同じようにダウンロードしてください。
なおAnacondaで使用されているJupyter notebookに関する入門書もあります。
Anacondaのインストール、コードの実行方法、ライブラリの使用方法が載ってます。以下にリンクを張っておきますが、個人的には必須ではなく勉強していって気になったら買うで十分だと思います。
5.3 pythonに慣れる
ここまで来たら、次はpythonに慣れる工程になります。
個人的に以下がお勧めです。
ここで初めてpythonに触ります。
しかし内容は5.1の「ExcelVBAのプログラミングのツボとコツがゼッタイにわかる本」で学んだこととほとんど同じです。なので「あ、これね」って感じると思います。既に知っていることをpythonでどうやって書けば良いのか学ぶ段階なので、そこまで負担を感じることもないと思います。
本での学習が苦手な人は、progateなどの有料の学習アプリ(https://prog-8.com/)を利用するのも良いと思います。
もし私が勉強始めた時にprogateがあったら頻繁に利用していたと思います。
5.3 pythonで何か作ってみる
pythonの書き方を概ね理解したら、次は何か作ってみるのが良いです。
プログラミング能力は「自分で仕組みを考えてコードを書いた時に最も伸びる」と自分の体験からも断言できます。
お勧めは次の本です。
この本は読んで感動した数少ない本の1つなので、ブログで何度も紹介している本ですがここでも紹介させてください。
この本は1からニューラルネットワーク、俗にいう人工知能を作る本です。
最終的には1から9の手書きの数字を95%以上の高い認識率で認識できるシステムを作れます。
難しそうに聞こえますが、それに至るまでの考え方、pythonでの書き方を丁寧に教えてくれるので初心者でも大丈夫です。また本の最初の方にはpythonの使い方も載ってるので復習もできます。
私はこの本を読んだとき、ニューラルネットワークの動作原理をこんなにも簡単に・優しく説明できるのかと感動しました。
ニューラルネットワークは近年非常に注目を集めていますが、論文等では難解な数式を用いていて、この本を見つけるまでは手を出しづらい雰囲気でした。それがこの本のおかげでニューラルネットワークを初心者でも1から自分で作ることができるようになったと思います。
なお以下の本も有名で自分も読みましたが、上記の本の方が個人的にはお勧めです。
5.4 tkinterを学ぶ
個人的にはpythonの基本的な書き方が分かったら、次にtkinterを学ぶのが良いと思っています。
理由は2つあります。1つは「プログラムの動きを目で見れるので達成感が非常に大きい」こと。2つ目は「作ったアプリを他人に使用してもらいやすい」ことです。
例えば以下は冒頭でも紹介した私の自作アプリです。PID制御をマウスクリックだけで出来るソフトです。
このように、スライダーを動かしたり値を入力してボタンを押すとグラフが変化すると、自分の作ったアプリがちゃんと動いているんだと視覚的に確認ができて達成感が得られます。
また今後、自分で便利なアプリを作り業務効率化などで例えば会社や学校で使用したい・配布したい場合に役立ちます。
もしtkinterを学んでいない場合、数100行のコードを相手に送り、使用するPC全てでpython環境を構築し、送ったコードを入力してもらうしかありません。現実的ではありませんね。もしコード内の変数を変えたい場合などは多分無理でしょう、周りから使いづらいと言われて終わります。
でもtkinterを学んでいれば、上記のGIF画像のようにマウスクリックだけで動作が可能なため、プログラムを知らない他人にも使ってもらいやすいです。
私のブログでもtkinterについて多く紹介しているので、良かったらぜひチェックしてみて下さい。
tkinterは参考書が非常に少ないです、というより日本語の参考書はほぼ皆無です。個人的には以下がお勧めです。
Amazonの月額読み放題サービス「Kindle unlimited」でも読めます。
初回30日間は無料、退会も簡単なので試しに無料体験して読んでみてもよさそうです。
6. 最後に
いかがだったでしょうか。
今後、機械学習や画像認識、スクレイピングの勉強方法についても紹介できれば良いなと思います。