データサイエンス用プラットフォームのAnacondaが辛い
こんにちは!
今回はデータサイエンティストを志したなら一度は見た or 聞いたことがあるであろうAnacondaについて書いていこうと思います。
個人的にはこのツールのライブラリ管理における光と闇を理解し始めたころにデータサイエンス脱初心者の道が開けると思っています。
ちなみに私はこのツール使うのを辞めました(Anacondaだけに脱皮と定義します)。PythonにしろRにしろもっと良い管理ツールがあると思ったからです。というわけで始めていきます~。
Anacondaとは
Anacondaはデータサイエンスをはじめとする科学技術計算のためのプラットフォームです。これを利用することでPythonやRの実行環境を素早く作成し、分析やレポート作成に注力することができます。
Anacondaの最大の魅力は、環境構築の手軽さと統一されたプロトコルにあると思います。導入はインストーラーを実行し、コマンドは[conda ~]を覚えるだけで簡単に解析環境を作成することができます。おそらく、最も簡単に仮想環境を理解でき、使える有用なツールです。また、データサイエンスでよく見かけるようなPythonライブラリがすでに用意されているのもポジティブポイントです。
PythonやRも共通して導入するまでが一つの壁なので、その部分を一気に通過してすぐにコーディングに取り掛かれるのは他のツールにはない強みだと思います。
インストーラー
conda API
私のAnaconda履歴書
Anacondaの紹介をしたところで、私がどのようにAnacondaを使って、どのように感情が変化していったかを書いていきます。
1. 修士の研究時代
修士の研究ではRを使っていたのでRstudioでRprojectを作ってコード管理していました。このころはライブラリ管理まではできていなかったと思います。
また、自己学習でPythonを扱うときにはAnacondaを使っていました。そこまで複雑なことはやっていなかったのでこのころはまだネガティブに感じたことはなく、Anaconda信者だったと思いますw。
2. データサイエンティスト時代
新卒で入った会社はPythonの業務がほとんどだったので分析レポートを作る際にはAnaconda環境で行っていました。このころから環境の再現等で使いづらさを感じるようになってきました。なので、先方がAnaconda環境を望まない限りは他の環境構築方法を提案していました。
成果物がレポートのみの場合はAnacondaを使っていました。
3. AIエンジニア時代
転職して職位がAIエンジニアになってからはチーム開発が中心になったので、チームの方針でPython環境でもAnacondaを使うこともなくなりました。脱Anaconda(脱皮)を果たしたときでもあり、成長を実感しましたw。
4. 遺伝統計学時代
最近、遺伝統計学を勉強していますが、その解析環境を整えるためにAnacondaが有用であると良く言われます。実際biocondaというチャネルが優れており、condaコマンド一発でバイオインフォマティクス用のツールをインストールすることが出来ます。
なので、学習用環境ではAnacondaを使っていましたが、コンフリクトの嵐でRNA seqを一周することができなかったのでこちらでもAnacondaの利用を辞めました。
この時点で、私のAnaconda利用は完全に終焉を迎えることとなりました。
ここが辛いよ!Anaconda
という訳で、使えば使うほどネガティブになっていったAnacondaでしたが、どんな部分が辛かったか書いていこうと思います。
インストーラーの実行に罠がある
Anacondaのインストーラーを実行するときに、PATH設定をスルーするとcondaコマンドがすぐに実行できなくなってしまします。特に、CUIでのインストールではEnterキーを長押ししているだけでPATH設定をスルーしてしまい。使うのが面倒になってしまいます。
ちなみに、インストール時のPATH設定に失敗した場合は以下の記事の手順でPATHを通すことが出来ます。
他のパッケージ管理ツールと混ざると沼
初学者でよくやってしまうのが、Anacondaの実行環境でpipコマンドを使ってPythonライブラリをインストールすることだと思います。これをやると、conda環境とPython環境でライブラリの重複があったときにエラーを吐いてしまい、動かなくなってしまいます。(最悪、環境作り直しなんでことも…)
これを回避するためには、ライブラリのインストールを全てcondaコマンドで行います。以下の記事で詳しく解説されています。
環境の再現性が取り辛い
Anacondaに限らないですが、OSが違う場合でのconda環境のトレースはできません。公式にも書いてあります。
こういうケースではDockerを使うと大体上手くいきます。
特定条件下では有償化されている
個人的な利用では問題ありませんが、一般的な大企業は無償利用できません。miniconda+conda-forgeみたいな逃げ道はありますが、今後条件が変わって急に使えなくなってしまう可能性があります。
最新のライブラリをインストールできない場合がある
Anacondaが提供するリポジトリは会社が管理しているので、最新バージョンのライブラリはconda経由でダウンロードできない可能性があります。ただし、これは変なライブラリをインストールしないようにプラットフォーム側でブロックしてくれているので必要な機能だとは思います。
複雑な環境を作るとコンフリクトが解消できない
バイオインフォマティクスのように、PythonとRを同時にまとめて扱う環境では、パッケージの依存関係が複雑になりコンフリクトがどうしても解消できないケースが発生します。私は、[required perl<3.6, perl>4.0]みたいな要求をされて匙を投げましたw。
このようなケースではPythonはPythonのみの環境で、RはRのみの環境で互いに干渉しないような運用をするほうが安全だと思います。
どうやって解析環境を整えるか
Anacondaを使わない場合、どうやって環境構築を行うかを書いていきます。
R
Rはrenv一択だと思います。Rprojectとの連携もできますし、後述するバイオインフォマティクスで使うようなライブラリをインストールできるBioconductorとも簡単に連携できます。renvを使っていて困ったことは一度もないです。
Python
Pythonは色々な選択肢がありますが、pyenv + Poetryがオススメです。ツールを2種類使っていますが、ほぼPoetryのみで運用していくことになります。こちらはチーム開発でも問題なく使えています。
Bioinformatics
SRA-ToolkitやFastQCのようにshell scriptで実行するものは直接インストールし、PATHを繋いで使っています。C++で作成されているものがほとんどなのでツール間でのコンフリクトも(現在は)気になっていません。少なくともAnacondaでライブラリ管理していたときよりかはストレスなく使えています。
皆も脱皮しようぜ!
という訳で、Anacondaについて書いていきました。個人的には使う必要はなく、もっと良いツールを利用する方がストレスなくデータサイエンスを楽しめると思います。
皆さんも脱皮して良いデータサイエンスライフを送りましょう!
最後まで読んでいただきありがとうございました。
記事を読んでいただきありがとうございました。いただきましたサポートは自己研鑽のために活用し、さらに良質な記事を執筆するために使います。のんびり更新ですが、多くの方に役立つコンテンツを書いていきますのでよろしくお願いいたします。