PyCon Kyushu 2019 Okinawa に参加ました

今日は こちら に参加しました。
以下はほぼメモ書きレベルで聞きながらとりあえず書き出しておこうという試みです。

オープニング

  • 沖縄県内からの参加が6〜7割くらい
  • 先日の北海道の参加者も結構いそうな雰囲気で会場が拍手に包まれる
  • 沖縄のハブ、パイソンのニシキヘビとかけたダブルミーニングのテーマで Hub に決めましたとのこと
  • キーノート

  • 琉大出身の 大城 さん
  • Python は 2012 年から
  • データ分析は R 言語を長くやっていたけど、最近は Python の活動が多くなってきた
  • 学生さんの割合は 2 割くらい
  • 3 分くらい突然の自己紹介タイム
  • 今回初めて Python のイベントに参加した人が 1 〜 2 割くらい
  • DS や AI を使うとビジネスが進むというお話
  • AI 使う前にデータが揃っていないとか、結構面倒見るために人の手が必要
  • 銀行とか特にやらないとまずいという危機感を抱いて部署を立ち上げている
  • 弱いつながりから新しい情報が得られる、Twitter とかで緩募とか効果的
  • 異業種なんだけど大学の同期で繋がるとか、面白いことが起きている
  • 仕事のつながりも、きっかけは弱いつながり (隣の部署とか) だったりすることも多い
  • データ分析の分野は技術的に変化しながら結構長く続いている
  • 東京に行って「エンジニアの勉強会」には衝撃を受けた
  • 刺激を受けて、日常業務しながら月 1 回のペースで R 言語の勉強会を開催した
  • 直接関係ないところで勉強会をやっていたので、なかなか実務に活かせないけど、異業種の人との話が楽しかった
  • データ分析と言いつつも、それを生み出すのは人なので、そこが面白いと感じ、なるべくして DS になった
  • 本業でやってない人でも、積極的にコミュニティ活動をしていけば仕事にも繋げていける
  • DS の世界は仕事として名前がつく前からコミュニティが発達していた
  • これからを生きていくためには、専門の分野 x AI (DS) で強くなる良いいかも (AI (DS) だけじゃない人材として希少価値を出せる) → 結局は何に使うか、何のために使うのか、誰が使うのか理解してやるのが最強
  • 民間のスクール的なところではビジネス方面の知識があまり得られない印象
  • DS の初任給は 1 本超え (たまにいるほぼ CTO 級の学生の取り合い)
  • 東京と福岡を比較すると 3 〜 5 年遅れの印象
  • これから DS 始めたい人はまずコミュニティ活動からがオススメ
  • ここで会場移動で工学部 1 号館へ。
    いかにも教育機関っぽい階段が何とも懐かしい雰囲気でございます。

    Python Webフレームワーク比較

  • 色々な活動をされている Pycon JP @terapyon さん
  • 今回は Python ED の顧問理事として参加、ブースもあり
  • このトーク中は Pyramid の人 (ここで T シャツを着替える)
  • Python Web フレームワークで最初期のものは ZOPE
  • Web フレームワークの基本的なところ、ルーティング、トラバーサルとかからそれぞれ比較していく
  • Django : ここから入るという事が多く、古めのフレームワーク、フルスタックでオールインワン
  • DB の管理画面、Django admin が便利
  • Django の流儀が少し Python と離れて独自性が高い部分がある
  • Flask : これは結構新し目、シンプルで便利
  • 情報は多いが自由すぎて、チーム内で規約を決めないと結構ぐちゃぐちゃ、カオスになる
  • ログインとか不対応なところは他のプラグインとかも必要になってくる
  • Pyramid : リリース時期は Flask と同じくらい、フルサポート
  • 結構学習コストは高い、高めの能力を要求されるところがあり、色々ちゃんとやらないといけない
  • Zope : いつできたのかよく分からない、フルスタックで巨大なフレームワーク
  • コンテンツの階層構造、セキュリティ機能が強め、けど重い、async 以外は何でもできる
  • Python にないものを独自に作ってきた
  • Tornado : 結構歴史がある非同期系フレームワーク
  • 割と大きめで使うのが難しい
  • aiohttp : シンプルでほぼライブラリレベル、非同期サポート
  • Guillotina : 2017 リリース、オブジェクトモデルの非同期な API のためのフレームワーク
  • 高パフォーマンスだけど独自性が強くて情報も少ないのが辛い
  • Bottle : 軽量・シンプルなマイクロフレームワーク
  • Lambda に入れちゃうとか
  • responder : まだ早いので一旦忘れて待ちましょう
  • 用途ごとにどんな選択するかのお話
  • いくつかの選択肢の中でどれを選ぶか?となった時は、実装するものが少ないところから選ぶ、ただ、知っている人がどれだけいるかもかなり重要、動作させる環境・デプロイ都合も考慮する
  • ここで隣の部屋に移動。
    最近のフレームワーク事情を一気に知る事が出来て、かなり学習のための時間削れたかもという印象でございました。

    Pythonにおける並列処理プログラミング

  • https://twitter.com/ane45 さん
  • Raspberry pi もくもく会 の人
  • Python の並行・並列処理の概要
  • マルチスレッド、マルチプロセス、非同期プログラミングの処理モデルがある
  • マルチスレッド : GIL の制限があり、複数のスレッドを作っても並列では動かない (5ms でロック解放して別スレッドに切り替え)
  • この理由は CPython の処理系が依存しているコードがスレッドセーフではないため
  • 制限があっても、IO (発生したタイミングでロック解放するため) が発生する場合はマルチスレッドが有効な手段となる
  • max_worker の指定によって、スレッドの動作は異なる
  • 並列化で頑張るといいと思ったけど、外部 API の rate limit で上手く行かなかった事例もあり、並列化が全てを高速化できる手段ではない
  • sub-interpreter を使って GIL の制限を回避しようとする動きもある
  • マルチプロセス : オーバーヘッドが大きい、CPU コア数までの制限、プロセス間通信についても考慮が必要
  • 非同期プログラミング : ノンブロッキング関数を使い Eventloop、コルーチン、タスクを意識して実装する、同一スレッドでも処理を並列化できる → ちょっとこの辺りは自己学習が必要
  • ここからお昼休憩。
    お昼はにんじんしりしりとかの入った、沖縄らしいお弁当でございました。
    Python 関連どっぷりというのは 4、5 年ぶりですが、変わったところも変わっていないところもいい感じですね。
    電池の残りが気になってきたところで後半戦。

    レガシーPython散策

  • 八雲アナグラ さん
  • みなさん気は確かですか?役に立たない話しかしないですよ??的なノリで開始
  • Python : 仕様、python : 実装
  • 1991 に 0.9.x
  • self は Perl のパクリ
  • 0.9.1 は make できるものがダウンロードできる
  • ほぼゴミ、ドキュメントは参考になる
  • 割と実装されていても使えない機能が多い
  • Python ソースコードをバイトコード化するので C 言語と同じといっても過言ではない
  • (スクリプト言語は大体こんな感じという実装が CPython 0.9.1 のソースコードでで勉強できそう)
  • オブジェクトの実装は関数ポインタを多用している
  • 値に相当する部分でダブルポインタを使って上手くオブジェクトを実装している
  • 掛け算できない? 1 + 1 の演算でオーバーフロー?! → バグがある
  • 0.9.1 と 3 のオブジェクトの実装は、実はあまり変わっていない (関数ポインタを使う部分とか)
  • 0.9.1 のサンプルコードが 2 で動いてしまったりがある
  • ライブラリのソースコードにはコメントがなくて、読んだり使ったりするのはとてつもなく辛い
  • 結構処理系の実装追いかけてみるのは、たまにやると面白いものがありますね。
    久しぶりに C 言語のソースコードを見るのは、何かこう心が落ち着くような気がしました。
    次は Docker の方が人気のセッションなんだろうけどアプリケーション寄りの方に。

    “Similar-Dish” Function in SnapDish – Pythonを使った料理の意味検索 –

  • ヴァズ 森永 さん
  • SnapDish は料理体験を楽しくするサービス
  • 似ている投稿を探してくる新機能の実装について
  • テキストの意味・画像の意味を数値化 (ベクトル化) して評価する
  • 局所表現 : 人が意味を表すための特徴を決める、伝統的、簡単に作れる
  • 分散表現 : なんらかの形で意味全体をベクトルに表現する、難しいが結果が良くできる可能性がある
  • テキストは字面よりも単語が示す概念に注目する → word2vec
  • モデルは比較的単純だが、比較的使えるレベルの単語の類似度の計算、意味の計算が可能になる
  • 学習済みの配布されているベクトルは料理用語には弱いので自作
  • 結構同じ意味を持っていても表記揺れがある単語が多いので、下処理で読み仮名を振って (MeCab を使って) 対処
  • 同音異義語 (柿、牡蠣など) についてもした処置が必要になる
  • 学習結果の評価はクラスタリング (Python 5 行程度でかける) がわかりやすい
  • word2vec は近接関係からのみ学習を行う
  • 画像は概念と色でも評価したい
  • 色については分類用ニューラルネット (連続関数なので揃いやすい特性がある) を上手く使う
  • Keras で回帰版 GoogLeNet 実装
  • 単純な回帰モデルを使うと評価が難しいので実際に人間が画像を与えて反応を見て評価
  • ちょっと不安な結果になったので、実務利用可能かバリデーションを実施
  • 予測した単語ベクトルと、投稿のテキストベクトルが近いかどうかで確認
  • バリデーション通るのは 5 割程度なので改善が必要
  • よくある自動のタグ付けとか類似するものの抽出あたり、上手くやるには学習前のデータの下処理がやっぱり結構なボリュームを締めるし大切なお仕事なのですね。
    わからない単語が多くて、機械学習のための学習がまだまだ結構必要な印象でございました。

    開発環境の垣根を超えるLanguage Server Protocol入門

  • 吉田 花春 さん
  • 普段は BePROUD で Django 使い
  • 各自好みのエディターを使うために
  • LSP とはプログラミングの情報を JSON-RPC 経由でやり取りしてテキストエディターとか IDE を拡張する仕組み
  • Microsoft が仕様化して Language Server を実装
  • LSP を導入すると、エディターと言語の組み合わせそれぞれに必要だったプラグインが統合できる
  • 言語毎の Language Server + クライアント (エディター、IDE) で実現できる
  • 開発についても上手く分離 (言語コミュニティの開発者とエディター、IDE の開発者) できて嬉しい
  • Python 用の Language Server はコミュニティ開発のものと Microsoft が開発したものの (VS Code はこちらがデフォルト) 二つがある
  • Client はある程度の規模になり、プラグインとして実装される
  • LSP の可能性は未知数の状況、どういう機能を Language Server で実装するかまだ方向性的に決まっていない部分もある
  • デバッガーのサポートもあるかも?
  • 課題としてはクライアントが多くなって追いかけるのが辛い、どれを使うか迷う
  • 割と WIP なところがある
  • UTF-16 を使っていて、マルチバイト文字課題が・・・(非常に辛そう)
  • まだまだつらみがありそうで、それに時間を取られるくらいなら JetBrains 製品のぬるま湯に浸かっておきたい気持ちが強いかもしれません。
    次も同じ会場でステイ中。今日は所用のため懇親会の参加なして帰る予定でございます。

    Pythonと型ヒントとその使い方

  • nulab 中村真人 さん
  • 型ヒントが使えて、説明できるようになりましょう
  • 型ヒントとは、読みやすいコードにできる、説明が書けるもの
  • C 言語とかでも書けるような事が実現できるが、Python では型違いでエラーとかにはならない → 実行せずにチェックする事ができる
  • 3.0 でパラメーターと戻り値で関数アノテーションをフリーテキストで書けるところから始まる
  • これからのバージョンでも 3.5 の書き方が継続して使えそう
  • コード補完についても型ヒントの情報が使われるので、かなり便利になる
  • mypy: 型チェック用のツール、3.7 のスタイルまで動く、2 でも使えたりする
  • CI ツールでも動かせるので、小さいものを作り始めるときに入れておくと良いかも
  • Python 2 のサポートは今年一杯!
  • 自社事例においては 2.x → 2.7 の後に 2to3 かけて後は頑張る戦略、型については最小限書く戦略で対応
  • Sphinx、Chainer あたりは参考になる
  • SQLAlchemy と連携できる mypy プラグインの動きも
  • Python 周り熱いですね。どんなとこにいても進化してかなきゃ大変危ういですね。

    シェアする

    フォローする