見出し画像

活動報告18(2022年4月)

プロジェクト薬箱「Python編(中級5)」
 当初はRaspberry PiのGPIOを制御するためにPythonの学習を始めたのだが、ギリギリの能力では不安だし、またPython自体が面白いのでここまでプログラミング学習を重ねてきた。相応に理解も深まったので本書でPythonの総論的学習を終了とする潮時と考え、今後はPythonの各論として薬箱のGUIとGPIO制御に力を注ぐことにした。
 
今月も11冊目:「退屈なことはPythonにやらせよう」の続きとして、特に学習的効果の高かった項目について感想を述べてみる。
ファイルの読み書きでは、shelveモジュールを用いると変数保存が可能となる。パス指定とwrite()関数を用いてのファイル書き込みとは違って、Shelveだと自動でバイナリファイルが作成されるので保存について悩まなくて良い。その手軽さが便利であり、演習のマルチクリップボードも即実用レベルのものを作成できた。
 ファイルの管理では、shutilモジュールを使えば、Python上でファイル操作を完結できるのがとても便利。知っての通りマックのfinder上でもファイル操作は可能だが、不可視フォルダが相手だとアイコン可視化を経由しなくてはならないので煩わしくなる。また、os.walk()関数でディレクトリを渡り歩くことが可能となり、サブフォルダを含めた網羅的なファイル操作が可能となる。これに正規表現によるマッチングを付け加えたのがディスク全体の検索の仕組み。
 デバッグでは、プログラムのバグ発見や予防のために、assert文による正常性チェック、loggingモジュールによるコード実行の様子確認などの手法を学んだ。
 Webスクレイピングでは、requestモジュールを用いてWebサイトからのダウンロード、BeautifulSoupを用いてHTML解析について学んだ。特に、開発者ツールを用いてHTML要素を検索しCSSセレクタのパターンを見分けるコツを入手できたのは収穫だった。さらに、Seleniumを用いて、リンククリックやログイン情報の自動入力でブラウザを制御できるようになった。演習では、コマンドラインから検索して、上位の検索結果を自動的にChromeの新しいタブで開いたり、Webコミックの自動ダウンローダーなど、応用範囲を広げることができた。このあたりで本の半分を少し超えた位。
 
と、このように簡単に書いてはいるがその過程は茨の道だった。理由は演習の分量が多いのもあるが、テキストの通りに入力してもエラーが頻発するから。といっても解決不能なものではなく検索すれば、解決策を見つけ出すことが可能。中にはまったく同じ問題を抱えていて質問している人もいる。
 例えば、モジュールエラーが頻発。必要なモジュールが不足しており、別途インストールが必要。sysモジュールのようにインストール済みであっても、追加のパス指定を必要としたり等。中でも、Webスクレイピングは苦労の連続だった。対象となるウェブサイトの記述方法が変更していて、まともに動作しない。テキスト内容が古すぎるようだ。Seleniumでも、ブラウザの例としてFirefoxを取り上げていたが、今更Firefoxはないどろうということで、Chrome用のwebdriverに修正したりしていた。

もしかしたら第2版の日本語版が遅れているのは、この辺りの事情が関与しているのかも、と思ったりもした。でも、自分で調べて修正していくのもトレーニングと考えて進めて行く。ただ、進捗が想定よりも遅いのには焦っている。

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