AKARI Tech Blog

燈株式会社のエンジニア・開発メンバーによる技術ブログです

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

こんばんは! 今週のAKARI Tech Blogは、DX Solution 事業本部 Dev の小山が担当いたします。 今月上旬に昨年のSciPy 2024に引き続き、今年もアメリカで開催されたSciPy 2025に参加してきました。現地の様子をこのレポートで伝えたいと思います。

SciPyについて

SciPy 2025は科学技術計算やデータの可視化を専門とした国際カンファレンスです。カンファレンスの目的はPythonのユーザーや開発者が結集し、知見を共有することです。SciPyと聞くとPythonライブラリのSciPyを連想される方が多いと思います。 しかし、実際はさまざまなPythonライブラリのコミュニティが多数参加するカンファレンスです。たとえば、 scikit-learnMatplotlib プロジェクトのメンバーが参加しています。そのため、科学に関するPyConであると表現したほうが適当です。 イベント概要は以下のとおりです。会場は今年もアメリカ合衆国ワシントン州タコマで行われました。

SciPyのエントランス
SciPyのエントランス

  • URL: https://www.scipy2024.scipy.org/
  • 日程
    • チュートリアル:2025年7月7日(月⁠)⁠、8日(火)
    • カンファレンス:2025年7月9日(火⁠)⁠~11日(金)
    • スプリント:2025年7月12日(土⁠)⁠、13日(日)
  • 場所 アメリカ合衆国ワシントン州タコマ
  • 会場 Tacoma Convention Center
  • 参加者数 カンファレンス現地参加 443人
  • カンファレンスオンライン参加 101人
  • スプリント現地参加 191人
  • ファイナンシャルエイド 12名
  • ティーントラック参加者 7名
  • 主催 NumFOCUS

参加目的

筆者は普段オープンソース活動の一環としてPyVistaというプロジェクトに参加しています。このプロジェクトは、Pythonの科学技術計算結果可視化ライブラリの中で近年最も注目されているものの1つです。去年に引き続き、今年もPyVistaグループの一員として、このカンファレンスに参加しています。さらに、今年はPyOpenSciのコミュニティメンバーとしても参加し、オープンサイエンスのプロジェクトメンバーとしてもアウトプットを行うことになりました。

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

チュートリアル

1日目と2日目にチュートリアルが行われます。

1日目の午前中はBuilding with LLMs Made Simpleに参加しました。このチュートリアルでは、Eric Ma氏が、LlamaBotやOllamaを用いてローカルで実行可能な大規模言語モデル(LLM)をPythonプログラムに統合したものについて解説をしました。プロンプト設計や構造化出力、評価・展開手法を学ぶ実践的セッションです。特に印象に残ったのが、LinkedInから自分のプロフィールをPDFファイルとしてダウンロードしそれをローカルLLMに学習させ、自分について回答をさせるという講習です。筆者も自分のPDFをダウンロードしLlamaBotを使用して学習させてみたところ、驚くほど直感的に実装できました。

Building with LLMs Made Simpleの様子
Building with LLMs Made Simpleの様子

午後は3D Visualization with PyVistaのインストラクターとして参加をしました。内容としては長時間となるため、共同発表者のBane Sullivan氏と分けて実施しています。今年のチュートリアルはまだ公開されていませんが、SciPy2024のチュートリアル3D Visualization with PyVista から視聴できます。また、PyVistaについては本ブログのPythonで3次元CGを作りたい人のためのPyVista入門 でも紹介していますので、興味のある方はぜひご覧ください。チュートリアルの最後にはユーザーと開発者のフリーディスカッションを行いました。その中で、ユーザーの人たちがそれぞれのドメインでどのようにPyVistaを使用しているのかも聞けて有意義でした。ドメインは量子、バイオ、ジオサイエンスなど幅広く可視化ライブラリが活躍できる範囲の大きさを実感しました(画像はPyVista Tutorial — PyVista Tutorialから引用)。

3D Visualization with PyVista
3D Visualization with PyVista

PyVistaのチュートリアルの様子:インストラクターとして筆者も紹介されている PyVistaのチュートリアル:インストラクターとして筆者も紹介される

前日には画像のようにバーで乾杯をして、発表への準備を整えています。PyVistaプロジェクトのステッカーを Bane Sullivan 氏が作っていたので、みんなで記念に貼って楽しい時間を過ごしました。Bane Sullivan氏は去年の記事でも紹介しましたが、地球科学が専門のソフトウェアエンジニアで、前職で VTKParaView を開発した Kitware で働かれていました。普段プロジェクトの他のメンバーとはGitHubでやり取りをしていますが、実際に会って交流できる機会は貴重で、とても有意義な時間となっています。今年参加したメンバーが来年も参加できるとは限らない場合もあり、一期一会を強く感じる場でもあります。今年はBane Sullivan氏の可視化とPyVistaプロジェクトへの情熱を聞くことができ、開発へのモチベーションが刺激されました。

チュートリアル準備追い込み
チュートリアル準備追い込み
PyVistaのステッカーを貼って記念撮影
PyVistaのステッカーを貼って記念撮影

2日目の午前中はCreate Your First Python Package: Make Your Python Code Easier to Share and Useに講師として参加しました。pyOpenSciのコミュニティが開発・検証したワークフローを用いて、インストール可能で引用可能なPythonパッケージの作成と公開方法を学べるハンズオンです。インストラクターはLeah Wasser氏・Carol Willing氏・Inessa Pawson氏・Jeremiah Paige氏・筆者の5名が担当しました。参加者はTestPyPIやconda-forgeへの公開、ZenodoでのDOI付与、GitHubでのcitation設定まで含めた実践的なパッケージングスキルを習得できます。このプロジェクトについては、「pyOpenSci Pythonパッケージガイド日本語版を公開しました」でも紹介していますので、興味のある方はぜひご覧ください。Carol Willing氏はJupyter Projectの開発やCPythonプロジェクトのステアリング委員会委員を務めたエンジニアとしても有名な方です。何度か日本に遊びにきてくれて、日本のエンジニアコミュニティとの交流も深めてくれています。PyConUSやEuroPythonでキーノートをするようなすごい方なのに、初心者向けのチュートリアルの講師を引き受けてくれることに驚きました。しかし、参加者との会話をとても楽しんでいて、本当にPythonのコミュニティとプログラミングが好きな方なんだなと感じました。

Build Your First Python Package!
Build Your First Python Package!
Create Your First Python Package: Make Your Python Code Easier to Share and Useの様子:右端でパッケージングを手伝っているのが筆者
Create Your First Python Package: Make Your Python Code Easier to Share and Useの様子:右端でパッケージングを手伝っているのが筆者

当日は共同議長としての仕事はあるものの、ほとんどの仕事は当日までに完了しました。カンファレンスの運営にはSlackの他にpretalxというツールが使用されています。pretalxは、学術カンファレンスの講演申し込みやスケジュール管理を効率化するオープンソースのカンファレンス管理システムで、発表者の情報管理から当日の進行まで一元的に行うことができます。このツールによりWebアプリ上で管理ができるようになりました。開発者の方には感謝をしたいです。

今年のチュートリアルJupyterLabmarimoを半々で使用している印象でした。JupyterLabは普段の業務でも使用していますが、marimoは今年のカンファレンスで初めて存在を認知したためとても興味深く見ていました。marimoの最大の特徴は、変数の依存関係グラフを自動構築し、上流のセルが変更されると下流のセルが自動的に再実行される点です。これにより、データ分析において一貫性のある結果を維持できます。さらに、NotebookではなくPythonスクリプトをそのまま扱えるため、Gitなどのバージョン管理ツールとの相性が良いです。また、画像のようにAIによるコード生成をデフォルトでサポートしているところも面白いところです。参加者からは、marimoがセルで同じ名前の変数を再定義できないことに戸惑いがありつつも、概ね好意的な反応が見られました。marimoの特徴はJupyterLabでも拡張機能を使用して再現することはできますが、それらがデフォルトでサポートされていることがこのツールの大きな価値と言えるでしょう。

marimoのAIコード生成機能により、プログラミングがより効率的で直感的になります。
marimoのAIコード生成機能により、プログラミングがより効率的で直感的になります。

キーノート

3日目からはいよいよメインのカンファレンスセッションがはじまります。会場では画像のように朝食と昼食が提供され、1日中集中してトークを聞くことができました。

カンファレンスの朝食
カンファレンスの朝食

1日目のキーノートはWhat We Maintain, We DefendというタイトルでKathryn Huff氏のトークでした。氏は米国エネルギー省の原子力エネルギー局で次官補として同局でリーダーシップを取られていた方です。本公演ではSciPyコミュニティ活動により生み出されたオープンソースPythonツール群が、科学分野の発展だけでなく公共インフラにおいても重要な役割を果たしているという内容のトークをされていました。アメリカの公共機関の公開しているリポジトリが紹介され、特に透明性・再現性・コミュニティが公共分野での信頼性と影響力に直結することを強調されていました。SciPyコミュニティに向けて、公共利益のため、さらなる技術貢献の重要性を呼びかける内容でした。キーノートに対し、会場からは、米国におけるエネルギー政策に関する多くの質問が寄せられました。公共機関とOSSの関係性が議論されていてとても興味深かったです。もちろん真面目な議論の中にも、参加者同士のユーモアのあるやり取りや笑いも交えられていました。たとえば、氏はどうしてテキストエディターにnanoを使うのか、どうして他のエディターじゃだめなのかのような質問もあり、とても和やかな雰囲気でした(エンジニア同士でエディターの話題は鉄板ネタです)。キーノートは3日間連続で行われており、動画は後日YouTubeにアップされる予定ですのでぜひご覧ください。

Kathryn Huff氏の講演前の挨拶動画

トークセッション

キーノートの後、各会場ではトークセッションが行われました。その中で印象に残ったトークをご紹介します。

1つ目はDynamic Data with Matplotlibをご紹介します。スピーカーはMatplotlibの開発の中心メンバーであるKyle Sunden氏です。トーク内容は、Matplotlibに新たに導入されたDataContainerインターフェースと変換パイプラインにより、関数や動的データの視覚化が容易になったというものです。ズームやパン操作に応じて関数を自動再計算し、広範囲かつ高精度な表示が可能となったという報告でした。PandasやXarray、Webサービスなど多様なデータソースに対応し、視覚化前の柔軟な変換処理も行えるとのことでした。プロジェクトはNASAの助成を受けており、GitHubでコードが公開されています。今まで、Pythonで動的なプロットをする際にはPlotlyを使用してきましたが、Matplotlibで始まったこのプロジェクトも大きな可能性があると思います。

2つ目はEffVer: Versioning code by the effort required to upgradeです。スピーカーはJacob Tomlinson氏で、NVIDIAのシニアソフトウェアエンジニアであり、RAPIDSやDaskの主要メンテナーとして活躍されています。このトークはバージョニングに関するもので、Effective Versioningについて詳しく解説されました。EffVerとは後方互換性ではなく、アップグレードに必要な労力の大きさをユーザーに伝える方式で、SemVerCalVerの課題を補完する柔軟な手法です。本セッションでは、氏がOSSで行ったEffVerの導入方法と利用時の注意点について解説されていました。このバージョニング手法は画像で示されているようにバージョン番号を「大きな移行に必要な努力」・「少しの移行に必要な努力」・「移行に必要な努力なし」の3つのレベルに分類しています。それにより、開発者がアップデートの影響をユーザー目線で伝えられる仕組みとなっています。ユーザー目線でバージョニングをすることで、開発者とユーザーの双方にとってより使いやすく、理解しやすいバージョン管理システムを実現できるアイデアが面白いなと感じました。

EffVer: Versioning code by the effort required to upgrade
EffVer: Versioning code by the effort required to upgrade

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

PyVistaの活動状況について報告するBane Sullivan氏
PyVistaの活動状況について報告するBane Sullivan氏

トークの最後にはライトニングトークが行われます。ライトニングトークとは短時間で行われるプレゼンテーションのことです。Call for proposalに提出されたけれどもrejectされてしまったトークやユーモアーのあるトークを5分区切りで行っていきます。5分で区切られるため、短時間で要点を伝える必要があり、発表者には簡潔に内容をまとめることが求められます。筆者も日本のSphinxコミュニティでの活動を紹介するため、写真のようにライトニングトークを行いました。スライドを使わせていただいたKazuya Takei氏とTakanori Suzuki氏に感謝いたします。特にTakanori Suzuki氏のsphinx-nekochansphinxでnekochan絵文字が使用できるというユニークなものであり、会場の受けもとても良かったです。

ライトニングトークをする筆者
ライトニングトークをする筆者

BoFセッション

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

BoFで議論をする筆者
BoFで議論をする筆者

議論の中で特に興味深かったのがAnacondaのライセンス問題に対して各ユーザーがどのように対応しているかという問題でした。2024年3月末にAnacondaのライセンス変更が発表されたことを受けて、多くの企業や個人が対応策を模索することになりました。PyPIへの移行は1つの選択肢として考えられますが、科学技術計算のPython利用の場合は、Python以外のライブラリの依存関係も解決する必要があるため、condaの使用は必須となります。 この状況において、conda-forgeが重要な役割を果たしてきました。conda-forgeは、コミュニティ主導のcondaパッケージビルドシステムであり、企業や研究機関が商用利用に関する懸念を払拭して使用できるようになっています。

  • Python: python, scikit-learn, pytorch
  • C/C++: clang, boost, opencv, ninja
  • Java: openjdk, gradle, maven
  • Rust: rust, cargo-edit, cargo-insta
  • Node.js: nodejs, pnpm, eslint
  • Cli Tools: git, gh, ripgrep, make

筆者はデフォルトチャンネルをconda-forgeに設定しているminiforgeで管理をしてきましたが、近年はRustを使用した新しいパッケージシステムpixiが注目を浴びています。このプロジェクトは上記のconda-forgeによるパッケージ管理をベースとして、より高速で効率的な依存関係解決とプロジェクト環境の構築をRustを使用することで実現しています。多くの開発者が高く評価しており、今後のプロジェクト開発において積極的に導入を検討していきたいと感じました。(画像はHomeから引用)

pixiのロゴ
pixiのロゴ

ブース

また、SciPy Conferenceには主催であるNumFOCUSやスポンサーによるブースも多数出展され、最新のコミュニティ活動や製品情報を得ることができるようになっています。

SciPyカンファレンススポンサー
SciPyカンファレンススポンサー

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

NumFOCUSブースの様子
NUMFOCUSブースの様子

PLATINUM SPONSORであるNVIDIAのブースにはGPUのデモンストレーションが多数設置されていました。また、NVIDIAは17セッションものトークを本カンファレンスで行っており、トークで紹介したEffVer: Versioning code by the effort required to upgradeも含め非常に充実した活動となっていました。さらに、1日目のレセプションではパーティのスポンサーもしており、SciPyカンファレンスへの貢献度がとても高い企業です。

NVIDIAブースでの記念撮影
NVIDIAブースでの記念撮影

最後に

最終日のスプリントは予定の都合で参加することはできませんでしたが、今年もチュートリアル・カンファレンスに全日参加することができて満足しました。今回の参加もNumFOCUSのフィナンシャルエイドにより実現しました。カンファレンスにチュートリアルスタッフとして参加するチャンスを与えてくださり感謝をいたします。画像はチュートリアルの運営メンバーで打ち上げをしたときの写真です。仕事でPyVistaを使ったよという話もあり開発のモチベーションが上がりました。OSSはユーザーが見えにくいですが、確実にユーザーのためになっているということがわかりとても嬉しかったです。

チュートリアルスタッフの記念撮影
チュートリアルスタッフの記念撮影

ライセンス

  • SciPy 2025では、参加者相互の写真撮影およびSNSやブログへの掲載について、事前に同意を得ています。
  • 使用しているロゴはすべてオープンソースソフトウェア(OSS)に由来するものであり、各画像のライセンスについては、該当するOSSプロジェクトのガイドラインをご確認ください。

We’re Hiring!

燈では、Pythonで科学や工学の最新技術を社会実装するAIエンジニアを募集しています! 興味がある方は、ぜひカジュアル面談でお話しましょう!

akariinc.co.jp

akariinc.co.jp