Pythonの活用分野は、事務作業から人工知能・Web開発まで幅広い分野で活用されています。そのため、様々な利用目的を持った初学者に対してどのような入門講座が良いか整理しました。
本記事では初心者向けのPython入門講座の講師経験から学んだ事を中心に記載しました。
#入門講座のタイトルを決める
入門講座講師メンバーと初めに検討した事は、入門講座のタイトルです。
タイトルをしっかりと決める事で、受講者はどのような入門講座であるか理解してもらい、講師は作成する教材の方針を決めやすくなります。
講師メンバーと検討し、サンプルプログラムを動かし、プログラミング初心者でも楽しんで学べる講座である事が最も伝わる下記タイトルを採用する事に決定しました。
タイトル:動かして学ぶ、はじめてのPython
また、他のタイトル案は下記に記載します。
- 実務で使うPython入門 〜〜初めの一歩〜〜
- 実践!Python入門 〜実務で使う第一歩を踏み出そう〜
- 段階的に学ぶPython入門 ~実践力をつけるPythonプログラミング講座~
最終的には実務利用が出来るようになってもらう目標でもあったため、実践的な講座である事を訴えかけるタイトルです。
但し、少し難しい印象を受けるタイトルになってしまうため、「実務」「実践」より「動かして学ぶ」と「はじめての」で初心者向けである事がタイトルで理解できる上記タイトル案が採用されました。
#実施内容と時間配分を決める
次に講師メンバーと議論した事は、実施内容と時間配分です。
まったくプログラムミングを今まで経験された事の無い方でもステップを踏んで理解出来るように「基礎編」「応用編」「発展編」と3部構成にしました。
プログラミングが初めての方でも理解出来るように「基礎編」で構文とデータ構造を理解して頂き、「応用編」では少し長いプログラミングに挑戦してデバッグ方法やユニットテストをしてもらいます。
「発展編」はサンプルのチャットボットを使って「基礎編」「応用編」の学んだ事を試してもらう事を前提としています。
各講座の詳細と時間配分は下記のようにしました。
-
基礎編 2時間(10分)
- データ構造・制御の基本的な構文を理解します
- コレクション(リスト・辞書)について理解します
- 関数・クラスについて理解します
- エラー処理について理解します
- ファイル入出力について理解します
- リスト内包表記・ジェネレータについて理解します
-
応用編 2時間(10分)
- PEP8スタイルガイドについて理解します。
- クラス・関数のドキュメンテーションの書き方について理解します。
- ユニットテストとデバッグ方法について理解します。
- 標準ライブラリに含まれるsqlite3を使ったDBアクセス方法について理解します。
- 外部サイトの情報を取得してみます。
-
発展編 2時間(10分)
- Slackとbotについて理解します。
- 開発環境を構築します。
- botを動かします。
- 課題にチャレンジします。
「基礎編」の前半では、講座の全体像の説明や、環境設定とPythonが他の言語と違いどのような優位点があるかなどの説明もしているため、実際は1時間ほどで説明できる内容となっています。
それには理由があり、講師陣でロールプレイング(講義の練習)をした結果、座学に近い講義になり退屈すぎるため「基礎編」は1時間で説明出来る内容にしています。
本来であれば、マルチスレッドやマルチプロセスの説明や位置引数・キーワード引数など細かな内容についても「基礎編」に加える予定でした。
「応用編」では、「外部サイトの情報を取得」するで、自分自身でプログラムをカスタマイズしたりするためテストやデバッグ方法を中心に課題を含めて学習して頂きました。
前半の1時間は「基礎編」と同様に座学に近い内容ですが、後半の1時間を「外部サイトの情報を取得」のサンプルプログラムの説明とカスタマイズしてみる時間としました。
「発展編」は、2時間すべてをサンプルプログラムを元に自分自身でbotをカスタマイズする時間にしました。
講師は受講生の方々から、質問を受けたりする事に翻弄します。
また、「発展編」では自由に興味のある事をしてもらったため、「応用編」で学んだ「外部サイトの情報を取得してみます。」で学んだ事を引き続きやってもらってもよしとしました。
サンプルコードの作成
Pythonはコードの構文が表情に読みやすく作られているため初学者でも理解しやすく、入門者にとっては良質のサンプルを動かして学んで頂く事が一番だとおもいました。
サンプルを作る際に注意した事は、下記です。(今回の講座では実践できてるところと出来てないところがあります)
- 動かさなくても全体を見渡せるようにする事
- 読みやすく変数名など略語は避けるコードの方が良いです
- Python らしい、シンプルで読みやすいコードの書き方を説明する前に、それ以外の書き方もサンプルコードに含める事
- 今回は講座の時間の都合で対応する事ができませんでしたが、受講者より「こんな書き方も出来るのですが?」と質問があったので次回は対応できるようにしたいです。
- オブジェクト指向は強力なツールですが、なるべくクラスを作らないで説明する事
- 講座でクラスについて簡単に説明しましたが、Pythonの話ではなく設計の話になってしまいます。また、Pythonはクラスに頼らなくても強力な言語機能を持っているため大抵の事は対応できるようになっています。
- デバッグ・テストをしやすいコードにする
- 今回の講座では簡単なデバック方法とテスト方法しか書けませんでしたが、動かしながら学ぶためにテスト方法はもう少しボリュームがあった方が良かったかもしれません
- サンプルで楽しめるコードを作る
- スクレイピングや botなど後半で説明をしましたが、もしかしたら先に動かし方だけでも説明し、基礎編の退屈な構文をそのサンプルで試せるようにした方が良かったかもしれません
本講座のソースコード
PyConTutorialSampleCode
準備編まとめ
まだまだ、実際の各講座で注意すべき点や・終わった後の反省など本記事では書きたい事が沢山ありますが、都合(Advent Calendarの掲載日の締切)から準備までの話とさせて頂きます。
(別のページで講座実施と事後について記載します。)
準備編では、淡々と書いて順調に進んだように書きましたが。実際はかなり時間的にも入門者用の説明方法等で苦労しました。
参考書籍
プログラマ以外の方がどのような用途で使うか調べる参考にしまいた。
退屈なことはPythonにやらせよう
初学者に教えるための説明方法を参考にしました。
わかるPython