# 2022/12/17 PyData Osaka Meetup #27 (Conda互換ツールMambaの紹介)
###### tags: `Meetup`
HackMDは共同でリアルタイムにMarkdownで編集が可能なWikiのようなものです。何か質問・メモなどありましたらご自由に書き込んでいただければと思います。
上部のペンや目の形などのアイコンをクリックすることで編集モード・編集&閲覧モード・閲覧モードを切り替え可能です。
最下部右側のあたりからキーバインドを変更することも可能です。
## PyData Osakaの紹介
PyData Osakaのウェブサイト https://osaka.pydata.org/
スライドへのリンク https://docs.google.com/presentation/d/1rjxxqk91ji09stdaOlS9Cf6OPu7v2XUZ13e58FpX1oc/edit?usp=sharing
## Connpassのイベントページ
https://pydataosaka.connpass.com/event/267542/
## イベント関連記事
* [Meetup #27のリポジトリ](https://github.com/PyDataOsaka/meetup-027)
* [Releasing mamba 1.0 の日本語訳](https://medium.com/p/9f71af3a7dd7)
* [Mamba meets Jupyterliteの日本語訳](https://medium.com/p/68d0823d767d)
* [Mamba関連のブログ記事](https://www.hiromasa.info/posts/27/)
## Zoom について
気軽に音声、ビデオオンオフしていただいて問題ありません。
発表の途中で口頭で質問してくださっても問題ありません。
## 事後アンケート
発表直後にご回答いただけると幸いです。
https://docs.google.com/forms/d/e/1FAIpQLSfhxv34w90OOD7Z-sHKtFLtaM1emt63GawUk38ACtCsO3fPpg/viewform?usp=sf_link
## 本日のタイムテーブル
|時間|内容|詳細|
|---|---|---|
|13:00-13:10| PyData Osakaの紹介 (@kozo2)||
|13:10-14:00| mambaの紹介 (@kozo2) | [mamba 1.0に関するブログ記事の翻訳](https://medium.com/p/9f71af3a7dd7)を元にmambaについて説明し、実際の動作について説明します。|
|14:00-14:10| 休憩 ||
|14:10-15:00| JupyterLite連携およびビルドツールboaの紹介 (@wrist) | [jupyter blog記事の翻訳](https://medium.com/p/68d0823d767d)および[ブログ記事](https://www.hiromasa.info/posts/27/)を元にjupyterliteとmambaの連携について紹介します。[このリポジトリ](https://github.com/PyDataOsaka/meetup-027)のコードも参考にします。 |
|15:00-15:30| ネットワーキング ||
## 本日の内容のメモ(誰でもなんでも書き込み可)
### mambaの紹介(@kozo2)
* [スライド](https://github.com/PyDataOsaka/meetup-027/blob/main/mamba%E3%81%AE%E7%B4%B9%E4%BB%8B.pdf)
* pipとcondaではパッケージ(ビルド成果物)が違う
* 例:pandasをPyPIとanacondaで見比べる
* PyPIには各種バージョン、プラットフォームごとのwheel(.whl)ファイルが存在
* pipでインストールされるのはこちら
* anaconda: https://anaconda.org/anaconda/repo/pandas/files
* whlではなくtar.bz2として存在
* anaconda以外にもパッケージが置かれている場所がある
* その中で一番多いのがconda-forge
* 以前まではanacondaかconda-forgeかを気にすることはなかったが、anaconda商用利用のために近年は意識される様になってきた
* anacondaの利用規約
* https://legal.anaconda.com
* 日本語とドイツ語のみ
* `LICENSE TO USE REPOSITORY`の項目に存在する箇条書きが重要
* https://legal.anaconda.com/policies/en/?name=terms-of-service#anaconda-repository
* 5つの禁止事項
* 商業目的が何であるかについても記載あり
* ここからはanacondaには見切りを付けてconda-forgeの話
* コミュニティ主導
* ビルドレシピ、ビルドインフラストラクチャ、condaパッケージマネージャのディストリビューションのコレクション
* ビルドレシピ
* https://github.com/orgs/conda-forge/repositories
* 各ライブラリのfeedstockのリポジトリに存在するrecipeがビルドレシピ
* ビルドインフラストラクチャ
* feedstock-bundle
* Azure DevOpsで自動的にビルドを実行
* CIで自動ビルドするインフラもconda-forgeの一部
* パッケージマネージャのディストリビューションのコレクション
* miniforge: channelがconda-forgeに限定されたバージョンのconda/mamba
* minicondaのconda-forge版
* https://github.com/conda-forge/miniforge
* miniforge
* miniforge-pypy3
* mambaforge
* mambaforge-pypy3
* condaもmambaを使っている
* ブログ記事に詳しい
* conda-libmamba-solverが使われていることでcondaも高速化されている
* micromamba
* minicondaやminiforgeを必要としないsingle binaryで提供されるコマンド
* 今の所windowsでは使うのは難しい、WSLが良い
* prefix.dev
* Dockerコンテナでの作業と同じぐらいシンプルな体験を提供することをミッションとした会社
* micromambaを実際に動作させる
* base環境は構築時に何も入れないとpythonすら入っていない状態になっている
* jupyterlabをcreate時に追加した環境下ではpythonが入る(jupyterlabがpythonに依存しているため)
* 西田さんはmicromambaではなく普段はmamba-forgeを使用
* mamba update allでライブラリを入れ、vscodeで開発するスタイル
* vscodeのextension
* jupyter
* jupyter cell tags
* jupyter keymap
* jupyter notebook renderes
* jupyter slide show
* anacondaをどこまでちゃんと使って良いか世の中の人は分かっていないのではないか?
* 利用規約的にはcondaのchannelをconda-forgeに限定すれば問題ないと思われる
* legalのページをちゃんと読みましょう
* 自社でanacondaのミラーを立てるのは完全にNG
* リスクを追わないためにはminiforge/mambaforgeを使おう
### 大橋
* Emscripten-forge について
* kozo2 のトーク (conda-forge に osx-arm プラットホームがサポートされたりしていること) を踏まえると Emscripten-forge がどういうものか想像できる
* とともに prefix.dev がどういう感じのことをやろうとしているか想像できる
* Linux と Windows のパッケージビルドをサポートするだけでも難しいので osx-arm や webassembly もサポートするとなると相当大変
* だから prefix.dev のようなスタートアップを起こしたのだろう
* emscripten-forge のレシピのありか
* https://github.com/emscripten-forge/recipes/tree/main/recipes/recipes_emscripten
* ↑に含まれるパッケージは jupyterlite で使える(はず)
* boa について
* https://github.com/PyDataOsaka/meetup-027/tree/main/micromamba_example を参照
### 雑談
* webassembly に興味を持つ人はそれなりにいる。例えば Ruby。
* 過去のトークの使いまわし + 録画 をするのはどうか?