Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プログラミング初心者に Rails を教えるコツ / Tips for Teaching Rails
Search
Yoshiaki Yoshida
January 11, 2018
Technology
4.3k
5
Share
プログラミング初心者に Rails を教えるコツ / Tips for Teaching Rails
「プログラミング初心者に Rails を教えるコツ」を発表した
http://kakakakakku.hatenablog.com/entry/2018/01/12/102123
Yoshiaki Yoshida
January 11, 2018
More Decks by Yoshiaki Yoshida
See All by Yoshiaki Yoshida
技術ブロガーを育てる!ブログメンタリングで何を教えているのか / Passion for Blog Mentoring
kakakakakku
8
38k
プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer
kakakakakku
2
5.8k
プロジェクトの成功を支える ZenHub と モブプログラミング / ZenHub and Mob Programming
kakakakakku
1
5.9k
楽しく!アウトプットを習慣化しよう / Let's Enjoy Output
kakakakakku
3
7k
さぁ!今すぐプロジェクトリーダーに立候補しよう / Be a Project Leader
kakakakakku
3
10k
プロジェクトをリードする技術 (Kyash 社 再演) / Project Leading is Skill for Kyash
kakakakakku
4
2.3k
プロジェクトをリードする技術 / Project Leading is Skill
kakakakakku
45
52k
Mackerel で ECS をどこまでモニタリングできるのか / Monitoring ECS with Mackerel
kakakakakku
0
14k
[2018/01/30] Redash 初心者向けハンズオン / Redash Meetup #0.1
kakakakakku
0
2.5k
Other Decks in Technology
See All in Technology
本番環境でPHPコードに触れずに「使われていないコード」を調べるにはどうしたらよいか?
egmc
2
300
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
170
数案件を同時に進行するためのコンテキスト整理術
sutetotanuki
2
230
Azure Lifecycle with Copilot CLI
torumakabe
3
790
JEDAI in Osaka 2026イントロ
taka_aki
0
180
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
シン・リスコフの置換原則 〜現代風に考えるSOLIDの原則〜
jinwatanabe
0
200
Databricksを用いたセキュアなデータ基盤構築とAIプロダクトへの応用.pdf
pkshadeck
PRO
0
310
Discordでリモートポケカしてたら、なぜかDOを25分間動かせるようになった話
umireon
0
130
Bluesky Meetup in Tokyo vol.4 - 2023to2026
shinoharata
0
180
NOSTR, réseau social et espace de liberté décentralisé
rlifchitz
0
170
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
16k
Featured
See All Featured
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
68
38k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
460
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
370
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
150
Between Models and Reality
mayunak
3
260
Embracing the Ebb and Flow
colly
88
5k
Thoughts on Productivity
jonyablonski
76
5.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
We Are The Robots
honzajavorek
0
210
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.3k
Transcript
プログラミング初心者に を教えるコツ 2018.01.11 表参道.rb #30 吉田慶章 @kakakakakku
吉田慶章 @kakakakakku - インフラ, サーバサイド, 認定スクラムマスター, 技術広報など - 趣味は「ブログを書くこと」 -
http://kakakakakku.hatenablog.com/ - 「アウトプット芸人」もしくは「アウトプットアスリート」
今日は「プログラミング講師」の話を
副業 - 2017年1月から プログラミング講師 (Rails) の副業をはじめた - TechAcademy「ウェブアプリケーションコース」のパーソナルメンター - 1年間で,
30名以上の生徒さんを担当した - ビデオチャットで実施する
「教える」を仕事にする - 「技術を教えること」を仕事にしたかった - 「生徒さんが挫折せず学び続けられるように導くこと」が最大のやりがい - 良い講師になる素質は「生徒さんと同じ目線で考えられること」 - 決して「メタプログラミングなど黒魔術に精通している」必要はない -
コミュニケーション能力は確実に必要
1年間の講師経験から学んだコツを紹介
コツ1 : 連想できるように身近な例を出す - 例えば, each - 例えば, Router +
MVC
例えば, each members = ['A', 'B', 'C'] members.each do |member|
puts member end
処理フローを連想できない members = ['A', 'B', 'C'] members.each do |member| puts
member end どこから来た member ? each って何のこと ? | って何 ?
コンビニのレジとお客さんを連想する A B C B C C A B
処理フローを連想できるようになる members = ['A', 'B', 'C'] members.each do |member| puts
member end 1番前にいる お客さん レジで接客を受けているお客さん お客さんが並んでいる
例えば, Router + MVC Router Controller Model View なぜ, 細かく分類するの
?
株式会社 Rails (大企業) を連想する Router Controller Model View 複数の部署があり ハンコをもらって
承認を進める感じ (役割を明確に) データが必要な場合は モデル部に依頼する
Router は道案内を連想する Router 「東京」に行くなら「下の道」ですよー 「/users」に行くなら「users#index」ですよー
連想の繰り返し - 文字列 / シンボル / 配列 / ハッシュ -
Bundler と Gemfile - rails db:migrate - rails console ( REPL ) - belongs_to / has_many / has_many through - STI (Single Inheritance Table)
ポイント2 : プログラミングの原則を押し付けない - 例えば, DRY / KISS / TDD
- 例えば, パーシャル
プログラミングの原則とは - 例えば - DRY (Don’t Repeat Yourself) - KISS
(Keep It Simple, Stupid) - TDD (Test-Driven Development) - 「ツライ過去を経験しているから」わかることだったりする - プログラミング初心者にとっては, 遠回りのように感じる
例えば, パーシャル <%= render 'shared/items' %> なぜ, ファイル名と同じように _ を付けないの
? なぜ, わざわざ別のファイルに書くの ?
実際に「バグを経験してもらう」 b.html.erb c.html.erb a.html.erb xxx を yyy に変更してみましょう! yyy yyy
xxx 「あー!修正忘れました!」
ポイント3 : エラーを解決するプロセスを楽しんでもらう - 例えば, NameError - 例えば, SyntaxError
エラー = 恐怖体験 ? - エラーが出ると, 思考停止してしまう - 学習するモチベーションが一気に下がってしまう (英語もよくわからない)
- 挫折する原因の1つ - 職業プログラマでも, エラーは大量に出るよ!ということを事実として伝える - 「いかに早くエラーの原因を特定できるか」がスキルであることも伝える
例えば, NameError Did you mean? は超ヒント このあたりにミスがありそう
例えば, SyntaxError 構文が間違ってそう 既に動いている実装を見比べればわかるかも?
エラー探偵になってもらう & 解決できたときの喜びを大切にしてもらう ある程度慣れてきたら binding.pry もペアプロ形式で教えることが多い
第11章「Ruby のデバッグ技法を身につける」 - バックトレースの読み方 - print デバッグ - トラブルシューティング方法 -
などなど 初心者にも参考になる
まとめ
まとめ - プログラミング初心者に教えるのは, エンジニアリングとは別次元のスキルだと思う - 1人1人にパーソナライズした教え方をする - 「連想できるように身近な例を出す」ことは効果的 - エラーが出たら「探偵」になって,
楽しんでもらう \楽しすぎる/