日々ブログ

日々のくらしの中で思ったこと

【プログラミング】anaconda の有償回避方法と代替案

久しぶりの投稿です。
連続投稿を辞めてからの体たらくっぷりは自分でも驚きます。
とはいえ何もしていなかったわけでもないのですが。 そのあたりは時期を改めていつか記事にできればな~と。
今回は、anaconda が有償化されてから久しいので、自分の理解を整理するためにもライセンス周りについての記事をまとめたいと思います。

Anacondaとは

Anacondaは科学技術計算ライブラリをパッケージにしたpythonの開発環境です。
シミュレーションとか何らかのデータを分析したり解析したりするときに、使用する便利なツールが大体含まれている開発環境というわけですね。
jupyter notebookとか、spyderとかpython でデータ分析をしようと思ったら必要になるツールを予め揃えてくれているというわけです。
プログラミングの開発環境を整えるというのは案外面倒なので、この手間が省けるのAnacondaを使用する一番のメリットです。
他にも、Anaconda環境に合わせて一部のライブラリがチューニングされてパフォーマンスが高いというのもメリットだったりしますが、ほんの僅かな差なのであまり気にしないで良いかと。

有償版Anacondaの特徴

有償版になるとただただお金を取られるのかとおもいきやしっかりと機能的に差別化されているようです。
具体的には下記の機能が無償版に加えて使用できるようです。
個人的に欲しいのは、condaのパッケージ署名くらいでしょうか。
パッケージのインストール時の署名は言わば、セキュリティ攻撃によって偽のパッケージをダウンロードさせられないための仕組みで、パッケージが本物であることを証明してくれる仕組みです。
偽のライブラリを忍ばせる攻撃はiphoneアプリ開発におけるXcode ghostが有名ですね。
秘密情報の漏洩を気にする企業としてはこの仕組を手軽に設けられるメリットは大きいのでは無いでしょうか。

  • リポジトリサーバーが管理してくれる
  • 開発チームの権限管理ができる
  • condaパッケージの署名が利用できる

本当にAnacondaが必要か

ここで、立ち止まって考えたいのが本当にAnacondaが必要なのかということです。
前述の通り、Anacondaは分析のためのツールを手軽に導入できるのが最大のメリットなわけで、ここが必須になることは業務としてはあまりないんじゃないかな~と個人的には思います。
要は、自分で開発環境を構築できれば問題ないわけです。
ここにAnacondaを回避する方法があるわけですね~。

Anacondaを無償で使える条件

改めて、Anaconda無償で使える条件を確認します。

  1. 個人かつ非商用目的による使用
  2. 教育機関における学生または教員の使用
  3. 非営利団体の従業員による非営利目的の使用
  4. 非営利研究機関における、社会的ニーズやグローバルな課題に取り組むための研究および開発
  5. 非営利団体における公益のための研究活動で収益をもたらさない目的での使用
  6. 合計200人以下の共同体における事業体の従業員の使用

以上です。 ライセンス特有の言い回しですね。
ざっくりいうと、金儲けのために使うならお金払ってね~ということですね。
個人でも商用目的はだめ!というように自分は解釈しました。
商用目的が大丈夫ならわざわざ「non-business purposes」とはつけませんし。
ここは、ネット上の記事でも解釈が分かれるところですね~。

加えて、「200人以下の会社なら無料で使っても大丈夫!」というのが、たまにネット上で見かける解釈なのですが、原文をみると「entities in common control with each other with fewer than 200 employees」なので、「会社」では無くて「共同体」が正しいようですね。
この差は大きくて、たとえば1000人規模の会社の子会社が30人という場合に、子会社での使用が認められないように思います。とくに親会社と子会社の連携が密な場合は共同体とみなされそうですし。

自分なりの解釈を含んでいるので、正確に理解したい方は原文を確認することをおすすめします。

www.anaconda.com

Anacondaが有償していることを知らずに使用している場合

あまり好ましい状況ではないですが、Anacondaが有償化していることを知らずに使い続けている場合もありますよね。 もともと無償で使えていたのでしょうがない気もしますが、気づいたのであればさっさと対処することをおすすめします。 即時に金額を請求されたりすることは無いと思いますが、OSSライセンスというのは「自分が開発したツールを使ってもいいよ。その代わりこちらが定める条件には守ってね」というスタンスなので、守らない場合は揉めることが多いです。 過去に、OSSライセンスに従わない企業が出した製品が出荷停止になった事例もあるくらいなので従う方が無難でしょう。 よくある勘違いなのですが、OSSライセンス違反は金で解決することが難しいです。OSSの開発団体は別にお金が欲しくて開発しているところばかりではなく、単純にソフトウェアの発展を願っている事が多く、場合によってはソースコードの開示などを求められるので気をつけましょう。

Anacondaのライセンス回避方法

Anacondaの有償条件について見てみましたが、有償の対象範囲は網羅的に書かれているので営利目的で使用する場合はなかなか回避しづらい気がします。
なので、有償回避方法として存在するのは実質個人での営利目的でしょうか。

個人での営利目的の使用は法人化する

利用規約の1番に関するところですが、個人のフリーランスとして使用されているなら、さっさと法人化してしまうのがいいように思います。
法人化してしまえば、営利組織として見られるので、6番の条項にさえ該当しなければ問題ありません。
フリーランスで200人を超える共同体なんてなかなか作れないですし。
共同体の定義は良くも悪くも曖昧で、人数の定義はありませんので、法人化しておけば少なくとも個人の利用ではないと言いやすくなるので、 法人化しておけば安心だと思います。

Anacondaの代替案

ここからは、Anacondaの代替案ですね。
お金を取られるくらいなら別の方法を使ってしまえという発想です。

方法1:minicondaでインストールする

これが一番オススメの方法です。 利用規約をよく読むと書かれているのですが、Anacondaの開発者がAnacondaが有償化を決めた理由として大きいのが、condaリポジトリサーバーを商用で使用されるのを敬遠されたからのようです。
単にサーバーの維持費がかかるというセコイ理由なわけではなく、企業による大規模なサーバーに対する負荷に耐えられなかったり、そもそもOSSであるにも関わらず特定の企業のみにメリットを与えるのは公平を愛するOSSの考え方に反しますからね。
少し話はそれましたが、minicondaはanacondaのうちのパッケージ管理機能を切り出したライブラリで手軽に利用することができます。 pythonなどではpipが有名ですが、condaでしか利用できないライブラリがあったりするので、そうしたライブラリへの配慮でしょう。 ただし、この方法はanaconda特有のGUIによる管理ができません。 コマンドラインからインストールをして、エラーが出たら文字を読んで対応するという、ある種ソフトウェア開発者として由緒正しい対応が求められます。

方法2:単なる科学計算ならjupyter labを使用する

どうしてもGUIが使いたい、しかも科学計算がしたいという場合にはjupyter labがおすすめです。
自分も脱anacondaを宣言してからはよく利用しています。
jupyter labの前身であるjupyter notebookはすでに開発が停止していてjupyter labに移っているのでご注意ください。
何はともあれ、もっとjupyter labが使われて欲しい。

xinformation.hatenadiary.com

方法3:仮想マシンを用いる

この方法は少し手間はかかるのですが、汎用的かつ一度作ってしまえばかなりの時短効果が得られます。仮想マシンというのは、簡単に言ってしまえばソフトウェアでパソコンを再現してしまおうという技術で、使いこなせばクリックするだけで、linuxなどを手軽に扱えます。クラウドなどの技術にも応用されていますね。 最近であれば、やはりubuntuが使いやすいのでおすすめです。

xinformation.hatenadiary.com

方法4:開発者権限管理が欲しいならgithubがgitlab

少々本筋から離れた方法かもしれませんが、有償機能のうちの開発者の権限管理機能が欲しい場合は、githubやgitlabを利用するのが便利です。
Anacondaに並々ならぬ愛があるならよいかもしれませんが、gitツールとの相性を考えるとやはりgithubに軍配が上がります。