PyCon 2024 トークネタメモ
トーク概要1
応募URL
PyCon Kyushu 2024
タイトル
トラック
Web Programming
言語
日本語
概要(400文字まで)
ログを出力しましょう、とはよく言われますが、何を、どこまで、出したら良いのかはログを出す目的がないとイメージしづらいものです。とりあえず色々実装してからログを出すことを後で考えるという人も多いのではないでしょうか。とりあえずそれっぽいログ実装をして、テストや運用が始まってから情報が足りずに困った、という人も多いのが実情です。このトークでは、ログ出力が何に使われるのか、どうやって実装するとよいのか、の全体像をPython+Webの文脈で紹介します。
詳細(300文字以上)
ロギング(Logging)の話題は多くの切り口があります。それぞれの切り口、レイヤーについてログ出力関連の技術を紹介します。
ログを出そう。まずはloggingモジュールの基本設定から
処理状況を伝えるINFOログ。なにを出したら良い?
INFO、WARNING、ERROR、状況に合ったログレベルを設定しよう
複数サーバーで出力されたログを1箇所に集約しよう
エラーが起きたらログを見る?エラーログは一番分かりやすい用途
エラーじゃないけど、これどういう状況?エラーがないときに効果を発揮するINFOログ
運用中の問い合わせに答えるためのトレース情報
運用開始前にも効果を発揮、想定外の操作を行うテストのログ
フロント操作、サーバー処理、DB問合せ。trace_idによるログ情報の関連付け
構造化ログによるデータ処理
備考(一般公開されない)
オプション
この題材を選んだ理由やきっかけ
概要に書いたとおり。ログ出力は、実装後に困った経験がないとイメージしづらいものです。また、その経験があれば適切なログ出力ができるかというとそうでもありません。Python界隈でもログ出力に関連するツールが充実しつつあります。ログ出力の用途を知り、現在のツールを知り、その効果を把握したうえで実装前の設計時点で考慮できるようにする、そんなプログラマーが増えるとよいと思い、このトークを提案します。
オーディエンスが持って帰れる具体的な知識やノウハウ
ログ出力の用途、現在のログ関連ツールの状況、ログ出力の効果
オーディエンスに求める前提知識
ログ出力なんも分からん、という方
ログ出力とか要らんでしょ、という方
ログ出力実装してみたけど役に立ってる感じがしない方
ログはあるけど追うのが大変だと思ってる方
オーディエンスのPythonレベル
初級、中級
発表資料の言語
日本語のみ
ネタ
トーク概要2
応募
PyCon PH 2024
PyCon Kyushu 2024
PyCon mini Shizuoka
PyCon mini 東海
Title
Pythonはどうやってlen関数で長さを手にいれているの?(PyCon JP 2017再演)
Category
Other: Core Python for Beginner (not advanced)
Duration*
30min
Audience Level
Beginner
対象者
Pythonは入門したが、なんだかしっくりこない..
なんでlenは関数なんだろう
len()関数だなんてPythonはオブジェクト指向じゃないな
そのように感じている、Python入門レベルから次の段階に進みたいと思っている方。
Abstract* / 説明
Pythonには文字列やリストなど、長さをもつオブジェクトがあります。長さを手に入れるには、文字列なら、name.length ではなく len(name) のようにlen関数を使います。len関数はどうやってnameに入っているオブジェクトの長さを手に入れているのでしょうか。if文にはTrue/Falseとなる条件式を指定しますが、それだけでなく文字や数字、自分で作ったデータ型も渡せます。if文はどうやって与えられたオブジェクトがTrueなのかFalseなのかを手に入れているのでしょうか。この発表では、Pythonのプログラムがどうやって必要な情報を手に入れているのか、また、自分で実装するときにどう実装すればlen()やif文やfor文に指定できるのかを説明します。
Objectives* / 目的
Pythonビギナーのためのデータ型とプロトコルの紹介
簡単なプログラムを書けるようになったPython入門者が次のレベルに進むには、プログラミング言語のより深いレベルでどのように動作しているかを理解する必要があります。
このトークでは、入門レベル向けに Python のデータ型の概念、とくにプロトコルについて紹介します。 データ型の仕組みを理解することで、より複雑なプログラムを書くことができ、他のプログラミング言語のしくみも理解できるようになります。
Detailed description / 概要
脱初心者、のためのデータ型入門
len() はどうやってオブジェクトの長さを手に入れているのか
if はどうやって指定したオブジェクトを使っているのか
for はどうやって指定したオブジェクトを使っているのか
データ型が長さを返す、条件式に使える、繰り返し可能、のような動作を満たすための条件、プロトコル
まとめ
メモ
len() の仕組み
for の仕組み
トーク概要3
応募
PyCon mini 東海
Title
ハッシュテーブルとダイクストラ法のデバッグと可視化
デバッグで学ぶアルゴリズムとデータ構造
printデバッグで可視化するアルゴリズムの世界 - Pythonによるアルゴリズムのステップ実行
printデバッグで可視化するアルゴリズムとデータ構造
Category
その他(コンピューターサイエンス)
Duration*
30min
Audience Level
初心者
対象者
コンピューターサイエンスって難しそう、と感じる方
データ構造とアルゴリズムに興味がある方
実際のコードを通してアルゴリズムの理解を深めたい方
アルゴリズムの教育に関心がある方
Abstract* / 概要
このトークでは、Pythonにおけるアルゴリズムとデータ構造の関係や動作の理解を深めるために、ハッシュテーブルのオープンアドレス法、チェイン法、そしてダイクストラ法について、簡単なデバッグ手法を用いて動作を可視化します。
参加者は、ハッシュテーブルの衝突解決戦略とグラフアルゴリズムの動作について、途中経過を視覚化する方法と、その表示を通してプログラムの内部でなにが起きているのか、体験を通して学べます。
Detailed description / 詳細
ハッシュテーブルの可視化
ハッシュテーブルの基本となる概念の紹介。
オープンアドレス法による衝突解決の説明、線形探索法を用いた実装例の紹介。
チェイン法による衝突解決の説明
ハッシュテーブルの状態変化の可視化デモ
ダイクストラ法の可視化
ダイクストラ法のアルゴリズムの解説
コンソール出力を用いたダイクストラ法の途中経過の可視化手法のデモ
流れ
1. イントロダクション: コンピューターサイエンスに触れてみよう
2. ハッシュテーブルのオープンアドレス法の説明と動作デモ
3. ハッシュテーブルのチェイン法の説明と動作デモ
4. グラフの種類と、ダイクストラ法の概要紹介
5. ダイクストラ法の途中経過をコンソールで可視化する方法の実演
6. まとめ、Q&A
備考(主催者宛)
とくになし
Objectives* / 目的 / この題材を選んだ理由やきっかけ
このトークは、アルゴリズムとデータ構造の関係、そしてデバッグ手法を用いてアルゴリズムの動作とデータの状態に対する理解を深めることを目的としています。このトークを通して、アルゴリズムに対する苦手意識を減らし、プログラムの動作に対するデータ変化を追跡する手法を知ってもらいたいと思います。
この題材を選んだ理由やきっかけ
書籍「独学コンピューターサイエンティスト」の翻訳をした際に、アルゴリズムの紹介をかなり分かりやすくステップバイステップで書いているにも関わらず理解が難しいところがいくつかあることに気がつきました。それは、時系列でのデータ変化と、データによって変化するプログラムの動作の関係が文章と絵だけでは掴みきれないことではないかと考えました。そこで補章を追加し、プログラミングの一般的なデバッグ手法であるprintデバッグを用いて「データ」と「動作」を可視化し、その時系列変化を追う方法を紹介することにしました。 デバッグ手法や、データ構造とアルゴリズムという題材は、例えば何らかのWebフレームワークを学ぶように触れることは実践の現場では少ないと思います。
メモ
トーク概要4
応募URL
PyCon mini 東海
タイトル
トラック
言語
日本語
概要(400文字まで)
クラウド時代のログ出力では、JSONによる構造化ログや呼び出し元のコンテキストを含めた出力が必要とされます。このトークではstructlogを使い、実際のWebアプリケーション開発でDjango、Celery、Sentryのコンテキストを繋いでログ出力する例を紹介します。
詳細(300文字以上)
structlogはOut-Of-The-Boxで簡単に使える便利なログ出力ライブラリ、ではありません。使いやすいラッパーライブラリは気軽に使い始められるメリットがあります。しかし、ある程度複雑な構成で標準ライブラリやフレームワークのログ出力もまとめて扱うには、始めやすさよりも、追跡しやすいログを簡単なコードで手軽に出せることが大事になってきます。
クラウド時代のログ出力では、ログを機械的に扱えるように、構造化されたJSONフォーマットが求められます。また、各ログの追跡可能性を高めるためにはログのコンテキスト情報をフレームワークのログ出力にも含めることが求められます。こういった追跡可能なログによって、トラブル時の調査にかかる労力は大幅に削減されます。
structlogはこのようなニーズに合わせて自由にカスタマイズが可能ですが、そのカスタマイズ性の高さは最初の導入ハードルにもなっています。
予定しているアジェンダは以下の通りです。
クラウド時代のPython+Webにおけるログ出力に求められる構造化とコンテキスト(3分)
クラウド時代にお勧めのロギングライブラリstructlogについて(5分)
structlogが提供する構造化ログ出力とセットアップ(5分)
structlogのコンテキスト情報出力とその便利な使い方(3分)
structlogのコンテキストをdjangoからceleryに連携する(5分)
structlogのコンテキストをSentryに連携する(5分)
まとめと質疑応答(4分)
この題材を選んだ理由やきっかけ
多くの開発者がPython標準のログ出力ライブラリを使用していますが、複雑なクラウド環境で発生する問題を効率的に解析するには限界があります。structlogは、そのカスタマイズ性の高さと、ログをJSON形式で構造化して出力する能力により、ログデータをより機械的に解析しやすくすることが可能です。
このトークを通じて、参加者にstructlogの効果的な使い方を伝えることで、開発業務がよりスムーズに、そして生産的に進むことを目指します。
オーディエンスが持って帰れる具体的な知識やノウハウ
ログ出力の用途、現在のログ関連ツールの状況、ログ出力の効果
structlogの具体的な使い方
オーディエンスに求める前提知識
ログはあるけど追うのが大変だと思ってる方
クラウド時代のWebアプリ開発や、そのデバッグで苦労した経験
オーディエンスのPythonレベル
中級
発表資料の言語
日本語のみ
ネタ
トーク概要5
考えてみたけど新ネタとして予定していた「MyST-Parserの中身を読む、拡張を作る」を2時間くらいが良いネタにまとまらなかったので、諦めました。
応募URL
タイトル
(仮)MyST-Parserの何か
トラック
言語
日本語
概要(400文字まで)
詳細(300文字以上)
この題材を選んだ理由やきっかけ
オーディエンスが持って帰れる具体的な知識やノウハウ
オーディエンスに求める前提知識
オーディエンスのPythonレベル
中級
発表資料の言語
日本語のみ
ネタ
MyST-Parserで [text](link.md#heading) を扱う