みんなのPython勉強会#27 #stapy に参加しました

テーマは「Pythonistaとしての進化」でした。 stapyは初参加でした。

みんなのPython勉強会#27 - connpass

コミュニティの紹介

  • Pythonでスタートする人たちとの集い。

  • 初心者からマスターまで。

  • 言語もPython以外にGo, JavaScriptとかやってる。

  • 草の根コミュニティ活動。毎月開催して30回達成予定(11月には)。メンバー2500名を。

  • デブサミでもstapyを紹介した。

  • 懇親会でビールサーバーがある!?

Talk

Talk 1:「 脱写経のススメ〜書籍のレールから踏み出そう〜 」 杉山 剛(@soogie)

リポジトリ: https://github.com/soogie/moves

すぎやまなんで soogie です。2回目ぐらいからきはじめて、通算20回以上。 PyConJP2017で話そうと思ってたものを話します。

  • 写経大事。書いてみてやってみて動かす。

  • だけど写経ばかりやってると諸症状が起きる。Iris(アヤメ)とかもういい。分析して面白くない。最近はPython3が主流だからPython2でサンプルが書いてあるとつむ。

  • TIPs: Text, Internet, People + なんとかしてやるという強い意志

  • ワークフローはあるけど何をやってるかわからない→手でやってみる。簡易なHTMLを書く。 (GET, POST)→その上でPythonで書く。

  • 使ったことないもの→ネットを見る→いろんな意見がある→deprecated

  • 戻ってきたデータの構造→複数の入れ子の辞書のリストになっている→pandasのread_json()だと1階層しか取れないのでドキュメント確認しながら試す。

  • 「こうゆうところでやるデモは失敗するのでプログラムの実行はしません」←わかる

  • ネット見る時どこみるか: StackOverFlow,

  • 綺麗に書きたくなるが、「まず動く」ようにする。欲しいものが取れるようにする。

  • 時間忘れてもがくの大事。

  • ネットの情報を見るときは まず公式を見る 公式だけだとわからないところもあるので、QiitaとかBlogも見る。ただ1年以上前の古いものや、バージョン違いには気をつける。

感想: すごい試行錯誤したあとが見れる。こうゆうのJupyter Notebookでやってると振り返れるからいいですね。

Talk 2:「SeleniumでWebと戯れよう」 玉川紘子(株式会社SHIFT)

  • ソフトウェアテストエンジニア。お客様が開発したものをテストする。主に自動化・CIを担当。

  • Seleniumに関する本も書いてます。

  • Webブラウザの操作を自動化できるOSS

  • 今日は何の日?→8/9は「ソフトウェアバグの日」です。ちゃんと認定されています!

  • Seleniumのバージョン

    • 2004年〜 1 or RCはJSベースで、実運用は厳しかった。

    • 2011年〜 Googleで開発されていたWebDriverと融合。APIを一新して名前が残った。

    • 2016年〜 古いものが削除されスリム化。(←特に大きな機能追加はなし)

  • 調べるときはWebDriverで調べてもらったほうがいいかもしれません。

  • pyqueryとBeautifulSoupとの違い。

    • メリット: 対象のサイトをそんな深く理解しなくてもスクレイピングし易い。Ajax通信であとから表示される要素も習得可能。

    • デメリット: 遅い。画面を開き終わってからもタグ情報を集めることも遅い。

    • 画面を開くまではSeleniumで、画面を開いたらjsoupで食わせて解析してる。(普段はJavaなので)

  • みんな大好きJupyter Notebook!

  • Javaでもないかなー。Pythonの人うらやましい。とのこと。←別途カーネルを導入すればJavaもいけそう?

  • バッチ実行するために runipy 0.1.5 : Python Package Index を使用。

  • 普段Seleniumを使うのは自動テストツールとして。ただSeleniumにはテストの機能はないので、テスティングフレームワークと組み合わせる必要がある。

  • 「自動テストを手動で実行する」ほど悲しいことはない。→Jenkins, TravisCI, CircleCIを使おう。

  • Seleniumで苦労する点

    • 実行時間が長い

    • テストがタイミング依存で不安定になることがある。

    • 注意しないとすぐに保守コストが爆発→ケースが増えてデザインが変わって即崩壊→共通化して保守しやすくする。

  • バランスに気をつけることが大事。理想は「テストのピラミッド」。少しずつ変えていこう。

  • 画面キャプチャは制限があって、今見えている範囲しか取れない。

感想: Pythonの勉強会でJavaのテストを実行したばかりにデモが失敗するだと….

Talk 3:「 Pythonの会社を9年間経営してきて分かったこと〜Pythonistaの仕事、Pythonとの良いかかわりかた 」 佐藤治夫(株式会社ビープラウド代表取締役社長, @haru860)

ハイライト

  • 司会「Python界の巨人!」haruoさん「!?」司会「失礼しました。中日でした。」 #stapy

  • Pythonの人たちってこんな感じだったというのを紹介します。

  • Pythonを採用した当時(2008年): Webの受託開発がメイン。技術者いるの?保守は?仕事あるの?

  • Pythonのパラドックス: ←採用をはじめたとき実は知らなかったそう。

  • この人どうよ。このアメリカ人どうよ。このJavaScriptできる人どうよ→どやどやと入ってきた。2011年で30人超。

  • 今までのPythonの集大成。

  • 会社がPythonコミュニティ化した。

    • 同じことに共感

    • 最新の情報の交換、ノウハウ・技術交換

    • お互いに切磋琢磨

  • 採用費: 5万円がMAX(それでも4人取れた)

  • 仕事も良いお客さんばかりになった。

  • Pythonistaのしごとでの文化

    • どの言語を選択するか?→宗教戦争に近い。何が好きかという話になる。

  • Pythonistaの特徴

    • まずルールを決めよう→Zen of Pythonに書いてある。そのほうが動きやすい。

    • ドキュメントを書くのが好き→Zen of Python 暗示するより明治するより

    • 曖昧な発言は諭される→これとかあれというと「なにが?」と突っ込まれる。←わかる。

  • Pythonの効果的な学び方

    • 写経: 書き写す過程でこれはどうゆう意味か考える。そのまま移したつもりでの差。理解。

    • PyQ: 書籍連動のコラボとかいいですね。次へのステップがあるのはありがたい。

    • アウトプットする:

      • 1行でも10分でもいいから書く。

        • Pythonやりたいと言って伸びた人は実経験はなくても、自分で何かつくったりする人。「インストールしました」だけだと微妙かなと。

      • Blog書く。プロとアマの違いは形式知にしているか。

    • コミュニティに参加すること。←書かれている情報は古い。実際のところどうなのかを聞けるチャンス。

  • 個人ブランディング

    • QiitaよりはBlog。技術的なことはかけるが、個人ブランディングは難しい。

    • GitHub

    • 発表: 何か話せることはないかなというのを日々考えながらいるといい。

    • ブラグ書くなら、ライティングも勉強することも楽。→エンパシーライティング

感想: 反応のスピードがさすがでした。

懇親会

GitHub, SSH, 発表内容について, 社内でのPython活用事例についてとか話してました。

て感じでアドバイス貰っていたのでビールは3杯飲めましたが、話に夢中になってたらピザとか何も食べてなかった…

雑感

聴講型の勉強会は導入にはいいけどその後自分の手を動かさないと、「何かやった感だけあって何もしてない」ということになりかねないので、そこで何を得たいのか明確にするのが大事だよなーと思った。少なくとも前に出てる人は手を動かして行動してる人たちだ。