SlideShare a Scribd company logo
1 of 39
Download to read offline
西尾 友佑(@nissy0409240)
2018年9月18日 PyCon2018
Python研修の作り方
-Teaching Is Learning-
© 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. 13
Python研修全体スケジュール
● 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. 22
Jupyter 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
ご静聴ありがとうございました

More Related Content

What's hot

S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01Takeshi Akutsu
 
Python学習奮闘記#07 webapp
Python学習奮闘記#07 webappPython学習奮闘記#07 webapp
Python学習奮闘記#07 webappTakeshi Akutsu
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方Takesxi Sximada
 
KOMANKO and PAOPAL
KOMANKO and PAOPALKOMANKO and PAOPAL
KOMANKO and PAOPALssuser2d7627
 
S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6Takeshi Akutsu
 
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016Kei IWASAKI
 
独学プログラマーのその後
独学プログラマーのその後独学プログラマーのその後
独学プログラマーのその後Takayuki Shimizukawa
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Ai Makabi
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選Takuya Ueda
 
S20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれからS20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれからTakeshi Akutsu
 
OSS Study#19_LT
OSS Study#19_LTOSS Study#19_LT
OSS Study#19_LTNaoY-2501
 
S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5Takeshi Akutsu
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LTdrillan
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Preferred Networks
 

What's hot (20)

Introduction
IntroductionIntroduction
Introduction
 
S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01S01 t1 tsuji_pylearn_ut_01
S01 t1 tsuji_pylearn_ut_01
 
Python学習奮闘記#07 webapp
Python学習奮闘記#07 webappPython学習奮闘記#07 webapp
Python学習奮闘記#07 webapp
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
 
KOMANKO and PAOPAL
KOMANKO and PAOPALKOMANKO and PAOPAL
KOMANKO and PAOPAL
 
S18 t0 introduction
S18 t0 introductionS18 t0 introduction
S18 t0 introduction
 
S14 t0 introduction
S14 t0 introductionS14 t0 introduction
S14 t0 introduction
 
S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6S16 t1 python学習奮闘記#6
S16 t1 python学習奮闘記#6
 
OSSと私
OSSと私OSSと私
OSSと私
 
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
 
S07 t2 midorikawa
S07 t2 midorikawaS07 t2 midorikawa
S07 t2 midorikawa
 
独学プログラマーのその後
独学プログラマーのその後独学プログラマーのその後
独学プログラマーのその後
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
 
Go Friday 傑作選
Go Friday 傑作選Go Friday 傑作選
Go Friday 傑作選
 
S20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれからS20 t1 stapyのこれまでとこれから
S20 t1 stapyのこれまでとこれから
 
OSS Study#19_LT
OSS Study#19_LTOSS Study#19_LT
OSS Study#19_LT
 
S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5S12 t1 python学習奮闘記#5
S12 t1 python学習奮闘記#5
 
Pynyumon03 LT
Pynyumon03 LTPynyumon03 LT
Pynyumon03 LT
 
ODSC East 2017 Report
ODSC East 2017 ReportODSC East 2017 Report
ODSC East 2017 Report
 
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
 

Similar to Python研修の作り方 - teaching-is_learning-

プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24Tanaka Takaaki
 
Lightning talks: stanford japanese cheetsheets
Lightning talks: stanford japanese cheetsheetsLightning talks: stanford japanese cheetsheets
Lightning talks: stanford japanese cheetsheetsKamuela Lau
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Katayanagi Nobuko
 
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Tatsuya Shinozuka
 
ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!Naoharu Sasaki
 
Py conjp2012運営の話
Py conjp2012運営の話Py conjp2012運営の話
Py conjp2012運営の話Hirotaka Hata
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTdrillan
 
人間のためのpython #stapy68 2021-04-14
人間のためのpython #stapy68 2021-04-14人間のためのpython #stapy68 2021-04-14
人間のためのpython #stapy68 2021-04-14Xoxzo Inc.
 
PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-shoma h
 
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022Takayuki Shimizukawa
 
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業Makoto Koike
 
新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55将 高野
 
プログラミング教育に挑戦するために
プログラミング教育に挑戦するためにプログラミング教育に挑戦するために
プログラミング教育に挑戦するためにNaoki Kato
 
夏休みの自由研究(Lチカ)で学んだ技術
夏休みの自由研究(Lチカ)で学んだ技術夏休みの自由研究(Lチカ)で学んだ技術
夏休みの自由研究(Lチカ)で学んだ技術Shunsuke Mihara
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016Akinori Kohno
 
Python Boot Camp のお話し
Python Boot Camp のお話しPython Boot Camp のお話し
Python Boot Camp のお話しLina Katayose
 
無音動画学習方法のススメ
無音動画学習方法のススメ無音動画学習方法のススメ
無音動画学習方法のススメ俊文 黒澤
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介shoma h
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17Shinya Okano
 

Similar to Python研修の作り方 - teaching-is_learning- (20)

プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
プログルを支える技術 みんなのコードmeetup for エンジニア 2018/07/24
 
Lightning talks: stanford japanese cheetsheets
Lightning talks: stanford japanese cheetsheetsLightning talks: stanford japanese cheetsheets
Lightning talks: stanford japanese cheetsheets
 
Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk Python入門者の集い #6 Lightning Talk
Python入門者の集い #6 Lightning Talk
 
Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?Bottle使ってPython学習一緒にはじめませんか?
Bottle使ってPython学習一緒にはじめませんか?
 
ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!ここがスゴい(変だ)よ!Git lab!
ここがスゴい(変だ)よ!Git lab!
 
Py conjp2012運営の話
Py conjp2012運営の話Py conjp2012運営の話
Py conjp2012運営の話
 
Pyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LTPyladies tokyo 2nd anniversary LT
Pyladies tokyo 2nd anniversary LT
 
人間のためのpython #stapy68 2021-04-14
人間のためのpython #stapy68 2021-04-14人間のためのpython #stapy68 2021-04-14
人間のためのpython #stapy68 2021-04-14
 
PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-PyConJP2012 メンバ募集 -pyfes 2012.03-
PyConJP2012 メンバ募集 -pyfes 2012.03-
 
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
プログラマーとの出会い - Hello, Programmer! at PyCon Kyushu 2022
 
[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業[PyConJP2019]Pythonで切り開く新しい農業
[PyConJP2019]Pythonで切り開く新しい農業
 
新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55新しい世界の学び方 by @masaru_b_cl #nds55
新しい世界の学び方 by @masaru_b_cl #nds55
 
プログラミング教育に挑戦するために
プログラミング教育に挑戦するためにプログラミング教育に挑戦するために
プログラミング教育に挑戦するために
 
夏休みの自由研究(Lチカ)で学んだ技術
夏休みの自由研究(Lチカ)で学んだ技術夏休みの自由研究(Lチカ)で学んだ技術
夏休みの自由研究(Lチカ)で学んだ技術
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016
 
Visasq
VisasqVisasq
Visasq
 
Python Boot Camp のお話し
Python Boot Camp のお話しPython Boot Camp のお話し
Python Boot Camp のお話し
 
無音動画学習方法のススメ
無音動画学習方法のススメ無音動画学習方法のススメ
無音動画学習方法のススメ
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 

More from BrainPad Inc.

Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...BrainPad Inc.
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方BrainPad Inc.
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルトBrainPad Inc.
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介BrainPad Inc.
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 BrainPad Inc.
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術BrainPad Inc.
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事BrainPad Inc.
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシBrainPad Inc.
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料BrainPad Inc.
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIBrainPad Inc.
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)BrainPad Inc.
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善BrainPad Inc.
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発BrainPad Inc.
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例BrainPad Inc.
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年BrainPad Inc.
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発BrainPad Inc.
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?BrainPad Inc.
 
Big Data Analytics Tokyo講演資料
Big Data Analytics Tokyo講演資料Big Data Analytics Tokyo講演資料
Big Data Analytics Tokyo講演資料BrainPad Inc.
 

More from BrainPad Inc. (20)

Oss LT会_20210203
Oss LT会_20210203Oss LT会_20210203
Oss LT会_20210203
 
Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...Business utilization of real estate image classification system using deep le...
Business utilization of real estate image classification system using deep le...
 
ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方ブレインパッドにおける機械学習プロジェクトの進め方
ブレインパッドにおける機械学習プロジェクトの進め方
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト
 
機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介機械学習システム開発案件の事例紹介
機械学習システム開発案件の事例紹介
 
れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々 れこめん道~とあるエンジニアの苦闘の日々
れこめん道~とあるエンジニアの苦闘の日々
 
DMPの分析機能を実現する技術
DMPの分析機能を実現する技術DMPの分析機能を実現する技術
DMPの分析機能を実現する技術
 
機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事機械学習システムを受託開発 する時に気をつけておきたい事
機械学習システムを受託開発 する時に気をつけておきたい事
 
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシシステム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
システム開発素人が深層学習を用いた画像認識で麻雀点数計算するLINEbotを作ったハナシ
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
2018.08.21-機械学習工学研究会 現場を交えた勉強会発表資料
 
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部APIGKEとgRPCで実装する多言語対応・スケーラブルな内部API
GKEとgRPCで実装する多言語対応・スケーラブルな内部API
 
実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)実証実験報告セミナー資料 20180328(抜粋版)
実証実験報告セミナー資料 20180328(抜粋版)
 
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
エンジニア勉強会資料_⑥エンジニアが主導する組織マネジメントや開発体制の継続的改善
 
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
エンジニア勉強会資料_⑤広告プロダクトとプラットフォームの開発
 
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
エンジニア勉強会資料_④Rtoaster×Myndエンジンによる興味キーワード分析機能開発事例
 
エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年エンジニア勉強会資料_③Rtoasterの11年
エンジニア勉強会資料_③Rtoasterの11年
 
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
エンジニア勉強会資料_②エンジニア・デザイナ・プロダクトオーナーが推薦するプロトタイプドリブン開発
 
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
エンジニア勉強会資料_①ブレインパッドの中で僕たちは何を開発しているのか?
 
Big Data Analytics Tokyo講演資料
Big Data Analytics Tokyo講演資料Big Data Analytics Tokyo講演資料
Big Data Analytics Tokyo講演資料
 

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 ● 前提 ● 研修全体構成 ● カリキュラムの選定方法 ● 資料レビュー時のコメント紹介 ● 受講者の声 ● どんな学びがあったか アジェンダ
  • 7. © BrainPad Inc. 7 ● 入社後、三ヶ月間は新卒の新入社員全員が研修を受けます ○ 今年の職種は三職種でした ■ データサイエンティスト ■ エンジニア ■ ビジネス ● 研究でPythonを使っていた方もいれば プログラミング未経験の方もいます ● カリキュラムは基本的に職種関係無く全職種同じです ○ 全職種に理解ある人材と成長することが目的です 前提
  • 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研修
  • 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を作成せよ 実際の資料(発展問題)
  • 31. © BrainPad Inc. 31 ● 資料を全部見ましたが、演習を先にして 「こう言う事をやりたい時はどうする?」を考えた上で 自分で探すor人に聞くスキルを身につけてもらった方が 良いかもしれません 実際に頂いたコメント
  • 32. © BrainPad Inc. 32 ● 資料を全部見ましたが、演習を先にして 「こう言う事をやりたい時はどうする?」を考えた上で 自分で探すor人に聞くスキルを身につけてもらった方が 良いかもしれません ● 確かに演習から自分で調べたり人に質問したりするスキルを身につけ ることが最終的なゴールであると考えています ですがプログラム未経験の状態で質問しようとその時点での知識・経 験の少なさから質問できなかったり、対症療法を考えて場当たり的な 対応をしてしまうことがよく見受けられます(恥ずかしながら僕の経験 談でもあります) そのため、前半で文法事項についてひとさらいした後、演習問題を設 ける形式に致しました 実際に頂いたコメント
  • 34. © BrainPad Inc. 34 ● cpコマンドをPythonで実装する演習を通して UNIXの偉大さを知った ● 実利用に耐えうるコードの書き方を意識して コーディングを心に留めておいて 書けるようにしたい ● Pythonは難しいですが復習しなければ何も身につかないし、 苦労も忘れてしまうので逃げずにこれからも 自ら勉強することは大切であると感じました 受講者の声
  • 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 ご静聴ありがとうございました