HN 日本語サマリー

← 一覧へ戻る
科学・技術

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

Science Is Open Software (jepedersen.dk)

44 pointsby jegp15 コメント

要約

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

全文翻訳

TL;DR 現代科学はオープンソースソフトウェアと同義であると主張する。本稿ではその理由、それがなぜ重要なのか、そして次に何ができるか(そしてすべきか)を説明する。 (オープンソース)ソフトウェアについてなぜ気にするのか? - 全員 私は多くの時間をソフトウェア開発に費やしている。なぜソフトウェアが重要なのか、数えきれないほど聞かれたことがある。ソフトウェアは、科学ではない、と人々は言う。それは時間の浪費であり、本当に重要なもの、つまり結果(学術界なら論文)を追求する過程で、急いで通り過ぎるべきものだ。出版するか滅びるかだ。 さて。私はソフトウェアが重要だと考えている。実際、オープンソースソフトウェアこそが科学だと考えている。少なくとも、計算科学はそうだ。そしてこの投稿では、その理由を説明する。なぜ科学者は科学的方法論を主張しなければならないのか、そしてそれがなぜオープンで再現可能なソフトウェアの開発を意味するのか。この投稿は書くのが容易ではない。学術界の多くの現在のトレンドに異議を唱えるものだが、私たち全員を狂気に陥れない、より良い科学への重要な一歩である。 科学とは何か? Wikipediaで科学を検索すると、次のような説明が出てくる。 科学とは、検証可能な仮説と宇宙に関する予測の形で知識を構築し、組織化する体系的な学問である。- Wikipedia さて、ランダムなarXivの論文を手に取ってみよう。それは明らかに何らかの「知識」を含んでいる。しかし、その論文は検証可能な予測に貢献しているか?体系的に組織化できるか?それをテストできるか? 答えは決して完全に「いいえ」ではないが、それは難しい。その知識に直接アクセスできることはめったにない。 良い説明 - 内的モデル もし生物が、頭の中に外部現実とその自身の可能な行動の「小規模モデル」を持っているなら、それは様々な選択肢を試すことができ...そしてあらゆる点で、直面する緊急事態に対して、より完全で、安全で、有能な方法で反応することができる。 ケネス・ジェームズ・ウィリアムズ・クレイクは、その優れた著書『説明の性質』の中で、私たちが世界の外部を説明し予測するために、現実の小規模なシミュレーションを使用していると論じている。 この点は今日では明白に見えるが、それはそもそも科学を追求する目的を強調している。つまり、行動する主体であるあなたが、以前よりも良い予測を立てられるレベルまで、自身の内的モデルを改善することだ。ここでの内的モデルは極めて重要である。もしarXivの論文が読者の世界の予測に役立たないなら、それは科学ではない。これが計算上の再現性が重要である理由だ。ソフトウェアは、予測モデルをエンコードし共有する方法なのだ。 再現性とは何か? Wikipediaによれば、結果を示すだけでは十分ではないことを思い出してほしい。結果は(1)体系的でなければならず、(2)検証可能でなければならない。 与えられた論文が難しすぎて理解できない、あるいはその他の理由で読者にとってアクセス不可能である可能性は十分にある。それは、見出すべき科学的洞察がないという意味ではない。読者は2回目、3回目の読書でそれらを体系化する方法を見つけるかもしれない。いや、それは、あなたがそのアイデアを自分のものとして取り込み、テストし、あなたの世界モデルを改善するために使用できないという意味だ。 この文脈における再現性は、単なる結果の複製ではない。それは、科学的アイデアを取り込み、自身の内的モデルに埋め込み、適応させ、それを基盤として構築する、あるいは予測可能性を低下させるためにそれを破棄する能力である。 アイデアが再現不可能であれば、その発見は拡張できない。したがって、無用である。 「ソフトウェアモデル」を「数学モデル」に置き換えて簡単な思考実験をすれば、これは明らかになる。物理学の論文で「我々の数式はXを予測するが、数学は示さない」と主張するものを認めないのと同様に、(計算)科学がその手法を隠すことを受け入れるべきではない。 なぜソフトウェアは科学なのか? 多くの分野が停滞し、多くの人々のキャリアがバグのあるプログラムのために中断されたのはなぜか? - Greg Wilson ソフトウェアは現代科学において遍在している。COVIDモデルから検索アルゴリズム、実験室プロトコルまで、すべては他人が作ったソフトウェアの上に構築されている。研究者は忙しい人々だ。彼らは、結果を無効にする可能性のある潜在的なエラーを検証したり、実装の詳細を理解したりするために、すべてのソフトウェア依存関係を調べる手間をかけない。 そこから、科学的結果がソフトウェアに依存するという結論が導かれる。ソフトウェアが間違っていれば、科学も間違っている。(ソフトウェアのバグはすでに多数の撤回を引き起こしている。例えば、ここ、ここ、ここ、そしてここなど、多くの場所で)。 そしてそれはそれで良い。なぜなら、ある時点で私たちは他人の仕事に信頼を置き、依存しなければならないからだ。それが起こるためには、(ソフトウェア)は信頼できる必要がある。 なぜオープンソースなのか? ソフトウェアは、再現可能(実行可能であること、および変更可能であること)であり、かつ信頼可能(結果が一貫して信頼できること)である必要があることがわかった。 変更可能性は、科学的予測における数式が重要であるのと同じ理由で、科学にとって重要である。信頼性は、私たちが気まぐれで部分的な結果ではなく、知識の体系的な改善を望むため、極めて重要である。 これがオープンソースソフトウェアが私たちに提供するものである。私たちはコードを変更し、自分たちのニーズに合わせて改造することができる(Hugging Faceモデルを考えてみてほしい)。そして、それを改善し続けるために反復することができる。それはすでに数兆ドルの価値を生み出しており、さらに多くの余地がある。 もちろん、オープンソースソフトウェアは完璧な万能薬ではない。知的財産やセキュリティの懸念があり、バグは依然として発生する可能性があり、安定性が問題となることもある。しかし、少なくともその不完全さは公に記録されている。それらは、私たちの科学的理解と同様に、修正され、改善されることができる。その観点から見れば、オープンソースソフトウェアは科学的方法論そのものであると主張できる。ただシミュレーションの中でだが。 未来の科学のためのビジョン これらの前提を受け入れるなら、私たちは次のように問うことができる。真にオープンな(計算)科学はどのようなものになるだろうか? すべての結果は即座に再現可能になる。新しい薬が症状を30%軽減すると主張する論文を読むとき、あなたはリンクをクリックし、作者が使用したのと同じ環境で、正確な分析がブラウザ上で実行されるのを見る。データ処理、統計テスト、可視化は、再現可能なコンテナを通じて完全に保存された環境で数秒で実行される。 科学ソフトウェアはWikipediaのように進化する。気候モデルは単一の研究室が孤立して開発するのではなく、グローバルコミュニティによって維持される。ケニアの研究者が大気乱流計算のバグを発見した場合、その修正は世界中の気候シミュレーションに即座に伝播する。モデルは学術的なサイロに留まるのではなく、継続的に改善される。 発見のペースが加速する。各研究者がゼロから構築するのではなく、私たちは巨人の肩の上に立つ。その仕事は単に読めるだけでなく、実行可能で変更可能である。科学的進歩は前例のない速度で複利計算される。 科学への信頼が強化される。気候モデル、経済予測、医療勧告が透明で監査可能なコードに基づいて構築されるとき、一般の信頼は高まる。モデル自体が会話の一部となるため、科学コミュニケーションは改善される。単なる結論だけでなく。 これはユートピア的な空想ではない。すべての要素はすでに存在している。オープンソースコミュニティ、再現可能な環境、共同開発プラットフォームだ。私たちはそれらをデジタル時代の科学のあり方についての統一されたビジョンへと形作る必要があるだけだ。 問題はこの未来が可能かどうかではない。問題は、どれだけ早くそれを構築できるかだ。 今後は? 私は、コンピュータ化された世界で科学を行うならば、オープンソースソフトウェアは必要条件であると提唱する。ソフトウェアは実行可能な数学モデルであり、私たちはそれをはるかに高い優先順位で扱うべきだ。 私たちはまだやるべき仕事があり、そしてあなたが貢献できる方法は以下の通りだ。 コードを共有し、文書化する コードのない論文は、洞察を基盤とするのが難しいため、科学的価値が低い。理想的な世界では、あらゆる主張は再現可能なコードによって裏付けられるべきだ。最初の日から常にコードを使用し、常に共有すること。 安定したコードを書き、NixOSを使用する コードは信頼性が高く、永続的に機能するべきだ。それは、依存関係と環境が一定に保たれていることを確認することを意味する。それを達成する最良の方法は、再現可能な環境を使用することだ。NixOSは、現在利用可能な最大かつ最良のツールになりつつある。それはあなたのコードが...