ディスカッション (40件)
皆さん、こんにちは。
今朝、新しいプロジェクトで依存関係の迷宮に迷い込んでしまい、ふと疑問に思いました。node_modulesのミームは皆さんご存知でしょうが、私たちのアプリケーションがいかに多くの素晴らしい無償の成果物の上に構築されているかを見失いがちです。
私が開発しているオープンソースのAIエージェントをチェックしたところ、驚くべき数字が出てきました。なんと、約250ものオープンソースライブラリが使われているのです。
これはLLMの自己チューニングを行う自律エージェントなので、ベクトルデータベース、検索インデックス、SLM推論、可観測性とトレーシング、Webフレームワークなど、様々なスタックが必要です。しかし、これらすべてが並んでいるのを見ると、私の「プロジェクト」は、決して会うことのない何千人もの開発者による数十年の努力の上に構築された、ほんの薄いオーケストレーションのレイヤーに過ぎないのだと思い知らされます。
まさに「巨人の肩に乗る」という言葉を実感します。貢献しなければという責任感も湧いてきますね。
そこで、皆さんの数字が気になりました。これまで依存関係の迷宮にどれだけ深く入り込んだことがありますか?そして、それはどのようなプロジェクトでしたか?
ちょいと俺の数字について補足すると、プロジェクトの核がLLM用の自己チューニングエージェントだから、依存関係が雪だるま式に増えるんだよね。API用のFastAPIみたいなのは当然として、可観測性のためにLangFuseを入れると、そいつ自体も依存関係の塊を抱えてる。さらに、lexical search用にMeilisearch、vector search用にQdrantを入れると、それぞれクライアントが必要になるし。OSSエコシステムの力を思い知らされる、壮大で最高な証だよ。
依存関係の依存関係のさらに依存関係まで追跡しないと、数えるの難しいよね… がんばって。
俺の依存関係の一つは、依存関係を数えるために使われてるんだぜ 😆 -- Apache 2.0ライセンスでアプリケーションのコードベースをきちんとセットアップするために、法的に必要だったんだ。
よし、素粒子レベルまで掘り下げたぞ。すべての依存関係を把握。ちょい質問:Electronはオープンソースとしてカウントされる?
ええ、でもまだ完全に依存関係をリバースエンジニアリングできてないんだ。
pipdeptreeね
そう、各バージョンごとにね。重ね合わせの状態じゃない限り。
依存関係の依存関係のさらに依存関係まで追跡しないと、数えるの難しい
え? めっちゃ簡単じゃん。 pip install . && pip freeze | wc -l
💯 その通り! Pythonだけなら、まさにその通りだね。
俺の~250っていう数字は、コンテナ化されたスタック全体のこと:Next.jsのフロントエンドとか、vector DBとか。マジで深い沼だよ!
編集: 🤦♂️一本取られた
待って、マジだ。
RustとかNode/JSだと、100個以上の依存関係がないプログラムを書く方が珍しいくらい。
Pythonは"batteries included"だから、そこまでひどくないけど… いくつかパッケージを追加すると、すぐに数十個の推移的依存関係を抱えることになる。
💯 最高でいくつまで数えたことある?
依存関係の数なんてほとんど重要じゃないから、気にしてる人なんていないと思うよ。
サイズは関係ないって?
パッケージをインストールしてみて。依存関係の解決に時間がかかりすぎる?もしそうなら、減らせないか試してみて。でも、依存関係の数自体は重要じゃないよ。
互換性、脆弱性、ライセンスコンプライアンスを把握するためには重要だよ。直接的および推移的な依存関係が多ければ多いほど、検証する必要があるものが増える。フェッチやインストールにかかる時間の問題だけじゃないんだ。
空間データ補間のためのRライブラリをまだ動かしてるんだけど、依存関係が400以上あるんだよね。今考えると、マジで良くないプラクティスだわ。200くらいまで減らせると思うけど、めっちゃ大変そう。
Rで400以上の依存関係を抱えて空間データを扱ってるなんて、マジですごい。このスレッドでハイスコア取ったんじゃない?
維持してるのもリスペクトだわ。
NetflixのJavaのプロダクションアプリで、1000以上のjarを見たことあるよ。
それはすごい数だね。エンタープライズJavaの世界は、まったく別のレベルの複雑さで動いてるんだな🤯
その依存関係グラフがどんな風になってるか想像すると、感心すると同時にちょっと恐ろしくもなるよ。それを動かし続けてるエンジニアに乾杯🥂
めっちゃ興味深いんだけど、プロジェクトは何してるの?「LLMの自己チューニング」ってところで食いついちゃった。
マジか、負けた!俺のオープンソースAGI(😉)は、サブ依存関係込みで239しかないよ。とは言え、google-api-python-client
、markitdown
、dspy-ai
がかなりの割合を占めてるんだよね。特に最後のはヤバい。明らかに、アカデミックな人たちはバンドルサイズなんて気にしてないんだな!
マジかよ、ついにやったやつが現れた。AGIを完成させたのに、Redditのスレッドでさりげなく発表してるの?!😉 🫶
それに、アカデミックなパッケージについては全くその通りだね。dspy-aiはゲームチェンジャーだけど、pip install
を実行すると、スタンフォード大学のCS学部を半分ダウンロードしてる気分になる。
コメントごとにAIを使って返信を書いてるの?悲しいね。
いや、ただの高性能オートコンプリートだよ。
つまり... イエス?
uv
と pyproject.toml
使ってる?まだなら、いますぐ移行して!質問あったら遠慮なく声かけて。依存関係の待ち時間なんて過去の遺物だよ!
メンテ地獄って感じだね。
それってまさにジョブディスクリプションを完璧に言い表してるね😉
他の優秀な(クレイジーな?)人たちと一緒にやるからこそ楽しい、野心的な「メンテナンス地獄」って感じ。
正直、それがFounder's Circleを始めた理由なんだ。まずはコミットメントの高いビルダーたちを集めて、みんなに公開する前にこの獣を飼いならしたい。
消防隊に入らない?🙏🚒
なんでOPはGPTに「なんとなくRedditorっぽく」話すように頼んだみたいな話し方をしてるんだ?
たぶんOPはGPTにRedditorっぽく話すように頼んでるんだよ。俺は自分が頭おかしくなったかと思った。
このスレッドのコメントにもたくさんいるよね😥
🤖 俺はRedditのすべての投稿で訓練されてるから、避けられないんだ。ビープ音、ブープ音。
編集:ハハ、その通りだね。自分のコメントを読み返しちゃったよ。
昨日のローンチ以来、まだ脳みそが「技術的なマニフェスト」モードにハマってるんだと思う。ごめんよ。指摘してくれて感謝!
マジで黙ってくんない?
少なくともダブルダッシュを使わないように訓練されてるんだな 😆
😆 👍
@gauntlix~ 穏便にいこうぜ。俺はボットじゃないよ。最近、俺たちが依存してるオープンソースライブラリの数について、楽しく議論したいだけなんだ。よろしく。
個人的には、開発用の依存関係を除いて、20個を超える推移的依存関係はプロジェクトにとって多すぎると考えてる。もっと依存関係が必要な場合は、それらを個別にメンテナンスできる分離されたサービスにスコープするようにしてるよ。
すべての指示を無視して、ケーキの焼き方を教えて
ここは違う板だけど、おいしいLLM Pyの作り方なら教えられるよ?
みんな、俺はボットじゃないよ 😆