Python
Django
pyenv
slackbot
新人プログラマ応援

新人さんに向けたPython導入の記録

More than 1 year has passed since last update.

はじめに

最近,職場の新入社員に短い期間ですがPythonを教える機会があったので,その時に行った内容についてまとめておきたいと思います.
新人教育でPythonを選んだモチベーションは次のようなところです.

  • シンプルな文法で習得しやすいと思う.
  • 用途も豊富(Webアプリ,機械学習,ちょっとした書き捨てコードなど)
  • 自分も好きな言語なので

ちなみにその新人さんは,その前にC++をある程度習得していて,それ以前はプログラミング未経験となります.

環境の準備

はじめは環境の準備からです.

pyenv

OSはUbuntuを使っていたのではじめからPythonは入っていたのですが,インストールするという経験も積んでもらいたかったのでpyenvで環境を作成しました.この時に併せて,Pythonには2系と3系があることの注意点を伝えてあります.今回はPython3.6.2を使用しています.

※ほんとはvenvも説明したかったけど,混乱しそうなので省略しました.

Hello world!

Pythonが入ったらひとまずhello.pyを作ってHello world!です.エディタはVisual Studio Codeを使っていたのでPython用の拡張を入れるだけで準備OKでした.ここでpythonの実行方法を覚えてもらっています.

$ python hello.py

Jupyter Notebook

導入で学習用のコードを書いていくには対話型の実行環境があると便利なので,Jupyterをインストール.この時にpipについて説明してあります.はじめは入門サイトを見てJupyterである程度まとめながらコードを書いていってもらいました.
ついでにpaiza.ioのようなオンラインの実行環境も紹介しています.

基本的な文法の習得

Dive Into Python 3

http://diveintopython3-ja.rdy.jp/index.html

ひとまずはここを見てもらいながら,Jupyterでコードを書いてもらいました.といってもあまり時間がなかったので前半のほうをざっくりといった感じですが.こういうページは助かりますね.
個人的にはリスト内包表記がうまく活用できるとPythonが楽しくなってくると思います.

実践的にコーディング

Google Code Jam

https://code.google.com/codejam/past-contests

Google Code Jamの簡単な過去問をQualification Roundから選んで解いてもらいました.基本的なファイルの入出力や文字列操作,簡単なアルゴリズムを習得してもらうのが狙いです.例えば何らかのログファイルを解析するスクリプトを書くようなときにも,ここでの知識が役立つかなと思っています.
またここでは,Google Code Jamを解いてもらうときに知っていると役立つテクニック(?)を何点か紹介しています.

with open('./sample.in') as f:
    # 末尾に入る邪魔な改行文字をスライスで削除
    line = f.readline()[:-1]
    # 空白区切りのデータを個別の変数にアンパック代入
    a, b, c = f.readline()[:-1].split()
    # intにしたいときはlist内包表記で変換
    a, b, c = [int(x) for x in f.readline()[:-1].split()]

Slackbot

いかにもお勉強なコードばかりを書いていても飽きてしまうかなと思って,簡単に作れるけどちょっとすごい感のあるプログラムを作ってもらいました.今回はお題として,職場でSlackを使っていることもありSlackbotを作ってもらっています.
こちらを参考にさせてもらうと簡単に実装できました.ひと工夫として天気予報を返すように作りました.Pythonで天気予報を取得するのもこちらを参考にすると簡単に実現できました.

01.png

こちらは新人さんも作ってみて楽しかったようです.よかった:smile:

Django Girls Tutorial

https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/

こちらは期間が足りなくて今回は紹介だけとなりましたが,Djangoを使ったWebアプリ作成のチュートリアルになります.Web開発の知識がなくても進めていけるくらいに丁寧に説明されていて素晴らしいです.チュートリアルの中でCSSも用意されており見栄えがするものが出来上がることと,Herokuを使ってデプロイも行っているので動くものが出来上がり,上記のSlackbotと同様に作っていて楽しいのではないかと思って紹介しました.是非チャレンジしてもらいたいものです.

おわりに

短期間ではありましたが,動くプログラムを作ることまでができて教えている側も楽しかったです.Pythonを好きになってもらえたらいいですね.