PyconJPメモ
背景
PyconJPに行きました。メモってたけどブログに起こしてませんでした。 ブログとして頑張って文書を起こす気力と時間が無いので、その場のメモだけベトッと貼っておきます。
感想
データ分析成分が多いと言ってたけど、そっち方面では新しい感じの情報は無かったので必要なものは世の中に出揃った感が強くなりました。
個人的にはPythonの内部実装の話とかの方が参考になりました。
業務ドメインが違すぎて、自分が利用事例を殆ど持っていないので他の人ととっつき辛いのが悲しいかな。
早く業務内で扱えるところまで進みたいんだけどなぁ。(そろそろのはず)
昨年ほど商業色がなくて雰囲気は良かったです。
でも、なんとなく数年前より活気無く思えたのは何故だろう?人は増えてるはずなのに?
そしてモノタロウさんは少年にリベンジできておめでとうでした。
夢の跡
ベンリに使おう変数アノテーション - typing.pyとの楽しいお付き合い
- PEP484
- 型宣言を入れられるようになった
- コメント扱い
- PEP526
- PEP484では型情報がコメントだったが、変数宣言中に入れた
- 実行時に
アノテーションは何に使われる?
- 普通は静的コード解析に使う
- 今回の変更は実行時に使う… 何で?
動機
- UnmarshalerをPythonに移植しようとした
???
get_type_info()
ジェネリック型
- listやsetに型情報を付加できる
- from typing ….
- Python3以降しかない
- Anyなんでも、Union
- 関数引数などで型の識別情報として使う “”“ def f(arg: list): return arg def f(arg: list[str]): return arg ”“”
- List[str].mro() を覚えよう
- 型継承の追跡純を
- List[str].args だと使われている型のタプルが帰ってくる
- (str,)
型情報のチェック方法
- builtinsかを調べる
- int in vars(builtins).values()
ジェネリックかを調べる
Python3.6.0ではUnionがバグってる
Pythonで大量データ処理!PySparkを用いたデータ分析のきほん
- おおよそ知ってる内容でした。
- 使い始めるキッカケとしては良いと思います。
Building a Customized Personal Assistant with Python
- ボットを自作した際のお話。ちょっと面白そう。
RとPython
知らない内容だったけど、結論が残念。表示がいい感じかどうかとかで使い分けるのか。
データ入力系
- PythonからRを呼ぶ
- Rpy2, PypeR
プロダクト開発して分かったDjangoの深~いパーミッション管理の話
- なんか色々困った感じが伝わってきた。そして割と面白かった。
- 私がDjangoを使う機会が無さそうなので如何ともしがたい。
viewの内容が変わった時の話
- Lv1
- パラメータを持たせて、viewの中でif文を持たせる
- viewにif文を書くと雑になる
- Lv2
- ifが増えそうなので、デコレータでラッピングして変化に強くしたつもり
- ユーザ側のアクセス領域が変わると死ぬ
- Lv3
- パーミッションを記事側に儲けて、ユーザの権限と合わせてジャッジ
- has_permission and …
- オレ仕様が増えすぎて管理し辛くなる
- パーミッションを記事側に儲けて、ユーザの権限と合わせてジャッジ
そろそろ辛いのでライブラリを使いたい
- DjangoのPermission
- userにPermissionをDB上で管理する
- Globalな範囲で権限管理したかったので合わなかった。
- Django-guardian
- キーに対してpermissionを設定するだけで良いため楽だったか?
- Djago-keeperを作ってみた
- オブジェクトにACLメソッドを乗っけた
DjangoにAuthenticationBackendを使っていない
Pandasのコミュニティの話
- 開発者向けドキュメント公開している
OpenAPIを利用したPythonWebアプリケーション開発
知らない界隈の話なので勉強になった。
OpenAPI InitiativeはREST APIの記述ルール
- OpenAPI Specification
- REST APIを記述するルール
- Swagger spec
- APIドキュメントとして使いやすい
- HTMLやMarkdownで生成出来る
- APIツールとして使える
- ソースコード自動生成など出来る
- Swagger
- Swagger UI
- Swagger Editor
- bravado-core
The theory of Serverless development by Python (理論から学ぶPythonによるサーバレス開発)
- ゴメンナサイ。何やら頭に残りませんでした。
ドメイン駆動
ドメイン駆動で解釈しづらいポイントとかをお話。
側面
- CQRS
- コマンドクエリ責務分析
- コマンド(副作用あり)、クエリ(副作用なし)
- 違うもの
- 悩みどころ
- 名前を大切にする
- 違和感を感じたら直す
- 良い名前を思いついたらチームで合意して直す
- 長過ぎる名前を避ける
- ヘキサゴナルアーキテクチャ
- ポーツアンドアダプタ
- アプリケーションは「設定」「アダプタ」の2種類のみ
- DIコンテナを利用しよう
- コンストラクタで依存性を注入する
- DIコンテナ管理用ライブラリ(inject)
- コンストラクタを汚さないで済む
- DBアクセスライブラリを利用しよう
- ORマッパーを使って良い
- DDDのリポジトリに押し付けるとツライ
Polyphony: Python ではじめる FPGA と CNN への応用
- 開発したソフトの話だったけど、なんとなく紹介(?)だけになっていたのでコメントしづらいです
- CNNの要素が無かったので残念。CNN実装作ったから使ってね!を押してたらやってたかも。
Pythonにおけるデバッグ手法
- ipythonを使え
SREエンジニアがJupyter+BigQueryでデータ分析基盤をDev&Opsする話
- データ分析基盤を導入する中での困りごとや解決方法などをつらつらと。
- 個人的に一番面白かったのであとで公開されたら見てみて下さい。