私の異常なプログラミング教育

 私の異常なプログラミング教育

BPStudy#122 〜いかにプログラミングを学ぶか?プログラミング教育を考えるの発表資料です。

https://bpstudy.connpass.com/event/66418/

14df37d630a1ca88d34747736bc85dc3?s=128

YUMOTO Michitaka

October 20, 2017
Tweet

Transcript

  1. 2.

    ࣗݾ঺հ n 1979.11.12 東京⽣まれ ͪͳϠΫ育ち n マイメンはؗࢁণฏ n (株)クオリティスタートの代表⼾締役 n

    ござ先輩とも呼ばれる n GoTheDistanceというブログの中の⼈ n ツイートの99%は野球の話 2
  2. 3.

    BPStudyʹ͓͚Δొ൘ཤྺ n BPStudy#79(初登場 / 野球) n BPStudy#91(野球) n BPStudy#92(エンジニアの経営学) n

    BPStudy#100(野球) n BPStudy#103(野球) n BPStudy#108(⾃社紹介) n BPStudy#112(野球) n BPStudy#115(野球) n BPStudy#122(プログラミング教育) n BPStudy#124(野球) 3 /&8
  3. 5.

    ͦΕ͸Ұ௨ͷϝʔϧ͔Β࢝·ͬͨ n ブログ仲間のSさん(えらいひと)からの連絡 n 毎年受講させている、F社の研修の学習効果が芳しくないと報告 があった。 n 学習カリキュラムを変える必要があると感じているけれども、 他社のものにどうこう⾔えない。 n

    フリーランスで講師をやっている⼈に来てもらって、カリキュ ラムの作成を内製しながら改善するやり⽅が良さそうだ。 n そんなことをやってくれるエンジニアで講義もできるような ⼈ってそうそういな・・・あっ(察し 5
  4. 12.

    ハードルその1〜繰り返し〜 12 n プログラミングの基礎⽂法は⼤別すると2つ n 「条件分岐」と「繰り返し」 n 条件分岐は「ここに⼊る」というのが直感的にわかる n 繰り返しで詰まる理由

    n ॲཧ͕Կ౓΋܁Γฦ͞ΕΔ͜ͱ͕ɺίʔυ͔ΒಡΈऔΕͳ͍ n 何回もprintって書いてあるわけじゃないのに、何度もprint が実⾏される所が腑に落ちるまで時間がかかる。
  5. 13.

    ハードルその1〜繰り返し〜 13 n XIJMFจ͸GPSจΑΓ೉͍͠ n forは配列を回せば勝⼿に繰り返す n while⽂は「開始条件」と「終了条件」を、同時に満たす条 件を記述する必要があるので頭を使う。 n

    繰り返しが始まない or 無限ループに遭遇することが多い n 条件式に設定した変数が再評価されることがなかなか頭に⼊ らない。
  6. 15.

    ハードルその2〜データ構造〜 15 n 配列ぐらいから怪しくなる n 1つの変数に1つの値(スカラー値)は⼤丈夫 n 連想配列と配列の区別がピンとこない⼈が出てくる n データ構造を意識させるには⼿書きがベスト

    n 実際に紙に書いてもらうとイメージが喚起される n 連想配列の配列がクリアできれば、もう⼤丈夫。 n ίʔυͷࣸܦ͚ͩͰ͸ຒΊ͖Εͳ͍ͷ͕͜ʔΏʔॴ
  7. 16.

    ハードルその3〜オブジェクト指向〜 16 n ͍ͭ͜ʹدΓఴ͏ϝϦοτ͕·ͣ఻ΘΒͳ͍ n クラスを作って抽象化できる有り難みが感じられない n グローバル汚染が〜と⾔ってもダメ。汚染されたことがない イノセントワールドには届かない。 n

    if⽂のネストの⾟みは視覚的に伝わるので、そこを排除する ⽅向でイメージ戦略で⼊る。 n オブジェクト指向はあくまで ⽅法論の⼀つであるという⽴ ち位置が重要。哲学や求道の ⽅向性に⾏くと無事死亡。
  8. 17.

    ハードルその4〜⾏き過ぎた抽象化〜 17 n WTFormsが理解できるまで相当時間がかかった。 n WTFormsはHTMLのフォームを抽象化して便利機能が沢⼭ある ナイスなライブラリです。 n HTMLのフォームを表現しているのが伝わりにくかった。 n

    苦戦したのが「form.populate_obj(src,dest)」関数でした。 n request.form[ʻkeyʼ]でデータが取れるのは伝わるが、WTFormsのクラスの オブジェクトとSQLAlchemyのオブジェクトがマッピングされて、値が⾃動 代⼊される凄さが伝わるまで、時間を要した。 n 多くのことを瞬殺してくれているおかげで、逆にわかりにくかった。 n ⾏き過ぎた抽象化は、⿊魔術と区別がつかない。 n Pythonの外(Web/DB)に出ると前提知識が増える。
  9. 20.

    機能を作る時に何を考えているのか 20 ϒϥοΫ ϘοΫε 検索項⽬ 検索結果 ü 検索項⽬を元に検索結果が作られる ü その中⾝はブラックボックス状態

    1. 検索項⽬を取得する 1. 顧客コード 2. 顧客名 3. 担当者 2. 検索条件を組み⽴てる 3. 検索を実⾏する 1. 1件もない場合は空の リストを返す 2. 存在する場合は以下 の検索結果を返す
  10. 23.

    23