Ruby on Railsが優れている理由と開発のスピードアップ方法





この投稿は、プログラマーKrzysztof KopidlowskiによるRuby on Railsの利点を探求する記事の翻訳です。 この資料は、主に初心者プログラマーに、そして専門家にのみ興味があります。



Ruby on Railsは、通常開発に費やす時間を節約できます。 このフレームワークを使用すると、コードが少なくなり、機能が同じままになるためです。



Skillboxの推奨事項:実践コース「Profession Web Developer」



「Habr」の読者には、「Habr」プロモーションコードを使用してSkillboxコースに登録すると10,000ルーブルの割引があります。


JavaからRubyへ



私にとって、Rubyでの作業はリアルタイムの節約になります。 行ごとに多くのコードをいじるのではなく、メソッドとロジックに集中できます。 Javaはゲームチェンジャーだと思っていましたが、Ruby on Railsを学んだ後はさらに感銘を受けました。



約1年間、私はJavaで記述し、バックエンド開発を行ってきました。 私には、この言語で作業しているプログラマーは、私が話していることを理解しているように思えます。 .zipファイルを返すエンドポイントを作成するとします。 この問題は問題なく解決できますが、これには数百行のコードが必要です。



しかし、数十行を省くことができると言ったらどうでしょうか?







これはRubyです-オブジェクト指向、動的、反射的、解釈された高レベルプログラミング言語。 オペレーティングシステムに依存しないマルチスレッド実装、強力な動的型付け、ガベージコレクター、およびその他の多くの機能を備えています。 GitHubやTwitterなど、多くのWebアプリケーションを作成しました。



Rubyはコードを削減します



おそらく、上記のロジックを維持しながら、コードの量を数十行に減らすことが一般的にどのように可能であるかを自問しているのでしょう。 これは本当に可能です。フレームワークについてはまだ話していません。純粋な言語についてです。



たとえば、配列があり、すべての要素を2ずつ増やしてからJavaで逆の順序で返す場合、コードは次のようになります(Listインターフェイスを使用)。



import java.util.*; import java.util.stream.Stream; import static java.util.Collections.reverseOrder; import static java.util.stream.Collectors.toList; public class MyClass { public static void main(String args[]) { List<Integer> list = Stream.of(1, 2, 3) .map(val -> val + 2) .sorted(reverseOrder()) .collect(toList()); list.forEach(System.out::println); } }
      
      





Rubyでも同じことが次のようになります。



配列= Array.new(5,2)

array.map {| x | x + 2} .reverse



違いは明らかです。 また、クラスをインポートする必要はありません。



動的型付け



実際にコード行が多すぎないことを確認した後、上記の例では変数の型が設定されていないという事実を考えることができます。 これは本当です-実際、Rubyではすべての変数が動的に型付けされます。



2つのパラメーターをとるメソッドを作成している場合、そのタイプを指定する必要はありません。代わりに、ロジックに集中できます。 結果:コードが少なくなり、品質とクリーンさが向上します。



Rubyには、コーディングを高速化できる多くのネイティブメソッドもあります。 プログラムを作成するとき、ほとんどの場合、ハッシュを配列に変換してから、JSONに変換します。 Rubyでは、たった1行で実行できます!



レール上



最も人気のあるRubyフレームワークはRailsです。 JavaのSpringとほぼ同じ機能を言語に提供します。 あなたに役立つかもしれない私の発見のいくつかを共有したいと思います。



1か所ですべてのエンドポイント



Railsで気に入っていることの1つは、すべてのエンドポイントを宣言するために必要なファイルは1つだけであることです。 ターミナルコマンド$ rake routesを使用して、それらを表示できます。 これは、すでに作成されている内容に基づいて何かを行う必要がある場合に、大規模なプロジェクトに最適なオプションです。



さらに、エンドポイントをグループに分割できます。 たとえば、ユーザーモデルがある場合、すべてのメンバーのパスを設定して、各エンドポイントが独自の識別子を自動的に取得できるようにすることができます。



同じエンドポイントに異なるパラメーターを使用する必要はありません。 Railsでは、デフォルトで、エンドポイントに任意のパラメーターを渡し、コントローラーで使用したいパラメーターのみを検証できます。



def user_params

params.require(:ユーザー).permit(:名前、:姓、:誕生日、:アバター)

終わり



Railsデータベース



すべての移行はここでアプリケーションに登録されるため、異なるデバイスでデータベースを設定すると、1つのコマンド$ bundle rake db:setupを実行することになります。 したがって、データベースを構成または使用するために外部クライアントは必要ありません。



いいえ、作成して別のデバイスに転送したデータベースは空になりません。Railsアプリケーションにはseeds.rbというファイルがあり、アプリケーションの動作に必要なさまざまなモデルのすべてのレコードを指定できます。 その結果、モデルには数行のコードしか必要ありません。



$ bundle rake db:setupコマンドには3つの機能があります。





コードは本当にすっきりしています。ActiveRecordsは、属性ではなく、実装する必要があるメソッドを記述するだけです。



JavaのHibernateフレームワークでは、すべての属性を注釈で登録し、変更する必要のある属性のセッターを登録する必要があります。 この場合、大量のコードが出力されます。



Railsでは、同じことが1行を占めます。 DBスキーマはschema.rbファイルに保存されます。このファイルは、移行の開始時に自動的に作成されます。 また、クラスにはセッターや属性は必要ありません。 後者が必要な場合は、Model.attributeと書くだけで十分です。これですべてです。



前述のように、Railsを使用すると、コードではなくプロジェクトのロジックとメソッドに集中できます。







おわりに



Ruby on Railsを使用すると、動的な型付けや再プログラミングなどの強力なツールを使用して、プログラミングプロセスをかなり高速化できます。



Webアプリケーション開発のコースを受講する場合は、小さなRailsアプリケーションを作成して、その動作を理解してください。 従来のツールを好む場合でも、新しいことを学ぶのに遅すぎることはありません。






All Articles