初学者による初学者のためのPython

Python備忘録・おっちゃんのPython

【How to】大人のPython のはじめ方

いい歳になってるけど、いま話題のプログラミングを始めてみたい、という方への記事です。

私もいい歳だった3年ほど前から、Python始めました。

もちろん今も歳は増え続けているので、さらにいい歳になってます!

ネットの中には初心者向けの記事は大量にありますが、そのほとんどは万人向けで、どちらかと言えば、学生や新人社会人を対象としたものが多いと感じます。そこで、自分の経験も踏まえて、おっさんに向けにブログ書いてみました。
「物事を始めるの遅すぎるということはない。やりたいと思ったときが始めるときだ。」
とはよく言われます?が、おっちゃんが趣味でプログラミングを続けていくには、若者のようにこの技術を身につけると就職が有利になる、もっとよい会社に転職できる、といった明確なモチベーションがなく、また日々の仕事があるので、自由に使える時間も限定されるので、継続するのがしんどいなと思います(私の勝手な思いです)。
この記事をプログラミングを始めるかどうかを判断するのに、参考にしてもらえれば幸いです。

1. 想定してる対象読者

  • はたらくおじさん。もちろん、おばちゃんも可。
  • プログラミングに興味あって、なんとなく始めてみたいな、と思っている人
  • または、少し初めてみたものの面白くなくで続きそうにないな、と思っている人
  • パソコンに興味がある人
  • 数字にアレルギーがない人(難しい数学はいりませんが、数字アレルギーの人は続けていくのはツライと感じると思います)

2. 何をするのかを決める(言語の決定!)

プログラミングを始めるときにプログラミングで何をしたい、というのがないと続けるのは困難です。プログラミングをある程度身につけるためには時間がかかります。歳をとっていれば、若い頃に比べ残念ながら学習能力は低下していますので、同じことをマスターするにも若いころに比べ、学習時間はさらに増えてしまいます。

それを継続するためには目的がないとできません。なお、プログラミング勉強していくうちにやりたいことが変わっていくのは全然問題ありません。まず最初に、「こういうことをしてみたい!」というものがスタートするには必要です。

プログラミングもいろいろあり、言語そのものを改良していくのような攻めた楽しみ方もありますが、おっちゃんプログラマーは、言語そのものを楽しむのではなく、道具として使って楽しむものだと思います。言語そのものを楽しむようになるには時間と能力が必要ですので。
私の場合は、私はすこし(かなり?)変人なので、AIが流行ってるけどその元になっているディープラーニングって何なんだろう??との思いから、当時話題になっていた「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」を購入して読んでいたときに、Pythonを知らないと実際に動かせない、じゃあPythonはじめてみよう、がきっかけです。一応こういうのもありということで。

何をする(したい)のかが明確に決まってない人は、この本「退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」をぱらっと見てみて、どんなことができるかを知ることができます。私もPython学習は、これからスタートしました。この本は最初にプログラムの文法があり、その後、いろいろな活用がのっています。 まずはこの本を本屋さんで立ち読みしてPythonを使うとこんなことができるのか、というのみるのがよいと思います。 例えば、次のようなことができます。

  • Web スクレイピング: Webを巡回して自分の欲しいデータとってくる
  • Excelファイル; Excelのファイルを読んこんだり、処理したり、書き込んだり。
  • PDF、Wordファイル:PDFファイルを読み込んで結合したり。Wordファイルを書き込んだり。
  • SMS、電子メール:発信する
  • GUI処理:プログラムで画面上のポインターを動かしたり、文字を入力したり、クリックしたり。

この本の中かから自分のしたいことに繋がる内容があれば、最初にこの本にそって進めてみるのをお勧めします。

ただ、3月に改訂版がでるみたいですので、今、買うかは悩ましいですが。
改定版の時期がどんどん伸びているようなので、初版ですすめましょう。(2021.6.20 現在)




なおこの本は、Pythonが得意分野である機械学習ディープラーニングについて記載がありません。私の最も興味ある分野なのですが、最初にPythonとしては、この本から学んで基礎をつけたので、Pythonを始める前の人が読んで、Python を使えば機械学習ディープラーニングでこんなことができるんだ、というのをわかりやすく書かれた本の紹介ができません。しかし、Python機械学習ディープラーニング は王道ですので、本屋にいけば簡単なレベルから超専門書まで数多くの本があります。機械学習ディープラーニング に興味がある人は本屋でいろいろ眺めてみてください。なお、私が実際に実施した機械学習ディープラーニングの進め方は別記事にかくつもりです。

学習する本を決めて、一旦、はじめると、この本はよかった、または、よくなかったと判断できるようになるまでには、時間をガッツリとられます。はじめる前によく検討した方がよいです。

機械学習とかAI構築とかに全然興味ないのであれば、本当にPython で進めるのかを検討しましょう。若ければ、複数の言語をいろいろやってみて、自分に合うものを深めていくのもよいですが、はたらくおじさんには時間的にも能力的にも厳しいです。まず、言語を決めて走りだしましょう。

ホームページを作りたい!というのであればPython ではなく、html, css, JavaScriptあたりでは? あとWordPressという裏技ももあるようです(これはプログラミングというものではないようですが、ホームページを作るとの目的達成できるのなら、プログラミングにこだわる必要はないかと思います)。

エクセルをメインに仕事を効率化したい!のであれば、エクセルマクロでしょう。最近はPython × Excelが流行ってるらみたいですが、素直にマクロを使いこなすようになる方が役に立つと思います。マクロを使いこなしてGAFAの部長になった人もおられます?!



もっと統計的な検討となればRの方がよいようですし、競技プログラミングで上を狙うならc++が速いらしい、など、それぞれの得意分野がありますので、よく調べてみてください。
ちなみに私はPython しかやってないので、その他言語についてこれくらいしか書けませんし、その信憑性も??です。

3. PCを準備する

Puthonプログラミングをやってみると決めたら、パソコンを準備しなければいけません。Pythonは、Windows10、MacUbuntuLinux)で動きます。普段使っているパソコンにPythonをインストールすればよいです。普通使いのパソコンで、Ubuntuを使っている人はまれだと思いますので、Windows10かMacになると思います。パソコンはCPUは速くなくても最初は全然問題ありません。私も最初の1年弱ほどは、5,6年落ちのWindowsを使っていましたが、問題ありませんでした。

Pythonはそれを単体でインストールしてもよいのですが、Pythonを含んだパッケージソフトであるAnacondaをインストールするのがお手軽でオススメです。多くの本でもPythonの導入でAnacondaの導入の仕方が説明されています。Anacondaはインストールも簡単で使いやすのですが、容量が大きく、HDD/SSDをそれなり消費するので、そこは注意が必要です。
プログラミング学習を続けていくと、よいパソコンが欲しくなります。私のパソコン遍歴はココに。
新しいパソコンを買うと気分が上がり、やる気がアップしますので、区切りでパソコンを更新していくのはオススメです。もちろんお金との相談になりますが・・・。

4. 学習方法を決める

何で勉強するのがいいのかは、個人によって大きくことなると思います。しかし、はたらくおじさんは時間が限られていますので、本をベースとして、その他の補足的に使用するのが無難だと思います。

4.1 本

勉強時間の自由度が高く、コストパフォーマンスもよいと思います。近くに品揃えのよい本屋がある方は、買う前にいろいろ確認できるので、とくにオススメです。
ベースの本を学習していき、わからなき所やもっと興味がでたところなどを他の本やネットで補完していくのがベストだと思います。

  • 本を一冊とおしてやるとかなりの時間がかかります。私の場合、「退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」を一通り終わらせるのに6ヶ月かかりました。合わないと思った本は見切りをつけてスパっとやめるのも手です。ただ、いろんな本に手を出してどれも最後まで辿り着かない、というのは最悪です。いかに自分に合う本に出会えるかがポイントです。

  • コスパがよいといっても専門書は値段が高くだいたい3000円以上しますし、高いものになると1万円を超えてきます。私のオススメはメルカリでの購入です。最近はほとんどの本をメルカリから入手していますが、新品同様品が定価の5〜9割で買うことができます。また、少し古い本や書き込みありなどは、かなり格安で入手できます。

  • 近くに大きな本屋がない方はブログなどをみてAmazonなどの通販からの購入になるかと思います。購入した本が思った内容と違うと判断したときは、すぐにメルカリに出品しちゃいましょう。メルカリ手数料(1割)はイタイですがブックオフより断然高く売れます。 新しい専門書は結構よい値段で売れます。

  • 住んでいる地区の図書館も狙い目です。最近の市町村の図書館はネットで蔵書を検索できるところも多いですので、欲しい本がないかを検索してみましょう。ちなみに私の地区の図書館はPython で検索すると60冊の蔵書がありました。まず図書館の本で確認してからよければ購入することもしてます。余談ですが、私の地区の図書館はRの本が充実していて羨ましいです。


4.2 Webのコース(有料)

  • すこし検索するだけで、多くのコースがみつかると思います。私はひとつもとったことがないので、良し悪しの判断はできないです。

  • お値段が結構するので、お金とやる気がある人向けだと思います。

ただPython ではないですが、ネットワークについて知りたいと思い、N予備校を2ヶ月やりました。 N予備校の「プログラミング入門 Webアプリコース」を2ヶ月で実施して、退会しました。1000円/月なので手軽にはじめられました。

N予備の感想ですが、

よかった点

  • 全然知らない分野だったが初心者が順にできることが増えていくようににコースが作られており、楽しめる。
  • 知らない分野、言語でも、キチンと従えばキチンと動く。
  • ひとつだけ動かなかったので質問したら、丁寧に返信があった。

よくない点

  • 退会後では教材にアクセスできないので、あとから参考にすることができない。
  • どんな人でも動かせるように、やり方は非常に丁寧に説明されているが、環境設定などについて、なぜそのことをするかなど説明がほとんどない。

www.nnn.ed.nico


4.3 Webのコース(無料)

  • 無料のコースもそこそこあります。しかし、文法のある一部分だけだったり、途中から有料コースに誘導されたりと、これをやれば一通りの基礎を学べるというのは見つけられていません。  その中でも、paizaの「Python3入門編」はすべてやりました。これだけでは学習量が少ないですが、本を進めているときに平行してやったら理解が進みやすかったです。

(2021年2月24日 追記) paizaから、初心者向けの講座ができていました。まったくの初心者はこれをやってみてはどうでしょうか。

paiza.jp

  • 英語ができる方なら、courseraなど、かなりの数のコースがあります。しかし、よほど英語力がないと、はじめてのことを英語で学習するるのはキツいと思います。


5. python のはじめ方【参考】

私が実施した経験から、よいと思う方法です。向き不向きは個人差がありますので、参考として書いておきます。

退屈なことはPythonにやらせよう 」 第1部

  • 基礎なので、最初からすべて実施する。
  • わからないところがあれば、「みんなのPython 第4版 」で、該当ページを確認する
  • タイミングをみて、paizaにて復習する

「みんなのPython 第4版 」は表紙だけをみると、初心者向けの簡単な本のようにみえますが、内容がしっかりとした文法書で非常に参考になります。
「退屈なことはPythonにやらせよう 」 では書かれていない、Jupyter Notebookの使い方や、オブジェクト指向の基本であるclassの説明などもあり、よい本です。この本だけで勉強を進められる人はこの本をマスターすれば基本技術はマスターできます。個人的にサンプルコードが面白くないので、メイン本でわからなかったときの参考書(辞書)として使っています。



退屈なことはPythonにやらせよう 」 第2部

  • ひとおり順番に進める。難しくて動かせないかつ興味がないと思った章はとばしてよい。
  • おもしろいと思った分野は、サンプルを改良して、動かしてみる。
  • プログラミング力の確認として、paizaのスキルチェックにチャレンジする。 Dは時間をかければできるはず。Cは時間があるときに。

  • Paizaのスキルチェックが面白いと思ったり、Cがほぼ問題なくできるようになったら、  AtCorderのAtcCorder Beginner Contest(通称: ABC)の過去問題にチャレンジする。AからCまでよい。 (というかD以降はアルゴリズムを勉強しないと、ほぼ時間内にとけない)



おそらく、ここまでで3ヶ月から1年かかると思います。
ここまでくれば、何ができるか、何をしたいかが自分で検討できるようになると思います。


これ以降はPythonを深めることももちろん重要ですが、それ以外の知識も必要となってきます。
キーワード(自分自身が知識を深めたいと思いってるもの):
Git, GitHub, Docker, ネットワーク, シェルスクリプト, 仮想環境,

一緒にコツコツやっていきましょう。

‘—————————— おしまい ——————————‘ f:id:Gen_TOD:20210111171556j:plain