えんぴつぶろぐ

子育て中のフロントエンドエンジニアのブログ。

UoPeopleでProgramming Fundamentalsのコースが始まったのでHomeBrewでPython3.8の環境をセットアップした。

English Composition1のコースをパスしたので、Foundation Courseを受けることになった。
コースグレードが発表されてすぐ、Online Education Strategies(UNIV 1001)とProgramming Fundamentals(CS 1101)のコースが自動で登録されていた。

今までの記事:

empitsu88.hatenablog.com

empitsu88.hatenablog.com

正式な学部生(Degree Seeking Student)になるには

実はまだ私は"Foundation Course Student"及び"Non-degree Student"扱いであって、正式な学部生(Degree Seeking Student)ではないのである。
以下のようなの条件を満たすとDegree Seeking Studentになれる。

  • Students who complete the first two courses with a grade of 2.00 or higher in each course and who have submitted the official documentation may be accepted to begin studying towards a degree as early as the very next term.
  • Students who do not earn a 2.00 or higher in each of their first two courses may take up to a maximum of five courses in UoPeople Foundations. Individuals in this group must earn a minimum cumulative grade point average of 2.00 or higher and submit the required documentation in order to be accepted to degree study.

University CatalogのP. 41 "Minimum Requirements at UoPeople Foundations"より引用

つまり、最初の2コースで73/100点以上とり、且つ高校の卒業証明書など書類を提出すればその次の学期からDegree Seeking Studentになれる。
73点とれなかったら、最大5つまでFoundation Courseを受講できて、追加のコースで挽回できればOK。

よって、この学期でOnline Education StrategiesとProgramming Fundamentals両方で73点以上とれれば、9週間後の次のTermでは正式な学部生になれるのである!

2コース並行受講が時間的に可能なのか問題

とはいえ、1コースあたりの学習目安時間が週に15時間なので、2コースを同時受講すると週30時間程度確保する必要がある

もともと働いて子育てしながら30時間も勉強できるのか不安ではあった。
更に、現在は新型コロナウイルスの影響で我が家も保育園登園の自粛をしており、共働き夫婦フルタイムで在宅勤務+2歳児を終日家庭保育している状態のため、なんかもう無理なのでは感がある。

ていうかOnline Education Strategiesの方の課題のボリューム感がやばい。

Programming Fundamentalsの教材はThink Python

でも、ついに一番勉強したかったコンピューターサイエンスの授業が受けられるというのは素直に嬉しい…!
メインの教材はopen educational resourcesとなっているThink Pythonという書籍
日本語版も公開されている。

この本の目標は、如何にしたらコンピュータサイエンティストのように考えることができるかをあなたに教えることである。

Think Python:コンピュータサイエンティストのように考えてみよう第二版 p. 15より引用)

出だしから早速わくわくする。

目次を見ると、「 変数、表式、文」「クラスとオブジェクト」「継承」などの言葉がならんでおり、実務でプログラムをバリバリ書いている諸君は「あ〜はいはい」と思うかもしれない。
私もシラバスを見た時点では「あ〜はいはい」と思っていた。
でも、UoPeopleのコースはちゃんと「なんとなくわかる」で終わらせないようになっている。

Programming Fundamentalsの課題

課題やクイズには以下のような内容が出る。

  • 下記の値をinterpreterに入力するとどんな結果が返ってくるか?そしてなぜそうなるのか説明せよ。(もちろん英語で)
>>> 05
  • 下記の値をinterpreterに入力するとどんな結果が返ってくるか?
>>> 1,234.567,890
  • 結果が4になるのは以下のうちどれか?正解以外の選択肢のoutputは?
a. 6 ^ 2
b. 6 ** 2
c. 6 +- 2
d. 6 += 2
e. 6 -+ 2
  • これらの出力結果から、あなたは何を理解し、学んだのか説明せよ。

  • structure of a program は何という言葉の定義か?

  • One of the basic elements of the syntactic structure of a program, analogous to a word in a natural language は何という言葉の定義か?

※そもそもの課題の題材は概ねThinkPythonに沿っていますが、課題/クイズの出題と回答例をそのまま載せるとまずそうなので若干改変してます。
答えが気になる方はThinkPythonを読んだり、interpreterに実際に入力して出力を確認してみてください。

ご覧の通り、プログラミングの基本的な用語の意味を理解した上で、各演算子の働きなど言語仕様を理解し、それを英語で説明することを求められている。
もちろん、記述した内容はクラスメートやインストラクターにレビューされたり採点されたりする。

そうそう!そういうところから私はちゃんと学び直したかったんだよ!

「第一章プログラムが動くまで」の内容だけですでに興味深いので、後の章も楽しみ!

Python3.8をどうやってインストールしよう

Unit1ではinterpreterの出力を確認する程度の内容だったので、Online Consoleが打てるPythonのサイトで十分事足りた。
だが、プログラミングのコースなのでもちろん今後に備えて開発環境を整える必要がある。

調べると、Pythonの開発環境を整えるには様々な選択肢があるらしい。

クラウドIDE Pythonanywhere

シラバスでは、PythonanywhereというクラウドIDEが紹介されていた。

これが一番楽そうだし、UoPeopleの課題くらいならなんとかなりそうだが…ちゃんとセットアップも経験しておきたい気持ちもある。

公式サイトからダウンロード

Syllabusでは、pythonの公式サイトからダウンロードしろと言っている。

You can find available downloads for Python v3 at the following URL: Python software Foundation. (2019). Download Python. http://www.python.org/download/

pyenv

いや、待て…pyenvというバージョン複数管理ができるツールがあるらしい。
Node.jsでいうnodenvのpython版みたいなやつだろうか。

GitHub - pyenv/pyenv: Simple Python version management

virtualenv/venv

でも以下の記事をみてたら課題こなすだけなのにpyenv必要か?って気がしてくる。
それかvirtualenv/venvもいい気がしてくる。

pyenvが必要かどうかフローチャート - Qiita

Anaconda

エディタはいつも使ってるVSCodeを引き続き使うつもりなので、「VSCode python」でぐぐったらこんな記事もでてきた。

VS CodeでPythonするために必要なこと (1/3):Visual Studio Codeで始めるPythonプログラミング - @IT

でもWindowsの人向けっぽい感じがするな…

Homebrew

待て待て、昔HomeBrewでPythonをインストールした記憶もあるぞ…。
以前、UdemyでPythonのコースを閲覧したときは、Homebrewが紹介されてたからそうしたんだった。

MacでPythonを使って『機械学習』を学ぶための環境構築 — キカガク技術ブログ ドキュメント

HomebrewでPython3.8を入れる

ということで、すでにHomebrewでインストールしていたのでそれをアップグレードしてみる。

Homebrewでpythonがすでにinstallされていることを確認。

$ brew list
python

でもpythonコマンドの方は、OSにもとから入っている2系に向いているのである。
これがややこしい。

$ which python
/usr/bin/python
$ python --version
Python 2.7.10

Homebrewでインストールした3系のpythonはpython3コマンド。

$ which python3
/usr/local/bin/python3

昔インストールしたやつは3系だけどバージョンが少し古いのでアップグレードする。

$ brew upgrade python
Updating Homebrew...
==> Upgrading 1 outdated package:
python 3.7.1 -> 3.7.7

あれ?3.7.7までしかアップグレードされない。

$ python3 --version
Python 3.7.7

Homebrewの公式を見ると、3.8系にするにはpython@3.8という名前のFormulaeをインストールすればいいらしい。

$ brew install python@3.8
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/python@3.8-3.8.2.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/51/511b4f2c3993f000516938ed0700936c8a7d8c054b5171fa733ac7d344291c30?__gda__=exp=1586447975~hmac=2f8c77
######################################################################## 100.0%
==> Pouring python@3.8-3.8.2.mojave.bottle.tar.gz
==> /usr/local/Cellar/python@3.8/3.8.2/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python@3.8/
==> /usr/local/Cellar/python@3.8/3.8.2/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python@3.8/
==> /usr/local/Cellar/python@3.8/3.8.2/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python@3.8/
==> Caveats
Python has been installed as
  /usr/local/opt/python@3.8/bin/python3

You can install Python packages with
  /usr/local/opt/python@3.8/bin/pip3 install <package>
They will install into the site-package directory
  /usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages

See: https://docs.brew.sh/Homebrew-and-Python

python@3.8 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have python@3.8 first in your PATH run:
  echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.bash_profile

For compilers to find python@3.8 you may need to set:
  export LDFLAGS="-L/usr/local/opt/python@3.8/lib"

For pkg-config to find python@3.8 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/python@3.8/lib/pkgconfig"

==> Summary
🍺  /usr/local/Cellar/python@3.8/3.8.2: 4,124 files, 62.7MB

でもこれだけだと、python3コマンドはまだ、3.7系に向いている。

$ python3 --version
Python 3.7.7
$ which python3
/usr/local/bin/python3

$ which pip3
/usr/local/bin/pip3


$ ls -la /usr/local/bin/python3
lrwxr-xr-x  1 empitsu  wheel  34  4 10 00:41 /usr/local/bin/python3 -> ../Cellar/python/3.7.7/bin/python3

インストール時の出力に以下のように出ていたから言うとおりにする。

If you need to have python@3.8 first in your PATH run: echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.bash_profile

$ echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile 

これでpython3コマンドとpip3コマンドがpython3.8に向いた。

$ python3 --version
Python 3.8.2

$ which pip3
/usr/local/opt/python@3.8/bin/pip3