PyQの学習者サポートから学んだ
Python初学者への
解説ノウハウ
2017-10-20 BPStudy #122
kameko, hirokiky
自己紹介
大村亀子(@okusama27)
ビープラウドで楽しく働いています。 10年ほど新人研修、社会人向けプログラミング研修の講師をやってます。
現在はPyQチームです。
清原弘貴(@hirokiky)
Python,Djangoが好きで製品やライブラリーを趣味と仕事で作っています。
Pythonの本も書いています。
* ブログ: https://blog.hirokiky.org/
* GitHub: https://github.com/hirokiky/
アジェンダ
- PyQ紹介
- PyQサポートとは?
- サポートの分類
- よくあるハマリポイントと解説
- リリース予定機能紹介
PyQ - https://pyq.jp
PyQサポートとは?
リリースから半年、
お問い合わせ:約2,000件
(※メンタープランは除く)
解説系の質問は全体の3割ほど
サポート内容は大きく2つに分けられる
● ちゃんと書いたのに動かない系
○ 原因:写経ミス
○ 「書いてある通りに写したけど、動きません。」
● 解説や詳細説明が必要系
○ 原因:内容が理解できていない
○ 「〜ってなんですか?」「どうしてもここ意味わかりません」
答えを教える
写し間違い系の問題は...
順序立てて考えてもらう
解説必要系の問題は...
場所を指定して考えてもらう
1回目は...
処理を細かく解説
なるべく図を使って
わかりやすく
2回目は...
例:誕生日の説明(< or <=)
よくあるハマりポイント
繰り返し処理(ループ)、集計
ループがわからない人は
1つ1つループを紐解いて
解説すると効果的
ループの解説は処理を紐解く
# ループ1周目:変数aは10, 出力は※※※※
# ループ2周目:変数aは20, 出力は※※※※
# ループ3周目:変数aは30, 出力は※※※※
1回ずつ何をしているか、
考えてもらう
Python Tutor での解説がオススメ!
集計処理の解説例
sample = ['x', 'y', 'z', 'x', 'x', 'y', 'x', 'y', 'x', 'z', 'k', 'm']
count = {}
# ここから下に書き写してください。
for val in sample:
if val in count:
count[val] += 1
else:
count[val] = 1
# 表示
for k, v in count.items():
print(k + ':' + str(v))
1回目:各周の変数valの値をお知らせ
ループ1回目 val == 'x'
ループ2回目 val == 'y'
ループ3回目 val == 'z'
ループ4回目 val == 'x'
ループ5回目 val == 'x'
〜続く〜
2回目:各周の辞書countの値もお知らせ
ループ1回目 val == 'x' , count == {'x': 1}
ループ2回目 val == 'y' , count == {'x': 1, 'y': 1}
ループ3回目 val == 'z' , count == {'x': 1, 'y': 1, 'z': 1}
ループ4回目 val == 'x' , count == {'x': 2, 'y': 1, 'z': 1}
ループ5回目 val == 'x' , count == {'x': 3, 'y': 1, 'z': 1}
〜続く〜
その他の気をつけているポイント
- エラーが出ている場合は、エラーの解説をする
- 何度も解説すると、エラーを読んでくれるようにな
る
- 悪い場所を正すだけでなく、なぜちゃんと動いていな
いかを解説する
- 例:誕生日の考え方
よくある質問はブログ(blog.pyq.jp)で紹介中
Python初学者への解説ノウハウまとめ:
- 書き間違いはすぐに教えよう
- エラーの解説は丁寧に絶対やろう
- 解説が必要なときは相手に考えてもらいつつ解
説しよう
- 解説する時は一気にせず、何度かに分けよう
- ループの質問は、1回ずつの処理を説明しよう
PyQのこれからリリース予定の機能
- 学ぶ順序、目的を明確にする→コース機能
- 文法ではなく「Pythonの書き方」を学ぶ課題を増やす
→設計問題
- エラーの解説を増やす→判定機能カイゼン
- Flake8を活用し、読みやすいコードを書く→Flake8問
題

Bp study #122 PyQの学習者サポートから学んだpython初学者への解説ノウハウ