クレジット:
クレジット:
また、7 人の Ruby 専門家からなるパネルから、Ruby プログラミング言語の長所と限界、およびお気に入りの Ruby アプリとツールについて、より一般的な洞察も得られました。
新しい Ruby 開発を始めたばかりの場合は、こちらをチェックしてください。Ruby 初心者のためのヒントこれには、同じ専門家グループからの入門レベルのアドバイスが含まれています。スキルを向上させたい中級開発者の方は、こちらもチェックしてください。ツールとアドバイス中級レベルの Ruby プログラマー向け。
ジャック・クロッカー: コアライブラリの代替品
クレジット:
コードを共有するために用意されているツールが、Ruby エコシステムで気に入っている点の 1 つであると彼は言います。 」GitHubそして特にRubyGems.orgライブラリを世界にリリースすることを簡単にします。想像できるほぼすべての API やインターフェースに対応する既存の gem を見つけることができるでしょう。」
Ruby の制限について、Crocker 氏は次のように述べています。「コア ライブラリの一部は、停滞している。幸いなことに、ほとんどすべての無愛想な古い Ruby 標準ライブラリには、問題を解決するまともなサードパーティの gem の代替案が用意されています。Ruby の標準ライブラリの確実な代替品が毎週登場しており、Ruby 2.0 でより簡単なライブラリを実現できるという話もあるようです。標準ライブラリを交換するためのアプローチ。」
たとえば、彼は次のように引用しています。台風HTTP ではなく、NokogiriXMLの場合、RスペックTest:Unit の代わりに、そして精神YAMLの場合。
クロッカーさんもオススメサービレーサー、Google V8 を Ruby バインディングでラップするライブラリ (「私は現在、coffee-script gem を使用して Ruby 内で CoffeeScript をネイティブに実行するためにこれを使用しています」)、およびマクルビーこれは、Ruby で Mac アプリを構築するときに Cocoa オブジェクトにネイティブにアクセスできるように、Objective-C 環境で Ruby 言語を再実装します。
イェフダ・カッツ: コードのリファクタリング
クレジット:
彼は、「Ruby 開発コミュニティのほとんどは Rails フレームワークを中心にしていますが、事実上すべての新しい NoSQL データベースや Twitter や Facebook などのサービスとの接続など、ほぼあらゆるものに対応するスタンドアロン ライブラリがあります。」と述べています。
Katz が Ruby について気に入っているもう 1 つの点は、「コードを変更することなく、任意のコンテキスト (クラス本体を含む) のコードをメソッドにリファクタリングできる機能です。この点で Ruby を輝かせる 2 つの機能は、実行可能なクラス本体と Ruby のブロック セマンティクスです。」
カッツ氏の例は次のとおりです。
attr_accessor ロジックを繰り返し使用していることが判明した場合は、それを複数のクラスで使用できるメソッドに抽出できます。
「これは比較的単純な例ですが、Ruby の単一コンテキスト アプローチのリファクタリング能力を示しています」と Katz 氏は述べています。
彼はブロックにも同様の力があると続けた。
「多くの言語が言語機能として実装している同期ロックの古典的なケースを考えてみましょう。」
「理想的には、ミューテックスのロックとロック解除を synchronize メソッドに抽象化できます。Java ではそれは不可能です。クロージャがまったく存在しないため、synchronize は言語のキーワードです。言語であっても」と Katz 氏は言います。クロージャを持つ JavaScript と同様に、この変更を行うのは簡単ではありません。JavaScript でミューテックス ロックを別の関数に抽出する試みを見てみましょう。
「ここでの問題は、synchronize に渡された関数の戻り値が内部関数から返されていることです。同期されていないコードを synchronize ブロックに移動しても、確実に機能しません。
「対照的に、Ruby のブロックはこの問題を処理できます。」
「要するに、Ruby はコードをメソッドにリファクタリングしやすくすることと、単一コンテキストの原則 (クラス本体はメソッド本体と同じように機能する) を中心に設計されており、Ruby のブロック セマンティクスはこの約束を果たします。」と Katz 氏は結論付けています。
フェルナンデスとも: RailsForZombies と非営利的な側面
クレジット:
Ruby の開発とデプロイメントに関して、彼は Heroku が「素晴らしい」と述べ、次のこともお勧めします。RailsForZombies.org、Web ベースのインタラクティブな Rails サンドボックス環境があります。 「これは人々に、設定も言い訳も不要で Rails を始めるための方法を提供し、このテクノロジーの非常に優れた基本的な使い方に基づいています」と彼は言います。
フェルナンデス氏は、Ruby プログラミング言語の「競争上の優位性」を利用して金儲けをするのが大好きだと言う一方で、Ruby の強みの 1 つは企業としての独立性であるとも述べています。
「オラクルやマイクロソフト、そして彼らの開発者コミュニティで見られるような問題を引き起こして、私たちに全面的に資本を巻き込んで問題を引き起こしている大手商業ベンダーは存在しません。私たちの分野で行われるほぼすべてのこと、その99%はオープンソースへの愛と情熱のために行われています。私が知っている限り、象牙の塔を掲げる大規模な生産者はいません。」
ライアン・ベイツ: ブロックとメモリ処理の向上
クレジット:
Bates 氏は、「他の言語を使用するときに最も恋しく思うことの 1 つは、Ruby のブロック構文です。これにより、配列の再マップなどの単純な日常タスクが便利で美しくなります。」と述べています。
しかし、同氏は、Ruby の「同時実行性のサポートが不十分」であることを言語の欠陥の 1 つとして挙げています。 「Rails 開発者なので、アプリの複数のインスタンスを起動するのは簡単なので、通常はこの問題に遭遇しません。その場合、メモリが問題になる可能性があります。メモリ処理が改善されることを願っています」と彼は言います。とRubyでの管理。」
巧妙なハッキングに関する限り、Bates 氏は次のように述べています。「Web 上で Ruby オブジェクトを公開するためのこの小さなトリックは、非常に巧妙です (そして、非常に安全ではありません)。」
デジ・マクアダム: 遅さに対するルビーの悪いラップ
クレジット:
McAdam 氏は、「言語の表現力の豊かさにはいつも驚かされます。Ruby を使用すると美しいコードを非常に簡単に記述できるため、Ruby でのコーディングを楽しんでいます。」と述べています。
Ruby の欠点に関して言えば、マクアダム氏の発言は実際の欠陥よりもその言語の評判に重点を置いています。 「この言語を使用しない理由として、『Ruby は遅すぎる』という言い訳を何度誰かに与えられたかわかりません。もちろん、これが真実である可能性がある状況もいくつかあります。しかし、ほとんどの場合、それはただの理由です」重要ではないので、他の手段で処理できます。」
彼女がチェックすることをお勧めする、Ruby で構築されたクールなアプリは次のとおりです。マーキュリーアプリ、特定の事柄について自分がどう感じているかを時間の経過とともに追跡できます。近くのデスク、共同作業アプリであり、Rails Rumble の優勝者です。そして立派な子供たち、子供の良い行動を強化するための正のフィードバックシステム。
ラケル・ヘルナンデス: IRB、RVM、Sinatra、Homebrew
クレジット:
Hernandez 氏は、成長を続ける Ruby コミュニティの強さを称賛する一方で、その最大の制限は「スピードとスケーラビリティであり、これが今日の問題となっていますが、これを防ぐために常に改善が行われています。私はこれがそうではないと思います」と述べています。近い将来に問題が起きるだろう。」
彼女はまた、「IRB なしでは 1 日も生きていけませんでした。これは Ruby の最も人気のある機能の 1 つです。」とも述べています。彼女はこれを読むことも勧めていますIRB のヒントとテクニックのリスト。彼女は好きですRVM複数の Ruby 環境で作業できるようにしてくれたおかげで、シナトラRuby アプリを素早くプッシュするため、そして自作OSXパッケージ管理用。
ホセ・バリム: オブジェクト、継承、ビルダー ライブラリ
クレジット:
Valim 氏はまた、Ruby コミュニティを称賛し、「私たちには、よく開発され、テストされ、文書化されたコードという、ソフトウェアのクラフトマンシップを重視するコミュニティがあります。」と述べています。
彼はまた、「Ruby を操作するのがとても楽しいもの」を例証するいくつかのコード サンプルも共有しています。
「これは、Ruby の 2 つの機能を示しています。Ruby のすべてはオブジェクト (数値も含む!) であり、Ruby のクラスは変更可能です。これは、新しいメソッドを使用して Ruby の整数 (Fixnum オブジェクト) を拡張できることを意味します。
「上記の例は、Rails フレームワークから抽出および簡略化されたもので、有効な Ruby 式として 3.days.ago または 5. minutes.from_now を記述できます。Web アプリケーションでは時間間隔を扱うのが一般的であり、そのような変更により快適な操作が可能になります。それらを操作するのは簡単です。」
「この 2 番目の例は、継承、Ruby ブロック (オンデマンドで渡されて呼び出すことができるコードの一部)、およびメソッド コントラクトを示しています。ほとんどの言語は、switch/case ステートメント (Ruby では case/when と呼ばれます) を内部的に実装しています。Ruby では、一方、オブジェクトを when ステートメントに渡すには、 === という名前のメソッドを実装するだけでよいことを指定します。上記の例は単純で、if/else ステートメントを使用して実装できますが、柔軟性が示されています。すべてがオブジェクトであるため、Ruby言語で実現できますそして言語はメソッド契約に大きく依存しているためです。」
「最後の例では、XML の作成を簡単にする builder と呼ばれるサードパーティのライブラリを使用しています。これは、method_missing と呼ばれる Ruby の機能に依存しています。Ruby オブジェクト内のメソッドを呼び出し、このメソッドがその中で定義されていない場合は常に、Ruby はこの場合、ビルダー ライブラリは、XML の作成を簡単にする方法でこのメソッドを実装します。
具体的な質問やヒントはありますか?
あなたがクラック Ruby 開発者で、質問がある場合は、お気軽にコメント欄に書き込んでください。私たちのパネリストは、さらに多くのフィードバックを求めて立ち寄る可能性があります。
同様に、質問に答えたり、自分自身の素晴らしいアドバイスを伝えたい場合は、コメントを残して、私たち全員に教えてください。
Rackspace がサポートするシリーズ
クレジット:
のウェブ開発シリーズによってサポートされていますラックスペース、ホスティングを行うためのより良い方法。 Web ホスティングの稼働時間を心配する必要はもうありません。パッチの適用、更新、監視、データのバックアップなどの最新情報を維持するために時間、エネルギー、リソースを費やす必要はもうありません。その理由を学びましょう。
Mashable のその他の開発および設計リソース: