[{"onix":{"RecordReference":"9784908686177","NotificationType":"03","ProductIdentifier":{"ProductIDType":"15","IDValue":"9784908686177"},"DescriptiveDetail":{"ProductComposition":"00","ProductForm":"BA","ProductFormDetail":"B108","TitleDetail":{"TitleType":"01","TitleElement":{"TitleElementLevel":"01","TitleText":{"collationkey":"ケンサンルビープログラミング ジッセンテキナコードノタメノゲンソクトトレードオフ","content":"研鑽Rubyプログラミング 実践的なコードのための原則とトレードオフ"}}},"Contributor":[{"SequenceNumber":"1","ContributorRole":["A38"],"PersonName":{"collationkey":"ジェレミー　エバンス","content":"Jeremy Evans"},"BiographicalNote":"Rubyのコミッター。Rubyのバグ修正に注力するのと同じぐらい、Rubyの実装の改善にも取り組んでおり、最速のウェブフレームワーク（Roda）や最速のデータベースライブラリ（Sequel）をはじめとした、いくつもの著名なRubyライブラリのメンテナーも務めている。彼のライブラリはその実行性能だけでなく、コードの品質、理解しやすさ、ドキュメンテーション、発見されたバグの修正の素早さでも知られている。Ruby とRuby コミュニティへの貢献が認められ、数々の賞も受賞。2020年には権威あるRubyPrize を受賞し、2015年にはRuby Heroに選出された。20以上のRuby カンファレンスでの講演実績もある。さらに彼はRubyの開発に加えて、OpenBSDのコミッターも務めている。"},{"SequenceNumber":"2","ContributorRole":["B06"],"PersonName":{"collationkey":"カクタニシンタロウ","content":"角谷信太郎"},"BiographicalNote":"個人事業主。一般社団法人日本Ruby の会理事。RubyKaigi Team Señor Organizer。（株）永和システムマネジメントフェロー。フィヨルドブートキャンプ顧問。 エクストリームプログラミングの理念である「新たな社会構造」のために自分がやれることをやっている。主な共訳・監訳書は『ユニコーン企業のひみつ―Spotify で学んだソフトウェアづくりと働き方』（オライリー・ジャパン）、『Clean Agile 基本に立ち戻れ』（アスキードワンゴ）、『なるほどUnix プロセス―Rubyで学ぶUnix の基礎』（達人出版会）、『RubyのしくみRuby Under a Microscope』『アジャイルサムライ―達人開発者への道』『アジャイルプラクティス―達人プログラマに学ぶ現場開発者の 習慣』（オーム社）、『アジャイルな見積りと計画づくり―価値あるソフトウェアを育てる概念と技法』（毎日コミュニケーションズ）など。"}],"Language":[{"LanguageRole":"01","LanguageCode":"jpn","CountryCode":"JP"}],"Extent":[{"ExtentType":"11","ExtentValue":"392","ExtentUnit":"03"}],"Subject":[{"MainSubject":"","SubjectSchemeIdentifier":"78","SubjectCode":"3055"},{"SubjectSchemeIdentifier":"79","SubjectCode":"20"},{"SubjectSchemeIdentifier":"20","SubjectHeadingText":"クラス、メソッド、変数;ライブラリ、DSL;セキュリティ"}],"Audience":[{"AudienceCodeType":"22","AudienceCodeValue":"00"}]},"CollateralDetail":{"TextContent":[{"TextType":"02","ContentAudience":"00","Text":"原則を学んで腕を磨き、さらなる高みを目指すために"},{"TextType":"03","ContentAudience":"00","Text":"本書は、通常のプログラミング言語解説書の先、言語が備える基本的な機能（クラス、メソッド、変数など）の性能を実践で極限まで引き出すための思考、ライブラリやDSLを自分で設計するコツ、メタプログラミングやデザインパターンとの付き合い方、データベースやフレームワークに対する心構え、そしてセキュリティへの取り組み方などを扱います。\n業務で毎日のようにRubyのコードを書いているというプログラマーはもちろん、ちょっとしたコードならRubyで書いたことがあるという他言語のプログラマーにとっても、プログラミングにおけるさまざまな原則とトレードオフについて繰り返し考え直すきっかけになる貴重な中級者向け解説書です。"},{"TextType":"04","ContentAudience":"00","Text":"本書に寄せて — まつもとゆきひろ\n\n日本の読者の皆さんへ — Jeremy Evans\n\nまえがき\n\n第I部 Rubyプログラミングの基礎的な原則\n第1章 組み込みクラスを最大限に活用する\n　1.1 いつ組み込みクラスを使うべきか\n　1.2 true、false、nilを活用する\n　1.3 用途に応じて数値型を使い分ける\n　1.4 シンボルと文字列の違いを理解する\n　1.5 配列、ハッシュ、セット（集合）を使い分ける\n　1.6 Structを活用する（Structはもっと評価されるべき）\n　1.7 まとめ\n　1.8 復習問題\n　1.9 もっと詳しく学ぶには\n第2章 役に立つ独自クラスを設計する\n　2.1 いつ独自クラスを定義すべきか\n　2.2 SOLID 原則のトレードオフ\n　2.3 大きなクラスか、多くのクラスか\n　2.4 独自データ構造の使いどころ\n　2.5 まとめ\n　2.6 復習問題\n第3章 変数を適切に使う\n　3.1 ローカル変数：Rubyで大活躍の変数\n　3.2 インスタンス変数を活用する\n　3.3 定数も単なる変数である\n　3.4 クラス変数を置き換える\n　3.5 基本的に、グローバル変数は避ける\n　3.6 まとめ\n　3.7 復習問題\n　3.8 もっと詳しく学ぶには\n第4章 メソッドと引数\n　4.1 クラスメソッドはない。あるのはインスタンスメソッドだけ\n　4.2 メソッドの命名\n　4.3 メソッド引数を使いこなす\n　4.4 メソッドの可視性は重要である\n　4.5 委譲の扱い方\n　4.6 まとめ\n　4.7 復習問題\n第5章 エラーに対処する\n　5.1 戻り値によるエラー処理\n　5.2 例外によるエラー処理\n　5.3 一時的なエラーを再試行する\n　5.4 例外クラス階層の設計\n　5.5 まとめ\n　5.6 復習問題\n第6章 コードを読みやすくフォーマットする\n　6.1 コードフォーマットにまつわる見解の違い\n　6.2 構文の一貫性とメンテナンス容易性\n　6.3 恣意的な制限の末路\n　6.4 Ruby自体で基本的なコードフォーマットを検査する\n　6.5 コードのフォーマットで本当に大切なこと\n　6.6 まとめ\n　6.7 復習問題\n\n第II部 Rubyのライブラリプログラミングの原則\n第7章 自分のライブラリを設計する\n　7.1 ユーザーエクスペリエンスを重視する\n　7.2 ライブラリの適切な規模を見極める\n　7.3 メソッド設計の複雑性のトレードオフ\n　7.4 まとめ\n　7.5 復習問題\n第8章 ライブラリを拡張可能にする\n　8.1 Rubyが提供する拡張性関連の機能\n　8.2 プラグインシステムを設計する\n　8.3 「グローバルでは不変、ローカルでは可変」\n　8.4 まとめ\n　8.5 復習問題\n第9章 時宜にかなったメタプログラミング\n　9.1 抽象化の利点と欠点\n　9.2 冗長なコードを削減する\n　9.3 2つのメタプログラミング手法\n　9.4 method_missingのわきまえ\n　9.5 まとめ\n　9.6 復習問題\n第10章 役に立つドメイン特化言語を設計する\n　10.1 独自のDSLを設計する\n　10.2 独自のDSLを実装する\n　10.3 DSLの使いどころ\n　10.4 まとめ\n　10.5 復習問題\n第11章 きちんとコードが動くことをテストする\n　11.1 なぜそんなにもRubyではテストが重要なのか\n　11.2 さまざまなテスト手法\n　11.3 テストをどこまで複雑にするか\n　11.4 さまざまなレベルでのテスト\n　11.5 カバレッジ100%に意味はない\n　11.6 まとめ\n　11.7 復習問題\n第12章 変更に対処する\n　12.1 リファクタリングする理由\n　12.2 リファクタリングの進め方\n　12.3 よく使われるRubyのリファクタリング技法\n　12.4 機能追加のためのリファクタリング\n　12.5 機能を適切に削除する\n　12.6 まとめ\n　12.7 復習問題\n第13章 代表的なデザインパターンを使う\n　13.1 Rubyに組み込まれているデザインパターン\n　13.2 「1つだけあればよい」に対処する\n　13.3 「何もない」を扱う\n　13.4 Visitor パターン\n　13.5 Adapter パターンとStrategy パターン\n　13.6 まとめ\n　13.7 復習問題\n第14章 ライブラリを最適化する\n　14.1 最適化の必要がなさそうなコードを把握する\n　14.2 プロファイリングが先、最適化は後\n　14.3 存在しないコードより速いコードは存在しない\n　14.4 何もかもが遅い場合の対処法\n　14.5 まとめ\n　14.6 復習問題\n\n第III部 Rubyのウェブプログラミングの原則\n第15章 データベースが鍵を握る\n　15.1 なぜそんなにもデータベース設計が重要なのか\n　15.2 採用するデータベースを決める\n　15.3 最も重要なデータベース設計の原則\n　15.4 データベースは単なるデータ置き場ではない\n　15.5 モデル層を選ぶ\n　15.6 データベースとモデルのエラー処理\n　15.7 まとめ\n　15.8 もっと詳しく学ぶには\n　15.9 復習問題\n第16章 ウェブアプリケーション設計の原則\n　16.1 クライアントサイド中心の設計とサーバーサイド中心の設計\n　16.2 ウェブフレームワークの選定\n　16.3 URLパスの設計\n　16.4 モノリス、マイクロサービス、アイランドチェーン\n　16.5 まとめ\n　16.6 復習問題\n第17章 堅牢なウェブアプリケーションのセキュリティ\n　17.1 Ruby のウェブアプリケーションにおけるセキュリティ上の問題は、ほとんどが高レイヤのもの\n　17.2 入力を信用してはならない\n　17.3 可能な限りの高レイヤでアクセスを制御する\n　17.4 インジェクション対策\n　17.5 高いセキュリティが求められる環境に向けた取り組み\n　17.6 まとめ\n　17.7 復習問題\n\n付録A 復習問題の回答例\n\n訳者あとがき\n\n索引"}],"SupportingResource":[{"ResourceContentType":"01","ContentAudience":"01","ResourceMode":"03","ResourceVersion":[{"ResourceForm":"02","ResourceVersionFeature":[{"ResourceVersionFeatureType":"01","FeatureValue":"D502"},{"ResourceVersionFeatureType":"04","FeatureValue":"9784908686177.jpg"}],"ResourceLink":"https:\/\/cover.openbd.jp\/9784908686177.jpg"}]}]},"PublishingDetail":{"Imprint":{"ImprintIdentifier":[{"ImprintIDType":"24","IDValue":"8816"},{"ImprintIDType":"19","IDValue":"908686"}],"ImprintName":"ラムダノート"},"Publisher":{"PublishingRole":"01","PublisherIdentifier":[{"PublisherIDType":"24","IDValue":"8816"},{"PublisherIDType":"19","IDValue":"908686"}],"PublisherName":"ラムダノート"},"PublishingDate":[{"PublishingDateRole":"01","Date":"20230414"},{"PublishingDateRole":"11","Date":"202304"}]},"ProductSupply":{"MarketPublishingDetail":{"MarketPublishingStatus":"00","MarketPublishingStatusNote":"1;"},"SupplyDetail":{"ProductAvailability":"99","Price":[{"PriceType":"03","PriceAmount":"3600","CurrencyCode":"JPY"}]}}},"hanmoto":{"datezeppan":"","zaiko":11,"genrecodetrc":8,"ndccode":"007.64","kankoukeitai":"","sonotatokkijikou":"","jushoujouhou":"","furokusonota":"","dokushakakikomi":"","hatsubai":"ラムダノート","storelink":"https:\/\/www.lambdanote.com\/collections\/ruby-1","author":[{"listseq":1,"dokujikubun":""},{"listseq":2,"dokujikubun":""}],"datemodified":"2025-10-22 12:26:03","datecreated":"2025-01-17 11:31:15","hanmotoinfo":{"name":"ラムダノート","yomi":"ラムダノート","url":"https:\/\/www.lambdanote.com\/","twitter":"https:\/\/x.com\/lambdanote","facebook":"","chokutori":"1","toritsugitorikyo":"西村","toritsugisonota":"","eigyoudaihyousha":"高尾智絵","phoneshoten":"080-9578-1735","facsimileshoten":"03-5879-7681（西村書店様）","emailshoten":"info@lambdanote.com","ordersite":"","ordersitesonota":"","ordersitejisha":"","henpin":"原則あり","jiyuukinyuu":"小さい出版社なので大量のご注文は難しいですが、新刊のみ初回に多めの委託をしています。","shiiresite":""},"hankeidokuji":"A5判"},"summary":{"isbn":"9784908686177","title":"研鑽Rubyプログラミング 実践的なコードのための原則とトレードオフ","volume":"","series":"","publisher":"ラムダノート","pubdate":"20230414","cover":"https:\/\/cover.openbd.jp\/9784908686177.jpg","author":"JeremyEvans／原著 角谷信太郎／翻訳"}}]