HN 日本語サマリー

← 一覧へ戻る
科学・技術

科学はオープンソースソフトウェアである

Science Is Open Software (jepedersen.dk)

148 pointsby jegp65 コメント

要約

本記事は、現代科学、特に計算科学がオープンソースソフトウェアと同義であると主張する。再現性、改変可能性、信頼性が科学的進歩に不可欠であり、オープンソースソフトウェアがこれらを提供する理由を解説する。デジタル時代における科学のあり方として、真にオープンな計算科学の未来像を描き、コードの共有や安定したコードの記述といった行動を促している。

全文翻訳

Science is open software

TL;DR 現代科学はオープンソースソフトウェアと同義であると主張します。この記事では、その理由、なぜそれが重要なのか、そして次に何ができるか(そしてすべきか)を説明します。


なぜ(オープンソース)ソフトウェアが重要なのか? - 皆さん

私はソフトウェア開発に多くの時間を費やしています。ソフトウェアがなぜ重要なのか、数え切れないほど尋ねられました。人々は、ソフトウェアは科学ではなく、本当に重要なこと(結果、そして学術界なら論文)を追求する上での時間の浪費だと言います。「出版しなければ消える」のです。

さて、私はソフトウェアが重要だと考えています。実際、オープンソースソフトウェアこそが科学である、いや、少なくとも計算科学であると考えています。そしてこの記事では、その理由を説明します。なぜ科学者は科学的方法を主張しなければならないのか、そしてそれがなぜオープンで再現性のあるソフトウェアに取り組むことを意味するのかを。この記事を書くのは簡単ではありません。学術界の多くの現在のトレンドに挑戦しますが、それは私たち全員を狂気にしない「より良い科学」に向けた重要な一歩なのです。

What is science?

Wikipediaで科学を調べると、次のような説明が出てきます。

Science is a systematic discipline that builds and organises knowledge in the form of testable hypotheses and predictions about the universe. - Wikipedia

さて、ランダムなarXivの論文を一つ取ってきてください。そこには明らかに何らかの「知識」が含まれています。しかし、その論文はテスト可能な予測に貢献し、体系的に整理できるでしょうか? あなたはそれをテストできますか? あなたはそれを体系化できますか?

答えは決して完全に「いいえ」ではありませんが、それは困難です。その知識に直接アクセスできることはめったにありません。

The good explanation - inner models

If the organism carries a 'small-scale model' of external reality and of its own possible actions within its head, it is able to try out various alternatives, ... and in every way to react in a much fuller, safer, and more competent manner to the emergencies which face it.

Kenneth James Williams Craik は、その素晴らしい著書『The Nature of Explanation』の中で、私たちは現実の小さなシミュレーションを使って外部の世界を説明し予測していると論じています。

この点は今日では明白に見えますが、科学を追求するそもそもの目的を浮き彫りにしています。それは、あなた自身が、行動する主体として、以前よりもより良い予測ができるようになるまで、自身の内部モデルを改善することです。ここでの内部モデルは非常に重要です。arXivの論文が読者の世界の予測に役立たないなら、それは科学ではありません。これが計算上の再現性が重要である理由です。ソフトウェアは、予測モデルをエンコードし共有する方法なのです。

What is reproducibility?

Wikipediaによると、結果を示すだけでは不十分です。結果は(1)体系的であり、(2)テスト可能でなければなりません。

与えられた論文が難しすぎる、あるいは他の理由で読者にとってアクセスしにくいということは十分にあり得ます。それは、そこから科学的な洞察を見つけられないという意味ではありません。読者は、2回目、3回目の読書でそれらを体系化する方法を見つけるかもしれません。いいえ、それはあなた自身がそのアイデアを自分のものとして取り込み、テストし、自分の世界モデルを改善するために使用できない、という意味です。

この文脈における再現性とは、単なる結果の複製ではありません。それは、科学的なアイデアを取り込み、それを自分の内部モデルに埋め込み、適応させ、それを基盤として構築する、あるいは予測可能性を低下させるためにそれを破棄する能力です。

アイデアが再現できなければ、その発見は拡張できません。したがって、無用です。

「ソフトウェアモデル」を「数理モデル」に置き換えて簡単な思考実験を行うと、これは明らかになります。物理学の論文で「我々の数式はXを予測するが、数式は示さない」という主張を受け入れないのと同様に、その方法を隠蔽する(計算)科学を受け入れるべきではありません。

How many fields have been held back, and how many people have had their careers disrupted, because of a buggy program? - Greg Wilson

ソフトウェアは現代科学に遍在しています。COVIDモデルから検索アルゴリズム、実験室プロトコルまで、すべては他人が構築したソフトウェアに基づいています。研究者は忙しい人々です。彼らは、結果を無効にする可能性のあるエラーがないか、実装の詳細を理解したり、検証したりするために、すべてのソフトウェア依存関係を調べるのに時間をかけません。

そこから、科学的な結果はソフトウェアに依存するということが導き出されます。ソフトウェアが間違っていれば、科学も間違っています。(ソフトウェアのバグはすでに数多くの撤回を引き起こしています。例えばこちら、こちら、こちら、そしてこちらの複数の場所で)。

そしてそれは、ある時点で私たちは他人の仕事に信頼し、依存しなければならないという点で、良いことです。それが起こるためには、ソフトウェアは信頼できる必要があります。

Why open source?

ソフトウェアは次の特性を持つ必要があることがわかりました。

  1. 再現可能であること。つまり、実行可能であり、かつ改変可能であること。
  2. 信頼できること。つまり、結果が一貫して信頼できること。

改変可能性は、科学的予測における数式が重要であるのと同じ理由で、科学にとって重要です。信頼性は、私たちが一時的にしか機能しない、不安定で部分的な結果ではなく、知識の体系的な改善を望んでいるため、不可欠です。

これがオープンソースソフトウェアが私たちに提供するものです。私たちはコードを変更し、ニーズに合わせて改造することができます(Hugging Faceモデルを考えてみてください)。そして、それを改良し続けるために反復することができます。それはすでに数兆ドル規模の価値を生み出していますが、さらに多くの余地があります。

もちろん、オープンソースソフトウェアは完璧な解決策ではありません。知的財産やセキュリティの懸念があり、バグは依然として発生する可能性があり、安定性が問題となることもあります。しかし、少なくともその不完全さは公に記録されています。それらは、私たちの科学的理解と同様に、修正・改善することができます。その観点から見ると、オープンソースソフトウェアこそが科学的方法である、と主張することができます。ただし、シミュレーション上でのことです。

A vision for future science

これらの前提を受け入れると、次のような問いを立てることができます。真にオープンな(計算)科学はどのようなものになるでしょうか?

すべての結果が即座に再現可能になる。 新しい薬が症状を30%軽減すると主張する論文を読むとき、あなたはリンクをクリックし、ブラウザで正確な分析が実行されるのを見ることができます。データ処理、統計テスト、視覚化は、著者が使用したのと同じ環境を使用して数秒で実行されます。これは再現可能なコンテナによって完全に保存されています。

科学ソフトウェアはWikipediaのように進化する。 気候モデルは単一の研究室によって孤立して開発されるのではなく、グローバルコミュニティによって維持されます。ケニアの研究者が大気乱流計算のバグを発見した場合、その修正は世界中の気候シミュレーションに即座に伝播します。モデルは学術的なサイロに留まるのではなく、継続的に改善されます。

発見のペースが加速する。 各研究者がゼロから構築するのではなく、私たちは巨人の肩の上に立ちます。その仕事は単に読めるだけでなく、実行可能で改変可能になります。科学的進歩は前例のない速度で複利計算されます。

科学への信頼が強化される。 気候モデル、経済予測、医療勧告が透明で監査可能なコードに基づいて構築されるとき、公衆の信頼は高まります。科学コミュニケーションは改善されます。なぜなら、モデル自体が会話の一部となるからです。単なる結論だけではありません。

これはユートピア的なファンタジーではありません。すべての要素はすでに存在します。オープンソースコミュニティ、再現可能な環境、共同開発プラットフォームです。私たちはそれらをデジタル時代の科学がどのように機能すべきかという統一されたビジョンに形作る必要があります。

問題は、この未来が可能かどうかではありません。問題は、どれだけ早くそれを構築できるかです。

What now?

私は、私たちがコンピュータ化された世界で科学を行うことができるなら、オープンソースソフトウェアは必要条件であると主張します。ソフトウェアは実行可能な数理モデルであり、私たちはそれをはるかに高く優先すべきです。

私たちはまだやるべき仕事があり、そしてあなたが助けることができる方法は次のとおりです。

  • コードを共有し、文書化する
    • コードのない論文は、洞察を基盤とするのが難しいため、科学的ではありません。理想的な世界では、あらゆる主張は再現可能なコードによって裏付けられるべきです。最初からコードを使用し、常に共有してください。
  • 安定したコードを書き、NixOSを使用する
    • コードは信頼でき、永続的に機能する必要があります。それは、依存関係と環境が一定に保たれていることを確認することを意味します。それを達成する最良の方法は、再現可能な環境を使用することです。NixOSは、現在利用可能な最大かつ最良のツールになりつつあります。それは、たとえ100年後であっても、あなたのコードがまったく同じように実行されることを保証します。Docker、Conda、および類似のツールはより優れていますが、NixOSはより包括的な保証を提供します。
  • 独自のツールを作成するのではなく、既存のツールを基盤にする
  • ソフトウェアに取り組む学術者を昇進させる
    • コードの重要性を考えると、学術的な昇進はソフトウェアへの貢献を評価すべきです。

科学革命は、透明性、再現性、そして絶え間ない精査を主張したことによって成功しました。オープンソース運動は、ソフトウェアに対してこれらの同じ原則を体現していますが、まだ多くの仕事が残っています。

あなたはソフトウェアを科学的なものにするのを手伝いますか?