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

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

SciPyについて

SciPy 2023は科学技術計算やデータの可視化を専門とした国際カンファレンスです。カンファレンスの目的はPythonのユーザーや開発者が結集し、知見を共有することです。

SciPy2023のロゴ
SciPy2023のロゴ

SciPyと聞くとPythonライブラリのSciPyを連想される方が多いと思います。しかし、実際はさまざまなPythonライブラリのコミュニティが多数参加するカンファレンスです。たとえば、scikit-learnMatplotlibプロジェクトが参加しています。そのため、科学に関するPyConであると表現したほうが適当です。

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

URL https://www.scipy2023.scipy.org/
日程 チュートリアル:2023年7月10日(月⁠⁠、11日(火)
カンファレンス:2023年7月11日(火⁠⁠~14日(金)
スプリント:2023年7月15日(土⁠⁠、16日(日)
場所 アメリカ合衆国、オースティン
会場 AT&T Hotel & Conference Center
参加者数 カンファレンス現地参加 535人
カンファレンスオンライン参加 70人
スプリント現地参加 250人
ファイナンシャルエイド 11人
メンターシッププログラム 86人
主催 NumFOCUS

参加目的

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

さらに、今年はカンファレンス運営のボランティアに申し込みました。その結果、チュートリアルの共同議長をすることになりました。チュートリアルの共同議長の活動として、チュートリアルのプロポーザルの募集とレビューの依頼および選別とスケジューリングを行いました。

チュートリアル

1日目は去年に引き続き、PyVistaのチュートリアルを行いました。講師はAlex Kaszynski氏@akaszynskiとBane Sullivan氏@banesullivan⁠、そして筆者です。PyVistaの詳細については昨年の記事に書いていますので、そちらをご覧ください。

PyVistaによる高度なCGをプレゼンするAlex氏
PyVistaによる高度なCGをプレゼンするAlex氏

筆者はPyVistaの利用事例紹介のパートを担当しました。PyVistaのチュートリアル内でわかりやすい事例を紹介するために、最近公開されたPyVistaアドオン的な存在のGeoVistaを使用しました。ライブラリの作者はBill Little氏@bjlittleで、便利な地図作成機能でPyVistaを補完することを目的としています。

チュートリアルの前にLittle氏にGitHub上で開発の方針について質問をしました。Little氏はイギリス気象庁(Met Office)に勤めており、気象データの整理のためGeoVistaを開発しているとのことです。Little氏は他にも地球科学データのライブラリirisを10年以上開発してきたことでも有名です。今回の良かった点は、GeoVistaについての紹介資料を事前にLittle氏と十分に準備できたことです。反省点は、事前に英語の原稿で話す内容を準備したにもかかわらず、緊張のせいでわかりづらい英語になってしまったことです。

GeoVistaの紹介スライド
GeoVistaの紹介スライド

2日目は以下のチュートリアルに参加しました。筆者が参加したチュートリアルは、PyVistaも含めすべて可視化に関するチュートリアルでしたが、その中ではBokehのチュートリアルが最も参加者が多かったです。

  1. hvPlot and Panel: Visualize all your data easily, from notebooks to dashboards
  2. Interactive data visualization with Bokeh

いずれもイントロをスライドで行い、チュートリアルはJupyterLabを使用して行うものでした。今年はスポンサーであるQuansightがインフラスポンサーとなり、チュートリアルの環境の提供を行いました。Quansightが中心となって開発をしているNebariというオープンソースのプラットフォームでJupyterLabの環境を提供し、希望者がそれを使用するという形式でした。Quansightについては後述のブースの項で紹介します。

ボランティア

筆者は今年初めて当日ボランティアにも参加してみました。当日ボランティアの作業には受付とTシャツ配りがあり、運営のボランティアとは別のものです。筆者はTシャツ配りに参加しました。

当日ボランティアは参加者に会場の場所を案内する仕事もあり、参加者との交流が深まりました。手空きの時間にはパソコンで作業をしたり、他のボランティアと雑談をしていました。当日ボランティアに参加しているメンバーはカンファレンスに思い入れの深いメンバーが多いため、雑談中に有益な話を聞くことができました。

当日ボランティアの1人であるGajendra Deshpande氏@gcdeshpande、写真右端)はSciPy 2023の後に開催されるEuroPython 2023にも参加予定で、今年日本で開かれるPyCon APACにも参加する予定があるとのことです。

ボランティアメンバー
ボランティアメンバー

SciPyの大きな特徴として、トークやポスターの付属として論文も出すことができるということがあります。参加者には研究者が多いため、カンファレンスに参加することが研究者としての実績になるように考慮されていることがわかります。今年の論文はscipy-conference/scipy_proceedingsの2023ブランチに公開されています。

また、新規参加者の定着を目指してメンターシッププログラムが近年設けられました。これは、カンファレンスの参加経験があるメンターに新規参加者がメンティーとしてマッチングされるプログラムです。カンファレンス参加者であれば誰でも登録することが可能です。

マッチングの際には運営がメンターとメンティーの興味関心が近くなるように考慮をします。メンターはメンティーと現地で待ち合わせをして最低1回のミーティングを行い、カンファレンスの内容の説明とオープンソースコミュニティの参加方法などの相談を行います。筆者もメンターとしてプログラムに参加し、メンティーとミーティングを行いました。メンターとメンティーの間の会話は外部に公開しない規約があるため、メンティーは心理的安全性を担保された状態で質問することができます。新規参加者であるメンティーは知り合いが少ないため、気軽に話せる相手を運営側が提供するのは良いプログラムだと思いました。

ブース

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

NumFOCUS

主催をしているNumFOCUSは、研究、データ、科学計算におけるオープンソースプロジェクトを資金面で支援する非営利団体です。PyVistaプロジェクトもNumFOCUSの支援をうけており、追加したい機能がある場合NumFOCUSに申請をすることで開発資金の支援を受けられます。

NumFOCUSのブース
NumFOCUSのブース

また、PyDataという教育プログラムを提供してコミュニティ主導の教育も積極的におこなっています。毎回、写真のように支援しているプロジェクトのステッカーを配ることが恒例になっています。

Open-Source Science

Open-Source Science(OSSci) は、NumFOCUSの活動の一環として設立されたばかりの組織です。

Open-Source Scienceのブース
Open-Source Scienceのブース

近年は科学の研究にもオープンソースソフトウェアが幅広く使われるようになってきました。しかし、科学者はソフトウェアは専門外のため、どのオープンソースが自分に役立つかを知ることができません。この組織は、そうした科学者とオープンソースプロジェクトを結びつけることを目標としています。

カンファレンス期間中にOpen-Source Science主催のパーティがあり、科学者の参加者や友人にこの活動を広く知ってほしいとアナウンスをしていました。

Quansight

Quansightは、AIとMLのイノベーションの基盤であるオープンソースソフトウェアを活用することに特化したデータ、サイエンス、エンジニアリング企業です。チュートリアルで紹介した今年のインフラスポンサーです。参加メンバーには科学技術計算系のオープンソースメンテナが多数おり、オープンソースソフトウェアを積極的に推進していることが伺えました。代表の方に伺ったところ、ビジネスとオープンソースソフトウェアのマッチングを行い、メンテナのキャリアに貢献をしたいとのことです。

Quansightのブース
Quansightのブース

今年チュートリアルで提供されたNebariというプラットフォームは、Jupyter環境を管理者が望む形で任意の環境にデプロイできることを目指しているとのことです。NebariはQuansightが中心となり開発していますが、オープンソースで開発をしています。

ちなみに、Nebariというプロジェクト名は日本の盆栽の「根張り」という言葉から取られたそうです。プロジェクト名を決める際は「高度にカスタマイズ可能で拡張可能なオープンプラットフォームを提供する」ことを目的に生態系をイメージした植物の名前が募集されました。その際、盆栽に詳しいメンバーがおり、その人の案が採用されたとのことです。詳しい経緯についてはNebariプロジェクトのName change discussionをご覧ください。

キーノート

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

その中で最も印象に残った1日目のMichael Droettboom氏@mdboomOpen Source Contributors in Space and Timeについて紹介します。これは2000年以降のPythonの科学技術計算系オープンソース文化についての講演です。スライドはすべてJavaScriptのアニメーションで作成した力作でした。

Droettboom氏によると、2000年にはパッケージマネジャーのようなものはなく、Vaults of Parnassus: Python Resources.というサイトにPythonのリソースが集約されていたそうです。現在のGitHubやPyPIの役割をそのようなサイトが担っており、現在のようにGitを使った管理ではなく、パッチによる管理が行われていました。そのようにして、オープンソースプロジェクトは大きくなっていきました。

オープンソースにはコード、イシュートリアージ、ドキュメンテーション、プロジェクトマネジメント、イベント企画、プロモーションなどのさまざまな貢献方法があります。また、コミュニティも体制を整えてそれらの貢献を受け入れてきました。

Michael Droettboom氏は、コミュニティの体制は分類すると以下のようになると言います。

コミュニティ形態の分類
コミュニティ形態の分類
  1. federationはコントリビューターが多くユーザーと明確に分類されているプロジェクトです。汎用的な目的のプロジェクトに多く見られ、cpythonプロジェクトはこの形態に分類されます。
  2. clubはコントリビューターが多いがユーザーと明確に分類されていないプロジェクトです。専門的な目的のプロジェクトに多く見られ、astropyプロジェクトはこの形態に分類されます。
  3. toyはコントリビューターが少なくユーザーも少ないプロジェクトです。開発初期でコントリビューターが自分のために作成したプロジェクトがこの形態に分類されます。
  4. stadiumはコントリビューターが少なくユーザーが多いプロジェクトです。開発が進み、ユーザーが多くなったプロジェクトです。

またオープンソースプロジェクトは、年代が経つに従い増えていきます。⁠ネットワークの価値は、それに接続する端末や利用者の数の2乗に比例する」というMetcalfの法則により、コミュニティの価値が年を経るごとにますます大きくなっています。

ただ、価値とともにコミュニティを維持するコストも増大していきます。さらに、Pythonの科学技術計算プロジェクトはほぼすべてPython以外の言語で作成されています。そこを結びつけているのがグルー言語としてのPythonの強みであり、最後にそれを支えているコミュニティのメンバーに感謝が述べられました。

トークセッション

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

What happens when the main maintainer of a project takes a step down?

1件目はJorge Martinez氏@jorgepilotoによるWhat happens when the main maintainer of a project takes a step down?というトークです。Martinez氏は去年の記事でも紹介しましたが、航空宇宙エンジニアで、計算天文力学に興味を持つソフトウェア開発者です。自由時間には、poliastroというオープンソースの計算天文力学ライブラリを管理しています。

今回、Martinez氏はビジネスの利益相反となるためプロジェクトを終了することを決断しました。先ほどのコミュニティの分類に当てはめると、poliastroはMartinez氏が単独で管理しているstadium形式のコミュニティです。そのため、Martinez氏がメンテナを退任することでプロジェクト自体が終了することになります。

トーク直前のJorge Martinez氏
トーク直前のJorge Martinez氏

トークの後にMartinez氏と話しました。poliastroは今後もGitHubでMITライセンスで公開され続けるので、機能を追加したければフォークして新しいメンテナが開発を続けることもできるとのことです。ただし、PyPIのpoliastroは更新しないため、別のプロジェクト名をつけてほしいとのことです。たとえ開発が終了しても、コミュニティメンバーが自ら動けばオープンソースプロジェクトは続けていけることを実感しました。

Accessibility best practices for authoring Jupyter notebooks

2件目はUX/UIデザイナーであるIsabela Presedo-Floyd氏@isabela-pfによるAccessibility best practices for authoring Jupyter notebooksです。Jupyter Notebookを作成する際、ストーリー、コード、可視化については多くの知見がありますが、それに加えアクセシビリティを考慮してほしいという講演です。

Jupyter Notebookの書き方は、障がいのある人にとって使いやすいかどうかに大きく影響します。そのため、Presedo-Floyd氏はウェブコンテンツ・アクセシビリティ・ガイドライン(WCAG)を参照しようと述べていました。これは、障がい者のためのウェブコンテンツを評価し、改善するために使用される国際基準です。その中でも特に「POUR」に注目すべきであると訴えています。POURはWCAGの4原則の頭文字をとったもので、以下の4つを指します。

  1. 知覚可能(Perceivable)
  2. 操作可能(Operable)
  3. 理解可能(Understandable)
  4. 堅牢(Robust)

より詳細な内容を知りたい方は本講演のスライドが公開されていますので、そちらをご参照ください。これからNotebookを書くときは意識しようと思う内容でした。

BoFセッション

BoFはBirds of a Featherの略で、司会が短いプレゼンテーションを行い、大部分の時間は出席者全員で議論を行うセッションです。Birds of a Featherは一般的には「同類」という意味ですが、IT分野では「あるテーマについて集まった、非公式自発的な集団」という意味もあります。今年も可視化ツールのセッションが開かれましたので参加しました。今年は以下のメンバーがゲストとして招待されていました。

  1. HolovizプロジェクトからJames Bednar氏@jbednar
  2. fastplotlibプロジェクトからKushal Kolar氏@kushalkolar
  3. AltairプロジェクトからJon Mease氏@jonmmease
  4. napariプロジェクトからJuan Nunez-Iglesias氏@jni
  5. MatplotlibプロジェクトからElliott Sales de Andrade氏@QuLogic
  6. PyVistaプロジェクトからBane Sullivan氏
  7. Shiny for PythonプロジェクトからHadley Wickham氏@hadley

前半は、数ある可視化プロジェクトの中からユーザーが必要な可視化ツールにどのようにアクセスしてもらうかが話題となりました。その中でPython tools for data visualizationというページが紹介されました。後半は、ユーザーがPythonで作成できる可視化Webアプリのフレームワークをどのように提供していくかが話題となっていました。プロトタイピングに便利なフレームワークとしてVoilàが挙げられていました。

科学計算の可視化を行うユーザーの多くはフロントエンドを勉強する時間を取ることができないため、可視化ツールにおいてはPythonでWebアプリを構築できることが大きな需要となりそうです。

ポスターセッション

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

会場の様子(壁側にポスターが貼られている)
会場の様子

今年はPyVistaプロジェクトとしてはじめてポスターセッションに参加しました。ポスターを制作する前に運営から#betterposterというハッシュタグが紹介されました。これはMike Morrison氏@drmikemorrisonにより提唱されたムーブメントです。

従来、クラシックな学会のポスターは論文をコピー/ペーストしたようなものが大半でした。しかし、Morrison氏は参加者が1つのポスターに費やせる時間は1、2分であるため、ポスターで大切なのはひと目見ただけで要点がわかることだと主張します。また、現在の参加者は、QRコードなどで保存された情報にスマートフォンを使ってアクセスして後で見直すことができます。そのような状況を考えると、ポスターの最適な構成は以下のようになります。

  • 中央にはコアメッセージ:重要なメッセージをポスターの真ん中に、大きなフォントで、平易な言葉で配置します。
  • 左にはSilent Presenterバー:興味を持った参加者に必要な情報を配置します。
  • 右にはAmmoバー:興味を持った参加者と議論するときに説明できる追加情報を配置します。

このムーブメントの元となった動画は、How to create a better research poster in less timeというタイトルでMorrison氏のYouTubeチャンネルに公開されています。

BetterPosterの考え方
BetterPosterの考え方

今回のPyVistaのポスターは#betterposterのテンプレートを元にして作成しました。偶然ですが、今年はMorrison氏のポスターの隣がPyVistaのポスターの隣でした。そのため、Morrison氏からムーブメントに参加したことに感謝されました。

PyVistaプロジェクトのポスター(左がMorrison氏のポスター)
PyVistaプロジェクトのポスター

PyVistaのポスターセッションに来た人は、はじめてPyVistaを知る人よりもPyVistaについて質問をしたい人が多かったです。ポスターセッション中にPyVistaプロジェクトのメンバーがポスターの場所にいたことで、対面の質問コーナーのような役割を果たせました。ユーザーと対面で相談にのるよい機会ですので、今後もポスターセッションへの参加は続けていきたいと考えています。

ライトニングトーク

3日間のカンファレンス中は、毎日夕方にライトニングトークが行われます。ライトニングトークは5分以内でプレゼンテーションを行うセッションです。1つの発表が短いためより多くの参加者が自分の発表を行うことができ、スピーカーも聴衆も気軽に聞けるとても人気のあるセッションです。科学技術系の話題からコミュニティの話題まで、幅広い内容のトークが行われます。写真のようにSciPyカンファレンスの歌を披露するグループや、スライドを使わずに自分の話したいことについて話す参加者もいます。

ライトニングトークの様子
ライトニングトークの様子

今年のトークで印象に残ったのは、Cheuk Ting Ho氏@CheuktingHow Government Policy can affect Open-sourceでした。

普段私たちが使用しているオープンソースには国境がありません。そのため、自国以外の政府の決定が、私たちのオープンソースの開発や貢献に影響を及ぼす可能性があります。トークの中では欧州連合(EU)サイバーレジリエンス法案が検討されていることが紹介されました。これは、ユーザーを保護し、ソフトウェアの発行者にそのセキュリティの責任を負わせることを目的としています。

法律の目的には賛成ですが、今の法律の内容ではオープンソースのコンプライアンスを証明できない可能性があるとCheuk Ting Ho氏は言います。その理由として、近年のオープンソースには商業的活動で作成されたものが増えていることを挙げていました。オープンソースへの貢献で行われた非商業的な活動は適用を免除されると解釈することはできても、商業的活動を目的としたコントリビューターを保護することができません。さらに、貢献の目的が商業的活動か否か判断するのが困難な場合もあります。

そのため、Pythonによるオープンソース技術を推進しているPython Software Foundation(PSF)は、The EU's Proposed CRA Law May Have Unintended Consequences for the Python Ecosystemという声明を出しているとのことです。SciPyコミュニティのメンバーにもこの件について興味を持ってほしいという内容の発表でした。

スプリント

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

スプリントの様子
スプリントの様子

今年はチュートリアルで紹介したGeoVistaの作者であるLittle氏と、GeoVistaの今後の方針についての議論をしました。その中で、今のGeoVistaの例ではLittle氏の専門である海洋の温度のプロットのみをしていることが話題になりました。しかし、GeoVistaの機能では他の地理データもプロットすることが可能であるため、それらの例を示す必要があります。

そこで、筆者がアメリカ地質調査所USGSのデータを使用して2000~2018年までの地震発生のプロット例を追加することになりました。図のように地震が発生した位置に点をプロットし、その大きさを色で表現することで、地震データの可視化を行いました。

Plotting earthquake locations GeoVista which is the extension of PyVista
Plotting earthquake locations GeoVista which is the extension of PyVista

結果は Plotting earthquake locations GeoVista which is the extension of PyVista というタイトルでGitHubにまとめています。

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

最後に

今年もチュートリアル・カンファレンス・スプリント全日参加することができて満足しました。コミュニティのトレンドや自分たちの活動を紹介することができるSciPyカンファレンスは、自分にとって重要なイベントです。今回の参加はNumFOCUSのフィナンシャルエイドにより実現しました。カンファレンスに参加するチャンスを与えてくださったことに対してここに記して感謝をいたします。

アメリカ渡航などの詳しい話はこちらのPodcastで話しています。ぜひお聴きください。

スプリント中の食事 Little氏と筆者
スプリント中の食事 Little氏と筆者

おすすめ記事

記事・ニュース一覧