Gemが必要な場合は次のようになります。Rubyの代替案を考えよう。シンプルな代替案を探そう。ネイティブ拡張を備えたGemはシステムを不安定にする可能性があり、原因不明のバグやクラッシュの原因になりかねません。必要な価値以上の依存関係を引き込むGemは避けましょう。悪いGemの例にfogがあります。このGemは39個ものGemを引き込みます。これはRails自体よりも多い依存関係であり、そのうちの多くは不必要です。最後になりますが、本当に必要なGemだけを読み込むようにしましょう。Bundlerのグループサポートを使って、テストしていない時にはテスト用のGemをオフにしておきましょう。etcendGemの開発者たち、よく聞いて!ライブラリの作者として、あなたはユーザとアプリケーションに敬意を持って接するべきです。そもそもの依存関係を最低限にする努力をしてください。すれば彼らのアプリケーションに対し余分なコードを読み込ませたり、問題を起こしたりしなくても済むでしょう。自身のコードはコントロールできても、依存関係はコントロールできません。ライブラリの依存関係にバグがあれば、ユーザや彼らのアプリに問題を引き起こすバグになるかもしれません。あなたはGemの開発者として、各Gemの依存関係について以下を把握していますか?どれだけのメモリを必要とするか。requireにどのくらい時間がかかるか。モジュールの中や外でモンキーパッチを行うかどうか。Sidekiqはあれだけの機能を備えながら、たった3つのランタイムの依存関係しかありません。concurrent-ruby、connection_poolとredisです。the」)(訳注:英語では”jsonくたばれ”です)余りにも多くのGemがJSONやOJ、multi_json、yajl-rubyなどへの依存関係を宣言しています。JSONの周囲には骨化した粗雑な作りのレイヤがたくさんあります。これに対して為すべきことはただ1つ、全てなくしてしてしまいましょう。JSONは1.9の頃からstdlibの中にずっと存在していました。依存関係を宣言する必要は全くありません。'json'として、あとはRubyに処理させましょう。Railsでもできたんですからあなたにもできますよ。使えるものがあるのに、なぜHTTPクライアントを選択するのでしょう?Railsアプリは全て、faraday、rest-client、httparty、excon、typhoeus、curbなど6種類ものHTTPクライアントに依存しています。その理由は、様々なGemが内部的にこうしたクライアントを利用しているからです。APIを学んで、依存関係を削除して、HTTPクライアント関連のGemについて、ユーザに余計な負担を強いるのもやめましょう。オプションとして提供してください。アプリケーションの開発者がcurbを選択できるようにするのはいいのですが、Net::HTTPを常にデフォルトとするべきです。5.0でGemへの依存関係を最低限に抑えるための作業に取り組んでいます(他の開発者、@_matthewdや@applerebelと協力しながら進めています。4.2.5は34個のGemをrequireしています。5.0b2は39個のGemをrequireします。5.0に使うGemを37個以下にできると考えています。これまでのところ私たちは、Celluloid、EventMachine、thread_safe、jsonを削除しました。残念ながら、容易に削除できるものはもう残っていません。Nokogiriはぜひ削除したいです。大量のネイティブな拡張コンポーネントの中に、大きな依存関係が含まれているからです。その依存関係の中に、重要なものが幾つか含まれています。Ogaは使いやすく、より簡潔な選択肢です。Nokogiriに依存するGemを公開する場合、それはオプションとして、デフォルトはREXML(読者の皆さんの言いたいことは分かります、でも少なくともこれはstdlibに含まれるものです)またはOgaとすることを検討してください。5.0を改良することは私にもできますが、Gem全ての問題を解決するのは無理です。あなたがGemの開発者であれば、そのGemの依存関係を確認して、可能な限り削除してください。あなたがアプリの開発者であれば、Gemfileを調査して、1つか2つは削除できないものかどうか検討してください。必要なのは単純化です。Gemの1つである「Stripe」で、2つ含まれているランタイムの依存関係は両方とも削除できると、私は思います。覚えておくべきルールソフトウェア設計時のル―ルを幾つか挙げておきます。動作を速くしたいなら、コードをなくすに越したことはない。バグを減らしたいなら、コードをなくすに越したことはない。必要なメモリ容量を減らしたいなら、コードをなくすに越したことはない。コードを分かりやすくしたいなら、コードをなくすに越したことはない。依存関係はなくしましょう。すれば、Gemもアプリも改善されます。ツイート翻訳に対するフィードバックがございましたら、メールまたはGitHubのIssueよりお寄せください。Ltd.リクルートグループサイトへ。