以下の内容はhttps://yoshoku.hatenablog.com/entry/2025/10/09/230000より取得しました。


Numo::NArrayをforkしました

Numo::NArrayは、PythonでいうところのNumpyで、Ruby機械学習・データ分析するのに基盤となるgemである。Numo::NArrayは、2022年8月20日にリリースされた0.9.2.1以降、新しいリリースがない(2025年10月9日現在)。リポジトリを見ると全く開発が停止しているわけではないが、新しいバージョンがリリースされる様子はない。

私自身、数年前にひどい腱鞘炎を患って、趣味の開発が大きく滞ったことがあった。人生ホントいろんなことが起きる。OSS作者は自身の生活を大切にするべきで、無理のないペースで開発すれば良いと思っている。*1

一方で、私が開発・公開してるgemの多くがNumo::NArrayに依存している。Numo::NArrayが、例えば今後のRubyの変更に対応しなかったら、Numo::NArrayの代わりとなるgemがないので、それで全滅となる。また、Pythonでnanobind経由でEigenを使うことがあるが、こちらも、つい最近3.4.1と5.0.0がリリースされるまで4年間ぐらいリリースがなくて、使い続けて大丈夫かと不安があった。

そういった事情で、Numo::NArrayをforkして自分でメンテすることにした。作者の田中先生にことわりを入れることができたら良かったが、private connectionはないし、SNSで突然DMするのも違うしで、黙ってforkしました。申し訳ありません。

github.com

Numo::NArrayはERBを駆使して、C言語ジェネリクス的なことをしながら、ビルド時にコードを生成している。そのため、C言語のなかにERBが含まれていて、clang-formatとかのlinterをどう使えば良いか謎だったので、ERBによるコード生成をやめた。それ以外に、環境依存のbugfixとかを入れて0.9.3としてリリースして、また別の環境依存でsegment faultが起きるのを見つけて、それを修正して0.9.4としてリリースして、covメソッド実装するために、Numo::Int32とか整数型のものにmeanメソッドを追加したものを0.9.5としてリリースした。また、テストを増やしたりもした。

Numo::LinalgもRumaleでは重要なので、これもforkしました。こちらは、Numo::Linalg自体ではなく、Numo::Linalgのnative extensionsなコードを、C言語+ERBではなくC++で実装できるんじゃないか?と思って実験的に作っていた自身のNumo::TinyLinalgからforkした。Numo::TinyLinalgを作ってる時から、これぐらいならC言語のマクロで良いかも、と思ってたので、native extensionsなコードをC言語で書き直している。

github.com

Rumaleをはじめ、Numo::NArrayに依存する自身のgemを、numo-narray-altに移行した。

https://github.com/yoshoku/rumale github.com

Numo::NArrayやNumo::Linalgの開発・リリースが活発になるのが理想的で、それまでの間、forkしたものをメンテしていく。コミュニティの皆様、この度は、勝手なことをしてすみませんでした。

*1:全然関係ないし、偏見ですけど、バンドやアイドルグループが活動休止したり解散したりすると「お疲れ様」とか「ありがとう」とかねぎらいがあるのに、OSSの開発が休止したり終わったりしても、そういうのって少なくて、ひどいと「Windowsで動きません」とか「IE11で動きません」とか事情全無視issueが立ったりしますよね。私は、例えばjQueryはずしてVanilla JSにするとか、OSSをはずすというPull Requestには「今までありがと〜」とコメントする人間です。余談でした。




以上の内容はhttps://yoshoku.hatenablog.com/entry/2025/10/09/230000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14