鈴木たかのりです。アイルランドで開催されたEuroPython 2022に参加して発表などをしてきたので、現地の様子をこのレポートで伝えたいと思います。
EuroPythonとは
EuroPythonは、ヨーロッパ地域で開催されるPythonに関するカンファレンスです。毎年ヨーロッパの各地域で開催され、今年はアイルランドのダブリンで開催されました。なお、2020年と2021年はオンライン開催となっており、今回は2019年以来のリアル開催となりました。
なお、EuroPython 2019にも筆者は現地で参加しています。そのときの様子は以下のレポートを参照してください。
- 第1回 EuroPython前夜~1日目オープニング、キーノート ―コミュニティとの関わり方いろいろ | gihyo.
jp - 第2回 2日目
「1994年のPython」、日本から参加のポスターセッションとライトニングトーク | gihyo. jp - 第3回 3日目キーノートはPythonパフォーマンスの今昔、注目のPython 3.
8、Pythonの今後 | gihyo. jp
EuroPython 2022のイベント概要は以下の通りです。
URL | https:// |
---|---|
日程 | チュートリアル: 2022年7月11日 カンファレンス: 2022年7月13日 スプリント: 2022年7月16日 |
場所 | アイルランド、ダブリン |
会場 | The Convention Centre Dublin |
参加費 | 375ユーロ |
主催 | EuroPython Society |
筆者はトークでの発表のために参加しました。カンファレンスのみに参加したので、キーノートやトーク発表などを中心にレポートします。
1回目はDay 1
会場到着から受付、オープニング
ホテルから歩いて20分くらいでカンファレンス会場です。カンファレンス会場はダブリン中心を流れるリフィー川沿いにあります。会場は外から見てかっこいいなと思いましたが、中もとてもきれいで過ごしやすい会場でした
受け付け手前でボランティアスタッフにより2種類のネックストラップが配られていました。ストラップにカメラの絵が描いてあり、撮影OK/
受付で、名札に付ける
その後メイン会場に入りオープニングです。主催者であるEuroPython ScietyのChairであるRaquel Douから挨拶とイベントの案内がありました。ハイブリッドであることや、トーク以外の各種イベントの紹介などがありました。ホールは各座席で机を引き出すことができるようになっており、PCなどが使いやすいなと感じました。
Keynote 1:Python's role in unlocking the secrets of the Universe with the James Webb Space Telescope
- タイトル: Python's role in unlocking the secrets of the Universe with the James Webb Space Telescope
- スピーカー: Dr. Patrick Kavanagh
- ビデオ: https://
www. youtube. com/ watch?v=TLaRrGSQ9rg
最初のキーノートはPatrick Kavanagh博士による、ジェイムズ・
たくさんの人の前で話すの久しぶりだそうです。キーノートこの日
参考:130億年前の銀河の姿を明らかに…ジェームズ・
この宇宙望遠鏡はテニスコートくらいの大きさがあり、14の国が開発に関わっているそうです。この望遠鏡は2021年の12月に打ち上げ
1月に望遠鏡が無事展開
そこでデータを修正するキャリブレーションパイプラインを構築して使用します。このパイプラインの構築には何年もかかったそうです。
このパイプラインはPythonで作られているそうです。パイプラインの最終チェックはこのトークの数日前に行われたそうです
パイプラインで扱うデータは基本的にSciPy、NumPy、Astropyなどを使用して、各ノードごとに独立して開発ができたことがメリットだと述べていました。また、このパイプラインの開発は公開して行われていたそうです。確かに調べてみるとGitHubのリポジトリがありました。パイプライン自体を実行するにはstpipeというライブラリを使用しているそうです。このライブラリも、このプロジェクトのために作られたようです。
作成したパイプラインが正しく動作しているか確認するために、テスト用のデータを作成するMIRISimというソフトウェアもあるそうです。MIRI
そうして望遠鏡が取得したデータをパイプラインが処理し、最初の画像が取得できたのです。
宇宙規模のものすごいプロジェクトですが、普段自分たちがプロジェクト開発で行っていることと進め方については共通点が感じられました。長期間に渡るプロジェクトなのでもっといろいろ大変だったとは思いますが、基本的な進め方は同じなのだなと感じて勇気をもらえました。
Making Python better one error message at a time
- タイトル: Making Python better one error message at a time
- スピーカー: Pablo Galindo Salgado
- ビデオ: https://
www. youtube. com/ watch?v=aFfyQGa6Me8
スピーカーのPablo氏はCPythonのコアデベロッパーであり、Python Steering Councilのメンバーでもあります。この発表ではPablo氏が中心となってPython 3.
Python 3.
File "integrate.py", line 11
def integrate(method, x, y, sol):
^
SyntaxError: invalid syntax
当然ですが、ここだけ見てもエラーの原因はわかりません。元となるコードは以下のようなものです。エラーが発生しているの原因は、辞書の{
が正しく閉じていないためです。
それから、いくつも正しい位置でエラーを指摘できないコードの例を示しました。一番お気に入りのエラーは以下のようなものだそうです。これは確かになにが問題かまったくわかりませんね。
File "example.py", line 10
^
SyntaxError: unexpected EOF while parsing
そこで、Pablo氏が中心となって新しいパーサーmatch
、case
が使えるようになったそうです。
PEG parserによって新しくなったエラーメッセージの例を示します。たとえば、最初に出てきたような辞書が閉じていない例では、以下のように{
が閉じられていないことを示してくれます。
my_dict = {"a": "b", "c": "d"
def foo(a, b, c):
...
File "example.py", line 1
my_dict = {"a": "b", "c": "d"
^
SyntaxError: '{' was never closed
しかし、実際にこのようなメッセージを追加することは困難だったそうです。適切なエラーメッセージを表示するには、コンピューターが
>>> x = [x, y x, w]
File "<stdin>", line 1
x = [x, y x, w]
^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?
このようなエラーメッセージを出力するために、2つの要素がスペース開けて並んでいるときにこのエラーとするとしてしまうと、以下のようなパターンでも同じエラー
>>> for variable collections: # inキーワードがない
>>> kf"some_string"" # 文字列のプレフィックスが正しくない
>>> match foo:
このように間違えてエラーメッセージが出ないようにするために、さまざまなパターンに対応する必要があり、そこが難しいとのことです。
また、Python 3.
今後もさらにエラーメッセージを便利にしたいので、ぜひ開発に参加してほしいと語っていました。その入り口としてGuide to the ParserというPythonのパーサーに関するドキュメントが紹介されていました。このドキュメントの中にエラーメッセージを追加する方法も書いてあるそうです。
Python 3.
その他のトーク
1日目のトークをいくつかざっと紹介します。
From pip to poetry - Python (many) ways of packaging and publishing
こちらはリモートでの発表でした。リモート発表はYouTubeの画面と同じものがスクリーンに表示されており、それを参加者が見る形式です。
発表の内容はPythonパッケージを作成、公開するためのツールのそれぞれの違いを紹介していました。pip、pipenv、poetryをそれぞれ紹介し、初心者向け、他のツールへの依存、仮想環境管理の有無など観点で比較していました。
Choosing the right database for your next project - Looking at options beyond PostgreSQL and MySQL
PyCon JPでも発表したことがあり、EuroPython Societyの元ChairでもあるMarc-Andre氏の発表です。このトークでは次の新しいプロジェクトをはじめるときに、より適切なデータベースを選択するためにいろいろなデータベースを紹介するという内容です。
最初にhttps://
まず、よく使用されるデータベースとしてMySQL、MariaDB、PostgreSQLがあげられましたが、データベースを選定する際はその用途がOLTPなのか、OLAPなのかが重要だという説明が最初にありました。
- OTLP:Online Transaction Processing、オンライントランザクション処理
- OLAP:Online Analytical Processing、オンライン分析処理
また対象となるデータベースの複雑性
- Schema complexity:スキーマは単純か複雑か
- Cardinal & Temporal complexity:カラム数が多かったり、行数が多いか。データは頻繁に更新されるか
- Query complexity:クエリのパフォーマンスや結合が多いか
- Deployment complexity:クラスターか。VM、コンテナーなど。ディザスターリカバリー対応が必要か
- Operational complexity:マネージドサービスか、DevOps対応しているか、ダウンタイムなしでアップグレードが必要か
そのあとは、さまざまな特徴のあるデータベースをジャンルごとに紹介していました。組み込みDB、データウェアハウス、ドキュメントDBなどは聞いたことはありましたが、他にGPUベースのDB、時系列DB、Geo用DB、列指向DBなど、さまざまな知らないジャンルのデータベースがあることを知りました。
ある用途に向いたデータベースが存在しないか、Database of Databasesを見たりしてちょっと考えてみたいなと思うような発表でした。
CPython Developer Panel
CPythonのコアデベロッパーによるパネルディスカッションです。スピーカーは以下の7名です。名前は写真の左から写っている順番です。
- Łukasz Langa:PSFがフルタイムで雇用している開発者、Blackの作者
- Steve Dower:Windows上のPythonとセキュリティが専門
- Mark Shannon:Faster CPythonチームのテックリード
- Pablo Galindo Salgado:Python 3.
10、3. 11のリリースマネージャー - Batuhan Taskaya:パーサーとコンパイラーを担当
- Ken Jin:typingモジュール、Python Fasterチーム
- Irit Katriel:Exceptionグループの実装、Python Fasterチーム
Łukasz氏が司会進行で、他の6人が質問に回答するという形式で進行していきます。最初の質問は
- Steve: 最初の貢献はバグレポートでした。すぐに修正されたのでとてもびっくりしました。その後Windowsのインストーラーを手伝うようになりました
- Mark: 最初のバグレポートは足し算に関するものでした
- Pablo: 最初はドキュメントに対する貢献でした
- Batuhan: Python 2から3に移行するときに非推奨ではない機能に対して変更を加えました
- Ken: 最初の貢献はpickleに関するものですが、そのPRはまだマージされていません。その後ドキュメントに関する貢献をしました
- Irit: 自分たちのコードがPython 3.
7から3. 8に更新するときにテストが落ちた。そこにはPython 2. 6からGCに関するバグを見つけて報告した。
次の質問は
- Irit: ロックダウン中に当時のマネージャーから週に1日Pythonに取り組んでみないかと言われて始めました。今はMicrosoftでフルタイムでPythonについて取り組んでいます
- Ken: 最初はtypingに取り組んでおり、Guidoがメンターになってくれました。CPythonの他の分野手を広げてPabloがメンターをしてくれました。そしてコアデベロッパーになりました
- Butuhan: Pythonの内部を調べるのが楽しく、AST
(抽象構文木) などについてのPRを送りました。ある日PabloからASTについてのメールが来て、一緒に作業をすることになり、Pabloがメンターになってくれました。そしてコアデベロッパーになりました - Mark: 動的プログラミング言語のVMの実装で博士号をとったので、PythonやRubyに取り組むのは自然なことでした。Pythonはとても良い言語で挑戦的な研究対象です。
その後聴衆から質問を募集し、コードフォーマッターについて、WebAssemblyについて、Steering Councilについて、Python 4.
筆者の発表:Automate the Boring Stuff with Slackbot(ver.2)
- タイトル:Automate the Boring Stuff with Slackbot(ver.
2) - ビデオ: https://
www. youtube. com/ watch?v=3k7qHhUHuP8 - スライド: Automate the Boring Stuff with Slackbot(ver.
2)
カンファレンス初日の夕方には筆者自身のトークがありました。発表内容は、PyCon JPのSlackで運用しているチャットボットの開発の実例をベースに、日常の面倒なタスクをSlackbotで楽をするというものです。2019年に同様の内容で各国のPyConで発表をしていましたが、その後SlackのAPI変更とそれに伴う使用ライブラリの変更を受けて、さまざまな情報を更新しました。
発表資料の作成時には、まず実際に動作するコードを作成して、その内容をベースにスライドを作成しました。Slackでbotなどのアプリ開発をするときには、セキュリティの関係でトークン発行や権限設定などの事前準備が必要となります。そのあたりを伝えないとそもそも開発がはじめられないため、きちんと説明しましたが、情報として少し盛り込みすぎたかなとも思いました。結果として発表時間が少し足りず、メインとなる後半のケーススタディでコードをあまり説明できなかったのが悔やまれます。
発表しているときに何人かたくさんうなずいて聞いてくれる人がいたので、ちゃんと伝えたいことは伝わったのかなーと思っています。なお、 日本語バージョンをPyCon JP 2022で発表予定ですので、興味のある方はぜひそちらの発表を聞いてもらえるとうれしいです。
質疑応答では2件質問がありましたが、1つ目は意味がうまく取れず、司会のイクバルさんに日本語で意味を教えてもらって事なきを得ました
Q:Slackのスレッド内でのメッセージ対応はどうすればよいですか?
A:全メッセージを取得できるのでスレッド内のメッセージも対象となります。メッセージ送信時に引数を指定するとスレッドの中に送信もできます
Q:どこでこのプログラムを動かしていますか?
A:PyCon JPのボットはEC2のようなサーバーで動かしています。Boltはサーバーレスにも対応しているので、ぜひチャレンジしてみてください
ライトニングトーク
カンファレンス1日目の最後はライトニングトークです。1人持ち時間5分で、さまざまな発表がありました。いくつか紹介します。
- 最初にライトニングトークの案内を、スタッフのVB氏が外からリモートで実施。しかもすでにビールを飲んでいる。
- Cyclone DDSというデータ配信システムの紹介
- PytchというScratchからPythonへの橋渡しをするプロダクト。Pythonでコードを記述してScrachのように動作させてゲーム等を作成できる
- ファイルのパーミッションに関する問題。
os.
のように間違えてchmod(f, 700) (正しくは 0o700
)指定しているコードが存在するということを、https:// grep. で検索して示していましたapp/
会場の様子
ここではトーク以外の会場の様子を少しお伝えします。
ランチとコーヒーブレイク
ランチは3日間毎日提供されます。3種類の中からメインを選ぶという感じで、1日目は中華風の炒め物を選びました。ランチには毎回デザートもついていて、1日目はフルーツが盛りだくさんで個人的にとてもうれしかったです。
午前と夕方にはコーヒーブレイクもあり、コーヒー、紅茶とクッキーなどのおやつが出ます。疲れた脳に甘いおやつが染み渡ります。
企業ブース
ランチ、コーヒーブレイクなどが行われる0階
企業ブースの全体の様子は以下のような感じです。ここに写っているのがMain Forum全体の右半分といったところです。右奥には丸テーブルがあり、座ってランチをとったり休憩ができます。
コロナ禍ということもあるのか、全体的に広々とスペースを使っているなという印象でした。
その他の話題
ここではカンファレンスとは直接関係ない話題を少し書こうと思います。
日本からの移動
このカンファレンスは筆者にとって久しぶりの海外旅行となりました。いろいろ情報を調べているときに、以下のツイートを目にしてびっくりしました。
これからヨーロッパに来る人。
— m-take (@takeonomado) June 27, 2022
・乗り換えダメ。直行便を。
・バッグは機内持ち込み。
・スーツケースを預けるならAirtag必須。
・ドイツの交通機関はスケジュールに組み入れない。
年間50〜150フライトを15年続けてますが、現在のヨーロッパの空港状況は未体験の崩壊ぶり。
どうも空港の職員が減っているところに、コロナの反動で旅行者が増えて空港が混乱しているようです。荷物がなくなるのは最悪なので、今回は荷物も必要最小限にして持ち込み手荷物のみにしました。ちょうどいいスーツケースがなかったので、アールワイレンタルで軽いスーツケースをレンタルして対応しました。EuroPythonのあとにヨーロッパ旅行もしていたので、11泊12日の旅行をたったこれだけの荷物で過ごしました。服は圧縮バッグで圧縮しました。途中で洗濯をすることで、このサイズでも十分なんとかなるなと感じました。また、荷物を預けなくてよいので、乗り降りはとてもスムーズでそこはメリットだなと感じました。
久しぶりの成田空港は
カンファレンス前日の飲み会
ダブリンについてカンファレンスの前日に、日本から参加しているイクバルさん
お店の1階でビールを飲んでいると、偶然にもMarcさんとその友人が階段を上がってきました
明日からがカンファレンス本番ということもあり、この日は21時ごろと早めに解散となりました。外に出てみるとまだ全然明るいです。治安的には明るいので安心して歩いて帰れるということはありますが、感覚的に
まとめ
EuroPythonのカンファンレンスの1日目の様子のレポートは以上です。久しぶりの現地開催のカンファレンスを楽しむことができました。次回はカンファレンス2日目、3日目の様子として興味深いトーク、Social Event、筆者のLTなどをお伝えします。