ぴろログ

Output Driven

参加レポート / 「PyCon Kyushu Okinawa 2019」に参加しました

5/18(土)に開催された「PyCon Kyushu Okinawa 2019」に参加したので、Liveレポートを書いてみました。 kyushu.pycon.jp

私はPython歴3時間ですが、いつもとは違う空気も吸ってみたい!というリフレッシュも兼ねて参加させてもらいました。 キーノートではエンジニアコミュニティの意義やキャリアパスの考えを、その後の各登壇では参考になる情報を多くインプットすることができ、楽しい時間を過ごせました。 (都合がつかず最後まで参加できなかったのですが、次は懇親会まで参加したい!!)

※リアルタイムに書いたので、文体が統一されていないことには目をつぶってください。。

キーノート :弱いつながりの強さ / 大城 信晃さん

自身のキャリアパスに必要となりそうな要素を知ることができ、これからもコミュニティ活動に参加していこうというモチベーションをあげることができました。

聴講メモ

  • 「弱いつながりの強さ」
    • 社会学者マーク・グラノヴェッターが提唱した社会ネットワークの概念。
    • 「親密で頻繁に会う人(家族、職場)より、頻繁には会わないようなちょっとした知り合いからの方が有益な情報が集まりやすい」という説。
    • エンジニアのコミュニティ、SNSの関係性がソレに近い。
  • Python機械学習やデータ分析のデファクトスタンダート
    • 開発、分析、プログラミング学習(教育)と相性がいい。
  • データサイエンティストについて
    • データ×テクノロジでビジネスに貢献
      • 意思決定支援:データドリブン
      • モデル構築:未来予測
      • 新規事業化(データは21世紀の天然資源)
    • 求められるスキルセット
      • ビジネス
      • データサイエンス
      • データエンジニアリング
  • AIが仕事を奪うか?
    • データサイエンティスト、AI導入はまだコスト割高。ロボット・自動運転も未成熟。
    • そもそも前段のIT化が進んでいない。
    • 最終的にはヒトが判断するプロセスは残るのでは。
  • エンジニアのコミュニティに感銘
    • コミュニティでの情報交換やLT。
    • 自分で勉強会を開くためにドラを買った。(LT開始/終了の合図)
      • ドラ娘がいないので、ドラおじさんが叩いていた。
    • コミュニティを通じて、データの裏に実際のヒトがいることにも気づけた。
  • コミュニティの恩恵
    • 勉強会の活動がきっかけとなって、データ関連部署へ社内異動(データサイエンスができることを知ってもらえた)
    • コミュニティはギルド的な位置付け。会社への所属歴よりコミュニティ所属歴が長くなることもある。今はそんな時代。
  • AI人材25万人育成という話もあるが、皆が同じことをすると値崩れする。「得意分野 × AI(データサイエンス)」という複数軸で希少価値を

Python Webフレームワーク比較 / Manabu Teradaさん @terapyon

9種類のPython Webフレームワークが比較されています。Webフレームワークの定義や比較観点(機能の有無)の情報は(Pythonの文脈でなくても)技術選定時の参考になります。

聴講メモ

  • Manabu Teradaさん観点での評価。
フレームワーク コメント Good Bad
Django フルスタックなオールインワンWebフレームワーク Django adminによるデータベース管理画面が便利 オリジナリティが強い
Flask シンプルで便利なWebフレームワーク 小さなコンポーネント。事例が豊富。 自由すぎるので、大規模システムを構築する際に規約/制約が大事
Pyramid フルサポートなWebフレームワーク(当日はPyramid Tシャツを着ながらの登壇)。昔はPyramidかFlaskか、の二択。 真面目。きっちり作れる。 きっちりかっちりが故の学習コスト
Zope フルスタックで巨大なWebフレームワーク コンテンツを階層構造に作れる。セキュリティを実装しやすい。 重い。。
Tornado 非同期Webフレームワーク 非同期サポート ちょい難
aiohttp 非同期のHTTPクライアント/サーバ。ライブラリ集に近く、シンプル。 シンプル非同期サポート 機能が少なく、自作しなきゃいけない物が多い。
Guillotina ブジェクトモデルの非同期なREST APIフレームワーク コンテンツの階層化、高パフォーマンス 事例少なく、オリジナリティも強いのでハマった時に心配。。
Bottle 超軽量なマイクロフレームワーク シンプル 機能が少なく、自作しなきゃいけない物が多い。
responder ASGIに対応したフレームワーク シンプル まだ事例が少ないので、手を出すのは時期尚早?
  • 機能要件の観点だけでなく、「周囲にそのノウハウを持っている人がいること(開発を効率良く進められること)」も重要な選定要素

Pythonにおける並列処理プログラミング / 杉田 雅子さん @ane45

Pythonのマルチスレッド機構についての説明がタメになりました。APIからのレスポンス待ち問題(コード実行の長時間化)を並列リクエスト処理で解決しようとしたらRate Limitに引っかかって断念した、というお話もあり、並列処理は銀の弾丸ではないな、と感じました。 slideship.com

聴講メモ

  • Pythonのマルチスレッド機構
    • GIL(Global Interpreter Lock)の制限により、同時実行できるスレッドは1つ。
    • 複数のスレッドが作成されても、実行されるのは「ロック」を取得したスレッドのみ。5ms単位でロックの受け渡し。
    • CPythonのインタプリタのコード、依存するCのコードがスレッドセーフでないため、このような仕組みとなっている。
    • GILが有効なケース
      • I/O発生する処理(ファイルの読み書き、DB接続、ネットワーク接続)
  • Pythonで実行する方法
    • concurrent.futuresというPython3.2の標準ライブラリが使える。
  • 並列処理を行うためには
    • マルチプロセス
      • 異なるプロセスのPythonインタプリタで実行される(GILの制約無し)
      • プロセス間通信のオーバヘッドに注意
    • マルチスレッド
      • I/Oが発生する処理に有効

レガシーPython散策 / 八雲アナグラ さん @AnaTofuZ

Python0.9.1の解析を通してDeepDiveされたお話でした。動機は「そこにPython0.9.1があったから」とのこと。情報の量と深さに感服すると同時に、自身も目の前のことを追求する姿を見習わなくては、、、と反省しました。。(時間作ろう。。)

聴講メモ

  • パイソンの書き分け
    • 大文字Python:言語としての文脈で使う
    • 小文字python:処理系としての文脈で使う

※話についていくのがやっとだったので、ほとんどメモをとる余裕がなく。。共有されたスライドをご覧ください!

試行錯誤のためのDocker活用術 / @hoto17296 さん

DockerとPythonを組み合わせて実験・検証を行うためのテクニックの紹介でした。「DockerはJava(語弊)(ドン!)」という決めゼリフ(?)が印象に残っています。
コンテナにX11を入れてネイティブアプリのように画面表示をさせるTipsが面白かったので、何かの機会にやってみようと思います。

聴講メモ

  • データ分析とコンテナの相性
    • データ分析とは「データに対する『アプローチ』の試行錯誤」。
    • トークナイザ、分散表現アルゴリズム、…を変えながら結果を確認していく。「ツールAをいれたけどダメだった」、「ツールBを入れるとうまくいった」、「…と思って再度実施したけどうまくいかない。。(もしかしてツールCも入れたっけ?)」とハマりがち。
    • コンテナの「再現性(冪等性)」・「廃棄の容易さ」は、データ分析との相性がいい。
  • DockerコンテナでJupyterを使う際のハマりどころ
    • The Zombie Reaping Problem問題
    • tiniの利用 or コンテナ起動時の--initオプションで回避できる

開発環境の垣根を超えるLanguage Server Protocol入門 / 吉田 花春 さん @kashew_nuts

テキストエディタVisual Studio Codeとか)がシンボル分析や構文分析、コード補完機能等を提供してくれるのは、裏でLanguage Server Protocolが動いているから、という事実を初めて知りました。ただの便利機能ぐらいに思っていましたが、Deep Diveできて楽しかったです!後で調べてみたのですが、Language Server ProtocolはMicrosoftが開発したプロトコルなんですね。

聴講メモ

  • Language Server Protocol(LSP)
  • Language Server(LS)
    • LSPの仕様をもとに実現したもの。同一言語でも複数団体がLSを提供しているケースもあり。
    • エディタ↔︎LS間で、LSPを使ってやりとり。
  • Language Server Client
    • エディタにインストールするプラグイン
    • 仕様変更が頻繁にあるので、ネイティブに埋め込むのではなくプラグインとして使われるのが一般的。

Pythonと型ヒントとその使い方 / 中村真人さん @Masahito

自身が最近Golangを勉強していてgolintに怒られてばっかりなこともあり、逆にPythonの型に対する自由さを感じました。また、他の言語を使っても(強弱はあるものの)同じ方向に向かっていくんだな、とGolangの型の厳密さを受け入れる?ことができた気がします。

聴講メモ

  • Type Hints
    • 引数や返り値の型を宣言できる(アノテーションを書ける)
    • コード実行前にチェックができる
    • リーダブルコードを実現できる
  • Type Hintsが意識されているプロジェクト
  • nulabではFabric(Python製デプロイツール)とAnsibleでデプロイ作業をしている

まとめ

  • PyCon Kyushu Okinawa 2019」に参加した
  • 自分の守備領域ではないテーマだけど、参考となる知見や刺激をもらえた
  • スタッフの方、お疲れさまでした!!