SciPy 2024 カンファレンスレポート

小山哲央です。 去年のSciPy 2023に引き続き、今年もアメリカで開催されたSciPy 2024に参加してきました。 現地の様子をこのレポートで伝えたいと思います。

SciPyについて

SciPy2024のロゴ

SciPy2024のロゴ

SciPy 2024は科学技術計算やデータの可視化を専門とした国際カンファレンスです。 カンファレンスの目的はPythonのユーザーや開発者が結集し、知見を共有することです。 SciPyと聞くとPythonライブラリのSciPyを連想される方が多いと思います。 しかし、実際は様々なPythonライブラリのコミュニティが多数参加するカンファレンスです。 例えば、 scikit-learnMatplotlib プロジェクトが参加しています。 そのため、科学に関するPyConであると表現したほうが適当です。

イベント概要は以下の通りです。

URL

https://www.scipy2024.scipy.org/

日程

  • チュートリアル: 2024年7月 8日(月)、 9日(火)

  • カンファレンス: 2024年7月10日(火)〜12日(金)

  • スプリント: 2024年7月13日(土)、14日(日)

場所

アメリカ合衆国、ワシントン州タコマ

会場

Tacoma Convention Center

参加者数

  • カンファレンス現地参加 638人

  • カンファレンスオンライン参加 114人

  • スプリント現地参加 238人

  • ファイナンシャルエイド 16名

  • ティーントラック参加者 7名

主催

NumFOCUS

参加目的

筆者は普段オープンソース活動の一環としてPyVistaというプロジェクトに参加しています。 このプロジェクトはPythonのデータ可視化ライブラリの中で近年最も注目されているものの1つです。 去年に引き続き今年もPyVistaグループの一員としてこのカンファレンスに参加しました。

さらに今年も、チュートリアルの共同議長をすることになりました。 チュートリアルの共同議長の活動としてチュートリアルのプロポーザルの募集とレビューの依頼および選別とスケジューリングを行いました。 チュートリアルの共同議長はSciPy2023から引き続きの活動です。 そのため、今年は去年の経験を活かしてよりスムーズに活動を行うことができました。

チュートリアル

1日目と2日目にチュートリアルが行われました。 1日目、講師の体調不良により急遽チュートリアルが1つ中止になりました。 そのため、チュートリアルの共同議長がキャンセルされた会場に急遽入り、参加者とのコミュニケーションを取ることになりました。 その際、Matplotlibの開発者であるHannah Aizenman氏 @story645 と話す機会がありました。 大学院生の頃から可視化に興味を持ち、Matplotlibの開発に携わっているとのことでした。

2日目は去年に引き続き、PyVistaのチュートリアルを行いました。 講師は以下のとおりです。

  1. Basin Sullivan 氏 (@banesullivan)

  2. Bill Little 氏 (@bjlittle)

  3. Jaswant Panchumarti 氏 (@jspanchu)

  4. Tetsuo Koyama (@tkoyama010)

Alex Kaszynski氏(@akaszynski)は今年はご家庭の事情で参加できなかったため、筆者達4人でチュートリアルを行いました。 PyVistaの詳細についてはSciPy2022の記事に書いていますのでそちらをご覧ください。

筆者はPyVistaの基礎的な使用方法の紹介を担当しました。 PyVistaをJupyterLabで使用する際の基本的な使い方を紹介しました。 さらに、PyVistaの機能を使ってサンプルデータを可視化する方法を紹介しました。

PyVistaのチュートリアルをする筆者

PyVistaのチュートリアルをする筆者

Bane Sullivan氏はPyVistaの高度な機能を紹介しました。 Bane Sullivan氏はPyVistaのプロジェクトの名付け親であり、PyVistaの開発をリードしています。 PyVistaのプロフェッショナルサポートを提供しているKitwareの従業員でしたが、去年からはKoBold Metalsに移籍しています。

今年はGeoVistaの作者であるBill Little氏が参加してくれました。 GeoVistaは地図データをPyVistaで扱うためのライブラリです。 Little氏はイギリス気象庁(Met Office)に勤めており、気象データの整理のためGeoVistaを開発しているとのことです。 Little氏は他にも地球科学データのライブラリirisを10年以上開発してきたことでも有名です。

さらに、Jaswant Panchumarti氏はPyVistaのエンジンであるVTKの高度な機能を紹介しました。 Jaswant Panchumarti氏はVTKの開発チームの一員であり、最近はVTKのWASMバージョンの開発に取り組んでいます。 VTKはC++で書かれた科学技術計算の分野で最も使われている可視化ライブラリの1つです。 PyVistaはそのラッパーとしてPythonからVTKを使いやすくしたものです。 VTKがWebAssembly(WASM)に対応することでPyVistaもブラウザ上で高度な可視化を行うことが可能になることが期待されています。

チュートリアルを通して、参加者とのコミュニケーションを取ることができました。 3次元の可視化を必要としている研究者やエンジニアが多く参加しており、PyVistaの需要が高いことがわかりました。

PyVistaのチュートリアルは午前中に行われましたが、午後には他のチュートリアルも行われていました。 筆者は共同議長としてpyOpenSciのチュートリアルのサポートも行いました。 pyOpenSciはオープンソースソフトウェアの開発者が研究者と協力して科学的なソフトウェアを開発するためのコミュニティです。 pyOpenSciのチュートリアルは研究者がPythonのパッケージングやドキュメンテーションの方法を学ぶことができる内容でした。 有益な情報を得ることができるチュートリアルでした。 しかし、チュートリアルの内容は上級者向けであるため、初心者の方には難しい内容だったと感じました。 運営側としてもこのチュートリアルは上級者向けであることを事前に伝えるべきだったとの反省がありました。

今年1年間チュートリアルの共同議長を務めてきた経験を活かし、来年も引き続きチュートリアルの運営を行いたいと考えています。

scipy2024チュートリアルの共同議長

scipy2024チュートリアルの共同議長 左が筆者

また、今回新しい取り組みとしてティーントラックが設けられました。 ティーントラックは10代の参加者を対象としたトラックで、Pythonの基礎的な使い方を学ぶことができる内容でした。 ティーントラックの参加者は7名であり、スポンサー企業のご子息の方が多かったです。 スポンサー企業にはPythonの教育に関心を持つ企業が多いため、親御様に好評だったようです。

ティーントラックの参加者

ティーントラックの参加者

論文のレビュー

SciPyの大きな特徴として、トークやポスターの付属として論文も出すことができるということがあります。 参加者には研究者が多いためカンファレンスに参加することが研究者としての実績になるように考慮されていることがわかります。 今年の論文はscipy-conference/scipy_proceedingsの2024ブランチに公開されています。 今回、写真の論文のエディターチームと食事をする機会がありました。 上記の管理に関わっている方々が集まっており、これまでの運営の経緯や今後の展望について話を聞くことができました。

SciPyでは論文の管理にGitHubを使用しています。 論文を提出する際にはリポジトリにMarkdown形式で論文を提出し、CI/CDパイプラインを使ってPDFをプレビューする仕組みでした。 レビュワーはPull Requestのコメント欄に論文の内容についてコメントを残すことでレビューを行います。 このシステムの利点は論文の管理がGitHubで行えるため、論文の変更履歴をGitHubの機能を使って管理できることです。 さらに、GitHubのPullRequestの機能を使用しているため、査読者以外の人が論文の内容について自由にコメントを残すことができます。

筆者はこの論文のレビュワーのボランティアを行いました。 レビュワーは論文の内容を確認し、論文がカンファレンスの基準を満たしているかを判断します。 筆者が今年レビューした論文は以下の通りです。

  1. Paper: Mamba Models a replacement for Transformers? #917

  2. Paper: THEIA: An Offline Tool for Tradespace Visualization #920

論文の内容については公開されているため、興味のある方はリンクを参照してください。 論文のリンクを見ていただくとわかる通り、GitHubのPull Requestとして論文が提出されています。

さらに、今年からはCurvenoteというサービスを利用して論文の管理を行っています。 CurvenoteはMyStというMarkdownの拡張機能を使って論文を書くことができるサービスです。 CurvenoteにはMyStの開発者であるRowan Cockett氏(@rowanc1)が関わっており、SciPyの論文の管理にも関わっています。 管理をCurvenoteに移行したことで運営スタッフが前述した論文のプレビューに使用するPDFを生成するCI/CDパイプラインの管理をCurvenoteに任せることができるようになりました。

科学技術計算の分野のオープンソースソフトウェアの論文執筆にはJOSS(Journal of Open Source Software)というジャーナルがあります。 JOSSおいてもSciPyConferenceの論文査読システムを参考にしているとのことでした。 論文の査読システムがオープンであり、執筆者も査読者もオープンに議論を行う。 そんな論文執筆の未来を感じました。

論文エディタチーム

論文エディタチーム右から2人目がRowan Cockett氏

ブース

カンファレンス会場には各組織がブースを出しており話を聞くことができます。 その中で印象に残ったブースをご紹介します。

Dask

Daskのブース

Daskのブース手前がSarah Johnson氏

Daskは大規模なデータセットを処理するためのPythonライブラリです。 DaskはNumPy、Pandas、Scikit-learnなどのライブラリと互換性があり、大規模なデータセットを処理する際に有用です。 Daskは分散処理を行うため、複数のコンピュータを使ってデータを処理することができます。 今回、DaskのブースではDaskの使い方を紹介するデモを行っていました。 写真手前にいるのはDaskをサポートしているCoiledで働いているSarah Johnson氏(@scharlottej13)です。 以前、来日した際に日本コミュニテイで食事をしたことがあります。 PyCon US 2024の開幕、Day 1ライトニングトークに挑戦の記事でも登場しますので、興味のある方はご覧ください。 また、Daskの開発者であるMatthew Rocklin氏(@mrocklin)もブースにいました。 氏はDaskの作者であり、現在も開発をリードしており、Coiledを起業しています。 Matthew Rocklin氏とは以前、NumFOCUSの委員会で一緒に働いたことがあります。 とても親しみやすい方で、DaskやCoiledについての質問にも丁寧に答えてくれました。 Matthew Rocklin氏はDask in Productionというトークも行っていました。 内容に興味のある方はリンクを参照してください。

Streamlit

Streamlitのブース

Streamlitのブース

Streamlitはデータサイエンスのためのアプリケーションを簡単に作成するためのPythonライブラリです。 従来、データサイエンスの結果を共有するためにはJupyter Notebookを使っていましたが、Streamlitを使うことで簡単にWebアプリケーションを作成することができます。 StreamlitのブースではStreamlitの使い方を紹介するデモを行っていました。 日本のコミュニティでもStreamlitは人気があり、PyConJPでもStreamlitのハンズオンが行われています。 興味のある方はPyCon JP TV #42: Streamlitを使ってQRコード生成アプリの作り方ライブデモをご覧ください。 Streamlitのブースに設けられていたディスプレイには、日本の開発者として有名なYuichiro Tachibana氏(@whitphx)も表示されていました。 Yuichiro Tachibana氏はStreamlitの開発にも貢献しており、サーバーレスのStreamlitアプリケーションを作成することができるstliteというライブラリを開発しています。

キーノート

キーノート

キーノートを行うJulia Silge氏

キーノートは日本での「基調講演」に当たるものです。 今年もカンファレンス3日間の間に1日1講演、計3回行われました。

その中で最も印象に残った1日目のJulia Silge氏(@juliasilge)のThe right tool for the job について紹介します。 氏はデータサイエンスの分野で活躍するデータサイエンティストであり、RやPythonを使ってデータ分析を行っています。 RやPythonはそれぞれ得意な分野があります。 氏はデータ分析の際には「適切なツールを選ぶことが重要である」と述べています。 氏はその両方を使ってきた経験から、片方の言語だけにこだわらず適切なツールを選ぶことが重要であると述べています。 また、片方の言語にあるツールがもう片方の言語にない場合もあり、それが新しいツールを作るきっかけになることもあると述べています。

余談ですが、SciPy2024と同じ週にJuliaCon2024も開催されていました。 そのため、カンファレンスの運営の提案でJuliaCon2024へのエールを送る動画を撮影しました。 言語の違いを超えてコミュニティを繋げることができるのは素晴らしいことだと感じました。 JuliaもPythonもどちらもオープンソースの言語であり、互いに切磋琢磨していくことでより良い言語を作り上げていけると思います。

JuliaCon2024へのエール

JuliaCon2024へのエール

去年のSciPy 2023でも述べましたが、Pythonの科学技術計算プロジェクトはほぼすべてPython以外の言語で作成されています。 そこを結びつけているのがグルー言語としてのPythonの強みであるとの認識を再確認しました。

トークセッション

トークセッションは事前にプロポーザルで選ばれた講演が行われるセッションです。 カンファレンス中に聞いたトークセッションで特に印象に残ったトークをご紹介します。

My NumPy year: From no CPython C API experience to shipping a new DType in NumPy 2.0

1件目はNathan Goldbaum氏(@ngoldbaum)によるMy NumPy year: From no CPython C API experience to shipping a new DType in NumPy 2.0です。 Goldbaum氏はQuansightで働いており、NumPy2.0の開発に中心的な役割を果たしています。 トークでは新しいNumPy DTypeの開発の裏話を紹介していました。 トークをきいていると、文字列データの扱いの話などはかなり複雑な話であることがわかりました。 筆者がメンテナンスをしているPyVistaでもNumPyを使用しているためNumpy2.0への対応にはチームとしてかなり悩みました。 しかし、Goldbaum氏のトークを聞いていると、NumPyチームの大変さはユーザーの比ではないことがわかりました。

写真は最後にGoldbaum氏が開発のときに何を考えていたかを説明しているところです。 開発がつらすぎるという気持ちを猫の写真とともに表示しており、会場から笑いが起こりました。

普段、NumPyを使用しているユーザーとしては、Scientific Pythonの基盤となるNumPyの開発の裏話を聞くことができてとても興味深かったです。

Nathan Goldbaum氏 遠い目をしている

Nathan Goldbaum氏 遠い目をしている

SciPy Tools Plenary

2件目はSciPyのツールに関するトークセッションです。 このセッションでは、SciPyのツールに関するプロジェクトの開発者が登壇し、プロジェクトの紹介を行いました。 このセッションは毎年開催されており、SciPyのツールの最新情報が提供されるためとても人気があります。 今年は以下のプロジェクトが紹介されました。 ただし、列挙しているのは一部です。

  1. Dask

  2. Xarray

  3. Jupyter

  4. Matplotlib

今回は特にJupyterの紹介が印象的でした。 Jupyterはデータサイエンスの分野で最も使われているツールの1つです。 今回の大きなトピックはJupyterのサードパーティーエクステンションであるJupyterBookの紹介でした。 JupyterBookはJupyterNotebookを使って書かれた本を作成するためのツールです。 Jupyterで分析したデータをそのまま本にすることができるため、データサイエンスの分野で非常に便利です。 日本でも大学の授業でJupyterBookを使っているところが増えてきているため、今後も注目が集まることが予想されます。 今回、JupyterプロジェクトからJupyterBookが正式にJupyterの一部として扱われることが発表されました。 今後もこのツールに注目が集まることが予想されます。 興味のある方はJupyter Project Updatesをご覧ください。

anywidget: custom Jupyter Widgets made easy

anywidgetのデモ

anywidgetのデモ

3件目はTrevor Manz氏(@manzt)によるanywidget: custom Jupyter Widgets made easyです。 AnywidgetはJupyterのカスタムウィジェットを簡単に作成するためのライブラリです。 JupyterのカスタムウィジェットはJavaScriptとCSSを使って作成する必要があります。 AnywidgetはPython内JavaScriptとCSSを指定することができるため、Jupyterのカスタムウィジェットを簡単に作成することができます。 図のGIFはAnywidgetのデモです。 今までは、Jupyterのカスタムウィジェットを作成するためにはcokkiecutterを使ってテンプレートからウィジェットを作成する必要がありました。 Anywidgetを使うことでPythonのコードにJavaScriptを埋め込むことができるため、以下のように簡単にカスタムウィジェットを作成することができます。

import pathlib
import anywidget
import traitlets

class CounterWidget(anywidget.AnyWidget):
    _esm = pathlib.Path("index.js")
    _css = pathlib.Path("styles.css")
    value = traitlets.Int(0).tag(sync=True)

筆者もJupyterのカスタムウィジェットを作成したことがありますが、テンプレートから作成するのは手間がかかります。 周りの人の評判もとても良く、今後の開発に期待が持てるプロジェクトだと感じました。

BoFセッション

BoFはBirds of a Featherの略で、司会が短いプレゼンテーションを行い、大部分の時間は出席者全員で議論を行うセッションです。 Birds of a Featherは一般的には「同類」という意味ですが、IT分野では「あるテーマについて集まった、非公式自発的な集団」という意味もあります。

Community Feedback on the NumPy 2.0 Release

今年はNumPy2.0の移行についてのフィードバックを議論するBoFセッションが行われました。 今回のメジャーバージョンアップではNumPyプロジェクトから事前にnightly wheelが提供されていたので各プロジェクトもリリース後すぐにNumpy2.0への対応バージョンをリリースできました。

会場からは以下のような意見が出されました。

  1. nightly wheelsが提供されているが、これを使っているユーザーはどの程度いるか?

  2. NumPyの関数が、0次元配列が適切であるようなケースでもほとんどの場合にスカラ値を返すことについて、どう考えているか?

20年以上にわたりPythonの科学技術計算の基盤となってきたNumPyがメジャーバージョンアップすることは大きな話題となっています。

Proceedings

SciPyの論文のプロシージングについてのBoFセッションも行われました。 今年はCurvenoteを使って論文の管理を行っているため、Curvenoteの使い勝手や今後の展望について議論が行われました。 前述の通り、論文の編集チームがこのBOFを開催しています。 論文のレビューワーは常に不足しているため、新しいレビューワーを募集していました。

今回、論文を提出した際にSciPyカンファレンスの先進的な論文管理システムに感銘を受け、レビューワーとして参加したいという方が2から3名いました。 筆者も去年から論文のレビューを行っていますが、動機はその人たちと同じでした。

レビューワー募集とは別に、レビューの方法についての議論も行われました。 その中で、自分のドメインとは異なる論文をレビューする場合、どのようにレビューを行うかについて筆者が質問しました。 自分のドメインと異なる論文をレビューする場合、論文の内容についての知識が不足しているため、レビューが難しいと感じることがあります。 そのような場合、論文の内容についてのチェックをするのではなく、それが論じているプロジェクトが外部のユーザーからどのように見えるかをチェックすることが重要だとの意見が出されました。 その際には、自分の手元の環境で論文の内容を再現することが重要であるとのコメントをもらいました。 SciPyの論文の基本は、オープンソースプロジェクトの成果を共有することです。 そのためには、ドメインは関係なく、論文の内容を再現できるようにすることが重要だと感じました。

ProceedingsのBOFセッション(左に座っているのが筆者)

ProceedingsのBOFセッション(左に座っているのが筆者)

ポスターセッション

ポスターセッションは各プロジェクトをポスターで紹介するセッションです。 セッション中は写真のように会場の一部にポスターが貼られています。

今年もPyVistaプロジェクトとしてはじめてポスターセッションに参加しました。 ポスターを制作する前に運営から#betterposterというハッシュタグが紹介されます。 これはMike Morrison氏 (@drmikemorrison) により提唱されたムーブメントです。 #betterposterのムーブメントについては、SciPy 2023の記事で紹介しています。 このムーブメントの元となった動画は How to create a better research poster in less time というタイトルでMorrison氏のYouTubeチャンネルに公開されています。 今回Morrison氏はSciPyの論文管理についてNext-level conference abstracts are coming to scienceという動画を公開してくれました。 興味のある方はぜひ動画を見てみてください。 SciPyカンファレンスに参加する人は皆、カンファレンスでの情報交換をいかに効果的に行うかを真剣に考えています。 筆者にはそれがとても心地よく感じられました。 画像はMyStプロジェクトとSciPyのポスターが並んでいる様子です。 いずれの、ポスターも#betterposterのテンプレートを元にして作成されています。 それにより、各プロジェクトの情報を効果的に伝えることができるようになっています。 今回のPyVistaのポスターも#betterposterのテンプレートを元にして作成しました。

PyVistaのポスターセッションに来た人は、GeoVistaに興味を持っている人が多かったです。 Bill Little氏はその場にはいなかったため、筆者がGeoVistaについての質問に答えることになりました。 ユーザーと対面で相談にのるよい機会ですので今後もポスターセッションへの参加は続けていきたいと考えています。

SciPyプロジェクトのポスター

SciPyプロジェクトのポスター

PyVistaプロジェクトのポスター

PyVistaプロジェクトのポスター

スプリント

スプリントの様子 Bill Little氏 (左) と筆者 (右)

スプリントの様子 Bill Little氏 (左) と筆者 (右)

最後の2日間はスプリントが行われました。 スプリントは自分の興味のあるオープンソースプロジェクトに対して、コードのテスト、バグの修正、新機能の追加、ドキュメントの改善など、様々な貢献を行うセッションです。 また、オープンソースの作者やメンテナがサポートすることで、オープンソース初心者に貢献の場を提供することも大きな目的です。

今年も去年に引き続きPyVistaのスプリントを開催しました。 スプリントにはGeoVistaの開発者であるBill Little氏が参加してくれました。 また、先程のMyStの開発者であるRowan Cockett氏も参加してくれました。 Rowan Cockett氏はMyStのスプリントも開催しており、そのスプリントでPyVistaをMyStに対応させる作業を行ってくれました。 これが、MyStでリリースされれば、PyVistaの3次元可視化がMyStで行えるようになります。 科学や論文執筆の世界がPythonコミュニティによって変わっていくのではとの期待が持てる作業でした。

MySt上で動作するPyVistaの3次元可視化

MySt上で動作するPyVistaの3次元可視化

スプリントに参加して毎年感じますがプロジェクト同士で議論をするにはスプリントが最適です。 SciPy2022ではMartinez氏の poliastro と議論が出来ましたし、SciPy2023はLittle氏の GeoVista と議論ができました。 さらに、今年はMyStのCockett氏と議論ができました。 他のプロジェクトと議論をすることで、自分たちのプロジェクトが今後どこに向かうべきかを見定めることができます。

最後に

今年もチュートリアル・カンファレンス・スプリント全日参加することができて満足しました。 特にスプリントでは他のプロジェクトと議論をすることができ、自分たちのプロジェクトの今後の方針を見定めることができました。 今回の参加もNumFOCUSのフィナンシャルエイドにより実現しました。 カンファレンスに参加するチャンスを与えてくださったことに対してここに記して感謝をいたします。 アメリカ渡航などの詳しい話はこちらのPodcastで話しています。 ぜひお聴きください。

scikit-imageのLars Grüter氏(右)とzarrのSanket Verma氏(左)と空港で記念撮影

scikit-imageのLars Grüter氏(右)とzarrのSanket Verma氏(左)と空港で記念撮影