PyCon JP 2024の振り返り
先日(2024/09/28)、PyCon JP 2024へスピーカーとして参加してきました。
本記事はその記録です。

トーク
今回は「データフレームライブラリ徹底比較」というテーマで発表しました。
当日公開した資料については以下からの閲覧が可能です。
この内容についてはPythonのコミュニティ、エコシステムで公開することに自分の中で価値を見出していました。その有効な手段としてPyCon JP 2024での発表が考えられたため、プロポーザルとして提出をしていました。当日は「このような観点で整理された調査を見たことがなく、その上で非常に価値のあるものだから是非とも資料を公開してほしい(意訳)。」というかなりありがたいコメントもいただけて、少しでも目的を果たせたと思い、本当に良かったと思いました
スポンサーブース
昨年もそうだったのですが、「この会議を実現するためにスポンサーしていただいている企業の方々とは話さないといけない」という考えのもとで9割ほどの企業とお話しさせていただきました。技術軸でさまざまな企業が取り組む事業を認識したり、解像度を高められたりしたので、良い時間を過ごせたとは思います。
まとめ
そんな様子でPyCon JP 2024に参加してきました。運営の方々、本当にありがとうございました。日本で開催されるPyConへの参加は3回目(3年目)ですが、今回も様々な観点で学びの多い機会になりました🙋
PyCon JP 2025は広島で開催です!
日程: 2025年09月26日-2025年09月27日 (カンファレンス)
会場: 広島国際会議場
Python Kansai #03 with Mix Leap Study #74の振り返り
先日、Python Kansai #03 with Mix Leap Study #74に登壇者として参加してきました。
本記事はその記録です。
Python Kansai #03 with Mix Leap Study #74とは?
Python Kansai #03 with Mix Leap Study #74とは、Python Kansai*1というPythonに関する関西でのコミュニティおよびイベントとMix Leap Study*2というLINEヤフー主催のLINEヤフー大阪オフィス大阪オフィスで開催される勉強会の共催となっています。
以下の日時、場所で開催されました。
- 日時:2024年4月17日 19時から21時
- 場所:LINEヤフー株式会社 大阪グランフロントオフィス
個人的には、Python KansaiとMix Leap Studyのどちらも初めての参加でした。関西のPythonを使うエンジニアとしては親和性の高い(と勝手に感じている)イベントになります。また、しばらく関西に住んでいる身としては、グランフロント大阪が会場というのはとても良いと感じますね…

トーク
ありがたいことにスピーカーとして参加させていただき、「Polars入門」というタイトルで発表しました。2024年以降、個人的にPolarsを使い始めたのですが、その決断の経験に基づく「Polars入門」したくなるような話をしました。当日のスライドは公開されているため、気になった方は見ていただけると幸いです。
当日、会場の方々にPandas、Polarsをそれぞれの使用経験を伺いました。目視でざっくりと数え上げた結果は以下でした。
- Pandasの使用経験がある方:95%
- Polarsの使用経験がある方(Pandasの使用経験がある方も含む):5%
つまり、Polarsの使用経験がある方がほとんどいなかったです。念の為、運営してくださっていた小川さんのXのポストも添えさせていただきます。
会場にpandas =>polarsしてる人はあまりいなかった。実は、私は今年の頭に移行しようとしたが、geopolarsがまだ機能が少なかったので、やめた口です。#mixleap #PythonKansai
— 小川英幸 | 著書: Pythonデータ分析ハンズオンセミナー (@OgawaHideyuki) 2024年4月17日
この現状を把握できたのは最も大きな収穫でして、まだまだPolarsの魅力の伝え甲斐があるなと感じられました。このインタラクティブなやり取りができるのはオフラインでの開催の良さですね。
他の方の発表も聞いていたんですが、どなたも基礎というよりは応用的な内容で興味深かったです。
その他
この機会に対する雑多な話を以下に記録しておきます。
資料の作成において、以下のスライドを参考にして、ChatGPTと二人三脚で作成しました。少なくとも目次の作成や初動はとても早くなりますね。
挿絵についてもChatGPTにより、DALL-E 3を使って画像を作成しました。明確な目的を持って使った初めての経験だったので良かったです。ちゃんとそれっぽいものが出力されますね。
当日は緊張もあってかバタバタしてしまい、ステッカーをもらったり、看板の写真を撮れず、ちょっと後悔しています…軽食も用意してあり、とてもありがたかったです。ただ、こちらもバタバタしてしまい、(モラルの範囲内で)十分にいただけなかったなと後悔しています…余裕のある人間になりたい。
資料中にTypoがチラホラあるので、なんとかしたいですね…対策を考えています。
まとめ
そんな様子でPython Kansai #03 with Mix Leap Study #74に参加してきました。運営の方々、本当にありがとうございました。様々な観点で、とても学びの多い機会になりました🙋次回以降のPython KansaiもMix Leap Studyも参加したいと思います。
ノートブックをキレイにするためのTips
※
「PyCon APAC 2023」のPoster Sessionにおいて発表した「ノートブックをキレイにするためのTips」を記事として書き起こしたものになります。
ポスターは以下から閲覧が可能です。
概要
Jupyter NotebookやGoogle Colaboratoryなどのノートブックは、データ分析などの目的で使用されるインタラクティブにコードの記述や実行が可能な開発環境です。作成したノードブックを他者や未来の自分が改めて閲覧や実行をする可能性がある場合、実装の意図を伝えるために可読性を高く、意図した振る舞いを担保するために堅牢性を高くすることが大事です。ただし、ノートブックはそれ自体がソフトウェアとして実装されるものではないことから、可読性や堅牢性を向上させるメリットとコストのトレードオフを特に注意する必要があります。本発表では、ノートブックの可読性や堅牢性を向上させる(キレイにする)ために、可能な限りコストをかけずにメリットを得る方法(Tips)を紹介します。ご自身の管理されているノートブックの状況に合わせて、採用を検討してください。
管理コストの低いパラメータの扱い方
調整の可能性があるパラメータは、様々なセルに記述するのではなく、可能な限り少ないセルに集約すると、見通しが良く、管理コストが低くなります。そして、ノートブックの冒頭にあると、さらに見通しが良いです。実行毎に指定する値は、実行者が入力する仕組みにすると、その旨を伝えられます。
パラメータの集約
# 乱数の種 RANDOM_SEED = 2023 # PyCon APAC 2023のセッション数 NUMBER_OF_SESSIONS = 5
実行者が入力する仕組み
email_address = input("Eメールアドレスを入力してください: ")
Eメールアドレスを入力してください:
コードに残さないセキュアな情報の扱い方
他者への共有が望ましくないパスワードなどのセキュアな情報は、漏洩するリスクから、コードでの管理が望ましくありません。実行者に入力させる仕組みにするか、環境変数として管理をすると、その旨を伝えられます。
実行者が入力する仕組み(入力内容をマスク)
from getpass import getpass password = getpass("パスワードを入力してください: ")
パスワードを入力してください:
環境変数として管理
import os password = os.environ.get("PASSWORD")
意図を伝えるための変数と定数の定義
変数や定数を定義する際は、型ヒントやデータクラスにより、どんな内容を意図しているのかを示すことができます。
型ヒントによる意図の表現
conference_name: str = "PyCon APAC" conference_year: int = 2023
データクラスによる意図の表現
from dataclasses import dataclass @dataclass class Conference: name: str year: int
conference = Conference(name="PyCon APAC", year=2023)
マジックナンバーの防止
マジックナンバーになり得る値は列挙型で定義をしておくことで、以降のコードにおいてマジックナンバーを防止することができます。
列挙型によるマジックナンバーになり得る値の定義
from enum import Enum, unique @unique # 重複を防止 class Prefecture(Enum): # ※一部省略 TOKYO = 13 OSAKA = 27
print(f"PyCon APAC 2023の開催地:{Prefecture(13).name}")
後続処理への影響を避けるバリデーション
後続処理が期待していない値を検知するために、可能な限り早期にバリデーションをすると良いです。また、データのバリデーションを実現するライブラリであるpydanticを活用することで、パラメータや変数(定数)を容易かつ早期に検知することが可能です。
早期のバリデーション
FIRST_YEAR = 2010 assert conference_year > FIRST_YEAR
早期のバリデーション(pydantic)
from pydantic.dataclasses import dataclass, Field FIRST_YEAR = 2010 @dataclass class Conference: name: str year: int = Field(ge=FIRST_YEAR)
conference = Conference(name="PyCon APAC", year=2023)
関数の振る舞いを伝える簡易なテスト
doctestを使うことで、関数の振る舞い伝える簡易なテストの実現ができます。それに加えて、テストであることによって関数が意図した振る舞いであることを担保できます。
doctestを使った簡易なテスト
def add_year(year): ''' >>> add_year(2023) 2024 ''' return year + 1 import doctest doctest.run_docstring_examples(add_year, globals())
セル内の冪等性を担保した変数の扱い方
特定のセルを複数回実行した場合であっても、後続処理に意図した値を伝えるために、セル内の冪等性を担保した変数の扱い方をすると良いです。例えば、変数を使いまわさない(変数の再代入をしない)ことが挙げられます。
変数を使いまわさない(変数の再代入をしない)
year = 2023
# year = year + 1 next_year = year + 1 # 冪等
# print(year) print(next_year) = year + 1 # 冪等
その他
- テキスト(Markdown)のセルによる説明の追加
- 適度なセルの分割
- 適度なファイルへの分割
- フォーマッターの導入
- リンターの導入
- Gitの導入
- 「すべてのセルを実行」で問題なく実行されることを確認
- CI(継続的インテグレーション)の導入
- コードレビューの実施(意図が伝えられていない箇所の洗い出し)
- 「出力をすべて消去」した上で管理(オプション)
技術カンファレンスにおけるポスター発表の準備(備忘録)
先日、PyCon APAC 2023という技術カンファレンスにポスターセッションのスピーカーとして参加してきました。
ポスターセッションでの発表(以下、ポスター発表)では、スライドを使った発表とは異なる準備が必要でした。本記事はそんなポスター発表の準備の備忘録です。今後、PyConに限らず、技術カンファレンスにおいて、ポスター発表をする方々の参考になれば幸いです。
参考までに作成したポスターは以下です。
準備
前提として、用意していただける展示パネルのサイズは90.0cm×180.0cmでした。せっかくなので1枚のポスターを用意したい、その上でなるべくポスターのサイズを大きくしたいと考え、A0(84.1cm×118.9cm)を選択しました。
ポスターを作成するために使用するツールは「Google Slides」を選択しました。
Google SlidesでA0のポスターを作成するためにページ設定を84.1cm×118.9cmに変更しました。
デザインや様式については「学生・研究者のための伝わる! 学会ポスターのデザイン術」を参考にしました。
印刷はラクスルさんを利用しました。
他社さんとの比較が十分にはできていませんでしたが、よく名前を知っていたのが決め手で選択しています。用紙の種類について、今回印刷するポスターは画像がなく、文字が多かったため、半光沢紙を選択しました。PDFで入稿しました。
半光沢紙(オンデマンド印刷専用紙)
・特徴
オンデマンド専用の紙種です。 フォト光沢紙よりも光の反射を抑えた仕上がりで、文字が多いデザインにおすすめです。
ありがたいことにかなりキレイに印刷していただきました。

持ち運びはDAISOの「書類ケース 大」を使いました。
ポスターが届く時の段ボールでも良さそうだったんですが、値段も「300円(税込330円)」安くオススメです。久しぶりに使ってみると、フタが取れたりしていたので、養生テープなど貼ったりして安定させることが良さそうです。
その後
Speaker Deckにて公開しました。
まとめ
本記事をベースラインとして捉えていただいて、技術カンファレンスのポスター発表に興味のある方にとって参考になれば幸いです。
PyCon APAC 2023の振り返り
先日、PyCon APAC 2023にポスターセッションのスピーカーとして参加してきました。
本記事はその記録です。

トーク
当日に会場で、後日にYouTubeで視聴しました。特に印象に残った3選を挙げます。
好きとか嫌いとかはいい、練習してテストを書けるようになるんだ
テストコードの一歩目として非常にオススメです
自分の発表でも言及していたのですが、低コストで導入できる「better than nothing」な打ち手として、doctestがオススメなんですよね・・・
Pythonで スナップショットテスト
スナップショットテストとは?
● 前回成功時の結果との一致を確認するテスト
そもそも「スナップショットテスト」を初めて知りました。選択肢という点で得られるものがありました。
業務で使える一歩進んだPython使いになるために
すごく大事だと思っているテーマがまとまっています。
● インデントが深すぎると脳への負荷が高すぎる → 複雑度をツールで計測したり、for 文になったら分割。とにかく小さくする。
複雑度や凝縮度を計測するツールとしては、以下などが考えられますね🤔
- radon(radon · PyPI)
- lizard(lizard · PyPI)
- xenon(xenon · PyPI)
- flake8-cognitive-complexity(flake8-cognitive-complexity · PyPI)
- cohesion(cohesion · PyPI)
個人的には、複雑度や凝縮度を改善させるためのリファクタリングを実施するにあたって「ツールを活用した目標の設定と評価の導入*1」は必要だと考えています。それぞれがどのような使い勝手なのかを確認し、どのように活用できそうか考えてみたいところです。
スポンサーブース
「この会議を実現するためにスポンサーしていただいている企業の方々とは話さないといけないな」という考えのもとで9割ほどの企業とお話しさせていただきました。ノベルティも沢山いただきました。特に気に入っているのは、Findyさんからいただいた「タイポ用心」のお守りです!
Day2始まりました!!
— Findy(ファインディ) (@findy_code) 2023年10月28日
Day1とは別のクイズを用意しているので、昨日来てくださった方もぜひ遊びに来てください🫣
お守りも追加したので見に来てください🌟#pyconapac #pyconapac2023 #pyconjp pic.twitter.com/JF9T2NmYtg
技術カンファレンスではありますが、技術軸でさまざまな企業が取り組む事業を認識したり、解像度を高められたりしたので、良い時間を過ごせたとは思います。
ポスターセッション
ポスターセッションにて、「ノートブックをキレイにするためのTips」というタイトルで発表しました。
ポスター発表では課題に共感いただいたり、打ち手に納得してもらえたり、フィードバックをいただいたりと、良い時間となりました。本発表では、ノートブックにおけるセキュアな情報の扱い方を紹介していましたが、タイムリーなことに、Google Colaboratoryではシークレットを管理する機能がリリースされたようです。とても便利そうですね。
You can now safely store your private keys, such as your @huggingface or @kaggle API tokens, in Colab! Values stored in Secrets are private, visible only to you and the notebooks you select. pic.twitter.com/dz9noetUAL
— Colaboratory (@GoogleColab) 2023年11月1日
また、これまでオンラインで参加していたコミュニティ(飛騨高山Pythonの会 - connpass、はんなりプログラミングの会 - connpass)の方々とも初めてオフラインで挨拶したりとしました。
前回は最後から2番目が発表だったこともあり、それまで物理的にも気持ち的にもバタバタしていたため、発表以外の行動が十分ではなかった気がしています。今回は逆にインタラクティブな発表であったためかバタバタせず、割といろんな行動ができたと思っています。そのため、全体としてとてもいい時間を過ごせたと思っています。
アフターパーティーには参加していなかったのですが、そこでも展示していただいたようです。少しでも話の種になっていたらうれしいです。
その他
スプリントについて、昨年は参加したものの、今回は参加しませんでした。雰囲気が公開されていたのですが、会場や特にランチが良さそうで後悔しています。
発表においてノートパソコンは不要だったことと、荷物の制約もあり今回は持参していませんでした。iPhoneで十分でした。たまにはそんな参加もいいかもしれないです。
改めてですが去年も発表していました。
daikikatsuragawa.hatenablog.com
この一年で、去年の発表やその資料を見てくださって話してくださる方が数人いました。そのときに、あらかじめ自分の考えを理解してもらえていて、一度の発表がジワジワと恩恵をもたらしてくれるんだと実感しています。今回も会期は終えたものの何かにつながればいいなと淡い期待を抱いています。
まとめ
そんな様子でPyCon APAC 2023に参加してきました。運営の方々、本当にありがとうございました。様々な観点で、とても学びの多い機会になりました🙋今年は結果的にスポンサーブースに重心を置いていましたが、「社会の課題に対して、技術を使ってどのように解決するのか(しているのか)」と言った話を伺えたことが、よかったです。…それでは、来年もよろしくおねがいします🙇
次回のPyConJPは2023年9月らしいですね。
アドベントカレンダー作成記2022
これは何?
2019年以降、Qiitaのアドベントカレンダーに参加していました。今年はある機械学習ネタを公開したいと思っていたのですが、マッチングするテーマがありませんでした。そこで「機械学習」というテーマのアドベントカレンダーを作成しました。是非、ご覧ください。
私としてはテーマを作ること自体が初めてだったので、諸々を振り返ります。
振り返り
まずは全体について数字で結果を振り返ります。以下、2022年12月26日時点での数値です。
| 項目 | 件数 |
|---|---|
| 参加者 | 3 |
| 購読者 | 43 |
| いいね(合計) | 21 |
| 記事数 | 6 |
提示した数値がそれぞれ0ではなく、少なくとも意味のあるアドベントカレンダーを作成ができたとは思っています。Better than Nothingです。関わってくださった皆様、ありがとうございます🙇♂️。
ただし、アドベントカレンダーという企画を想像すると、記事数が25件を超えなかったことは残念ではあります。理由は以下だと思っています。
- 作成日が遅かった(11/23)
- 自分に影響力がない
- 最悪自分が埋められる状態にない
一回やってみたので次回は色々と作戦を立てられるかと思いました。来年リベンジしたく思います。
ちなみに・・・
冒頭でこんなことを記載していました。
今年はある機械学習ネタを公開したいと思っていたのですが、
実はこれは間に合わず断念しました・・・これは後に本ブログにて公開したく思っています。
