Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer

プログラミング初心者に教えるときは「身近な比喩」が重要なのだ! / Metaphor is Important for Beginner Programmer

Yoshiaki Yoshida

December 08, 2018
Tweet

More Decks by Yoshiaki Yoshida

Other Decks in Technology

Transcript

  1. プログラミング初心者に教えるときは
    「身近な比喩」が重要なのだ!
    2018.12.08
    @kakakakakku

    View Slide

  2. 吉田慶章 @kakakakakku
    - ブロガー
    - https://kakakakakku.hatenablog.com
    - プログラミング講師の仕事 (副業) を2年ほどしていた
    - 生徒さんとビデオチャットで 1 on 1
    - 担当 : Ruby / Ruby on Rails
    \カック/

    View Slide

  3. 教える?伝える?
    - プログラミング初心者に教えるときに「身近な比喩」を使うと良い
    - 「プログラミング講師じゃないから, 関係なさそう」
    - プログラミング講師に限らず, 誰でも「教える (伝える) 機会」はある
    - 新入社員に教える (伝える)
    - デザイナーなどの, 異なるロールのメンバーに教える (伝える)
    - 新しくプロジェクトに入ったメンバーに教える (伝える)

    View Slide

  4. 教えるときに何が必要?
    - プログラミング初心者に対しては

    「生徒さんと同じ目線で考えられること」が重要
    - そして「粘り強く何度でも伝え, 常に笑顔でいること」も重要
    - プロダクション環境での実装経験などは, あればあるほど良い
    - ただし, 必ずしも「メタプログラミングなど黒魔術に精通している」必要はない

    View Slide

  5. 「生徒さんと同じ目線で考えられること」って?

    View Slide

  6. 「if ってなんですか?」
    と聞かれたらどう答える?
    自分が初心者だった頃を覚えてる?

    View Slide

  7. 「if ってなんですか?」
    (ダメな例)
    当たり前すぎて説明できていない
    「if とは if です」

    View Slide

  8. 「if ってなんですか?」
    おおお, なるほど!
    身近にたくさん if がありそう!
    「if とは if です」
    例えば, 電車の時刻表を見ると, 平日は黒文字, 休日は赤文字になっているよね?
    平日 or 休日など, 条件分岐が必要なときに使うんだよ!

    View Slide

  9. プログラミング以外で
    たまにあるシチュエーション

    View Slide

  10. 年末年始に
    実家に帰る人もいるでしょう

    View Slide

  11. 「ねぇ, エンジニアだよね?」
    こんなこと言われたことはない?

    View Slide

  12. 「ねぇ, エンジニアだよね?」
    ちょwww 直せないwww
    「冷蔵庫直せない?」

    View Slide

  13. 親戚に自分の仕事を
    どのように「身近な比喩」を使って伝える?
    \そこで/
    ( というのは, 皆さんの宿題として残しておく )

    View Slide

  14. Ruby / Ruby on Rails で
    連想できる「身近な比喩」とは?
    - 例えば, each
    - 例えば, Router + MVC
    - 例えば, REPL (irb, rails console)

    View Slide

  15. 例えば, each
    members = ['A', 'B', 'C']
    members.each do |member|
    puts member
    end
    どこから来た member ?
    each って何のこと ?
    | って何 ?
    全然わからない!
    と言われたら
    どう説明する?

    View Slide

  16. コンビニのレジとお客さんを連想する
    A
    B
    C
    B
    C
    C
    A B

    View Slide

  17. 処理フローを連想できるようになる
    members = ['A', 'B', 'C']
    members.each do |member|
    puts member
    end
    1番前にいる
    お客さん
    レジで接客を受けているお客さん
    お客さんが並んでいる

    View Slide

  18. 例えば, Router + MVC
    Router Controller Model
    View
    なぜこんなに細かいの?
    と言われたら
    どう説明する?

    View Slide

  19. 株式会社 Rails (大企業) を連想する
    Router Controller Model
    View
    複数の部署があり
    ハンコをもらって
    承認を進める感じ
    (役割を明確に)
    データが必要な場合は
    モデル部署に依頼する

    View Slide

  20. 例えば, REPL (irb, rails console)
    > User.find(1)
    > User.find([1,2,3])
    > User.find_by(name: 'kakakakakku')
    > User.count
    なぜ, わざわざターミナルを開いて
    コマンドを実行しないといけないの?

    View Slide

  21. LINE Bot に天気を聞くイメージ
    今日の天気は?
    今日は何曜日?
    ユーザー番号 = 1 は誰?
    現在のユーザー数は?
    お手軽に確認できたら便利だよね?

    View Slide

  22. まだまだ, たくさんある
    - 文字列 / シンボル / 配列 / ハッシュ とは?
    - Bundler / Gemfile とは?
    - rails db:migrate とは?
    - belongs_to / has_many / has_many through とは?
    - STI (Single Inheritance Table) とは?
    - などなど

    View Slide

  23. 「エラー」を楽しむ

    View Slide

  24. 「エラー」= 恐怖体験?
    - 特にプログラミング初心者は, エラーが出ると, 思考停止してしまう
    - そして, 学習するモチベーションが一気に下がってしまう (英語もよくわからない)
    - 挫折する原因の1つ
    - 職業プログラマでも, エラーは大量に出るよ!ということを事実として伝える
    - そして「いかに早くエラーの原因を特定できるか」がスキルであることも伝える

    View Slide

  25. 例えば, NameError
    Did you mean? は超ヒント
    このあたりにミスがありそう

    View Slide

  26. 例えば, SyntaxError
    構文が間違ってそう
    既に動いている実装を見比べればわかるかも?
    (ヒント : カンマ)

    View Slide

  27. エラー探偵になってもらう & 解決できたときの喜びを大切にしてもらう
    ある程度慣れてきたら binding.pry もペアプロ形式で教えることが多い

    View Slide

  28. - 2017.11.25 発売
    - 初心者を対象にした本ではないものの,

    第11章「Ruby のデバッグ技法を身につける」が素晴らしい
    - バックトレースの読み方
    - print デバッグ
    - トラブルシューティング方法
    - などなど

    View Slide

  29. - 2018.11.22 発売
    - タイトルに「超入門」とある通り,

    本当に初心者でも理解できるように工夫されている
    - 「変数はオブジェクトに貼る名札である」
    - 「irb はプログラムを1行ずつその場ですぐに実行できる道具」
    - 「エラーが起きても, パソコンは壊れない!安心して!」
    - if の解説にも多くのページが使われている

    View Slide

  30. まとめ
    - プログラミング講師に限らず, 誰でも「教える (伝える) 機会」はある
    -そのときに, 連想できる「身近な比喩」を使うと良い
    - プログラミング初心者に, エラーを楽しんでもらう
    - エラー探偵になり, 解決できたときの喜びを大切にする
    \皆さんも「身近な比喩」を探してみませんか?/

    View Slide

  31. fukabori.fm #2
    https://fukabori.fm/episode/2
    \ ゲストに呼んで頂き, プログラミング講師などの話をしたー! /

    View Slide

  32. Thanks

    View Slide