Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
私の異常なプログラミング教育
Search
YUMOTO Michitaka
October 20, 2017
Education
22k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
私の異常なプログラミング教育
BPStudy#122 〜いかにプログラミングを学ぶか?プログラミング教育を考えるの発表資料です。
https://bpstudy.connpass.com/event/66418/
YUMOTO Michitaka
October 20, 2017
More Decks by YUMOTO Michitaka
See All by YUMOTO Michitaka
Short Introduction for Kysely
gothedistance
1
510
Dive Into Single Fetch
gothedistance
1
300
クラフトマンシップ(職人魂)を湾岸MIDNIGHTから学ぼう / Learn Craftsmanship from Wangan Midnight
gothedistance
0
370
プロ野球をデータモデリングしてみたら沼だった件 / Baseball ERD Modeling to be obsessed
gothedistance
2
930
フロントエンド開発スタイルの変遷と、私がFlutterにハマったわけ
gothedistance
8
15k
ITプロジェクトのはじめ方 / How to work around software project
gothedistance
28
150k
私がITプランナーを志すようになった理由、そして、目指していること / bpstudy142_why_i_wanna_be_a_it_plannner
gothedistance
1
980
ITプランナーの必要性を小一時間問い詰めたい / Why We need IT-Planner.
gothedistance
0
14k
IT企画をちゃんとやりたい#01 ガイダンス資料 / IT Planning do well_01
gothedistance
0
6.5k
Other Decks in Education
See All in Education
Soluciones al examen de Geografía 2026. JUNIO (Convocatoria Ordinaria)
juanmartin2026
1
10k
DecisionesEjecutivasCrisis
mariooc
0
280
INTRODUCTION TO THE CELL
pawan5505
0
230
[2026前期火5] 論理学(京都大学文学部 前期 第5回)「 ならばの問題演習・proof net・かつの規則」
yatabe
0
420
AI時代のセキュリティ監査
matshogo
PRO
0
110
武藤の処世術を書いてみた
mutomasa
0
110
【デザイナー就活講座】 デザイナー就活市場・企業探し・ポートフォリオのポイント
koheihasebe
0
570
Πλουτοκρατία: Η Τυραννία του Μαμμωνά και η Μεταανθρώπινη Δουλεία
amethyst1
0
310
One Year of Learning English with AI @エンジニア英語キャリア Meetup #3
kekekenta
0
200
Examen de Selectividad. Geografía junio 2026 (Convocatoria Ordinaria). UCLM
juanmartin2026
1
6.5k
Course Review - Lecture 13 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
2.4k
2026年度春学期 統計学 第10回 分布の推測とは - 標本調査,度数分布と確率分布 (2026. 6. 4)
akiraasano
PRO
0
210
Featured
See All Featured
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Embracing the Ebb and Flow
colly
88
5.2k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
980
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
The Spectacular Lies of Maps
axbom
PRO
1
990
WENDY [Excerpt]
tessaabrams
13
39k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Designing for humans not robots
tammielis
254
26k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Tell your own story through comics
letsgokoyo
1
1.1k
Transcript
ࢲͷҟৗͳϓϩάϥϛϯά ڭҭʹ͍ͭͯ YUMOTO Michitaka(a.k.a ͟͝ઌഐ) @gothedistance BPStudy#122
ࣗݾհ n 1979.11.12 東京⽣まれ ͪͳϠΫ育ち n マイメンはؗࢁণฏ n (株)クオリティスタートの代表⼾締役 n
ござ先輩とも呼ばれる n GoTheDistanceというブログの中の⼈ n ツイートの99%は野球の話 2
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
4 ϓϩάϥϛϯάڭҭΛ ࢝ΊΔ͜ͱʹͳͬͨ ͖͔͚ͬ
ͦΕҰ௨ͷϝʔϧ͔Β࢝·ͬͨ n ブログ仲間のSさん(えらいひと)からの連絡 n 毎年受講させている、F社の研修の学習効果が芳しくないと報告 があった。 n 学習カリキュラムを変える必要があると感じているけれども、 他社のものにどうこう⾔えない。 n
フリーランスで講師をやっている⼈に来てもらって、カリキュ ラムの作成を内製しながら改善するやり⽅が良さそうだ。 n そんなことをやってくれるエンジニアで講義もできるような ⼈ってそうそういな・・・あっ(察し 5
正直、教育にはあまり興味がなかった 6 ⼊⾨書を書いた以上、後には引けない 1 最⼤の理由が「独習Python⼊⾨」という本を出したこと。 プログラミングの⼊⾨書を書いておいて、教える仕事から 逃げるのはバツが悪くて嫌だった。 2 参考までに⾒せてもらったF社の研修資料を⾒て、これじゃ わかるもんもわかんねーわ、おもんねーわと思い、⾃分なら
もっと上⼿に教えられる⾃負が芽⽣えた。 教えることはあまり好きではないけど、得意なことでした。 得意なことを活かして「まずは塁に出る」ことに決めました。 3
7 PythonΛ࠾༻ͨ͠ཧ༝
Javaはプログラミングの⼊⾨に不向き 8 現場がJavaだからっていうの辞めて〜 1 Javaは「オブジェクト指向が使える⼈」のための⾔語です。 これからオブジェクト指向を学ぶ⼊⾨者には無駄にハードルを 上げる格好になります。これが最⼤の理由です。 2 Javaは環境構築が他の⾔語に⽐べて⾯倒です。IDEを⼊れて ボタンを押せば実⾏できる時代ですけど、コンパイルを説明
する時にはやっぱり環境の話が必要。 クラスローダーとか、ヒープやスタックとか、プリミティブ とオブジェクトとか、初学者には無駄に重たい概念が多い。 3
こういう説明をして実際に提案した 9 「Python」でやらせて頂きたいです 1 Pythonは型宣⾔が不要で、記号もかなり少ない⾔語です。 その分「可読性」が問われる⾔語なので、コードの意味を 考えるのにプラスに働くと考えています。 2 PythonはJavaに⽐べて、Webアプリの構築がとても簡単に 実装できます。⾔語の⽂法や設計思想等を理解することが
⽬的ではないので、実装⼿段はシンプルなのが望ましい。 Google三⼤⾔語(Java,C++,Python)に挙げられるほど、特に 海外では⼈気のある⾔語です。マイナーではございません。 3
10 ϓϩάϥϛϯάͷֶश ϋʔυϧ͕ͳͥߴ͍ͷ͔
抽象と具体の⾏間が広いから 11 変数 制御構造 データ構造 関数 オブジェクト クラス設計 ⾏間の広さを独習で埋めるのは難しい 抽象的な部分
具体的な部分 Θ͔ΒΜ
ハードルその1〜繰り返し〜 12 n プログラミングの基礎⽂法は⼤別すると2つ n 「条件分岐」と「繰り返し」 n 条件分岐は「ここに⼊る」というのが直感的にわかる n 繰り返しで詰まる理由
n ॲཧ͕Կ܁Γฦ͞ΕΔ͜ͱ͕ɺίʔυ͔ΒಡΈऔΕͳ͍ n 何回もprintって書いてあるわけじゃないのに、何度もprint が実⾏される所が腑に落ちるまで時間がかかる。
ハードルその1〜繰り返し〜 13 n XIJMFจGPSจΑΓ͍͠ n forは配列を回せば勝⼿に繰り返す n while⽂は「開始条件」と「終了条件」を、同時に満たす条 件を記述する必要があるので頭を使う。 n
繰り返しが始まない or 無限ループに遭遇することが多い n 条件式に設定した変数が再評価されることがなかなか頭に⼊ らない。
ズンドコきよしとかいう試⾦⽯ 14 n これをwhileで実装できれば繰り返しが腑に落ちる⼈多い。
ハードルその2〜データ構造〜 15 n 配列ぐらいから怪しくなる n 1つの変数に1つの値(スカラー値)は⼤丈夫 n 連想配列と配列の区別がピンとこない⼈が出てくる n データ構造を意識させるには⼿書きがベスト
n 実際に紙に書いてもらうとイメージが喚起される n 連想配列の配列がクリアできれば、もう⼤丈夫。 n ίʔυͷࣸܦ͚ͩͰຒΊ͖Εͳ͍ͷ͕͜ʔΏʔॴ
ハードルその3〜オブジェクト指向〜 16 n ͍ͭ͜ʹدΓఴ͏ϝϦοτ͕·ͣΘΒͳ͍ n クラスを作って抽象化できる有り難みが感じられない n グローバル汚染が〜と⾔ってもダメ。汚染されたことがない イノセントワールドには届かない。 n
if⽂のネストの⾟みは視覚的に伝わるので、そこを排除する ⽅向でイメージ戦略で⼊る。 n オブジェクト指向はあくまで ⽅法論の⼀つであるという⽴ ち位置が重要。哲学や求道の ⽅向性に⾏くと無事死亡。
ハードルその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)に出ると前提知識が増える。
18 Ͳ͏ͬͯࢥߟΛཧ͢Δ ͖ͳͷ͔
機能を作るには順番に考えるしかない 19 処理内容の順番をどう表現するか? 1 フローチャート、正直好きじゃないです。ですが、機能を 実装するには「どういった処理を、どの順番で実⾏するか」 ということを考え無くてはならない。 2 いきなりコードを書くと⼿戻りが多いのはわかったけれど、 じゃあどうやって⾃分の考えを表現していいかわからない。
そういう声が多かった。 箇条書きで書くと抽象度が⾼すぎる。フローチャートだと、 粒度が細かくなりすぎてわけがわからなくなる。難しい。 3
機能を作る時に何を考えているのか 20 ϒϥοΫ ϘοΫε 検索項⽬ 検索結果 ü 検索項⽬を元に検索結果が作られる ü その中⾝はブラックボックス状態
1. 検索項⽬を取得する 1. 顧客コード 2. 顧客名 3. 担当者 2. 検索条件を組み⽴てる 3. 検索を実⾏する 1. 1件もない場合は空の リストを返す 2. 存在する場合は以下 の検索結果を返す
感覚的にはゴルフのアプローチに近い 21 ⼤きな⽬標を、⼩さな課題に分解する 1 ゴルフのコースマネジメントに近い気がしています。 ホールアウトするまでの戦略をどう作るか、コースの ⾒取り図を元に攻略するあの感覚です。 2 やったことがないものは、ティーショットをとりあえず 打つしか無い。経験が増えてくると、コースの全体像が
⾒えて、ピンまでの距離が明確になり選ぶ⼿段も正確に。 バックキャスティングの習慣を⾝につけてもらうこと、 条件に落とし込んでYES/Noでコースマネジメントを 作ること。この2点をコーチングすることが重要。 3
22 ࠷ޙʹ͓͓͖͍͑ͯͨ͠ ϓϩάϥϛϯάͷֶशۂઢ
23
24 GAME SET!! Thank You!!