#stagy すたがい
みんなのPython勉強会
2022/04/14 nikkie
Slidoでアンケート
2017年秋、 趣味 でPythonをスタート
2019年からデータサイエンティスト( 仕事 でもPython)
国内外のPythonのカンファレンスで登壇多数
話題1:オススメのPython入門教材
話題2-1:プログラミングを学ぶってどういうこと?
話題2-2:プログラミングを学ぶ際のtips紹介
日本語 で読める教材に絞って紹介します
IMO という表記は「nikkieの意見」です(in my opinion)
皆さんの声を聴かせてください:「ここで困っている」「入門したときこれが助かった」(N=1のバイアス緩和したく)
対象:プログラミング 未経験者 ・初心者
Google Colaboratory 使用(Googleアカウントがあれば準備OK)
Pythonの基礎をチュートリアル形式で解説
Python書籍も執筆されている、atsuoishimoto(石本 敦夫)さんによる入門講座
Googleアカウントだけあれば、プログラミングを体験できる
「思ってたのと違う」場合に引き返しやすい(Fail fast)
『Python ゼロからはじめるプログラミング』サポートページ の「Python学習用教材」
東京大学 理学部の教材「 Pythonプログラミング入門 」
書籍では環境構築方法もカバーされます
python.jp にもあります: Python環境構築ガイド
──言語の力を引き出し、開発効率を高める
著者は陶山さん( rhoboro さん)
2020年1月発売
それら(※ライブラリ)の実力を最大限に活かすためには、まずPythonという言語の持つ特徴や機能を知り、使いこなしていく必要があります。
言語の特徴や機能がまとまっている ので、プログラミング経験者にはオススメです!
プログラミング未経験なら python.jp ゼロからのPython入門講座 で小さく体験できます
経験してもっと学んでみたければ、より詳しい教材や入門書へ
プログラミングは経験済みでPythonを知るなら『 Python実践入門 』
話題1:オススメのPython入門教材
話題2-1:プログラミングを学ぶってどういうこと?
話題2-2:プログラミングを学ぶ際のtips紹介
(Pythonに限らず) プログラミングを学ぶ ってどういうことなんでしょう?
対象: プログラミングを学びたいと思っている方 〜
「はじめに」自体は公開されています(ぜひお読みください!)
情報収集
モデル化
検証
情報収集
➡️モデル化
➡️検証
➡️情報収集
:
他の人が書いたプログラムを 読む (入門教材)
写経 (=プログラムをまねて入力)
>>> print("こんにちは、プログラミング")
こんにちは、プログラミング
共通するパターン を見いだす
助けになるのが、 複数のものを見比べ、共通点を見いだす こと
# 見出したパターン
print("きっとここに書いたものが表示される")
「たーのしー!プログラミング」と表示したい場合はどうする?
今知っている: print("きっとここに書いたものが表示される")
# こう書けばいいのではないか(思い付いた)
print("たーのしー!プログラミング")
思い付いた 仮説を検証 する
試してみて、「たーのしー!プログラミング」と表示できるか
>>> print("たーのしー!プログラミング")
たーのしー!プログラミング
「たーのしー!(改行)プログラミング」と表示したい
たーのしー!
プログラミング
print("きっとここに書いたものが表示される") のだから、「たーのしー!(改行)プログラミング」と書いてみる
print("たーのしー!
プログラミング")
>>> print("たーのしー!
File "<stdin>", line 1
print("たーのしー!
^
SyntaxError: unterminated string literal (detected at line 1)
SyntaxError
!😱Pythonの文法に沿わない書き方をしている
📣エラーは失敗ではない
仮説を検証したところ、単に改行したのでは うまくいかないことが分かった
「この方法ではうまくいかない」という具体的情報を発見したのです。これは学びのチャンスです。「どうして思ったように動かないのか?」──こう考えることで、あなたは理解を深めていくことができます。
情報収集➡️モデル化➡️検証 を繰り返す
まずは情報収集
例:Google検索「Python 改行 print」
役に立ちそうな情報を含んだ サンプルコード が見つかる
新しいサンプルコードを、今までに集めた情報と比較し、パターンを見いだす(パターンを更新する)
「こうすれば改行を表示できるはず」新たな仮説
改行を表示できたら目的達成!(次のやりたいことへ)
別のエラーなどで目的を達成できなかったら、 再度 情報収集➡️モデル化➡️検証 を回す
教材を読んで・視聴して理解
加えて、理解したコードを書いて、 理解=仮説を検証 しよう(理解を深める第一歩)
情報収集し、
パターンを見出し、
「こうすればいいのでは」という仮説を検証する
この(際限のない)繰り返し
すでに知っていることはそれを利用すればよい
知らない・分からないこと は必ず出てくる(全ては知り尽くせない)
情報収集➡️モデル化➡️検証 で 学んで対応 する
話題1:オススメのPython入門教材
話題2-1:プログラミングを学ぶってどういうこと?
話題2-2:プログラミングを学ぶ際のtips紹介
情報収集➡️モデル化➡️検証というプログラミング学習サイクルを回すための tips を 3つ 紹介
プログラミングを学んでいる方向け(これから学ぶ方にはピンとこないかも)
写経=プログラムをまねて入力=書き写す
情報収集の方法の1つ
書き写しながら、「あれ、これ前にも出てきたな」とか「いつものパターンに似ているけどちょっと違うな」とか考えることが大事です
「こんな書き方できるのか!」という気付き🤩
モデル(自分の理解)の更新につながる(誤解していた、少し深く分かった)
なぜこうなっている? こう書き換えたら? 写経しながら控えておく
分からないことも書き出しましょう
Google検索などして見つけたサンプルコードをコピー & ペースト
コピペすればサンプルコードは動く
ぶっちゃけ、入門時はよくやっていました
サンプルコードを複数組合せたら動かなくなったぞ!?
情報収集➡️モデル化➡️検証のサイクルから 遠ざかる 感覚
コピペはモデル化(共通パターンの発見)をスキップする
そのため、動かない時に仮説が出せず、直しづらい(デメリットもご認識を!)
「自力で書けない箇所はコピペしない」
(=書けるところだけコピペしてよい)
参考 https://github.com/ftnext/2019_slides/blob/master/django_girls_Nov_copy_paste/PITCHME.md
コピペをすると早く解決できるが、モデル化が薄くなりがち
コピペしないと 時間はかかるが、理解が深まる
得たモデルは次の同様のケースに活きる
「写経とかコピペしないとか、プログラミングって泥臭くない?」
IMO 着実に一歩一歩 積み上げていきましょう
経験に比例して直線で学習が進むと考えがちだが、実際は横軸に張り付く(全然進まない感覚)
(プログラミングに限らず)何かを身につけるのは 簡単な道のりではない と思っています
例:今日は改行を含んだprintができるようになったぞ!🙌
情報収集➡️モデル化➡️検証を繰り返し、モデルをちょっとずつじわじわと更新していく
一歩一歩進む以上、時間はかかるもの
紹介した教材、あれもこれもは現実的でない
入門教材を1つ選んで絞ろう
ただし、最初から極め抜こうとはしない(わからないところは飛ばそう)
最初はさーっと 全体感 をつかもう
1回では全ては理解できないもの。何周もしよう
最初は分からないところ、繰り返したときに分かる瞬間が訪れます(未来で待ってる)
参考 https://github.com/ftnext/2018_LTslides/blob/master/django_girls_Nov_for_beginners/PITCHME.md
全てを網羅した教材はない
極め抜いた核に、他の教材を つまみ読みして補完 していく
読み込んだ1教材 & たくさんの教材の必要に応じたつまみ読み
みんなのPython勉強会 代表 阿久津さん提唱 Python学習のTIPs
Textbook:書籍
Internet:インターネット上のリソース
People: コミュニティ 、勉強会
このトークではTextbookやInternetをいくつか紹介
Peopleという側面もある!
Pythonをきっかけに人とつながれる
知見を共有したり、互いに学べる
写経しながら考える
一歩一歩
ひとつの教材を極め抜け
Python学習のTIPs(特にPeople)
いくつかの教材を紹介
プログラミングを学ぶ= 情報収集➡️モデル化➡️検証サイクルの繰り返し
サイクルを回すためのtipsを紹介。よさそうなものあれば試してみてください