PyCon JP 2018
2018年9月18日(火) 大田区産業プラザ PiO
https://pycon.jp/2018/
西尾 友佑(@nissy0409240)2018年9月18日 PyCon2018Python研修の作り方-Teaching Is Learning-
View Slide
© BrainPad Inc. 2● 名前: 西尾 友佑(Yusuke Nishio)○ Twitter: @nissy0409240● 所属: ブレインパッドMP本部開発部(2016.7.1~)○ エンジニア歴: 5年目● 2018年の主な活動○ プライベートDMP(Rtoaster)開発○ インターネット広告関連ツール開発○ チュートリアル「動かして学ぶ、はじめてのPython」TA○ ロシアW杯現地観戦■ クリロナのハットトリックを生観戦自己紹介
© BrainPad Inc. 3● 資料公開あり○ Speaker Deckにて公開しています● 撮影もOK○ シャッター音は控えめにお願いします● 実況中継大歓迎です○ #pyconjp○ #pyconjp_6よろしくお願いします
© BrainPad Inc. 4● 私が所属する株式会社ブレインパッドでは新卒研修の一環としてPython研修を実施しています● 講師の立場として○ どのように準備したのか○ どんな学びがあったか● を中心にお話させて頂きます話すこと
© BrainPad Inc. 5● 前提● 研修全体構成● カリキュラムの選定方法● 資料レビュー時のコメント紹介● 受講者の声● どんな学びがあったかアジェンダ
前提
© BrainPad Inc. 7● 入社後、三ヶ月間は新卒の新入社員全員が研修を受けます○ 今年の職種は三職種でした■ データサイエンティスト■ エンジニア■ ビジネス● 研究でPythonを使っていた方もいればプログラミング未経験の方もいます● カリキュラムは基本的に職種関係無く全職種同じです○ 全職種に理解ある人材と成長することが目的です前提
研修全体構成
© BrainPad Inc. 9研修全体構成
© BrainPad Inc. 10研修全体構成今日話すのはこちらの内容になります
© BrainPad Inc. 11● Python研修とチーム開発研修があります○ チーム開発研修ではアジャイル開発などの開発手法やGitの使い方などを扱います● Pythonの知識の拡充とPythonを書くことに特化しています○ Gitを用いたバージョン管理やプルリクベースでの開発は本研修では扱わないことにしました○ なぜこうしたかは後述しますエンジニアリング研修
© BrainPad Inc. 12● 様々な場面で使われているから○ 科学技術分野■ 自然言語処理, 統計, 数学など○ Webアプリケーション■ FacebookやGoogleで採用されている■ YouTube, Evernoteなど● ブレインパッド社内でも使われている○ Rtoaster, Conomi, AdNote○ 分析案件, システム化案件and more...なぜPythonか
© BrainPad Inc. 13Python研修全体スケジュール● 1日目○ システム開発について○ Python講義(文法)○ Python演習● 2日目○ Python演習○ ライブラリについて● 3日目○ 総合演習
© BrainPad Inc. 14● 以下の内容を扱うことにしました○ 基礎的な文法事項○ 標準ライブラリ・外部ライブラリの使い方○ 上記内容を元にした演習● 以下の内容は省きました○ DBへの接続○ チーム開発○ ユニットテストの書き方Python研修
カリキュラムの選定方法
© BrainPad Inc. 16● エンジニア職以外の人の話も聞いてみる○ ここまでは出来るようになっていると嬉しい○ 他の研修では扱わないから扱ってて欲しいなどの要望を盛り込む● ゼロベースで考えてみる○ やって見た方が良さげなことを盛り込む進め方
© BrainPad Inc. 17● データサイエンス系の講義で扱わないけど必要な内容を盛り込む○ Pythonの文法○ ライブラリの使い方■ 標準ライブラリ・サードパーティライブラリの違い○ 環境構築は紹介のみ■ 今回は運営側で用意しました○ DBへのインポートなどは扱わない■ 初学者もいるので扱うと対象となる範囲が広いという懸念がありましたエンジニア職以外の人の話も聞いてみる
© BrainPad Inc. 18● 初学者のうちから「綺麗なコード」って意識しないとダメなの??○ とにかく動かす方法に注力した方がいいですよね● Gitやターミナルの使い方で詰まるの勿体無いですよね○ Pythonの書き方に注力した方がいいですよね● でも使えないと実際のところキツいですよね○ Python研修から切り出してプルリクエストの出し方も別の時間にしたらどうか??ゼロベースで考えてみる
© BrainPad Inc. 19● 文法の紹介等よくある話は外せない○ ただの講義に終始するのは受講する側は辛くないか○ ググって独学で進めて頂くか○ ググるのってある程度分かってからじゃないと答えに辿り着けないですよね● 発展的な内容を盛り込めないか○ 難しい内容を多少は盛り込むか○ 分析的な内容は興味もってくれそう○ 初学者を躓かせたくはないゼロベースで考えてみる
© BrainPad Inc. 20● Pythonのコードを書くことに注力する○ とにかく手を動かす● Python以外の要素で悩まないようにする○ 事前に地雷は撤去する● 一歩先の内容を扱えるようにする○ 経験者でも退屈しないコンテンツを考える選定する方向性をまとめる
© BrainPad Inc. 21● Pythonのコードを書くことに注力する○ エンジニアらしいと言われる環境なしに出来ないか○ 差分管理無しでも保存出来る環境はないか○ コードを書くことに対するハードルを下げられないか● Jupyter Notebookを使って上記を解決出来ないか解決策を考える
© BrainPad Inc. 22Jupyter Notebookとは● Jupyter Notebookとはノートブックと呼ばれる形式でプログラムを作成・実行・結果の記録・分析作業を進めるためのツール● Pythonのみならず沢山の言語に対応○ 本講義はPythonのみで進めます● 作成したプログラム・実行結果・その際のメモを簡単に作成・確認することができる● 自分自身の過去の作業内容の振り返りのみならずチームメンバーへ作業結果を共有する際に便利● (環境構築の説明は省略しました)
© BrainPad Inc. 23● Python以外の要素で悩まないようにする○ 悩むことなく詰まることもなく経験値を積むことは本当に不可能か○ 初見でも少し難しい内容を扱うことはできないのか○ 写経するという方法もあるがただその場で写経だけさせるのは放任し過ぎじゃないか○ せっかくJupyter Notebook使うし何か出来ないか● 事前にNotebook作って実行して貰うことで詰まること無く少し難しい内容を体験してもらうことは出来ないか解決策を考える
© BrainPad Inc. 24実際の資料(Pythonファイルの実行方法)● ノートブックとPythonファイルを同じ階層に配置● ノートブック上で下記コマンドを実行コマンド: %run -i [ファイル名]
© BrainPad Inc. 25実際の資料(クラスとインスタンスの例)
© BrainPad Inc. 26実際の資料(外部ライブラリ)● インストール 研修用環境ではこちらのコマンドを使って下さい!pip3 install --user [ライブラリ名]
© BrainPad Inc. 27● データサイエンティストの方にノートブックを作成して頂いた実際の資料(Pandas研修)
© BrainPad Inc. 28● 一歩先の内容を扱えるようにする○ 経験者でも退屈しないものはないのか○ 実際の業務に近いことをやって貰ってもいいかもしれない○ スクリプトを書くようなものなら取り組めるかもしれない● 答えがひとつではない課題を出せないか解決策を考える
© BrainPad Inc. 29● Linuxコマンドにはファイルをコピーするcpコマンドが存在する○ linuxコマンドのようにファイルのコピーを実現するcp_file.pyを作成せよ■ コピー元ファイル名とコピー先ファイル名の順に実行時に外部変数として受け取ることとする■ ここに記載されていない仕様は自由に定義して良いこととする■ 余力のある人は機能追加をしてあなたの思いつく最強のcp_file.pyを作成せよ実際の資料(発展問題)
資料レビュー時のコメント紹介
© BrainPad Inc. 31● 資料を全部見ましたが、演習を先にして「こう言う事をやりたい時はどうする?」を考えた上で自分で探すor人に聞くスキルを身につけてもらった方が良いかもしれません実際に頂いたコメント
© BrainPad Inc. 32● 資料を全部見ましたが、演習を先にして「こう言う事をやりたい時はどうする?」を考えた上で自分で探すor人に聞くスキルを身につけてもらった方が良いかもしれません● 確かに演習から自分で調べたり人に質問したりするスキルを身につけることが最終的なゴールであると考えていますですがプログラム未経験の状態で質問しようとその時点での知識・経験の少なさから質問できなかったり、対症療法を考えて場当たり的な対応をしてしまうことがよく見受けられます(恥ずかしながら僕の経験談でもあります)そのため、前半で文法事項についてひとさらいした後、演習問題を設ける形式に致しました実際に頂いたコメント
受講者の声
© BrainPad Inc. 34● cpコマンドをPythonで実装する演習を通してUNIXの偉大さを知った● 実利用に耐えうるコードの書き方を意識してコーディングを心に留めておいて書けるようにしたい● Pythonは難しいですが復習しなければ何も身につかないし、苦労も忘れてしまうので逃げずにこれからも自ら勉強することは大切であると感じました受講者の声
どんな学びがあったか
© BrainPad Inc. 36● 資料の作成や人に教えるということを目的とした準備はPythonという言語自体を今までとは違う切り口で学ぶきっかけになりました○ 実装に必要なものを虫食いで学ぶのではなく体系立てて伝えるということを意識しながらPythonに関する知識を補完していくことが出来ました学んだこと
© BrainPad Inc. 37● ただ資料と問題と時間を与えるのではなく「何が必要か」を考えて行動するきっかけに出来た○ 説明だけでは受講者にとってつまらないものになっていたかもしれない○ Python研修の内容にGitの使い方やチーム開発手法も含んでいたらPythonのコードを書くことに集中することは出来なかった学んだこと
© BrainPad Inc. 38● ブレインパッドではPythonエンジニアを積極採用中です○ アプリケーションエンジニア○ 機械学習エンジニア○ データサイエンティスト● ご応募お待ちしています!!○ http://www.brainpad.co.jp/recruit/おやくそく
© BrainPad Inc. 39ご静聴ありがとうございました