港区男子の見解

港区男子が個人の見解を交えて、現地から最新の情報をお届けします

GoogleのPythonプロフェッショナル認定コース第2~6章

Courseraにて、『Google IT Automation with Python』というプロフェッショナル認定コースが今年の1月頃からスタートしました。

約2ヶ月かけて全てのコースを修了し、認定を受けることができました。

f:id:MinatoAzabu:20200524214721p:plain

実に長かったです。合計100時間以上は余裕でかかったと思います。土日はほぼこれに費やして完了した感じです。

第1章の内容は以下にまとめました。

minatoazabu.hatenablog.com

 

今日は残り2~6章の内容を振り返ります。

 

 

2章、Using Python to Interact with the Operating System

2-1、Getting Your Python On

Pythonの環境設定

2-2、Managing Files with Python

osモジュールをインポートしてcsvファイルを開いたり、書き込んだり

2-3、Regular Expressions

正規表現。条件に合致する言葉やファイルを探したり。記号の使い方がたくさんあって複雑で大変。ただここで出てくる記法は後々も頻出する。

2-4、Managing Data and Processes

sysモジュールのargvとかstdoutとか。覚えた記法を使ってLogファイルを開いてエラー原因特定もする。

2-5、Testing in Python

なぜテストが必要なのか、テストケースを常に考えながらコーディングするテストドリブン開発の重要性について、例外処理について

2-6、Bash Scripting

LinuxBashで使うコマンドについて、BashPythonの使い分け方について

2-7、Final Project

正規表現を使ったLog分析が課題

 

2章は全体的にだいぶ時間がかかり、難易度も高かった印象。ただし内容的に非常に重要。1章で学んだ基本をもとに、実践的なpythonの操作方法を学んでいく。ここで覚えた記法は後々何度も出てくる。逆にPythonの記法に関してはこれ以上特に重要なものは新たに出てこない。

1、2章で山場は超え、3~5章は穏やかな章が続く。聞いてるだけで超えていける感じ。ただし最後の6章の問題難易度とボリュームにはだいぶ参る。

 

3章、Introduction to Git and GitHub

3-1、Introduction to Version Control

バージョン管理システムとは何か?diffとpatchの違いは何か?Githubでリボジトリを作ってみる

3-2、Using Git Locally

ローカルにGitをダウンロードしたり、作業した内容をコミットしたり

3-3、Working with Remotes

リモート環境からいかにコードをプッシュしてマージするかなど

3-4、Collaboration

Pullリクエストをどう処理するかとか、CI/CDの考え方など

 

バージョン管理で難しいところの考え方概要がわかる。しかし英語なので理解が難しい。実際にGitを複数メンバーである程度使い済みの状態で、これをみて考え方を整理するのがちょうどいいかもしれない。

 

4章、Troubleshooting and Debugging Techniques

4-1、Troubleshooting Concepts

デバッグの基本的な考え方について、どういう手順で原因を絞り込んでいくか、バイナリサーチで原因の存在範囲を特定する試行回数を減らしたり

4-2、Slowness

処理の遅さの原因は何か、モニタリングツールの活用、シンプルなコード記述で処理を速く

4-3、Crashing Programs

ログ分析の重要性、ボトルネック特定の重要性、バグ対策レポートを書いて保存、共有することの重要性

4-4、Managing Resources

タスクの優先順位の付け方(タスクリストを作って、重要性と緊急性の2軸でマッピングする)、その場しのぎの対策ばかりで便利な技術投資をしないことは技術負債として貯まる

 

デバッグを中心に、不具合対策タスクに対する考え方、心構えを解く系が多いですね。参考になります。もちろん実際のエラーコードを見ながら解説する動画もたくさんあります。あ、Googleでもこういう考え方をスタンダードして進めてるんだ、これでいいんだ、ということが知れて有益でした。

 

5章、Configuration Management and the Cloud

5-1、Automating with Configuration Management

スケールする際構成管理で自動的にインフラをデプロイすることの重要性、構成管理ツール『Puppet』の紹介、Infrastructure as Code

5-2、Deploying Puppet

ローカルマシンにPuppetをデプロイ

5-3、Automation in the Cloud

Cloudの概念、テンプレート、イメージを作ることの重要性、

5-4、Managing Cloud Instances at Scale

クラウド上でのモニタリングとアラート、デバッグ、復旧

 

クラウドYAMLファイルとか使ってデプロイ自動化する作業は経験あるものの、ここではよりこのコースらしいデバッグなどの作業が演習で盛り込まれており難易度が少し高かったです。ただ演習は誘導、解説が丁寧なので問題なく解けます。

 

6章、Automating Real-World Tasks with Python

6-1、Manipulating Images

PILモジュールを使って、フォルダにたくさん保存された画像の一括回転、サイズ変更、保存形式の選択などを実行

6-2、Interacting with Web Services

webアプリ運用に当たって必要になる、JSONファイルの書き方、変換の仕方、リクエストGET,POSTの仕方を学んだ上で、実際にwebサービスに書き込まれた要求内容をJSONに変換して表示する作業をする

6-3、Automatic Output Generation

メール自動化の設定、PDFファイルの生成の仕方を学んだ上で、JSONで書かれた自動車の販売情報を処理してPDFでまとめてメールで自動送信する作業をする

6-4、Putting It All Together

6章のこれまで3節およびこの認定コースの内容をバランスよく全て混ぜた課題を一気に解く

 

6章のみ動画無しで、各節で必要なモジュールに関する知識をドキュメント形式でまず説明して、その後Qwiklabsで実践という流れになってます。

6章は他の5章を全部クリアした人しかコースに参加できいため、参加者が少なく、課題に対する情報も少なくなってます。

課題も、特に3,4節がかなり難しく、ボリュームもたっぷりです。標準時間内では確実にクリアできないでしょう。最後にこれは結構こたえます。

 

ということで、コース全体を振り返ってきました。

感想として、このコースを終えただけでPythonが自在に使いこなせるようになるかというと、そういうわけにはいかないと思います。もっと自分でPythonを使った実作業の数をこなさないと定着はしないでしょう。ただし基本的な考え方については体系的に学ぶことができ、全体像が見えてきます。さらにPythonに限らず、IT業務全般における実践的な業務ノウハウも知ることができるので、こういう場面でこういうツールの使い方をすればいいんだという、勘所が掴めると思います。

何より大きいと思うのは、これだけ時間をかけてこれだけの量をこなしてきたんだから、Pythonについては一通り理解できたという自信がつくことです。自在にPythonを書くことはできなくても、基本は一通り抑えましたと。どんなPythonのコードが出てきても、あとは都度それに特化した内容を調べるだけだと自信を持って臨めるのは大きなことだと思います。

ここで学んだことをもとに、Web、クラウド、データ分析等でガッツリ有益なコンテンツを作って、知的好奇心を満たしつつ、どんどんスケールしていきたいと思います。