Ruby

 Computer >> コンピューター >  >> プログラミング >> Ruby
  1. ジュニアRubyistが学ぶべき最重要ツール「Pry」——その理由と使い方を徹底解説

    コードのバグを見つけるために、putsステートメントをあちこちに挿入して、実行結果が表示されることをひたすら祈ったことはありませんか?たとえば、こんなコードを書いてみる: puts うまくいった! これをコードに組み込んでターミナルで実行しても、何も表示されない——そんな経験があるのではないでしょうか。あるいは、Ruby開発者向けの高機能なデバッグツールの噂は聞いたことがあるけれど、難しそうで手を出せずにいるのかもしれません。結局、「スパゲッティ方式」のデバッグ、つまりエディタにコードを投げて当たるかどうか確かめる方法に頼ってしまうわけです。しかし、この方法では解決策が見つかる保証はまった

  2. Rubyのビット演算ツールボックス:基本の演算子から実践的な活用例、そして魔法のようなテクニックまで

    Railsアプリの開発だけを続けていれば、ビット演算子を使う機会は一生訪れないかもしれません。プログラミングを学び始めたばかりの方なら、「ビット演算」という言葉自体を聞いたことがないという方もいるでしょう。 しかし、効率性が重視されリソースが限られたシステムに興味を持った瞬間から、ビット演算は不可欠な知識になります。ネットワークプロトコル、暗号技術、Unixのファイルパーミッション、組み込みシステムなど、さまざまな分野でビット演算が広く活用されています。 さらに言えば、コンピュータがどのようにして2つの数値を足し合わせているのかを本当に理解するには、ビット演算の仕組みを把握することが欠かせ

  3. すべてのWeb開発者が機械学習を学ぶべき理由

    私はまだ子どもはいませんが、将来子どもを持ったら、二つのことを学ばせたいと思っています。個人の資産管理(ファイナンス)機械学習シンギュラリティ(技術的特異点)が近いと信じるかどうかは別として、現代の世界がデータによって動いているという事実は否定できません。データがどのように知識へと変換されるのかを理解することは、今の時代を生きるすべての人にとって重要であり、特に開発者にとっては不可欠です。本記事は、フルスタックのRuby開発者に機械学習(ML)をわかりやすく伝えることを目指したシリーズの第一弾です。MLツールへの理解を深めることで、ステークホルダーのより良い意思決定を支援できるようになります。

  4. RubyのARGVはどうやって設定される?C言語に由来する「引数ベクター」の秘密

    Rubyがコマンドライン引数をARGVというグローバル配列に格納することは、多くの方がご存じでしょう。しかし、なぜそれが「ARGV」という名前なのか、疑問に思ったことはありませんか?実はそこには、RubyのルーツであるC言語につながる興味深い歴史的背景があるのです。 Argument Vector(引数ベクター)とは ARGVは「argument vector」の略です。ここでいう「vector(ベクター)」とは、少し古風な用法で「1次元配列」を意味しています。 C言語では、すべてのプログラムにmain()関数が必要で、一般的には次のような形をしています。 int main(int a

  5. HTTPヘッダーはどのようにnginxからRubyアプリへ渡されるのか

    現在のWeb開発のほとんどはフレームワークを使って行われています。Rails、Sinatra、Lotusなど、どれを使っていても、Cookieやその他のHTTPヘッダーがnginxやApacheからアプリケーションサーバーを経由してアプリ本体へ届くまでの仕組みについて意識する必要はほとんどありません。自動的に処理されるからです。 しかし、この「ヘッダーの旅」を少し深く掘り下げてみると、そこにはWebの歴史を感じさせる興味深い情報がたくさん詰まっています。 そもそもHTTPヘッダーとは何か? Webブラウザがリクエストを送信する際には、必ず「HTTPヘッダー」と呼ばれる情報が一緒に送られま

  6. Rubyで本格的なコマンドラインアプリケーションを構築する

    ちょっとしたユーティリティスクリプトを書くのは楽しいものですが、時には引数を受け取り、入力・出力・エラー報告などでUnixの慣習に従った、正真正銘のコマンドラインアプリケーションを作る必要があります。 幸い、Rubyにはコマンドラインアプリを比較的容易に作るためのすべての構成要素が揃っています。この記事では、特定のgemを使った「Xを実現する方法」という断片的なアプローチを超え、一流のコマンドラインアプリを構成するすべてのピースを広く概観します。 入力: 環境変数 環境変数は、しばらくの間保持しておきたい短い設定値に通常使用されます。APIキーが好例です。 環境変数の設定 ユーザーは

  7. Rubyでゼロから学ぶ! シンプルなWebSocketサーバーの自作ガイド

    近年、WebSocketはますます注目を集めています。「これこそ未来の技術だ」「Rails 5のActionCableのおかげで、かつてないほど簡単に使える」——そんな話を耳にすることも多いでしょう。しかし、そもそもWebSocketとは何なのでしょうか? そして、どのような仕組みで動いているのでしょうか? この記事では、こうした疑問に答えるため、Rubyを使ってゼロからシンプルなWebSocketサーバーを構築していきます。最終的には、ブラウザとサーバーの間で双方向通信を実現できるようになります。 本記事のコードはあくまで学習用のものです。実際の本番アプリケーションにWebSocket

  8. AptWatcherの発表:サーバーのaptパッケージ更新をSlackへ通知するシンプルなツール

    Honeybadgerでは、すべてのサーバーにおけるaptパッケージの更新状況を把握し続けるために、これまで「apticron」を活用してきました。当初はapticronからの通知メールを自分の受信箱で確認していましたが、途中から「Slackの通知チャンネルに流れたほうが扱いやすい」と感じるようになりました。Slackにはメールを受信してそのままチャンネルへ投稿できるEmailアプリがあり、まずはそれを試してみました。ところが実際に使ってみると、メールがファイルとして表示されてしまったり、メールヘッダーのノイズが目立ったりと、どうにもしっくりきません。そこで「もう少しこなれた仕組みを自分で作ろ

  9. RubyのURI.joinはなぜ直感に反する動きをするのか?

    Honeybadgerでは、ついに一つの節目を迎えました。販売ページがメインのRailsアプリケーションから分離されたのです。これは何年も前から私のウィッシュリストに入っていたものの、優先度はそれほど高くありませんでした。 この移行作業の一環として、特定のリダイレクトリンクを作成するためにURI.joinを使う場面がありました。ところがすぐに問題にぶつかります。URI.joinが期待どおりに動作しなかったのです。 私は、複数のパス断片を受け取って、それらを次のように連結してくれると考えていました。 # こうなることを期待していた。しかし現実は違った。 URI.join(https://w

  10. DockerでSinatraアプリをAmazon ECS(EC2 Container Service)にデプロイする方法

    告白タイムです。Honeybadgerで働き始めてから4年間、私の開発環境はほとんど変わっていませんでした。しかし、その間にHoneybadger自体は大幅に進化し、機能するために約10個ものサービスに依存するようになっていました。 そこで私たちは、ローカル開発環境をDockerへ移行することにしました。各開発者がPostgres、Cassandra、Memcachedなどを個別にセットアップする必要はなく、docker-composeを使えば、あらかじめ用意された環境をすぐに立ち上げられます。本当に快適です。 当然ながら、「Docker化したアプリを実際にデプロイするのはどれほど簡単なのだろ

  11. EC2でアプリケーションシークレットを安全に管理する方法 〜AWS KMSとS3による暗号化の実践〜

    EC2にアプリケーションをデプロイする際には、Auto Scalingグループの活用がおすすめです。Auto Scalingグループを使えば、需要の増減に応じた自動的なスケールアップ・ダウンや、障害インスタンスからの自動復旧が、すべて手動操作なしで実現できます。ただし、これらを正しく機能させるには、各インスタンスが起動完了後すぐに本番トラフィックを処理できる状態になっている必要があります。新しいサーバーで手動設定を行ったり、Capistranoで初回デプロイを実行してから公開する運用に慣れている方にとっては、そこまでの自動化に少し追加の手間が必要になるでしょう。 具体例:Railsアプリケー

  12. RubyistのためのBig-O記法入門 ― 計算量をやさしく理解する

    コンピュータサイエンスの学位を持たない開発者は、Rubyコミュニティにもたくさんいます。私もその一人です。そのため長い間、Big-O記法の学習を避けてきました。どう見ても高度な数学にしか見えなかったのです。だって、O(N^2)ですよ。無理だと思いませんか? そこで私は、代わりにこうした経験則を学んできました。 特定の要素を探すなら、ArrayよりもHashの方が速い ネストしたループは避ける ビューでリストを生成する際、意図しないDBクエリが発生していないか注意する これらのルールは確かに便利ですが、なぜそれが機能するのかを理解していなければ、ミスをしたり、原因不明のパフォーマンス問

  13. Rubyカンファレンスが教えてくれること――技術者に求められる「リーダーシップ」の本質

    なぜRubyカンファレンスでは、もうRubyの話をしなくなったのか? 一見すると矛盾しているように聞こえるかもしれません。しかし、Rocky Mountain Ruby 2016へのスポンサー参加を通じて見えてきたのは、コミュニティの多様化と、それに伴う議題の変化でした。 今回カンファレンスに派遣した担当者は、実は開発者ではなく営業職のメンバーでした。正直なところ、技術的な講演内容について少し不安を感じていたのも事実です。ところが実際にセッションを見てみると、驚くべきことに、最も経験豊富なRubyistたちでさえ、非技術的スキル――つまり職場で成功するためのソフトスキル――を強調していたのです

  14. Rubyの例外処理入門!初心者向けに基礎からわかりやすく解説

    先日、Rubyの基本構文は理解しているものの、「例外とは何か」「なぜ便利なのか」がいまひとつピンとこない初心者向けの例外解説記事を探していました。しかし見つからなかったため、自分で書いてみることにしました。この記事が皆さんのお役に立てば幸いです。分かりにくい点があれば、@StarrHorneまでツイートでご連絡ください。 例外(Exception)とは何か? 例外とは、Rubyが予期しない出来事に対処するための仕組みです。 コードにタイプミスがあり、SyntaxErrorやNoMethodErrorといったメッセージとともにプログラムがクラッシュした経験はありませんか?それが例外の動作を

  15. Rails開発者が陥りやすい!データベースパフォーマンスを低下させる定番イディオム3選

    RailsのActiveRecordを初めて目にしたときのことは、今でも鮮明に覚えています。当時は2005年、PHPアプリのためにSQLクエリを手作業で書いていた頃でした。それまで退屈な雑務だったデータベース操作が、ある日突然簡単になり、あえて言えば「楽しい」ものへと変わったのです。 ……しかし、その後すぐにパフォーマンス問題に気づき始めました。 遅かったのはActiveRecordそのものではありません。私が、実際に実行されているクエリへの意識を怠ってしまっただけです。そして調べてみると、RailsのCRUDアプリでごく普通に使われる定番クエリの中に、デフォルトのままでは大規模データセットに

  16. Rubyの例外処理の裏側──rescueがどの例外を捕捉するかを決めるエレガントな仕組み

    Rubyで例外処理を扱ったことがある方なら、rescueにクラスを指定して、どの例外を捕捉するか選べることをご存じでしょう。 begin raise ArgumentError rescue ArgumentError # `ArgumentError` を捕捉する end さらに、親クラスを指定すると、その子クラスにあたる例外もまとめて捕捉されることもご存じのはずです。 begin raise ArgumentError rescue StandardError # `ArgumentError` は `StandardError` を継承しているため、 # ここで捕

  17. 成長しても慌てない!データベースのスケーリングを楽にするためのシンプルなヒント

    若いプロジェクトに取り組んでいるとき、私たちは常に、後々のスケールを容易にするか、それとも困難にするかの決断を迫られています。時には短期的なメリットのためにあえて技術的負債を抱えるのも賢明です。早くリリースするためです。しかし中には、別の選択肢があることに気づかないまま、不必要に技術的負債を背負ってしまうケースもあります。私たちHoneybadgerでも、いくつかの判断ミスによって、必要以上に苦労した経験があります。いくつかの重要なポイントを最初から理解していれば、スケーリングはずっと楽だったはずです。UUIDを採用する「プライマリーキー」と聞いて、多くの人が思い浮かべるのは自動増分される整数

  18. 1コマンドで複数のSidekiqプロセスを起動・監視するクラスタースクリプトの紹介

    Honeybadgerでは、処理パイプラインの中でSidekiqに大きく依存しています。私たちが行うほぼすべての処理は、どこかのタイミングでキューを経由します。そのため、Sidekiqを適切な状態で運用し続けることを常に意識しています。 最近EC2への移行に伴い、長期間稼働する安定したサーバー群から、絶えず入れ替わるインスタンス群でジョブを実行する形へと変わりました。これを受けて、起動時にSidekiqを開始する方法を見直すことになりました。以前に比べて、この部分が格段に重要になっていたからです。 以前は、ワーカープロセスの起動にgodに頼っていました。プロセスを監視し、メモリを使いすぎたもの

  19. Ruby 2.4 の Unicode サポートを徹底テスト──「最小驚きの原則」から見る文字列操作の落とし穴

    Ruby 2.4 で導入された新機能の一つに、改善された Unicode サポートがあります。具体的には、upcase や downcase といったメソッドが期待通りに動作し、「ä」を「Ä」に、そして元に戻せるようになりました。この変更をきっかけに、2013 年に André Arko 氏がブログ記事「Strings in Ruby are UTF-8 now… right??」を公開して以来、どの程度 Unicode 対応が進んだのか気になり、調査を行いました。 技術的なバグを探すのではなく、「最小驚きの原則(Principle of Least Surprise)」の観点から、Rub

  20. Rubyではどんなオブジェクトもハッシュキーにできる――Optcarrotに学ぶ重複排除テクニック

    Ruby 3x3プロジェクトをフォローしている方なら、Optcarrotという名前を聞いたことがあるかもしれません。Optcarrotは、純粋なRubyだけで書かれたNES(ファミコン)エミュレータです。 最近Optcarrotのソースコードを読んでいて、興味深い実装に行き当たりました。それは、Rubyのハッシュの機能の中でも意外と見落とされがちながら、非常に有用な特徴――「任意のオブジェクトをハッシュキーとして使える」という性質を、ふんだんに活用している点です。 背景:NESのメモリマッピング 高レベル言語でプログラムを書いていると、メモリといえばRAMを思い浮かべがちです。しかし低レベルの

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