Start Python Guide ver.202204

#stagy すたがい

Event:

みんなのPython勉強会

Presented:

2022/04/14 nikkie

皆さんの声を聴かせて!

Slidoでアンケート

みんなのPython勉強会参加回数

../_images/202204_poll_stapy_count.png

プログラミング経験

../_images/202204_poll_programming_experience.png

お前、誰よ

  • Python大好き にっきー

  • 株式会社ユーザベースのデータサイエンティスト(NLPer)

  • みんなのPython勉強会 4代目LT王子🤴 ・スタッフ

P(ython) & I(=nikkie) 4年半

  • 2017年秋、 趣味 でPythonをスタート

  • 2019年からデータサイエンティスト( 仕事 でもPython)

  • 国内外のPythonのカンファレンスで登壇多数

Start Python Guide お品書き

  • 話題1:オススメのPython入門教材

  • 話題2-1:プログラミングを学ぶってどういうこと?

  • 話題2-2:プログラミングを学ぶ際のtips紹介

注意事項

  • 日本語 で読める教材に絞って紹介します

  • IMO という表記は「nikkieの意見」です(in my opinion)

  • 皆さんの声を聴かせてください:「ここで困っている」「入門したときこれが助かった」(N=1のバイアス緩和したく)

オススメのPython入門教材

ノミネート(本トークのプレビュー版)

プログラミングが 初めて で、かつ、Pythonを学んでみたい方向け

何かを始めるのに、遅すぎるなんてことはない(by 香川照之)

python.jp ゼロからのPython入門講座

https://www.python.jp/train/index.html

python.jp ゼロからのPython入門講座

  • 対象:プログラミング 未経験者 ・初心者

  • Google Colaboratory 使用(Googleアカウントがあれば準備OK)

  • Pythonの基礎をチュートリアル形式で解説

ココが推し! 信頼でき、かつ、体験しやすい

  • Python書籍も執筆されている、atsuoishimoto(石本 敦夫)さんによる入門講座

  • Googleアカウントだけあれば、プログラミングを体験できる

    • 「思ってたのと違う」場合に引き返しやすい(Fail fast)

入門してみてプログラミングを もっと学びたい と思えた場合

より詳しい入門教材

入門書を読んでみてもいいと思います

自分のPCに環境構築

プログラミングは経験済みで、かつ、Pythonを学んでみたい方向け

Pythonを知るなら『 Python実践入門

  • ──言語の力を引き出し、開発効率を高める

  • 著者は陶山さん( rhoboro さん)

  • 2020年1月発売

『Python実践入門』はじめに より

それら(※ライブラリ)の実力を最大限に活かすためには、まずPythonという言語の持つ特徴や機能を知り、使いこなしていく必要があります。

言語の特徴や機能がまとまっている ので、プログラミング経験者にはオススメです!

小まとめ:オススメのPython入門教材

Start Python Guide お品書き

  • 話題1:オススメのPython入門教材

  • 話題2-1:プログラミングを学ぶってどういうこと?

  • 話題2-2:プログラミングを学ぶ際のtips紹介

プログラミングを学ぶって何?

  • (Pythonに限らず) プログラミングを学ぶ ってどういうことなんでしょう?

  • 対象: プログラミングを学びたいと思っている方 〜

先人の知恵:『エンジニアの知的生産術

プログラミングの学びのプロセス

  • 情報収集

  • モデル化

  • 検証

はじめに プログラミングはどうやって学ぶか より

この3つを 繰り返す 🔁

../_images/202204_learn_programming_cycle.png

はじめに プログラミングはどうやって学ぶか より

具体例で見てみましょう

  • 情報収集

  • ➡️モデル化

  • ➡️検証

  • ➡️情報収集

  • :

情報収集

  • 他の人が書いたプログラムを 読む (入門教材)

  • 写経 (=プログラムをまねて入力)

>>> print("こんにちは、プログラミング")
こんにちは、プログラミング

抽象化

  • 共通するパターン を見いだす

  • 助けになるのが、 複数のものを見比べ、共通点を見いだす こと

# 見出したパターン
print("きっとここに書いたものが表示される")

表示する文字列を変えたい

  • 「たーのしー!プログラミング」と表示したい場合はどうする?

  • 今知っている: print("きっとここに書いたものが表示される")

# こう書けばいいのではないか(思い付いた)
print("たーのしー!プログラミング")

検証

  • 思い付いた 仮説を検証 する

  • 試してみて、「たーのしー!プログラミング」と表示できるか

>>> print("たーのしー!プログラミング")
たーのしー!プログラミング

表示する文字列をもっと変えたい

  • 「たーのしー!(改行)プログラミング」と表示したい

たーのしー!
プログラミング

思い付いた仮説

  • print("きっとここに書いたものが表示される") のだから、「たーのしー!(改行)プログラミング」と書いてみる

print("たーのしー!
プログラミング")

仮説の検証

>>> print("たーのしー!  
  File "<stdin>", line 1
    print("たーのしー!
          ^
SyntaxError: unterminated string literal (detected at line 1)

SyntaxError !😱

エラーのとらえ方

  • 📣エラーは失敗ではない

  • 仮説を検証したところ、単に改行したのでは うまくいかないことが分かった

エンジニアの知的生産術』より

「この方法ではうまくいかない」という具体的情報を発見したのです。
これは学びのチャンスです。
「どうして思ったように動かないのか?」──こう考えることで、あなたは理解を深めていくことができます。

単に改行したのではうまくいかない

  • 情報収集➡️モデル化➡️検証 を繰り返す

  • まずは情報収集

改行を表示するために情報収集

  • 例:Google検索「Python 改行 print」

  • 役に立ちそうな情報を含んだ サンプルコード が見つかる

集めた情報からモデル化

  • 新しいサンプルコードを、今までに集めた情報と比較し、パターンを見いだす(パターンを更新する

  • 「こうすれば改行を表示できるはず」新たな仮説

新たな仮説を検証

  • 改行を表示できたら目的達成!(次のやりたいことへ

  • 別のエラーなどで目的を達成できなかったら、 再度 情報収集➡️モデル化➡️検証 を回す

IMO 検証のために書こう!

  • 教材を読んで・視聴して理解

  • 加えて、理解したコードを書いて、 理解=仮説を検証 しよう(理解を深める第一歩)

IMO つまり、プログラミングを学ぶとは

  • 情報収集し、

  • パターンを見出し、

  • 「こうすればいいのでは」という仮説を検証する

この(際限のない)繰り返し

IMO プログラミングするということ

  • すでに知っていることはそれを利用すればよい

  • 知らない・分からないこと は必ず出てくる(全ては知り尽くせない)

    • 情報収集➡️モデル化➡️検証 で 学んで対応 する

Start Python Guide お品書き

  • 話題1:オススメのPython入門教材

  • 話題2-1:プログラミングを学ぶってどういうこと?

  • 話題2-2:プログラミングを学ぶ際のtips紹介

サイクルを回すために

  • 情報収集➡️モデル化➡️検証というプログラミング学習サイクルを回すための tips3つ 紹介

  • プログラミングを学んでいる方向け(これから学ぶ方にはピンとこないかも)

1. 写経しながら 考える

  • 写経=プログラムをまねて入力=書き写す

  • 情報収集の方法の1つ

エンジニアの知的生産術』より(第1章)

書き写しながら、「あれ、これ前にも出てきたな」とか「いつものパターンに似ているけどちょっと違うな」とか考えることが大事です

写経しながら考える:nikkieの場合

  • こんな書き方できるのか!」という気付き🤩

  • モデル(自分の理解)の更新につながる(誤解していた、少し深く分かった)

エンジニアの知的生産術』第1章 参考

  • なぜこうなっている? こう書き換えたら? 写経しながら控えておく

  • 分からないことも書き出しましょう

「(写経はせずに)コピペでよくない?」

Google検索などして見つけたサンプルコードをコピー & ペースト

nikkieとコピペ

  • コピペすればサンプルコードは動く

  • ぶっちゃけ、入門時はよくやっていました

  • サンプルコードを複数組合せたら動かなくなったぞ!?

IMO コピペはオススメしません

  • 情報収集➡️モデル化➡️検証のサイクルから 遠ざかる 感覚

  • コピペはモデル化(共通パターンの発見)をスキップする

  • そのため、動かない時に仮説が出せず、直しづらい(デメリットもご認識を!)

nikkie コピペ封印

IMO コピペしないを増やしていきましょう

  • コピペをすると早く解決できるが、モデル化が薄くなりがち

  • コピペしないと 時間はかかるが、理解が深まる

    • 得たモデルは次の同様のケースに活きる

2. 一歩一歩

  • 「写経とかコピペしないとか、プログラミングって泥臭くない?」

  • IMO 着実に一歩一歩 積み上げていきましょう

学習曲線は直線ではない(画像引用元

../_images/202204_wiki_learning_curve.png

私たちのイメージとのギャップ

../_images/202204_edited_learning_curve.drawio.png

学習曲線、期待と実際のギャップ

  • 経験に比例して直線で学習が進むと考えがちだが、実際は横軸に張り付く(全然進まない感覚)

  • (プログラミングに限らず)何かを身につけるのは 簡単な道のりではない と思っています

オススメの考え方:過去の自分と比較しよう

  • 例:今日は改行を含んだprintができるようになったぞ!🙌

  • 情報収集➡️モデル化➡️検証を繰り返し、モデルをちょっとずつじわじわと更新していく

3. ひとつの教材を極め抜け

  • 一歩一歩進む以上、時間はかかるもの

  • 紹介した教材、あれもこれもは現実的でない

1つの教材に絞ろう

  • 入門教材を1つ選んで絞ろう

  • ただし、最初から極め抜こうとはしない(わからないところは飛ばそう)

  • 最初はさーっと 全体感 をつかもう

何周もして極め抜け

先の話:ひとつの教材を極め抜いたら

  • 全てを網羅した教材はない

  • 極め抜いた核に、他の教材を つまみ読みして補完 していく

  • 読み込んだ1教材 & たくさんの教材の必要に応じたつまみ読み

One more thing: stapyで学んだこと

みんなのPython勉強会 代表 阿久津さん提唱 Python学習のTIPs

stapy発 Python学習のTIPs

  • Textbook:書籍

  • Internet:インターネット上のリソース

  • People: コミュニティ 、勉強会

People!!

  • このトークではTextbookやInternetをいくつか紹介

  • Peopleという側面もある!

    • Pythonをきっかけに人とつながれる

    • 知見を共有したり、互いに学べる

小まとめ:サイクルを回すためのtips

  1. 写経しながら考える

  2. 一歩一歩

  3. ひとつの教材を極め抜け

  4. Python学習のTIPs(特にPeople)

まとめ🌯 Start Python Guide ver.202204

  • いくつかの教材を紹介

  • プログラミングを学ぶ= 情報収集➡️モデル化➡️検証サイクルの繰り返し

  • サイクルを回すためのtipsを紹介。よさそうなものあれば試してみてください

ご清聴ありがとうございました

EOF