プログラミングことはじめに『独学プログラマー』がよさそう

こんにちは、@ketancho です。

Python を体系的に学び直したいというモチベーションで、参考書を探していたのですが、

こちらの中川さんのポストを読ませてもらったところ、『独学プログラマー』が気になったので読んでみました。

(中川さんポストから薄々感じていたのですが、)私自身の「Python の学び直し」という観点だとやや初級者向けだったかな?という感想だったのですが、初めてプログラミングを学ぶ方への最初の1冊としてはとても良い本だと思いました。

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

以前、下記のような記事を書いたのですが、

www.ketancho.net

もし当時『独学プログラマ』を知っていたら、「具体的なものづくりをする前に、まずは土日2日間家にこもってこれ写経して!0から1に一歩踏み出してみて!」といった形で紹介していたと思います。(本当にやる気があるかどうかの丁度よいふるいになる気がします。)

この記事では、その理由について書いていきます。また、私自身知らなかった/使えてないPythonの機能が幾つか見つかりましたので、それらを自分用のメモとして残しておきたいと思います。

"初めてプログラミングを学ぶ" 方におすすめな理由

コード例が豊富で、手を動かしながら学ぶことができそう

本書の約半分は Python を用いた具体的なプログラミングレッスンになっています。 Python のインストールから始まり、加算、減算といった算術演算、文字列操作、ループ、... と順に解説されているイメージです。

本書のよいところは、これらの全てに具体的なコード例が載っていることです。 実際に手元で確かめながら進めていくことができるので、ステップバイステップで理解を深めながら進めることができると思います。

各章ごとにチャレンジ問題が用意されている

写経することはもちろんよいことなのですが、写すことに夢中になってしまい最終的に腹落ちできず.. ということが私はよくあります。 しかし、本書では各章ごとにチャレンジ問題が用意されており、これらををひとつひとつ解き進めることで、学んだことを整理しながら進むことができると感じました。

「チャレンジ問題」と聞くと難しそうと思われるかもしれませんが、前述のサンプルコードを微修正するだけで実装できそうなものばかりです。 サンプルコードの意味が理解できていれば、問題なくクリアできるはず。 加えて解答も用意されているので、途中で振り落とされてしまうといったこともなさそうです。

このようなチャレンジ問題を用意するスタイルは、自分のコンテンツ作成でも真似していきたいです。

プログラミングだけじゃない!

本書の後半では、Python プログラミングから離れ、Bash やパッケージ管理、Git を用いたバージョン管理といった内容についても言及されています。 プログラミングができるだけでは、プロダクトをローンチできないので、そのための周辺知識を広く浅く紹介しています。 例えば Git の章では実際に git コマンドを叩きながら Git の基本を抑える内容になっており、初めて Git を使う方の導入にはもってこいだと思いました。 広く "浅く" なので、この本で完結というわけではないのですが、基本を紹介した上で、深く抑えたいものについては参考URLや参考書籍を見てね、という構成になっているため、読者の興味や直近で抑える必要のあるスキルを詳しく学びやすいと感じました。

また、「仕事の見つけ方」「メンターを見つける」といった『SOFT SKILLS』のような内容にも触れられています。 本書の中でも SOFT SKILLS が参照されているので、気になる方は合わせて読んでみることをおすすめします。

www.ketancho.net

(参考)個人的メモ

冒頭で「やや初級者向けだったかな?」と書いたのですが、新しい学びもありました。ここからは私の個人的なメモです。

書式化: format

format メソッド使ったことなかったです。Python で Twitter API を呼び出し、検索条件を満たすツイートを取得する - log4ketancho とかもこれ使って直したいところ。

name = "ketancho"
print("こんにちは、{} さん。".format(name))
$ python test.py 
こんにちは、ketancho さん。

複数埋め込むのであればこんな感じですね。

name = "ketancho"
msg = "お元気ですか?"
print("こんにちは、{} さん。{}".format(name, msg))
$ python test.py 
こんにちは、ketancho さん。お元気ですか?

in 演算子

使えてるか自信がなく。。for 文まわしたりしないと思うけど念のため。

sushi = ["akagai", "tsubugai", "uni"]
print("tsubugai" in sushi)

if name == "main"

インポートされるモジュール側でテストコードを書きたいときに使う。直接実行されたときだけ、True になる。

# util.py

def say_something(msg):
    print(msg)
    
if __name__ == "__main__":
    say_something("Test!!")
# main.py

import util

util.say_something("Hello!!")

こんな感じです。実行結果は↓

$ python util.py 
Test!!
$ 
$ python main.py 
Hello!!

特殊メソッドのオーバーライド

Java でいう toString() を上書く的なやつ。__repr__ をオーバーライドすれば OK。

# human.py
class Human:
    def __init__(self, name):
        self.name = name
        
    def __repr__(self):
        return self.name
    
ketancho = Human("ketancho")
print(ketancho)
$ python human.py 
ketancho

Python の特殊メソッドについては 特殊メソッド名 - Dive Into Python 3 日本語版 で抑えられそう。

まとめ

『独学プログラマ』のご紹介でした。本書に「Skillが上達しない唯一の原因は、継続して練習しないことにあります」と書いてありました。本当にその通りだと思います。しっかりやっていく所存です。

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで