Ruby

 Computer >> コンピューター >  >> プログラミング >> Ruby
  1. Rbenv・RubyGems・Bundlerの仕組みと連携を徹底解説

    Rubyで開発を行う際、依存関係の管理は通常、プロジェクトが依存するRubyのバージョンやgemのバージョンを明示することから始まります。筆者の経験上、Rubyの依存関係のデバッグは最も苦労する作業のひとつでした。多くの処理は「そのまま動く」ため失敗は頻繁ではありませんが、一度問題が発生すると、原因の特定と修正が不必要に難しくなることが多いのです。本記事では、Rubyにおける依存関係管理に関わる各コンポーネントを整理して解説します。これにより、奇妙な問題に直面した際のデバッグが格段にしやすくなるでしょう。 Rubyのコード読み込みの仕組み デフォルトで、Ruby言語には外部で定義された

  2. Railsアプリをサービスオブジェクトでリファクタリングする方法

    サービスオブジェクト(Service Object)とは、単一のアクションだけを担うRubyオブジェクトのことです。ドメインやビジネスロジックにおける一連の処理を、ひとつのクラスにカプセル化します。例として、架空の図書館管理アプリケーションで本(Book)を作成する場面を考えてみましょう。素のRailsアプリでは、コントローラに次のように記述します。class BookController < ApplicationController def create Book.new(*args) end end シンプルな処理であればこれでも十分です。しかし、アプリが成長するに

  3. Rubyニュースブリーフ(2021年第2四半期):イベント・セキュリティ・トレンド総まとめ

    Honeybadgerの四半期ブリーフィングでは、プログラミングコミュニティにおける最重要の動向をいち早くお届けします。ニュースを厳選して紹介することで、皆様が本当に大切なことに集中できる時間を増やすお手伝いをします。 イベント:カンファレンスやミートアップの開催予定と実施報告 セキュリティ:最近の脆弱性レポート プロジェクト:主要なコミュニティプロジェクトに関するニュース トレンドトピック:話題となっている大きなテーマの要約 注目コンテンツ:他のセクションには収まらない、見逃せない優れたコンテンツ イベント RailsConf 2021(4月12日〜15日開催) RailsCon

  4. AWS LambdaでRailsアプリを動かす方法!Lambyを使ったデプロイ手順を徹底解説

    サーバーレスコンピューティングは、サーバーの管理やプロビジョニングの作業をクラウドプロバイダーにオフロードできる仕組みとして、多くのテックチームで急速に標準になりつつあります。その代表格がAWS Lambdaです。LambdaはNode.js、Java、Python、Rubyといった主要なプログラミング言語を幅広くサポートしています。しかし、言語そのものだけでなく、それらの言語で構築されたフレームワークの機能に依存するサーバーレス関数を実行したいケースもあるでしょう。 本記事では、RailsアプリケーションをAWS Lambda上で実行する方法を解説します。サーバーレスコンピューティングとAW

  5. ActiveRecordのupdate_countersで競合状態を防ぐ

    Railsは巨大なフレームワークであり、特定の状況で役立つ便利なツールが多数組み込まれています。このシリーズでは、Railsの巨大なコードベースに隠された、あまり知られていないツールのいくつかを紹介していきます。 今回は、ActiveRecordのupdate_countersメソッドを取り上げます。その過程で、マルチスレッドプログラミングにおけるよくある落とし穴である「競合状態(レースコンディション)」と、このメソッドがいかにしてそれを防止できるかを見ていきます。 スレッド プログラミングにおいて、コードを並列実行する方法には、プロセス、スレッド、そして(Rubyでは比較的最近)ファイ

  6. RailsでTailwind CSSを使う方法|導入から実践的なスタイリングまで徹底解説

    CSSは魔法のような存在ですが、同時に時間のかかる作業でもあります。美しく、機能的で、アクセシブルなサイトは使っていて心地よいものですが、自分でCSSを一から書くのは骨の折れる仕事です。近年はBootstrapをはじめとする多くのCSSフレームワークが登場し、その中でもTailwind CSSは特に注目を集めています。 RailsにはTailwindが標準搭載されていませんが、この記事では新しいRuby on RailsプロジェクトにTailwind CSSを追加する方法を解説します。これにより、デザイン実装にかかる時間を大幅に節約できるでしょう。さらに、Tailwindのユーティリティクラス

  7. Rubyの線形回帰で未来を予測する方法

    私たちが日々行う選択の多くは、実は数値的な関係に基づいています。科学者がコレステロールを下げると言うから、特定の食品を食べる収入が増えやすいから、学歴を積む最も資産価値が上がりそうだと考えた地域に、家を買うこれらの結論には、どうやって到達するのでしょうか?おそらく、誰かが大量のデータを収集し、それを分析して結論を導き出したのでしょう。よく使われる手法のひとつが「線形回帰」で、これは教師あり学習の一種です。教師あり学習の詳細や活用例については、このシリーズの第1回をご覧ください。線形関係とは2つの値(xとyとします)の間に「線形関係」があるとは、xが1変化すると、yも必ず一定の量だけ変化すること

  8. Railsのパフォーマンス改善:キャッシュに頼る前に検討すべきこと

    プログラミングにおける「キャッシュ」とは、値を一時的に保存しておき、後で素早く取り出せるようにすることを指します。通常は、外部APIへのリクエストが必要だったり、大量の数値処理を要したりといった理由で計算に時間のかかる値が対象になります。 キャッシュされた値は、memcachedやRedisのような専用サーバーに保存されることが多く、ディスク上にもRAM上にも格納できます。またコードの中では、コストの高い関数を何度も呼び出さずに済むよう、変数にデータを「キャッシュ」しておくこともよくあります。 data = some_calculation() a(data) b(data) 速度向上と引き

  9. Rubyで作るおもちゃのプログラミング言語「Stoffle」入門

    プログラミング言語は、不思議でありながら魅力的な道具だと感じたことはありませんか?そのフードを覗き込み、内部で何が起きているのかを理解できたら素晴らしいと思いませんか?ゼロからプログラミング言語を作ってみたいという興味をお持ちなら、この記事と今後のシリーズ記事がきっと役立つはずです。 このシリーズでは、非常にシンプルなインタプリタ型・動的型付けのプログラミング言語を、ステップバイステップで一緒に作り上げていきます。「インタプリタ型」「動的型付け」といった用語の意味が今ひとつピンとこなくても、心配はいりません。実装には親しみやすいRubyを使い、初心者から上級者まで誰でもついてこられるよう、各

  10. Rubyで学ぶニューラルネットワーク超入門――思っているほど難しくない!

    この記事では、ニューラルネットワークの基礎と、Rubyを使った実装方法を学びます。人工知能やディープラーニングに興味はあるものの、何から始めればいいのか分からない方にぴったりの内容です。シンプルな例題を通じて、重要な概念をわかりやすく解説していきます。実際にRubyで多層ニューラルネットワークを書くことはほとんどありませんが、コードがシンプルで読みやすいため、内部で何が起きているのかを理解するには最適なアプローチです。まずは少し立ち止まって、私たちがここに至るまでの道のりを見てみましょう。 映画『エクス・マキナ』のワンシーン 『エクス・マキナ(Ex Machina)』は2014年に公開され

  11. メモ化でRailsを高速化する:基礎から実践テクニックまで徹底解説

    アプリケーション開発では、処理が遅いメソッドによく出会います。データベースへのクエリ発行や外部サービスへのアクセスが必要なメソッドは、どうしてもパフォーマンスが低下しがちです。必要になるたびに毎回メソッドを呼び出してオーバーヘッドを受け入れることもできますが、パフォーマンスが重要な要件であるなら、いくつかの選択肢があります。 ひとつは、データを変数に代入して再利用する方法です。これにより処理は高速化しますが、変数を手動で管理するのはすぐに面倒になります。 そこで、「遅い処理」を行うメソッド自身がその変数を管理してくれたらどうでしょうか?呼び出し方は従来どおり同じまま、メソッドが内部でデータを保

  12. Rubyで学ぶ選択ソート:仕組みの解説から実装まで徹底ガイド

    ※本記事は、Rubyでさまざまなソートアルゴリズムを学ぶシリーズの第2回です。第1回ではバブルソートを取り上げました。 この記事では、Rubyを使った選択ソート(Selection Sort)アルゴリズムの実装方法を順を追って解説します。選択ソートは「インプレース(in-place)型」の比較ソートアルゴリズムの一つで、ソート済みの要素が元のデータと同じ記憶領域をそのまま使用するのが特徴です。 はじめにお伝えしておきたいのですが、選択ソートはデータセットが小さい場合(10〜20要素程度)を除き、実務で使われることはほとんどありません。とはいえ、三輪車の乗り方を覚えてから自転車に挑むよう

  13. Rubyでの金額計算にFloatを使ってはいけない理由とBigDecimal・Money gemによる正確な通貨処理

    お金は、どの通貨であっても一見すると浮動小数点数のように見えます。しかし、金額の計算にfloatを使うのは重大な間違いです。 floatオブジェクトは、定義上、ネイティブアーキテクチャ特有の倍精度浮動小数点表現を利用する「不正確な実数」です。不正確な数値は、会計担当者にとって大きなストレスとなります。 この記事では、RubyおよびRailsで金額データを扱うためのさまざまな選択肢を、実際のコード例を交えながらわかりやすく解説していきます。 そもそもFloatとは? 前述のとおり、floatオブジェクトは通常の整数とは異なる演算を行います。これこそがfloatが不正確な数値になってしまう

  14. Test-Commit-Revert(TCR):Rubyでレガシーコードにテストを追加するための実践ワークフロー

    これは誰にでも起こりうることです。ソフトウェアプロジェクトが成長していくと、包括的なテストスイートを持たないまま本番環境にコードがデプロイされてしまうことがあります。数ヶ月後に同じコードを見返すと、理解するのが難しくなっているかもしれません。さらに悪いことに、バグが見つかっても、どこから手をつければいいのか分からないという状況も起こり得ます。 テストのないコードを修正することは大きな挑戦です。変更によって何かを壊してしまうかもしれないと確信が持てず、すべてを手動で確認するのは、良くてもミスが起きやすく、通常は不可能です。 このようなコードへの対応は、開発者が日常的に行う最も一般的なタスクの

  15. Railsのビューキャッシング徹底解説:知っておきたい基本から実践まで

    キャッシングとは、コードの実行結果を保存しておき、後で素早く取り出せるようにする仕組み全般を指す用語です。これにより、たとえばほとんど変化しないデータを取得するために、何度もデータベースへアクセスすることを避けられます。キャッシングの基本的な概念はどの種類でも共通していますが、Railsでは「何をキャッシュしたいのか」に応じて、さまざまな便利な機能が提供されています。 Rails開発者にとって一般的なキャッシングの手法には、メモ化、低レベルキャッシング(いずれもこのキャッシングシリーズの過去記事で解説済み)、そして本記事で扱うビューキャッシングがあります。 Ruby on Railsがビュ

  16. Rubyでマージソートを徹底解説!分割統治と再帰で学ぶ効率的なソートアルゴリズム

    本記事は、Rubyでさまざまなソートアルゴリズムを実装するシリーズの第3回です。第1回ではバブルソート、第2回では選択ソートについて取り上げました。 これまでの連載でも触れてきたように、データをどう並べ替えるかを理解することは、ソフトウェアエンジニアにとって欠かせないスキルのひとつです。幸いなことに、Rubyのような高水準言語には、配列を効率的にソートできる組み込みメソッドがすでに備わっています。たとえば、配列に対して .sort を呼び出すと、内部ではクイックソートが使われています。本記事では、クイックソートとよく似たアルゴリズムである「マージソート」について学んでいきます。この2つは

  17. GoによるWeb開発入門:ミドルウェア、テンプレート、JSON、データベースの基礎

    このシリーズの前回の記事では、Goのnet/httpパッケージと、それを本番環境向けのWebアプリケーションに活用する方法について詳しく解説しました。主にルーティングの仕組みと、http.ServeMux型のさまざまな特徴や機能に焦点を当てました。 本記事ではServeMuxに関する議論を締めくくるべく、標準のルーターでミドルウェア関数を実装する方法をデモするとともに、GoでWebサービスを開発する際に必ず役立つその他の標準ライブラリパッケージを紹介します。 Goにおけるミドルウェア 多くの(あるいはすべての)HTTPリクエストに対して共通の処理を実行できるよう機能を設定する手法は、ミド

  18. Apache JMeterを使ったRailsアプリの負荷テスト完全ガイド

    ソフトウェアをエンドユーザーにリリースする前に、私たちはさまざまな種類のテストを実施し、アプリケーションにバグがなくビジネス要件を満たしていることを確認します。しかし、どれほど多くのテストを行っても、実際にユーザーが使い始めるまで、ソフトウェアが安定しているとは断言できません。ユーザーがアプリケーションを使い始めた後、以下のような理由から、予期しない動作が発生する可能性があります。 ユーザーの行動は予測できない ユーザーはさまざまな場所に分散している 多数のユーザーが同時にアプリケーションを利用する可能性がある 大規模なアプリケーションでは、本格的なリリース前にこれらの点を把握しておく

  19. RubyでAWS Lambda関数を構築・テスト・デプロイする完全ガイド

    ソフトウェア開発は決して簡単ではありませんが、それ以上に大変なのが保守運用です。保守にはソフトウェアのパッチ適用やサーバーの管理が含まれます。この記事では、その中でも特にサーバー管理と運用に焦点を当てて解説します。 従来、サーバーはオンプレミス環境に設置され、物理ハードウェアの購入と維持管理が必要でした。しかしクラウドコンピューティングの登場により、物理的なサーバーを所有する必要はなくなりました。2006年、AmazonがAWSを開始しEC2サービスを発表したことで、現代のクラウドコンピューティングの時代が幕を開けました。この種のサービスにより、物理サーバーの管理やハードウェアのアップグレード

  20. ActiveRecordのキャッシュ徹底解説:データベースへの不要なアクセスを避ける仕組み

    キャッシュとは、一般的に「コードの実行結果を保存しておき、後で素早く取得できるようにする仕組み」を指します。計算済みの値を保存して再計算を避けるケースもあれば、ハードディスクへの読み込みやネットワークリクエストを避けるために、単にデータをメモリ上に保持しておくケースもあります。 後者の形は、ActiveRecordにとって特に重要です。多くの場合、データベースはアプリケーションサーバーとは別のサーバー上で稼働しているため、すべてのリクエストにはネットワーク通信のオーバーヘッドが発生しますし、同じクエリを再実行すればデータベースサーバーにも余計な負荷がかかります。 幸いなことに、Rails開発者

Total 621 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:26/32  20-コンピューター/Page Goto:1 20 21 22 23 24 25 26 27 28 29 30 31 32