Skip to content

kwappa/gothe_python

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

独習Python入門 写経会場

基本データ

各章について

プログラミング経験のない人にJavaScriptを教える、という試みを手伝った経験から、この本の読者対象である「まったくプログラミングの経験がない方、これから仕事でプログラミングをされる方」(P.iv)を想像しながら、ソースコードを写経(実際に入力し、実行してみること)してみた感想を書いていく。

ソースコード中に見つけた間違いについてもメモとして残しておく。

第1章 はじめてのプログラミング

Windows / MacにPython3をインストールし、REPLで実行するまでをていねいに解説している。まるっと真似すれば、まったくの未経験から「プログラミングをしてみた」という経験を得ることができる。

ターミナルの設定や小数点数の丸め誤差など、紙面の限られた中でもきちんと教えようという熱意が感じられる章だった。

第2章 条件で分ける方法(分岐の基礎文法)

if 文と等号 / 不等号での分岐を、FizzBuzzやBMI計算という定番のテーマでしっかり解説している。プログラミングの最初のハードルを飛び越えるために必要かつ十分な内容なので、理解できなくても繰り返しチャレンジしてほしい。

FizzBuzzのサンプル、最初は間違ったものが出てくるところに構成のうまさを感じた(List 2.14)。

第3章 繰り返しさせる方法(反復の基礎文法)

この章はまるっとループについての解説。Pythonの for 文は初学者にとっつきやすそう、という印象を受けた。

「コピペは悪」とDRYの原則をループのところで説明する(P.90)のはいい作戦だと思った。

第4章 関数を使ってみよう!

いくつかの標準関数と、自作の関数を使う方法の解説。ここでやっていることを苦もなくイメージできるようになると、だいぶちゃんとしたプログラミングができるようになる内容。

「関数を上手に作るコツ」(P.119)に、どうせ教えるならちゃんとしたプログラマーを育てたい、というこだわりを見た。

第5章 いろいろな型を学ぼう

Pythonの特徴でもあるキーワード可変長引数と、各種コレクション(Dictionary / Tuple / Set)、それに None の解説。知らないとデータ構造について考えられないので、ちょっと難しいが重要なポイント。

普段Rubyを書くので、Python独特の TupleSet に触れるのはいい勉強になった。

正誤表

  • List 5.2 (P.136)
    # wrong
    print c(c_league[d])

    # correct
    print(c_league[d])

第6章 エラーと例外を使いこなす

例外処理の初歩について解説している。ここまでの章でもtypoなどで散々エラーは出ていただろうが、この章で「なぜ例外が起こるか」「まずどう対処するべきか」を学べる。

表示されるエラーメッセージをしっかり読む、という習慣をつけるのはとても大事なので身につけてほしいと思った。

正誤表

  • List 6.4 (P.168)
    • finally 句で fnot Defined になってしまう
    # wrong
    f = open(‘file_not_found_exception’, ‘r’)
    try:
        f.write()

    # correct
    f = None
    try:
        f = open('file_not_found_exception', 'r')
        f.write()

第7章 オブジェクトとクラスとは何か?

いよいよOOPの入り口。ドラクエ・人間・アドレス帳と、苦労や工夫の跡が見て取れる。「プログラミングは料理と同じで、体感していくものです。理屈だけでは絶対に腑に落ちません。」(P.184)のメッセージに従い、サンプルコードを積極的に改造して理解を深めよう。

個人的には練習問題の「アドレス帳」を最初から題材に使えばもっとじっくり説明できるように思った。

正誤表

  • P.206
    • import が間違っている
    • open のカッコ位置が間違っている
    # wrong
    def import_data(self, file):
        import csv
        import date view

        with open(file, ‘r), encoding = 'utf-8' as f:

    # correct
    def import_data(self, file):
        import csv
        import datetime

        with open(file, 'r', encoding = 'utf-8') as f:

第8章 自分が書いたプログラムをテストする

いよいよユニットテストの登場。「プログラムのふるまいの正しさをプログラムで検証する」という考え方を、プログラミングの初学者のみならずディレクターやデザイナーといった他職種の人にも知ってほしい。

第9章 明日から使えるWebプログラミング

BeautifulSoup を使ったスクレイピングの実習。DOMエレメントにつけられたクラスが、プログラミングの視点からどう使われているかを知ることができる。

P.232にあるとおり、スクレイピングを通じてHTMLドキュメントの構造を知ることは「一挙両得」の題材だと感じた。経験のあるエンジニアでもスクレイピングをしたことない、という人は意外といるのではないだろうか?

第10章 Webアプリケーションことはじめ

Python組み込みのサーバーによる最小限のWebアプリケーションの実装。「Webエンジニアが普段何を作っているかを知る」ための章だと感じた。List 10.3(P.251)をいろいろ改造して、何が起きているかをしっかり理解してほしい。

正誤表

  • P.251
    • Macの場合、CGIを動かすためのSHEBANGは python3 を指定するべき。
    # wrong (only fo Mac)

    #!/usr/bin/env python

    # correct

    #!/usr/bin/env python3

第11章 今後の学習に向けて

内容の総まとめ。学習曲線についてのイラスト(P.265)は、学習の行き詰まりを打開する力になる。

全体の感想

プログラミング未経験の大人が学習の第一歩を踏み出す、というポイントにフォーカスしている、簡潔ながら力強い1冊だった。

これから仕事をしていくために必要なのは「コンピュテーショナルシンキング」の能力であり、それを身につけるにはやはりコードを書いてみるのが近道であろう。この先プログラマーとして仕事をしていくのではなくても、コンピューターに仕事をさせる方法を学ぶためにオススメできる。

Releases

No releases published

Packages

No packages published