Day1のオープニングです
基調講演(全体配信)
Day1のランチとPyCon JP Association 公開MTGの時間。Association公開MTGの時間は11:45~12:45。
Pythonista にとってはおなじみになっているドキュメンテーションツールといえば Sphinx です。
さて、そんな Sphinx を使っていて「こんなことは出来ないかな?」ということは無いでしょうか。
Sphinxは、本体には存在しない機能を自分の手で「拡張」することが出来ます。
このセッションでは、発表者の体験を踏まえて「Sphinxの作り方」を解説するとともに、ライブラリに対する機能拡張を行うための考え方を紹介します。
このセッションは登壇者の都合でキャンセルされました。
This talk has been canceled due to speaker's reasons.
A game can be thought of as a series of states. The characters in the game either interact with the scene or with each other. Even a small game has hundreds of states. We will discuss how to render these scenes and manage these interactions using three open-source projects - XState, PyScript and Atri.
このセッションは登壇者の都合でキャンセルされました。
This talk has been canceled due to speaker's reasons.
Rust has been taking the performance computing world by storm with its interesting approach to memory management. In this talk, we take a look at using Rust as a performance enhancing language and calling Rust inside Python using PyO3.
課題の背景
日本経済新聞社では、日々報道機関としてニュースを配信している。その中でも定期的にデータを更新する「チャートで見る日本の接種状況 コロナワクチン」コンテンツがある。このコンテンツは 特に人の健康や生命に関わる大事な情報であるため、データの間違いや表示の間違いは許されない。
課題
記者チームが公開されるデータに責任を持っている。
記者側がスプレッドシート上でデータを確認していたとしても、実際にWebページ上で正しく更新されているかは、いちいちページにアクセスして見ないと確認できない状態だった。
解決手段
そこで、ビジュアルリグレッションテストのように、何が画面に変更があればその差分をわかりやすく並べ表示することで、それが意図された変更なのかが誰でも判別することができる状態を目指せるのではないかと考えプロタイプを作ってみた。
新しい世界に飛び込むときの定番 Hello, world 。
Python に出逢い学び始めたとき print("Hello, world") を実行したひとも多いのではないでしょうか。
このトークでは、Python に慣れた今だからこそ改めて print("Hello, world") を実行し、その裏側で起きていることを深掘りしていきます。
Python の仕組みやシステムプログラミングの世界に Hello, world しましょう!
Pandasは構造化・半構造化データを直観的に加工・解析できる優れたPythonパッケージであり、データ分析分野を中心に、初級者から上級者まで幅広く使われています。
しかし、Pandasはマルチコアや遅延処理をサポートしないため、大規模なデータほど十分なパフォーマンスが得られにくいです。1000万行を超えるデータでは特に顕著であり、「Pandas遅いなぁ」と感じた方も多いのではないでしょうか?
本トークでは、より高いパフォーマンスを目指しているDask、PySpark、Vaexなどのデータ処理パッケージを紹介し、内部アーキテクチャや特徴、実際の処理時間やメモリ使用量などを比較検証していきます。
「とりあえずPandasで。」というスタンスから一歩踏み出し、データ規模や加工・解析内容に適したパッケージを使い分けられるようになりましょう!
Pybind11を用いたPythonのC拡張の開発について、基本的な使い方から、 C 言語レベルおよびPythonレベルでのテストやDevOpsパイプラインの構築を含む、関連する課題と実践している解法を紹介する。
皆さんはふだんPythonを書いているときにアスタリスク*
をどれくらい使いますか?
「あんまり使わないかも(というかそもそもそんなに使えるものなんだっけ?)」という方、このトークはあなたのためのものです。
このトークでは、*
にまつわるPythonの文法事項を整理します。
Pythonを書く上で*
は頻出ではないのですが、このトークでの*
との出逢いを頭の片隅に留めておくと、気持ちよく書ける瞬間が訪れますよ!(私は先日2つの辞書のマージが*
でスッキリ書けました)🌟💫🌟💫
We live in an era in which well-used information can improve our quality of life. Still, sometimes it can harm our privacy situations such as physical tracking. As more tools became available, more information about our physical bodies could be accessed. In this session, we will learn about skeleton tracking and have an approximation of the available technology, to analyse human group behaviour.
このセッションでは、イベント駆動アーキテクチャについて実用的なTipsを交えて解説していきます。普段は手続型のプログラミングに慣れている方が、設計パターンから非同期タスクの運用までを理解していただけるようお届けします。
私は、これまで自然言語処理に関連する Python ライブラリをオープンソースのソフトウェアとして公開してきました。その中で、どうすればライブラリを開発者に利用してもらえるか、どのようなライブラリが開発者に必要とされるか、常に考えながら開発を続けてきました。
そこで、今後の Python ライブラリ開発の参考になることを目的とし、工夫してライブラリの利用者が増えたこと、逆に失敗して利用者を減らしてしまったことを経験談としてお伝えしたいと思います。
また、実際に開発者に利用されている Python ライブラリを、自然言語処理関連のライブラリを中心に調査し、開発者に選ばれるライブラリにはどのような特徴があるか分析した結果もあわせてお伝えしたいと思います。
資料:https://speakerdeck.com/taishii/pycon-jp-2022
PythonとQGIS(オープンソースのGISソフトウェア)を用いて、「GTFS」と呼ばれる公共交通機関の路線・時刻表データを容易に可視化するツール「GTFS-GO」を開発・公開しました。当初よりアップデートを重ね、「GTFSの可視化」だけではなく「運行頻度集計機能」や「GTFSデータリポジトリ(試験運用中)との連携機能」が追加され、GTFS活用の幅が大きく広がっています。
本トラックでは、「GTFS-GO」とその開発の背景を紹介します。
2022年10月にリリースされるPython 3.11にて「PEP 654 *Exception Groups and except*」 がAccepted**され、asyncio.TaskGroup()が追加されます。これによりエクセプション、キャンセル処理が強化され、より柔軟にasyncioが進化します。
本トークではこのasyncio.taskgroupによって何ができるようになるのか、asyncioがどう変わるのか、お話ししたいと思います。
Pythonのテクニックは何があるでしょうか? ContextManager、デコレーター、継承、特殊メソッドなど色々な文法や知るべき技術があります。
ですがそれらを普段の開発でどれほど活用すべきでしょうか?
「新しく学んだので使ってみた技術が、後々のメンテナンス性を大きく下げていた」そんなことはよくあります。Pythonの文法や使える技術がそれぞれどういった場面に適しているか、むしろ使うべきでないかをお伝えします。
作りたいものの複雑さや、仕事とライブラリーのコードの違い、関わる人の人数などを念頭に説明します。
とくにこれから中堅になってくるPythonエンジニアが聴くべき(そして未来の失敗を避けるべき)トークになるでしょう。
Learn how model drifts in the production environment affects our machine learning models and how to track and assess them in Python so that the model remains relevant in production and makes fair and unbiased predictions over time.
休憩時間。
近年、様々な分野で使われるようになったWebRTCを使ってのクライアント・サーバ間のリアルタイム通信。
この技術はこれからのリアルタイム通信を利用したサービスに置いては必須の技術になりつつあります。
このトークでは、そんなWebRTCについて、FastAPIを利用してWebRTCサーバを簡易実装して、WebRTCの中身について実装とともに解説します。
Ever wondered about how to find bottlenecks in the electricity grid? Patient zero in a outbreak? Or recommending friends on a social network? This talk is for data scientists and other programmers who want to add another tool in their data science toolkit. We will discuss how tools like NetworkX in the Python ecosystem can be used to better understand and analyze network data.
PythonのWeb自動テストではSeleniumを使う方法が有名ですが、
作成・メンテナンスするのに、結構手間がかかります。
他の言語であれば、PupeteerやCypressという選択肢もありますが
できればPythonで実装したいと感じていました。
Playwrightは、TypeScriptで作成されたテスト自動化フレームワークで
多言語対応されており、Pythonでも利用できます。
このトークでは、Pythonで実装できるいくつかの自動化の方法と比較し、
Playwrightを使うことでより簡単に実装できることをお話します。
古くからあるパッケージングツールのsetuptoolsは今でもPEPへの追従などサポートされ続けています。
登場当初は多くの機能を持っていましたがそれらの機能はPEPでの議論などを通してwheelやpyproject.tomlのような標準フォーマットやpip,twineといった別のツールへと役割が分離されていきました。
setuptoolsが持っていた機能と現在の標準や別のツールとの比較を通してパッケージングツールの歴史を説明したいと思います。
私たちは日々、言語を喋る・書くといった文章を生み出す動作を当たり前のように実行しています。このような創造的な行為は人工知能が苦手とする領域だと議論されてきましたが、近年の研究成果に伴って実現可能な範囲が広がってきました。本講演では日本語の文章生成を題材に、基本的な処理の概要や、Pythonの自然言語処理ライブラリ「Transformers」を用いた実装、事業会社での実践事例や課題を紹介します。具体的には、最初に自然言語処理の急速な発展を下支えする機械学習の基本的な考え方を概観し、次に日本語を題材にした実装例を「守・破・離」の段階別に説明します。講師が所属する日本経済新聞社では大量の日本語のニュース記事を処理しており、文章生成技術の適用可能性も大きいです。実務での経験を基に、具体的な事例や直面する課題についても言及します。
AST(Abstract Syntax Tree、抽象構文木)は、Pythonインタープリターがソースコードを解析した結果を木構造で保持したもので、これがさらにbytecodeに変換された後、実行されます。また、CPythonでは、astモジュールを使って、ASTの中身を覗いたり、ASTの中身を書き換えることができるようになっており、この機能は、testingフレームワークやlinterなどのライブラリの中で活用されています。
このセッションでは、ASTを初めて知る方に向けて、ASTの概要と、astモジュールの活用事例について紹介します。
We set up implicit or explicit rules in many projects. Where to create what kind of files? What's the naming convention? What's the API conventions?
Instead of keeping these rules in your head, in docs, etc. and checking them manually, what if you could write the rules as code?
With static analysis, you can automate the entire process. In this talk you'll learn how to do exactly that.
Webフレームワークとして世界中で使われているDjangoですが、そのDjangoには標準でGeoDjangoというモジュールが含まれており、サーバーサイドで地理空間データを扱う際に広く利用されています(公式ドキュメント)。GeoDjangoには特有のORMが用意されており、実際にSQLを書くことなく地理空間データの処理(空間演算)を行うことができます。しかし、現在GeoDjangoのORMに関するまとまった情報は少なく、GeoDjangoを利用していてもそれらの機能を生かしきれてないパターンもあるかと思います。そこで本セッションでは、GeoDjangoが持つ便利なORMの紹介、および実装プロセスを簡易な地図アプリケーションでのデータ可視化を交えつつお伝えします。
現代において我々が使用している様々なサービスは、パーソナライズやレコメンデーションといった機能が当たり前の時代になっています。
レコメンデーションの課題として、行動履歴が十分にないユーザーに対してレコメンデーションすることが難しい(これをコールドスタート問題といいます)ということが挙げられ、さまざまな企業が工夫をしている状態です。
本トークでは、QAアプリ「ママリ」において、自然言語処理を利用したアプリチュートリアルの改善の裏側、および新規ユーザーにおけるコールドスタート問題に対してどのような対策を行っているのかについてご紹介します。
Jetson Nanoを用いたエッジAIの構築方法を紹介します。Jetson NanoはGPUを搭載した小型コンピュータです。画像認識や物体検知などAIを用いたリアルタイム処理が可能でコロナ禍の今、その活用の場は増えています。Jetson Nanoの開発に欠かせないJetPack SDKでは、エッジAI開発の助けとなるツールやPythonライブラリが豊富にそろっており、エンジニアも独自のアプリケーションを開発し世の中の課題を解決できるようになってきました。この発表ではエッジAIの構築におけるノウハウやエッジデバイスでアプリケーションを動かす上で経験した課題やその解決策を紹介します。
Day1のLTです。
Day1のClosingです。
Day2のOpeningです。
基調講演(全体配信)
Day2のランチとセッションの時間。Day2はスポンサー企画です。
現代は、会社やコミュニティで繰り返し行うタスクが多くあります。
また、日々のコミュニケーションはSlackなどのチャットを使うことが多いです。
そこで、PyCon JP開催に関わるさまざまなたいくつな作業を自動化するチャットボット(PyCon JP Bot)を作っています。
本講演では、Slackと連携するアプリケーションを作成し、チャットをベースにさまざまな作業を自動化する方法について紹介します。
Leadership in Energy and Environment Design (LEED) rating system claims to combat the increasing carbon footprint of buildings and certifies the ones with superior energy consumption performance. This talk presents a python led data-driven analysis to determine whether LEED certified buildings have reduced carbon footprint as claimed and test the validity of the LEED rating system.
政府統計ポータルサイトe-Statや政府保有の法人情報を情報提供するサイトgBizINFOなどのAPIで公的オープンデータが取得できます。
公的データは多種多様であり、家計の消費や企業の動向を自社の戦略に役立てたり、新規事業の市場規模を推測したり、様々な活用が考えられます。
しかし、実際にはデータを分析しようとすると扱いにくい点が多々あります。
ここでは、データ取得から面倒な前処理までをPythonで解消した例を実際の統計データ活用方法を交えて紹介します。
Security is of utmost importance to most applications in general and web applications in particular. Django being one of the most popular Python-based web frameworks, applications developed using Django are always on the radar of hackers who try to find the vulnerabilities in the Django application and exploit the same for their benefit. This talk will discuss how to secure Django Web application.
Django は3.0よりASGIをサポートしました。WSGIの後継として登場したASGIですが、実際にこうすれば使える、async/awaitで書きます。といった情報は多く見かけるようになりました。しかし、結局運用的に何が美味しいのか、パフォーマンス的に何が美味しいのか、そもそも実際に美味しいのかといった観点の情報はまだあまり世の中に多くありません。
今回はDjangoが正式にASGI対応を始める前のDjango 2.x時代からDjango Channelsを利用したASGIウェブアプリケーションを運用してきたLAPRASでの経験を踏まえ、Django標準のASGI対応をお伝えしていきます。
Mono-repository or not? That is a boggling question for many medium-to-large-sized development teams. As a growing company, we had to onboard new hires quickly while coping with flooding customer requests and increasing codebase complexity. We have merged 7 repositories into a single one and migrated to the Pantsbuild system, a Python-friendly modern build system. Here is our story!
Webアプリケーションでソーシャルログイン機能を提供したい時、Python Social Authの各種ライブラリを利用すると僅かな設定追加で簡単に実装がおこなえます
しかし、実際に運用を始めるとライブラリから様々な例外が送出されはじめ、OAuthに関する知識がないとそれが何を意味するものか判断できず、対応に苦慮します
本セッションでは python-social-auth/social-core で定義されているソーシャルログイン関連の例外クラスを概観し、それが 様々なIdPの実装やフローとどのように対応するか理解し、対処ができるようになることを目指します
都市のデジタル化において、その根幹をなす街づくりのためのデータ化が進み、日本全国の3D都市モデルの整備・活用・オープンデータ化が進んでいます。そこで、Google ColaboratoryやJupyter Notebookを使った、3D都市空間モデルの可視化や地理空間情報の表現方法のご紹介をします
Swarm intelligence is applied in robotics for guiding robots in unstructured environments. Applications where swarm robots are required to maintain a particular formation ranges from fire fighting to underwater exploration. We will see how the swarm robots can learn to acquire a target formation using reinforcement learning algorithm implemented with python using scipy,matplotlib,numpy framework.
皆さんの周りで独自のコーディング規約を採用しているプロジェクトはありませんか?
また、それらのコーディング規約は100%守られているでしょうか?
Pythonの一般的なコーディング規約はflake8やblackのようなLinter/Formatterでチェックできますが、プロジェクト独自の規約はチェックしてくれません。
このトークでは、Pythonの主要なLinterやFormatterで提供されていないルールをPylintのプラグインとして自作する方法をご紹介します。
休憩時間
Pytest Plugins are a useful tool for expanding Pytest's core functionality. Building a pytest plugin is not that hard and can encourage developers to better understand how to use your companies internal microservice or tool. Help your developers get the most out of your microservice by building a pytest plugin.
Jupyter Notebooks at their core are JSON documents that contain code, markdown styles and outputs. A lot goes on behind running a notebook - a notebook server runs, an IPython kernel is launched, a web client runs in your browser, and a ZMQ server routes traffic between them all. We will explore this architecture in this presentation.
統計解析や機械学習によるデータ需要の高まりによって、データの加工・利用のプロセスは複雑化する傾向にあります。近年、そうした複雑さに対抗する手段として、データの生成や利用の流れを把握する「データリネージ (Data Lineage)」が注目されています。
このデータリネージを手軽にはじめられるように、Python 製 OSS Stairlight を開発しました。SQL クエリ解析によって、データの生成から利用者によるデータ取得へ至る全体像を把握する “End-to-End(E2E) Data Lineage” の実現を目指しています。
このトークでは、データリネージの概要や問題意識を共有した後、Stairlight のアプローチと、導入によって期待される効果をご紹介します。
Pythonで実装される機械学習やデータ分析などのプログラミングでは、扱うデータがドメインに基づくことがとても重要です。そこでは、Pythonが動的型付け言語であるため、扱うデータに対して「意図しないデータの格納を許してしまう」という課題があります。また、扱うデータが複雑だった場合、「ソースコードからデータの仕様を理解できない」という課題もあります。特に、ドメインが重要となるデータを扱う場面ではこれらの課題が顕著に現れます。本発表では、課題を解決するために、扱うデータに対して「堅牢性」と「可読性」を向上させる2つのライブラリ、pydanticとpanderaの活用方法を提案します。また、2つのライブラリを同時に利用する利点を紹介します。さらに、導入という意思決定において把握が必要なリスクについても紹介します。多くの方に課題解決の機会を提供します。
絵師が「これは上手い」と感じる他者のイラストに巡り合ったとき、得てしてそのイラストを分析し、自らの引き出しを増やそうとします。
では絵師がどのようにイラストを分析するか、皆さんは想像できるでしょうか。
この発表を聞けば、そんな絵師の分析プロセスが少し想像できるようになり、イラストをより楽しむことができるようになります。
なお、この発表は、昨年のPyCon JP 2021で発表した内容の拡張版です。
前回カバーできなかった色や光、キャラクターのそれぞれに着眼した、より感性的な戦略について、Pythonスクリプトで再現しながら解説します。
この発表を機に、普段イラストを楽しむ皆さんが、もっとイラストを好きになれるはずです。
そしてイラストもPythonも、さらに身近な存在になることでしょう。
Jupyter notebooks have been around us since 2015. Since then, it has been used in blogs, books and fields such as data science.
Nonetheless, some of the features that make notebooks great also discourage teams from using them. In this talk I'll explore these issues, some solutions, my personal experience and share a python tool I've built to make them more amicable for software teams.
概要
ビジネス目的のデータ・アナリティクスおよび機械学習でPythonを使ったアプローチはたくさんあります.
これらのノウハウや考え方を活用し, 普段楽しんでいるスポーツデータの解析・可視化を行うことで普段見ているスポーツの違った側面が見えたり, 何よりもPython使いが大量のデータを扱ってエンジニアリングやデータ解析・分析をするという自学自習の場にもつながると思っています.
この発表では私が実践している「メジャーリーグのビッグデータ解析をPySparkで行う」という事例を元に, Pythonを使ったスポーツデータ解析およびビッグデータの扱い方の入門的なお話をいたします.
3.11 is the latest release of CPython. Scheduled for October 2022, Python 3.11 comes with new language features like exception groups and asyncio task groups. The biggest change in 3.11 compared with 3.10 and below is speed. 3.11 is the fastest version of CPython yet. In this talk, we will showcase benchmarks on Python 3.11’s speed gains and where to expect improvement in your code.
量子コンピューターがニュースで頻繁に取り上げられ、名前を聞いたことある人も増えてきているだろう。このトークではそもそも量子コンピューターとは何かという基本から、量子コンピューターがどんなことに使えそうかといった応用先をお話する。特に、量子コンピューターを支えるSDKであるQiskitを中心に紹介したい。Qiskitは主にPythonで書かれており、Pythonのライブラリ開発の観点からも興味深い点が多いだろう。
2017年頃から情報システムの運用を支えるために Python を利用してきたノウハウをお話します。
私が所属する会社では、金融サービスを提供しており、監査やデータガバナンスを重要視しています。
現在、情報システムの実務者が1名に限られておりますが、 Python を始めとする自動化ツールを援用することで現実的な時間で対応しています。
Day2 のClosingです。Lost and found, 一社振り返り, 座長挨拶。