Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python研修の作り方 -Teaching Is Learning-

Yusuke Nishio
September 18, 2018

Python研修の作り方 -Teaching Is Learning-

PyCon JP 2018

2018年9月18日(火)
大田区産業プラザ PiO

https://pycon.jp/2018/

Yusuke Nishio

September 18, 2018
Tweet

More Decks by Yusuke Nishio

Other Decks in Programming

Transcript

  1. 西尾 友佑(@nissy0409240)
    2018年9月18日 PyCon2018
    Python研修の作り方
    -Teaching Is Learning-

    View Slide

  2. © BrainPad Inc. 2
    ● 名前: 西尾 友佑(Yusuke Nishio)
    ○ Twitter: @nissy0409240
    ● 所属: ブレインパッドMP本部開発部(2016.7.1~)
    ○ エンジニア歴: 5年目
    ● 2018年の主な活動
    ○ プライベートDMP(Rtoaster)開発
    ○ インターネット広告関連ツール開発
    ○ チュートリアル「動かして学ぶ、はじめてのPython」TA
    ○ ロシアW杯現地観戦
    ■ クリロナのハットトリックを生観戦
    自己紹介

    View Slide

  3. © BrainPad Inc. 3
    ● 資料公開あり
    ○ Speaker Deckにて公開しています
    ● 撮影もOK
    ○ シャッター音は控えめにお願いします
    ● 実況中継大歓迎です
    ○ #pyconjp
    ○ #pyconjp_6
    よろしくお願いします

    View Slide

  4. © BrainPad Inc. 4
    ● 私が所属する株式会社ブレインパッドでは
    新卒研修の一環として
    Python研修を実施しています
    ● 講師の立場として
    ○ どのように準備したのか
    ○ どんな学びがあったか
    ● を中心にお話させて頂きます
    話すこと

    View Slide

  5. © BrainPad Inc. 5
    ● 前提
    ● 研修全体構成
    ● カリキュラムの選定方法
    ● 資料レビュー時のコメント紹介
    ● 受講者の声
    ● どんな学びがあったか
    アジェンダ

    View Slide

  6. 前提

    View Slide

  7. © BrainPad Inc. 7
    ● 入社後、三ヶ月間は新卒の新入社員全員が研修を受けます
    ○ 今年の職種は三職種でした
    ■ データサイエンティスト
    ■ エンジニア
    ■ ビジネス
    ● 研究でPythonを使っていた方もいれば
    プログラミング未経験の方もいます
    ● カリキュラムは基本的に職種関係無く全職種同じです
    ○ 全職種に理解ある人材と成長することが目的です
    前提

    View Slide

  8. 研修全体構成

    View Slide

  9. © BrainPad Inc. 9
    研修全体構成

    View Slide

  10. © BrainPad Inc. 10
    研修全体構成
    今日話すのは
    こちらの内容に
    なります

    View Slide

  11. © BrainPad Inc. 11
    ● Python研修とチーム開発研修があります
    ○ チーム開発研修ではアジャイル開発などの開発手法や
    Gitの使い方などを扱います
    ● Pythonの知識の拡充とPythonを書くことに特化しています
    ○ Gitを用いたバージョン管理やプルリクベースでの
    開発は本研修では扱わないことにしました
    ○ なぜこうしたかは後述します
    エンジニアリング研修

    View Slide

  12. © BrainPad Inc. 12
    ● 様々な場面で使われているから
    ○ 科学技術分野
    ■ 自然言語処理, 統計, 数学など
    ○ Webアプリケーション
    ■ FacebookやGoogleで採用されている
    ■ YouTube, Evernoteなど
    ● ブレインパッド社内でも使われている
    ○ Rtoaster, Conomi, AdNote
    ○ 分析案件, システム化案件
    and more...
    なぜPythonか

    View Slide

  13. © BrainPad Inc. 13
    Python研修全体スケジュール
    ● 1日目
    ○ システム開発について
    ○ Python講義(文法)
    ○ Python演習
    ● 2日目
    ○ Python演習
    ○ ライブラリについて
    ● 3日目
    ○ 総合演習

    View Slide

  14. © BrainPad Inc. 14
    ● 以下の内容を扱うことにしました
    ○ 基礎的な文法事項
    ○ 標準ライブラリ・外部ライブラリの使い方
    ○ 上記内容を元にした演習
    ● 以下の内容は省きました
    ○ DBへの接続
    ○ チーム開発
    ○ ユニットテストの書き方
    Python研修

    View Slide

  15. カリキュラムの選定方法

    View Slide

  16. © BrainPad Inc. 16
    ● エンジニア職以外の人の話も聞いてみる
    ○ ここまでは出来るようになっていると嬉しい
    ○ 他の研修では扱わないから扱ってて欲しい
    などの要望を盛り込む
    ● ゼロベースで考えてみる
    ○ やって見た方が良さげなことを盛り込む
    進め方

    View Slide

  17. © BrainPad Inc. 17
    ● データサイエンス系の講義で扱わないけど必要な内容を盛り込む
    ○ Pythonの文法
    ○ ライブラリの使い方
    ■ 標準ライブラリ・サードパーティライブラリの違い
    ○ 環境構築は紹介のみ
    ■ 今回は運営側で用意しました
    ○ DBへのインポートなどは扱わない
    ■ 初学者もいるので扱うと対象となる
    範囲が広いという懸念がありました
    エンジニア職以外の人の話も聞いてみる

    View Slide

  18. © BrainPad Inc. 18
    ● 初学者のうちから「綺麗なコード」って意識しないとダメなの??
    ○ とにかく動かす方法に注力した方がいいですよね
    ● Gitやターミナルの使い方で詰まるの勿体無いですよね
    ○ Pythonの書き方に注力した方がいいですよね
    ● でも使えないと実際のところキツいですよね
    ○ Python研修から切り出してプルリクエストの
    出し方も別の時間にしたらどうか??
    ゼロベースで考えてみる

    View Slide

  19. © BrainPad Inc. 19
    ● 文法の紹介等よくある話は外せない
    ○ ただの講義に終始するのは受講する側は辛くないか
    ○ ググって独学で進めて頂くか
    ○ ググるのってある程度分かってからじゃないと
    答えに辿り着けないですよね
    ● 発展的な内容を盛り込めないか
    ○ 難しい内容を多少は盛り込むか
    ○ 分析的な内容は興味もってくれそう
    ○ 初学者を躓かせたくはない
    ゼロベースで考えてみる

    View Slide

  20. © BrainPad Inc. 20
    ● Pythonのコードを書くことに注力する
    ○ とにかく手を動かす
    ● Python以外の要素で悩まないようにする
    ○ 事前に地雷は撤去する
    ● 一歩先の内容を扱えるようにする
    ○ 経験者でも退屈しないコンテンツを考える
    選定する方向性をまとめる

    View Slide

  21. © BrainPad Inc. 21
    ● Pythonのコードを書くことに注力する
    ○ エンジニアらしいと言われる環境なしに出来ないか
    ○ 差分管理無しでも保存出来る環境はないか
    ○ コードを書くことに対するハードルを下げられないか
    ● Jupyter Notebookを使って上記を解決出来ないか
    解決策を考える

    View Slide

  22. © BrainPad Inc. 22
    Jupyter Notebookとは
    ● Jupyter Notebookとはノートブックと呼ばれる形式で
    プログラムを作成・実行・結果の記録・分析作業を
    進めるためのツール
    ● Pythonのみならず沢山の言語に対応
    ○ 本講義はPythonのみで進めます
    ● 作成したプログラム・実行結果・その際のメモを
    簡単に作成・確認することができる
    ● 自分自身の過去の作業内容の振り返りのみならず
    チームメンバーへ作業結果を共有する際に便利
    ● (環境構築の説明は省略しました)

    View Slide

  23. © BrainPad Inc. 23
    ● Python以外の要素で悩まないようにする
    ○ 悩むことなく詰まることもなく経験値を積むことは
    本当に不可能か
    ○ 初見でも少し難しい内容を扱うことはできないのか
    ○ 写経するという方法もあるがただその場で
    写経だけさせるのは放任し過ぎじゃないか
    ○ せっかくJupyter Notebook使うし何か出来ないか
    ● 事前にNotebook作って実行して貰うことで
    詰まること無く少し難しい内容を体験して
    もらうことは出来ないか
    解決策を考える

    View Slide

  24. © BrainPad Inc. 24
    実際の資料(Pythonファイルの実行方法)
    ● ノートブックとPythonファイルを同じ階層に配置
    ● ノートブック上で下記コマンドを実行
    コマンド: %run -i [ファイル名]

    View Slide

  25. © BrainPad Inc. 25
    実際の資料(クラスとインスタンスの例)

    View Slide

  26. © BrainPad Inc. 26
    実際の資料(外部ライブラリ)
    ● インストール 研修用環境ではこちらのコマンドを使って下さい
    !pip3 install --user [ライブラリ名]

    View Slide

  27. © BrainPad Inc. 27
    ● データサイエンティストの方にノートブックを作成して頂いた
    実際の資料(Pandas研修)

    View Slide

  28. © BrainPad Inc. 28
    ● 一歩先の内容を扱えるようにする
    ○ 経験者でも退屈しないものはないのか
    ○ 実際の業務に近いことをやって貰っても
    いいかもしれない
    ○ スクリプトを書くようなものなら
    取り組めるかもしれない
    ● 答えがひとつではない課題を出せないか
    解決策を考える

    View Slide

  29. © BrainPad Inc. 29
    ● Linuxコマンドにはファイルをコピーする
    cpコマンドが存在する
    ○ linuxコマンドのようにファイルのコピーを実現する
    cp_file.pyを作成せよ
    ■ コピー元ファイル名とコピー先ファイル名の順に
    実行時に外部変数として受け取ることとする
    ■ ここに記載されていない仕様は自由に
    定義して良いこととする
    ■ 余力のある人は機能追加をして
    あなたの思いつく最強のcp_file.pyを作成せよ
    実際の資料(発展問題)

    View Slide

  30. 資料レビュー時のコメント紹介

    View Slide

  31. © BrainPad Inc. 31
    ● 資料を全部見ましたが、演習を先にして
    「こう言う事をやりたい時はどうする?」を考えた上で
    自分で探すor人に聞くスキルを身につけてもらった方が
    良いかもしれません
    実際に頂いたコメント

    View Slide

  32. © BrainPad Inc. 32
    ● 資料を全部見ましたが、演習を先にして
    「こう言う事をやりたい時はどうする?」を考えた上で
    自分で探すor人に聞くスキルを身につけてもらった方が
    良いかもしれません
    ● 確かに演習から自分で調べたり人に質問したりするスキルを身につけ
    ることが最終的なゴールであると考えています
    ですがプログラム未経験の状態で質問しようとその時点での知識・経
    験の少なさから質問できなかったり、対症療法を考えて場当たり的な
    対応をしてしまうことがよく見受けられます(恥ずかしながら僕の経験
    談でもあります)
    そのため、前半で文法事項についてひとさらいした後、演習問題を設
    ける形式に致しました
    実際に頂いたコメント

    View Slide

  33. 受講者の声

    View Slide

  34. © BrainPad Inc. 34
    ● cpコマンドをPythonで実装する演習を通して
    UNIXの偉大さを知った
    ● 実利用に耐えうるコードの書き方を意識して
    コーディングを心に留めておいて
    書けるようにしたい
    ● Pythonは難しいですが復習しなければ何も身につかないし、
    苦労も忘れてしまうので逃げずにこれからも
    自ら勉強することは大切であると感じました
    受講者の声

    View Slide

  35. どんな学びがあったか

    View Slide

  36. © BrainPad Inc. 36
    ● 資料の作成や人に教えるということを目的とした準備は
    Pythonという言語自体を今までとは違う切り口で
    学ぶきっかけになりました
    ○ 実装に必要なものを虫食いで学ぶのではなく
    体系立てて伝えるということを意識しながら
    Pythonに関する知識を補完していくことが
    出来ました
    学んだこと

    View Slide

  37. © BrainPad Inc. 37
    ● ただ資料と問題と時間を与えるのではなく
    「何が必要か」を考えて行動するきっかけに出来た
    ○ 説明だけでは受講者にとって
    つまらないものになっていたかもしれない
    ○ Python研修の内容にGitの使い方や
    チーム開発手法も含んでいたら
    Pythonのコードを書くことに
    集中することは出来なかった
    学んだこと

    View Slide

  38. © BrainPad Inc. 38
    ● ブレインパッドではPythonエンジニアを積極採用中です
    ○ アプリケーションエンジニア
    ○ 機械学習エンジニア
    ○ データサイエンティスト
    ● ご応募お待ちしています!!
    ○ http://www.brainpad.co.jp/recruit/
    おやくそく

    View Slide

  39. © BrainPad Inc. 39
    ご静聴ありがとうございました

    View Slide