プログラミング初心者に Rails を教えるコツ / Tips for Teaching Rails
by
Yoshiaki Yoshida
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
プログラミング初心者に を教えるコツ 2018.01.11 表参道.rb #30 吉田慶章 @kakakakakku
Slide 2
Slide 2 text
吉田慶章 @kakakakakku - インフラ, サーバサイド, 認定スクラムマスター, 技術広報など - 趣味は「ブログを書くこと」 - http://kakakakakku.hatenablog.com/ - 「アウトプット芸人」もしくは「アウトプットアスリート」
Slide 3
Slide 3 text
今日は「プログラミング講師」の話を
Slide 4
Slide 4 text
副業 - 2017年1月から プログラミング講師 (Rails) の副業をはじめた - TechAcademy「ウェブアプリケーションコース」のパーソナルメンター - 1年間で, 30名以上の生徒さんを担当した - ビデオチャットで実施する
Slide 5
Slide 5 text
「教える」を仕事にする - 「技術を教えること」を仕事にしたかった - 「生徒さんが挫折せず学び続けられるように導くこと」が最大のやりがい - 良い講師になる素質は「生徒さんと同じ目線で考えられること」 - 決して「メタプログラミングなど黒魔術に精通している」必要はない - コミュニケーション能力は確実に必要
Slide 6
Slide 6 text
1年間の講師経験から学んだコツを紹介
Slide 7
Slide 7 text
コツ1 : 連想できるように身近な例を出す - 例えば, each - 例えば, Router + MVC
Slide 8
Slide 8 text
例えば, each members = ['A', 'B', 'C'] members.each do |member| puts member end
Slide 9
Slide 9 text
処理フローを連想できない members = ['A', 'B', 'C'] members.each do |member| puts member end どこから来た member ? each って何のこと ? | って何 ?
Slide 10
Slide 10 text
コンビニのレジとお客さんを連想する A B C B C C A B
Slide 11
Slide 11 text
処理フローを連想できるようになる members = ['A', 'B', 'C'] members.each do |member| puts member end 1番前にいる お客さん レジで接客を受けているお客さん お客さんが並んでいる
Slide 12
Slide 12 text
例えば, Router + MVC Router Controller Model View なぜ, 細かく分類するの ?
Slide 13
Slide 13 text
株式会社 Rails (大企業) を連想する Router Controller Model View 複数の部署があり ハンコをもらって 承認を進める感じ (役割を明確に) データが必要な場合は モデル部に依頼する
Slide 14
Slide 14 text
Router は道案内を連想する Router 「東京」に行くなら「下の道」ですよー 「/users」に行くなら「users#index」ですよー
Slide 15
Slide 15 text
連想の繰り返し - 文字列 / シンボル / 配列 / ハッシュ - Bundler と Gemfile - rails db:migrate - rails console ( REPL ) - belongs_to / has_many / has_many through - STI (Single Inheritance Table)
Slide 16
Slide 16 text
ポイント2 : プログラミングの原則を押し付けない - 例えば, DRY / KISS / TDD - 例えば, パーシャル
Slide 17
Slide 17 text
プログラミングの原則とは - 例えば - DRY (Don’t Repeat Yourself) - KISS (Keep It Simple, Stupid) - TDD (Test-Driven Development) - 「ツライ過去を経験しているから」わかることだったりする - プログラミング初心者にとっては, 遠回りのように感じる
Slide 18
Slide 18 text
例えば, パーシャル <%= render 'shared/items' %> なぜ, ファイル名と同じように _ を付けないの ? なぜ, わざわざ別のファイルに書くの ?
Slide 19
Slide 19 text
実際に「バグを経験してもらう」 b.html.erb c.html.erb a.html.erb xxx を yyy に変更してみましょう! yyy yyy xxx 「あー!修正忘れました!」
Slide 20
Slide 20 text
ポイント3 : エラーを解決するプロセスを楽しんでもらう - 例えば, NameError - 例えば, SyntaxError
Slide 21
Slide 21 text
エラー = 恐怖体験 ? - エラーが出ると, 思考停止してしまう - 学習するモチベーションが一気に下がってしまう (英語もよくわからない) - 挫折する原因の1つ - 職業プログラマでも, エラーは大量に出るよ!ということを事実として伝える - 「いかに早くエラーの原因を特定できるか」がスキルであることも伝える
Slide 22
Slide 22 text
例えば, NameError Did you mean? は超ヒント このあたりにミスがありそう
Slide 23
Slide 23 text
例えば, SyntaxError 構文が間違ってそう 既に動いている実装を見比べればわかるかも?
Slide 24
Slide 24 text
エラー探偵になってもらう & 解決できたときの喜びを大切にしてもらう ある程度慣れてきたら binding.pry もペアプロ形式で教えることが多い
Slide 25
Slide 25 text
第11章「Ruby のデバッグ技法を身につける」 - バックトレースの読み方 - print デバッグ - トラブルシューティング方法 - などなど 初心者にも参考になる
Slide 26
Slide 26 text
まとめ
Slide 27
Slide 27 text
まとめ - プログラミング初心者に教えるのは, エンジニアリングとは別次元のスキルだと思う - 1人1人にパーソナライズした教え方をする - 「連想できるように身近な例を出す」ことは効果的 - エラーが出たら「探偵」になって, 楽しんでもらう \楽しすぎる/