見出し画像

活動報告09(2021年7月)

プロジェクト薬箱「Python編(入門3)」
 梅雨が明けたと思ったら、夏がいきなり全開となり一気に猛暑へ。せっかくの夏なのに、緊急事態宣言も解除されず、閉塞感は晴れない。富士ソフト秋葉原ビルのどこかのフロアではクラスターが発生しているような気もするが、DMM Akibaでは感染リスクを感じないので、安心して作業ができる。この前の日曜日なんかは、23時を過ぎても自分を含めてまだ5人も残って各々作業をしていた。本当に励みになる。

さて、今月もPython強化月間の続き。2冊目:大津真 (2016)「基礎 Python」を終了したので、ざっと感想をまとめてみる。本文は白黒のみでカラーがないので素朴な印象。推奨エディタはAtomで、半透明設定にすると背景が透けて見えるのでコード入力が効率的になるのが良い。エディタ上でプログラムが実行できるatom-runnerもとても便利。ただし、input()はeofエラーになるので注意が必要。その場合はこれまでのIDLEで対応する。
 内容については初心者向けとあって、網羅的なので通読に向いている。変数と値の関係性を、タグの付け替えで説明しており分かりやすい。標準ライブラリ、リスト等のデータ型の複数の操作は詳しく説明してある。その他、イテレータの仕組み、ループ処理、ファイルの読み書きについても丁寧。
一方で関数の定義、クラスの作成と拡張についても手厚く解説している。しかし、一つ一つの過程は理解できるのだが、全体を通してみるとしっくりこない点があり、理解が不十分な感触が残る。また、コマンドライン引数とアトリビュートのカプセル化については、意味不明に近い。例題に関しては、乱数を使用したおみくじプログラムと、うるう年の判定プログラムは、単純な仕組みだが理解をより深めることができた。

続いて3冊目:大澤文孝(2017)「いちばんやさしい Python 入門教室」へ。これも初心者用だが、豊富なカラー図解とイラスト多用によりとても見やすい。こちらは京大教材と同じくIDLEを使用している。基本である条件分岐とループ処理についての解説は大差がない。この本の特徴は、例題を通じて必要な知識が深まるよう工夫されているところで、興味が増す分、難易度もやや高め。京大の教材程ではないが・・・。
 例えば、数当てゲームでは、乱数で値の生成、リストで4桁表示、入力値の適正判定、正解の判定、tkinter によるGUI表示と、段階毎に丁寧に解説している。京大の教材もtkinterを用いていたが、widgetを飛ばして、いきなりコンテナ作成したのが分かりにくい理由。今なら、電卓のように複数のボタンを作成するにはFrameが必要だと納得できる。なお、この数当てゲームは、自分なりにプログラムを改造して、楽しませてもらった。

Canvasメソッドを用いた図形の描画も、辞書とリストを使った基本から始まり、クラスとオブジェクトを使って他の図形を複数描画するところまで応用されており、ようやくクラスとインスタンスの関係が理解できた気がする。プログラムの挙動で解決できなかった問題は、同一座標に同じ円を色を変えて重ねて描いた時に、少しずれる理由が不明。四角形ならこのような現象は生じない。また、最初に設定したキャンバスのwidthと、winfo_widhtメソッドによる戻り値が1%拡大される理由も不明のままであった。

3冊目を終了してみての感想は、網羅的という意味では2冊目に劣るが、例題を介して理解を掘り下げるというスタンスは評価できる。また、プログラミングにおける、空白と改行の使用につき明記してあったり、グローバル宣言をした時の挙動、正規表現のreモジュールについて解説しているのも良い。結局、2冊目も3冊目もどちらも重要との結論に達した。
 自分が理解できなかったところが、ITエンジニア向けのteratailでも質問されており、疑問がマシになってきたと実感。このサイトでは一流エンジニアが顔写真付きで紹介されているが、漂うオーラが違うね。どういう経験を積み重ねれば、このレベルに到達できるのだろう・・・。
 とりあえず、FizzBuzz問題も自力で解決できるようになったし、入門編はこれで終了。何とかPythonに食らいついている。

この記事が気に入ったらサポートをしてみませんか?