Executive Summary
2019年5月18日(土)に沖縄にて開催されたPyCon Kyushu 2019に参加した。聴衆として158人が参加し、イベントとして盛り上がっていた。トーク総数は13と多く内容も充実し、分野のバランスが取れていた。九州沖縄地方におけるPythonコミュニティの大きさが感じられた。
PyCon Kyushuとは
はじめにPyConに馴染みのない人向けに簡単に説明する。
PyConとは
プログラミング言語Pythonに関するカンファレンスのこと。世界各地で開催されている。
2002年にヨーロッパで開催されたEuroPythonが世界初らしい。その後、2003年にアメリカで開催されたカンファレンスに際して「PyCon」という名称が採用され、世界に広まったようだ。
アメリカ以外で開催されるカンファレンスはf'PyCon {country_name}'
という名称を用いることが多い。
PyCon JP
日本におけるPythonカンファレンス
-
PyCon JP
- 2011年創設。一般社団法人PyCon JPが企画、運営をし、毎年東京で開催されている。今年はカンファレンスが9月16-17日(その前後にチュートリアルとスプリントも)。2013年には、アジア太平洋地域各国持ち回りのPyCon APACとして東京で開催された。
- PyCon miniシリーズ
-
PyCon Kyushu
- 2018年(福岡県)から毎年。九州沖縄地方各県が持ち回りで開催していく構想らしい。
- その他:PyDataやDjangoConなど、テーマを絞ったカンファレンスもある。
PyCon Kyushu 2019 in Okinawaの概要
- 公式webサイト:https://kyushu.pycon.jp/2019/
- Twitter:@PyConK
- ハッシュタグ:#PyConK
- Facebook:https://www.facebook.com/kyushu.pycon.jp
- 日程:2019年5月18日(土)
- 会場:琉球大学(沖縄県)
- 参加者数:158人(公式発表、スタッフ除く)
- 総トーク数:13
- キーノート(45分):x1
- トーク(25分):2トラックx6枠
- その他:懇親会でのLT(5分)x9
当日の様子
会場
琉球大学の3つの施設が併用されたが、離れていて移動に時間が掛かった(特にキーノート後)。スタッフの方の案内があり大変助かった(そしてGoogle Mapも)。とはいえ、恐らく収容人数と費用を考慮してのベストの選択だったと思われる。午後から晴れて暑かったが、雨が降らなくてよかった。
- 大学会館:オープニング、キーノート、クロージング
- 工学部1号館:トーク、ランチ、スポンサーブース
- 北食堂:懇親会
オープニングでの実行委員長挨拶
構内には千原池(せんばるいけ)という大きな池があり、橋が架かっていた。
参加者
合計158名。正確な割合は忘れたが、やはり沖縄県内が最も多く、その他の九州地方、それ以外(筆者を含め東京からも)という順だったと記憶している。1週間前に札幌にて開催されたPyCon mini Sapporoと両方に参加した人が数名いた(うちスピーカー2名)。
各トークのメモと感想
発表スライドはほとんどがconnpassのページにて公開されている。詳細はそちらを参照されたい。メモは筆者の備忘(その場で書き取ったものなので、漏れや誤りがあれば指摘して下さい)。
全体を通して
各トークのレベルが高く、楽しめた。開発、データサイエンス、Python言語という各テーマのバランスが良かったと思う。スピーカーが自分で実装・分析した結果をデモとして示したトークもあり、理解しやすいものが多かった。
キーノート:弱いつながりの強さ
スピーカー
- 大城 信晃
- NOB DATA
- @doradora09
メモ
感想
- キーノート(基調講演)としては対象を絞り過ぎていたと思う(主にデータサイエンティスト志望の学生)。
- 冒頭に、タイトルにある「つながり」を作るという趣向で、隣同士の自己紹介タイムを取ったのは良かったと思う。
- データサイエンスの文脈でTokyo.Rの設立などRコミュニティに関する話を聞けたのは、個人的には、スピーカー同様にRユーザーとして好奇心を満たされる内容であった。一方で、Rと接点がない人には内輪ネタのように感じられたかも知れない。
- 「弱いつながりの強さ」というテーマを貫き切れず、些か散漫に感じられた部分もあった。
- Tokyo.Rのように「Enjoy!」で締め括ったのは小ネタ。
沖縄Pythonコミュニティの紹介とtesseract-ocr ver.4(LSTM)を用いたオフラインOCRの改善・学習手法
スピーカー
- 鈴木 康元
メモ
感想
- 沖縄のPythonコミュニティとtesseract-ocrという2つの異なるテーマが詰め込まれていて、少し駆け足に感じられた(運営側の手違いにより開始が遅れたのも一因)。それぞれについて、同じ25分の枠で詳しい発表を聞いてみたいと思った。
- tesseract-ocrのデモ(アニメに登場する仮想の文字の判別)は分かりやすかった。
Pythonにおける並列処理プログラミング
スピーカー
- 杉田 雅子
メモ
処理モデル
- マルチスレッド
- 1つのプロセス内で複数のスレッドを実行
- GILの制限があっても有効なケース:I/Oが発生する処理
- concurrent.futuresモジュール
- 並列化する注意点
- 単に並列化すれば良いという訳ではない。
- ボトルネックが何か?
- マルチプロセス
- 異なるプロセス上のPythonインタプリタで実行
- GILなし
- CPUのコア数が上限
- 演算中心の処理はマルチプロセスでは速度が向上しないことがある。
- Numpyがマルチスレッド処理をしている場合
- 非同期プログラミング
- ブロッキングI/O
- データの受信完了を待つ
- ノンブロッキングI/O
- 完了を待たない
- asyncio
- 非同期で扱うオブジェクト
- Eventloop
- コルーチン
- task
- 1スレッドで複数タスクを処理できる
- asyncなライブラリ
- ブロッキングI/O
感想
- 並列処理の初心者(筆者含む)を対象に、丁寧に説明していて分かりやすかった。
Pythonでの開発を効率的に進めるためのツール設定
スピーカー
メモ
クオリティチェック
- pylintは厳しすぎる
- 通すための改修に手間が掛かる。
- flake8の方がよい。
- flake8
- pycodestyle + pyflakes
- デファクトスタンダード
- コードレヴュー前に通すべき
- mypy
- type annotationのチェック
- ignore_missing_imports
- type annotationを提供していないライブラリが多い。
フォーマッタ
- black
- ほとんど設定変更できないので、諦めがつく。
- なぜか1行の文字数上限が88
- isort
- import文のソート
- 標準ライブラリ、サードパーティ、開発中ソースツリー
- blackとisortを組み合わせる。
- Vertical Hanging Indent
- multi_line_output=8
- line_length=88
- blackとflake8
- 衝突
- 演算子の改行位置
- スライス演算子の前後スペース
- flake8の独自解釈なのでblackに従う。
- 衝突
- CIで使う
テスト
- pytest
- テストフレームワーク
- テストランナー
- unittestで書いたテストでも実行可能
- 賢いテストレポート
- 成功したテストは表示しない
- assert失敗時に変数の内容を表示
プロファイル
- prolifer
タスクランナー
- nox
- cookiecutter
感想
- 品質の高いコードを書いて効率よく開発を進めるという論点から説明がされていて、駆け足だったが明快だった。
- 「レヴュアーの時間を奪う前にチェックを掛ける」という言葉は肝に銘じたいと思った。
“Similar-Dish” Function in SnapDish - Pythonを使った料理の意味検索 -
スピーカー
- 森永 雄也
メモ
感想
- 理論や技術の説明が端的で分かりやすかった。
- デモがあると良かった(iPhone版アプリにはまだ実装されていない機能だった)。
アイデアを小さく始めて、小さく育てていく方法 ~ ハッカソンで深層学習モデルを作って運用するまで
スピーカー
メモ
感想
- 何より、ハッカソンに参加して自分のアイディアを形にしたスピーカーの熱い思いが伝わってきた。
- モデル構築の工夫や趣味プロジェクトの進め方など、大いに参考になった。
Pythonと型ヒントとその使い方
スピーカー
- 中村 真人
メモ
Usage of Type Hints
- How to write
- PEP526
- How to get Type Hints Info
__annotations__
Benefits of Type Hints
- Code style
- Code completion
mypy
- Guidoも開発メンバー
-
mypy --ignore-missing-imports
- CI
感想
- Type Hintsの基本が理解できたと思う。
- 動的型付け言語であるPythonにおいてバグを減らして効率よく開発するためにType Hintsを使うとよい、というメッセージが明確だった。
まとめ
沖縄におけるPythonコミュニティのプレゼンスを感じた(開発、データサイエンス共に)。交通の便を考えると県外からも多くの参加があり、まだ2回目だがPyCon Kyushu という地域開催イベントの裾野の広さが窺えた。開催地は変わるが来年も是非参加したい。企画、準備、運営に携わられたスタッフの皆さん、ありがとうございました!