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

3f4bea69d9f180bc3137dc41a263a996?s=47 Yusuke Nishio
September 18, 2018

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

PyCon JP 2018

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

https://pycon.jp/2018/

3f4bea69d9f180bc3137dc41a263a996?s=128

Yusuke Nishio

September 18, 2018
Tweet

Transcript

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

  2. © BrainPad Inc. 2 • 名前: 西尾 友佑(Yusuke Nishio) ◦

    Twitter: @nissy0409240 • 所属: ブレインパッドMP本部開発部(2016.7.1~) ◦ エンジニア歴: 5年目 • 2018年の主な活動 ◦ プライベートDMP(Rtoaster)開発 ◦ インターネット広告関連ツール開発 ◦ チュートリアル「動かして学ぶ、はじめてのPython」TA ◦ ロシアW杯現地観戦 ▪ クリロナのハットトリックを生観戦 自己紹介
  3. © BrainPad Inc. 3 • 資料公開あり ◦ Speaker Deckにて公開しています •

    撮影もOK ◦ シャッター音は控えめにお願いします • 実況中継大歓迎です ◦ #pyconjp ◦ #pyconjp_6 よろしくお願いします
  4. © BrainPad Inc. 4 • 私が所属する株式会社ブレインパッドでは 新卒研修の一環として Python研修を実施しています • 講師の立場として

    ◦ どのように準備したのか ◦ どんな学びがあったか • を中心にお話させて頂きます 話すこと
  5. © BrainPad Inc. 5 • 前提 • 研修全体構成 • カリキュラムの選定方法

    • 資料レビュー時のコメント紹介 • 受講者の声 • どんな学びがあったか アジェンダ
  6. 前提

  7. © BrainPad Inc. 7 • 入社後、三ヶ月間は新卒の新入社員全員が研修を受けます ◦ 今年の職種は三職種でした ▪ データサイエンティスト

    ▪ エンジニア ▪ ビジネス • 研究でPythonを使っていた方もいれば プログラミング未経験の方もいます • カリキュラムは基本的に職種関係無く全職種同じです ◦ 全職種に理解ある人材と成長することが目的です 前提
  8. 研修全体構成

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

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

  11. © BrainPad Inc. 11 • Python研修とチーム開発研修があります ◦ チーム開発研修ではアジャイル開発などの開発手法や Gitの使い方などを扱います •

    Pythonの知識の拡充とPythonを書くことに特化しています ◦ Gitを用いたバージョン管理やプルリクベースでの 開発は本研修では扱わないことにしました ◦ なぜこうしたかは後述します エンジニアリング研修
  12. © BrainPad Inc. 12 • 様々な場面で使われているから ◦ 科学技術分野 ▪ 自然言語処理,

    統計, 数学など ◦ Webアプリケーション ▪ FacebookやGoogleで採用されている ▪ YouTube, Evernoteなど • ブレインパッド社内でも使われている ◦ Rtoaster, Conomi, AdNote ◦ 分析案件, システム化案件 and more... なぜPythonか
  13. © BrainPad Inc. 13 Python研修全体スケジュール • 1日目 ◦ システム開発について ◦

    Python講義(文法) ◦ Python演習 • 2日目 ◦ Python演習 ◦ ライブラリについて • 3日目 ◦ 総合演習
  14. © BrainPad Inc. 14 • 以下の内容を扱うことにしました ◦ 基礎的な文法事項 ◦ 標準ライブラリ・外部ライブラリの使い方

    ◦ 上記内容を元にした演習 • 以下の内容は省きました ◦ DBへの接続 ◦ チーム開発 ◦ ユニットテストの書き方 Python研修
  15. カリキュラムの選定方法

  16. © BrainPad Inc. 16 • エンジニア職以外の人の話も聞いてみる ◦ ここまでは出来るようになっていると嬉しい ◦ 他の研修では扱わないから扱ってて欲しい

    などの要望を盛り込む • ゼロベースで考えてみる ◦ やって見た方が良さげなことを盛り込む 進め方
  17. © BrainPad Inc. 17 • データサイエンス系の講義で扱わないけど必要な内容を盛り込む ◦ Pythonの文法 ◦ ライブラリの使い方

    ▪ 標準ライブラリ・サードパーティライブラリの違い ◦ 環境構築は紹介のみ ▪ 今回は運営側で用意しました ◦ DBへのインポートなどは扱わない ▪ 初学者もいるので扱うと対象となる 範囲が広いという懸念がありました エンジニア職以外の人の話も聞いてみる
  18. © BrainPad Inc. 18 • 初学者のうちから「綺麗なコード」って意識しないとダメなの?? ◦ とにかく動かす方法に注力した方がいいですよね • Gitやターミナルの使い方で詰まるの勿体無いですよね

    ◦ Pythonの書き方に注力した方がいいですよね • でも使えないと実際のところキツいですよね ◦ Python研修から切り出してプルリクエストの 出し方も別の時間にしたらどうか?? ゼロベースで考えてみる
  19. © BrainPad Inc. 19 • 文法の紹介等よくある話は外せない ◦ ただの講義に終始するのは受講する側は辛くないか ◦ ググって独学で進めて頂くか

    ◦ ググるのってある程度分かってからじゃないと 答えに辿り着けないですよね • 発展的な内容を盛り込めないか ◦ 難しい内容を多少は盛り込むか ◦ 分析的な内容は興味もってくれそう ◦ 初学者を躓かせたくはない ゼロベースで考えてみる
  20. © BrainPad Inc. 20 • Pythonのコードを書くことに注力する ◦ とにかく手を動かす • Python以外の要素で悩まないようにする

    ◦ 事前に地雷は撤去する • 一歩先の内容を扱えるようにする ◦ 経験者でも退屈しないコンテンツを考える 選定する方向性をまとめる
  21. © BrainPad Inc. 21 • Pythonのコードを書くことに注力する ◦ エンジニアらしいと言われる環境なしに出来ないか ◦ 差分管理無しでも保存出来る環境はないか

    ◦ コードを書くことに対するハードルを下げられないか • Jupyter Notebookを使って上記を解決出来ないか 解決策を考える
  22. © BrainPad Inc. 22 Jupyter Notebookとは • Jupyter Notebookとはノートブックと呼ばれる形式で プログラムを作成・実行・結果の記録・分析作業を

    進めるためのツール • Pythonのみならず沢山の言語に対応 ◦ 本講義はPythonのみで進めます • 作成したプログラム・実行結果・その際のメモを 簡単に作成・確認することができる • 自分自身の過去の作業内容の振り返りのみならず チームメンバーへ作業結果を共有する際に便利 • (環境構築の説明は省略しました)
  23. © BrainPad Inc. 23 • Python以外の要素で悩まないようにする ◦ 悩むことなく詰まることもなく経験値を積むことは 本当に不可能か ◦

    初見でも少し難しい内容を扱うことはできないのか ◦ 写経するという方法もあるがただその場で 写経だけさせるのは放任し過ぎじゃないか ◦ せっかくJupyter Notebook使うし何か出来ないか • 事前にNotebook作って実行して貰うことで 詰まること無く少し難しい内容を体験して もらうことは出来ないか 解決策を考える
  24. © BrainPad Inc. 24 実際の資料(Pythonファイルの実行方法) • ノートブックとPythonファイルを同じ階層に配置 • ノートブック上で下記コマンドを実行 コマンド:

    %run -i [ファイル名]
  25. © BrainPad Inc. 25 実際の資料(クラスとインスタンスの例)

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

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

  28. © BrainPad Inc. 28 • 一歩先の内容を扱えるようにする ◦ 経験者でも退屈しないものはないのか ◦ 実際の業務に近いことをやって貰っても

    いいかもしれない ◦ スクリプトを書くようなものなら 取り組めるかもしれない • 答えがひとつではない課題を出せないか 解決策を考える
  29. © BrainPad Inc. 29 • Linuxコマンドにはファイルをコピーする cpコマンドが存在する ◦ linuxコマンドのようにファイルのコピーを実現する cp_file.pyを作成せよ

    ▪ コピー元ファイル名とコピー先ファイル名の順に 実行時に外部変数として受け取ることとする ▪ ここに記載されていない仕様は自由に 定義して良いこととする ▪ 余力のある人は機能追加をして あなたの思いつく最強のcp_file.pyを作成せよ 実際の資料(発展問題)
  30. 資料レビュー時のコメント紹介

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

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

    確かに演習から自分で調べたり人に質問したりするスキルを身につけ ることが最終的なゴールであると考えています ですがプログラム未経験の状態で質問しようとその時点での知識・経 験の少なさから質問できなかったり、対症療法を考えて場当たり的な 対応をしてしまうことがよく見受けられます(恥ずかしながら僕の経験 談でもあります) そのため、前半で文法事項についてひとさらいした後、演習問題を設 ける形式に致しました 実際に頂いたコメント
  33. 受講者の声

  34. © BrainPad Inc. 34 • cpコマンドをPythonで実装する演習を通して UNIXの偉大さを知った • 実利用に耐えうるコードの書き方を意識して コーディングを心に留めておいて

    書けるようにしたい • Pythonは難しいですが復習しなければ何も身につかないし、 苦労も忘れてしまうので逃げずにこれからも 自ら勉強することは大切であると感じました 受講者の声
  35. どんな学びがあったか

  36. © BrainPad Inc. 36 • 資料の作成や人に教えるということを目的とした準備は Pythonという言語自体を今までとは違う切り口で 学ぶきっかけになりました ◦ 実装に必要なものを虫食いで学ぶのではなく

    体系立てて伝えるということを意識しながら Pythonに関する知識を補完していくことが 出来ました 学んだこと
  37. © BrainPad Inc. 37 • ただ資料と問題と時間を与えるのではなく 「何が必要か」を考えて行動するきっかけに出来た ◦ 説明だけでは受講者にとって つまらないものになっていたかもしれない

    ◦ Python研修の内容にGitの使い方や チーム開発手法も含んでいたら Pythonのコードを書くことに 集中することは出来なかった 学んだこと
  38. © BrainPad Inc. 38 • ブレインパッドではPythonエンジニアを積極採用中です ◦ アプリケーションエンジニア ◦ 機械学習エンジニア

    ◦ データサイエンティスト • ご応募お待ちしています!! ◦ http://www.brainpad.co.jp/recruit/ おやくそく
  39. © BrainPad Inc. 39 ご静聴ありがとうございました