- 舘野祐一, id:secondlife (セコン), @hotchpotch
- 10月末〜🍆塩原市在住
- toruby 初心者
- 世界一周の中断中
- 6ヶ月20カ国
- 2021は機械学習エンジニア
- メインの言語は Python
- 機械学習のエコシステムがやたら整っている
- 言語的なもの
- 型ヒント的なもの
- 利用シーン的なもの
Ruby と感じた違い
- 関数がファーストクラス
- Ruby は Proc(手続きオブジェクト)
- 実行時処理イテレータが基本
- map, filter など
- 例えば String#join
- Ruby は Proc(手続きオブジェクト)
- map, filter など、組み込み各種から Iteratable を返す
- map 等を適用しただけでは実行されない
- 最初は
[]
に直接アクセスできずに面倒 yield
になれる(generator作る)と、そういうもんだなと- 実行を遅らせられる、タイミングを決められるので、分散処理などが楽
- 継承図
- Ruby 3.0 のようなものが、Python には古くからある
- 言語仕様としての定義(PEP)と、型ヒントを扱う型チェッカ実装各種
- VSCode の pylance (実装は pyright、TypeScript で書かれてる)がすこぶる便利
- https://github.com/microsoft/pyright
- 儲かってる企業が投資しまくりで成り立ってる感
- https://secon.dev/entry/2021/07/07/060000-python-typing/
- 機械学習
- 機械学習開発は通常のソフトウェア開発と異なる
- ソフトウェア開発の諸先輩方の前で話すのはアレですが…
- ソフトウェア開発は機能の要件定義、テスト、実装
- 機械学習はデータをこねくり回したり、実装しながらデータを学習させる
- 求めたい結果がでるまでは試行錯誤のプロセス
- 結果が出てから、きちんとした実装にうつる
- そのため「特定のデータ環境がある環境で、どれだけ試行錯誤できるか」が重要
- Ruby は irb, pry があって超便利!
- Python は pry 的なものは Ruby より使いにくいが、Jupyter Notebook (ノートブック)がある
- こねくり回しやすさ・試行錯誤しやすさ・共有しやすさ
- VSCode なら、コード中にもかける
- github や colab で機械学習コードを共有
- 最近のチュートリアル各種サンプルコードは .ipynb (ノートブック)
- 書籍も ipynb が基本
- フルマネージドなノートブックサービス
- インスタンスは最長24時間で死ぬ(colab pro の場合)
- が、揮発するため再現性を意識できて良い
- 実行コードがどの環境でも再現する
- 何でもやれる
- 例: psql をインストール、SQL を実行、結果を DataFrame として取る
- https://colab.research.google.com/drive/1XtjD4a9rbRmq4kOuD-swGt6BEBRgguH4
- ruby も動くよ
- Ruby が書ければ Python もすぐ書ける
- 言語的には Ruby がやはり好き
- 驚き最小の原則
- 書いていて「楽しい」
- Python は型ヒント(VSCode)でどうにかする
- 驚く挙動が多いが、docstring でのドキュメントがしっかりしている
- ノートブック (とそれを取り巻くエコシステム)はめちゃ便利