7839

雑草魂エンジニアブログ

Bot と一緒にインタラクティブに学ぶ Python 入門 〜 GitHub Learning Lab の Introduction to Python を受講してみよう

GitHub Actions を学ぶときに「GitHub Learning Lab」を使うと便利であると、カックさん @kakakakakku に教えてもらった。

その「GitHub Learning Lab」の中に「Introduction to Python」コースなるものを発見した。これから Python に挑戦したいと思っていた方は是非チャレンジしてみて欲しい。

lab.github.com

GitHub の流れに沿って行うので、GitHub の操作に関しても実践を通して学ぶことができる。また、個人的な感想としては、Botインタラクティブに対話ができるので、やっていて楽しかった。ただ、本コースに関しては、プログラミングが全くの初心者で挑戦するにはハードルが高い気がした。コードに関する説明が少ないので、Python 以外の他の言語をやったことがあり、Python に初めて触れる方にとってはいいコースであると思えた。実際に、Python のコードに触れて、体験してみるにはいい教材であると思えた。

Introduction to Python とは

「Introduction to Python」は GitHub Learning Lab が提供する Python の入門コースである。現在は日本語翻訳がなく、英語のみではあるが、ステップごとに非常にわかりやすい構成になっているので、英語が少し読めるレベルでも十分に最後まで出来る。以下のように、Step 1 ~ 7 で構成されている。

  • Step 1 : Set up your environment
  • Step 2 : Hello World
  • Step 3 : Change the primary function
  • Step 4 : Read a file into an array
  • Step 5 : Get the last element of an array
  • Step 6 : Retrieve a random quote
  • Step 7 : Explore Python on your own

GitHub の issue に課題が追加されて、Bot と対話しながら、解決していくような流れで進める。 最終的には、テキストファイルからランダムで文章を出力することができる Python のプログラムを作ることができる。

Setup

まず「Start free course」ボタンを押してセットアップを行う。(事前に、GitHub へのサインインが必要となる。)本コースで使う GitHub リポジトリの公開範囲を選択する必要があり、私の場合は Public しか選択できなかったので、そのままで進めた。すると、自動的に python-random-quote が作られる。

f:id:serip39:20200810224507p:plain

そして、bot から Step1 で何をすべきか、丁寧に説明が書かれた issue が追加されているので、それに従って進めていく。

f:id:serip39:20200810225244p:plain

Step 1 : Set up your environment

まず、Python の実装を始める前に、開発環境のセットアップが必要なので、STEP 1 ではまず環境設定を行う。確認すべき項目は以下の3つである。

  1. Python 3 がインストールされているか
  2. Git がインストールされているか
  3. 本コースのリポジトリがローカルにクローンされているか

バージョンの確認方法、ダウンロード先含め、全て丁寧に記載されているので、それに従って進める。以下が、私のローカルの環境設定であった。

$ python3 -V
Python 3.7.7
$ git --version
git version 2.27.0

問題なければ、issue をクローズすることで、次に進むことができる。GitHub の詳細な操作説明はないので、前提コース「Introduction to GitHub」コースを受講しておくことをオススメする。

Step 2 : Hello World

実際に、Python のプログラムの動作確認を行う。クローンしたファイルの一部のコメントアウトを外して、実行することで、実行結果が表示されれば OK である。

変更箇所をコミットして、GitHub に push することで、次の課題が bot から告げられる。Git の操作が始めての人でも、手順通りにやればできるよう、丁寧にコマンドが書いてあるので安心してほしい。

Step 3 : Change the primary function

def main():
  print("Keep it logically awesome.")

if __name__== "__main__":
  main()

次に、現在のコードでは、関数名が main となっているので、この関数名を primary に変更する課題が出される。この章では、関数の関連性、紐付けを確認することができるようになっている。

変更が完了したら、GitHub に push して完了だ。

Step 4 : Read a file into an array

ここからが、本題のプログラムである。まず、先程実行した2行目を再度コメントアウトして、実行されないようにする。次に、4行目以降のコメントアウトを外す。

f = open("quotes.txt")
quotes = f.readlines()
f.close()
print(quotes)

上記のコードを実行することで、テキストファイルを読み込み、読み込んだ結果を出力することができる。読み込んだ文字列は配列として取り込まれているので、最初の一行のみを表示するようにプログラムを変更して、実行する。

実行した結果を issue のコメント欄に貼ると、Bot が反応して、次の課題に進むことができる。

Step 5 : Get the last element of an array

先程は、最初の行を表示したので、次は最後の行を表示してみましょうという課題だ。 配列操作の課題である。解決方法は以下の2パターンである。

  1. テキストファイルの行を数える。ただし、最初の行が「0行目」であることに注意が必要であると記載されている。
  2. 負の数を指定する。(こちらはテキストには記載されていないが、調べてみて欲しい。)

変更して、実行した結果を issue のコメントに貼ると、Bot が反応してくれ、次の課題に進むことができる。

Step 6 : Retrieve a random quote

次に、乱数を発生させて任意の行を表示させるプログラムに変更する。

そのために、random モジュールを読み込み、処理を行うことができるよう、コードを変更する。

変更が完了して、無事に実行できれば、push して完了である。

ここまででコードの説明は終わりとなる。

Step 7 : Explore Python on your own

発展課題として、以下が提示されている。

  • テキストファイルに文章を追加する
  • 一度に複数行の出力をする
  • 出力時に、改行コードを削除する
  • ファイルの書き込みについて学び、プログラムで引用符を追加する

Step 7 に関しては、現時点では、回答がない形になっている。

まとめ

Botインタラクティブに、一緒に学ぶ新感覚はいい体験であった。一歩一歩確実に進める形はとても良かったように思う。「GitHub Learning Lab」は Git に限定せず、汎用的な学習プラットフォームになりつつあるようだ。今後も要チェックしていきたい。また、Issue や Pull Request など GitHub の機能を活用して、誰でもコースを作って公開することが可能なので、是非自分もコンテンツ作成に挑戦したいと思えた。

それでは、ステキな開発ライフを。

関連記事

GitHub Learning Lab」の GitHub Actions は以下をどうぞ。 kakakakakku.hatenablog.com