5/18(土)に開催された「PyCon Kyushu Okinawa 2019」に参加したので、Liveレポートを書いてみました。 kyushu.pycon.jp
私はPython歴3時間ですが、いつもとは違う空気も吸ってみたい!というリフレッシュも兼ねて参加させてもらいました。 キーノートではエンジニアコミュニティの意義やキャリアパスの考えを、その後の各登壇では参考になる情報を多くインプットすることができ、楽しい時間を過ごせました。 (都合がつかず最後まで参加できなかったのですが、次は懇親会まで参加したい!!)
※リアルタイムに書いたので、文体が統一されていないことには目をつぶってください。。
キーノート :弱いつながりの強さ / 大城 信晃さん
自身のキャリアパスに必要となりそうな要素を知ることができ、これからもコミュニティ活動に参加していこうというモチベーションをあげることができました。
聴講メモ
- 「弱いつながりの強さ」
- 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散策 / 八雲アナグラ さん @AnaTofuZ
Python0.9.1の解析を通してDeepDiveされたお話でした。動機は「そこにPython0.9.1があったから」とのこと。情報の量と深さに感服すると同時に、自身も目の前のことを追求する姿を見習わなくては、、、と反省しました。。(時間作ろう。。)
聴講メモ
※話についていくのがやっとだったので、ほとんどメモをとる余裕がなく。。共有されたスライドをご覧ください!
試行錯誤のためのDocker活用術 / @hoto17296 さん
DockerとPythonを組み合わせて実験・検証を行うためのテクニックの紹介でした。「DockerはJava(語弊)(ドン!)」という決めゼリフ(?)が印象に残っています。
コンテナにX11を入れてネイティブアプリのように画面表示をさせるTipsが面白かったので、何かの機会にやってみようと思います。
聴講メモ
- データ分析とコンテナの相性
- 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」に参加した
- 自分の守備領域ではないテーマだけど、参考となる知見や刺激をもらえた
- スタッフの方、お疲れさまでした!!