検索 - みる会図書館

全データから 214344件ヒットしました。

Team Geek Googleのギークたちはいかにしてチームを作るのか


Team Geek A Software DeveIoper's GuidetoWorkingWelI with Others Brian W. Fitzpatrick and Ben CoIIins-Sussman 0 REILLY Beijing ・ Cambridge ・ Farnham ・ Köln ・ Sebast 叩 0い Tokyo

Team Geek Googleのギークたちはいかにしてチームを作るのか


Team Geek Goog 厄 の ギ ー ク た ち は い か に し て チ ー ム を 作 る の か Brian W. Fitzpatrick Ben Collins—Sussman 角 征 典 0 REILLY オ ラ イ リ ー ・ ジ ャ パ ン 著 訳

Team Geek Googleのギークたちはいかにしてチームを作るのか


◎ 2013 0'Reilly Japan, lnc. Authorized Japanese translation of the English edition 0f Team Geek. ◎ 2012 Brian Fi レ patrick and Ben CoIlins-Sussman. This translation is published and sold by permission of O 'Reilly Media, lnc. , the owner of all rights t0 publish and sell the same. 本 書 は 、 株 式 会 社 オ ラ イ リ ー ・ ジ ャ パ ン が O'ReiIIyMedia, lnc. と の 許 諾 に 基 づ き 翻 訳 し た も の で す 。 日 本 語 版 に つ い て の 権 利 は 、 株 式 会 社 オ ラ イ リ ー ・ ジ ャ パ ン が 保 有 し ま す 。 日 本 語 版 の 内 容 に つ い て 、 株 式 会 社 オ ラ イ リ ー ・ ジ ャ パ ン は 最 大 限 の 努 力 を も っ て 正 確 を 期 し て い ま す が 、 本 書 の 内 容 に 基 づ く 運 用 結 果 に つ い て 責 任 を 負 い か ね ま す の で 、 ご 了 承 く だ さ い 。

Team Geek Googleのギークたちはいかにしてチームを作るのか


推 薦 の 言 葉 ー ソ フ ト ウ ェ ア は 人 で 成 り 立 っ て い る 。 本 書 に あ る 原 則 を 使 っ た チ ー ム は 、 個 人 の ハ ッ カ ー よ り も 深 く 考 え 、 よ り コ ー ド を 書 き 、 多 く の ソ フ ト ウ ェ ア を 届 け て い る 。 汝 、 こ れ を 学 ぶ べ し ! 」 ohnathan Nightingale 『 Team Geek 』 は プ ロ グ ラ マ の た め の 『 人 を 動 か す 』 だ 。 技 術 チ ー ム が 幸 せ に 生 産 的 で 効 果 的 に な る た め の ア ド バ イ ス が 満 載 で あ る 。 ど れ も 明 快 で す ぐ に 実 行 で Ben と Fitz は 、 こ れ ま で 私 が 実 践 し て き た が 、 言 葉 に し て い な か っ た こ と を き る 。 素 晴 ら し い 。 こ れ ぞ 求 め て い た も の だ 。 語 っ て い る 。 FreeBSD コ ア チ 3 月 ま で に Adrian Holovaty Guidovan Rossum PouI-Henning Kamp ー ム の PouI-Henning Kamp に 1 冊 送 っ て ほ し い 。 1994 年 Ben と Fitz は 孤 独 な プ ロ グ ラ マ を 賞 賛 し て い な い 。 彼 ら は 最 も 複 雑 な シ ス テ ム を ハ ッ ク す る 方 法 を 教 え て い る 。 そ の シ ス テ ム と は 人 間 だ 。 人 間 味 の あ る ソ フ ト ウ ェ ア は 優 秀 な チ ー ム が 作 っ て い る 。 『 Team Geek 』 は そ の 方 法 を 示 し た も の だ 。 」 ohn ToIva ソ フ ト ウ ェ ア 開 発 の 社 会 学 に つ い て 書 か れ た 素 晴 ら し い 本 だ 。 本 書 は オ ー プ ン ソ ー ス ソ フ ト ウ ェ ア と 大 企 業 に 重 点 が 置 か れ て い る 。 上 司 を う ま く 使 う と こ ろ や ボ リ シ ー を 扱 う と こ ろ の セ ク シ ョ ン は 、 会 社 で 働 く 新 人 工 ン ジ ニ ア は 絶 対 「 ん で ほ し い 。 す べ て の エ ン ジ ニ ア に オ ス ス メ だ ! 工 ン ジ 二 ア の た め の 社 内 政 治 の 本 な ん て 初 め て 見 た 。 「 難 し い 人 と の 付 き 合 い 方 」 の 物 語 や 実 践 的 な ヒ ン ト も 素 晴 ら し い ! こ れ は 他 で は 手 に 入 ら な い 内 容 だ 。 Piaw Na

Team Geek Googleのギークたちはいかにしてチームを作るのか


推 薦 の 言 葉 『 Team Geek 』 は 宝 石 箱 だ 。 ど う す れ ば プ ロ グ ラ マ が チ ー ム に 貢 献 で き る か と KarI FogeI る 。 今 す ぐ や る し か な い ! せ な プ ロ グ ラ マ に な れ る だ け で な く 、 幸 せ な プ ロ グ ラ マ を 生 み 出 す 原 因 に も な れ コ ー ド と 同 じ よ う に 人 間 に も 集 中 せ よ と い う 簡 潔 な も の で あ る 。 そ う す れ ば 、 幸 く る 。 著 者 た ち は 何 年 も 前 に こ の こ と を 理 解 し た 。 彼 ら が 伝 え る メ ッ セ ー ジ は 、 法 で ま と め る も の と な っ て き て い る 。 そ し て 、 そ れ ぞ れ の 部 品 に は 人 間 が つ い て プ ロ グ ラ ミ ン グ は コ ー ド や マ シ ン に 関 す る も の で は な く 、 既 存 の 部 品 を 新 し い 方 」 onathan LebIanc 間 の 課 題 を 克 服 す る 手 法 は 、 す べ て の エ ン ジ 二 ア の 本 棚 に 必 要 な 教 科 書 で あ る 。 課 題 へ の 取 り 組 み か ら 得 ら れ た も の で あ る 。 技 術 チ ー ム の エ ン ジ 二 ア リ ン グ と 人 fTeam Geek 』 は 成 功 す る チ ー ム や フ ロ タ ク ト の 調 査 結 果 だ 。 開 発 者 の 苦 悩 や CIay 」 ohnson れ た プ ロ グ ラ マ に な る た め の 本 で は な い 。 最 高 の プ ロ グ ラ マ に な る た め の 本 だ 。 と う ま く 付 き 合 う 能 力 を 組 み 合 わ せ れ ば 、 世 界 を 変 え る こ と が で き る 。 本 書 は 優 ソ フ ト ウ ェ ア を 書 く ス キ ル が あ れ ば 、 職 を 失 う こ と は な い だ ろ う 。 し か し 、 他 人 Bruce 」 ohnson 二 カ ル リ ー ダ ー ・ 非 技 術 系 の 経 営 者 は 、 本 書 を 読 む べ き だ 。 え て い る 。 そ の こ と を 理 解 す る 必 要 の あ る エ ン ジ ニ ア リ ン グ マ ネ ー ジ ャ ー ・ テ ク 定 着 や 彼 ら が 作 り 出 す ソ フ ト ウ ェ ア の 品 質 は 、 チ ー ム の ダ イ ナ ミ ク ス が 影 響 を 与 本 書 は 健 全 な ソ フ ト ウ ェ ア 開 発 文 化 を 作 る た め の 設 計 図 だ 。 ト ッ プ エ ン ジ 二 ア の Bryan OISuIIivan こ の 本 と そ れ を 理 解 で き る 心 が あ れ ば よ か っ た 。 ネ タ を 交 え な が ら 真 剣 に 議 論 で き る よ う に な っ た の は 素 晴 ら し い 。 21 歳 の 頃 に い う 実 践 的 な 哲 学 を Ben と Fi レ が 共 有 し て く れ る 。 こ の 重 要 な 分 野 に つ い て 、

Team Geek Googleのギークたちはいかにしてチームを作るのか


Team Geek Goo e の ギ ー ク た ち は い か に し て チ ー ム を 作 る の か 2 田 3 年 7 月 19 日 2016 年 5 月 30 日 著 訳 者 者 発 行 人 作 印 刷 ・ 製 本 光 行 冗 所 兀 初 版 第 1 刷 発 行 初 版 第 8 刷 発 行 B ⅱ an 嶬 [.Fitzpatrick ( プ ラ イ ア ン ・ W ・ フ ィ ッ ツ バ ト リ ッ ク ) 、 Fax ( 03 ) 3233-3440 Tel ( 03 ) 3233-0641 ( 代 表 ) 〒 101-8460 東 京 都 千 代 田 区 神 田 錦 町 3-1 株 式 会 社 オ ー ム 社 電 子 メ ー ル [email protected] Fax ( 03 ) 3356 ー 5263 Tel ( 03 ) 3356 ー 5227 〒 0-0002 東 京 都 新 宿 区 四 谷 坂 町 12 番 22 号 株 式 会 社 オ ラ イ リ ー ・ ジ ャ パ ン 株 式 会 社 平 河 工 業 社 ビ ー ン ズ ・ ネ ッ ト ワ ー ク ス テ イ ム ・ オ ラ イ リ ー 角 征 典 ( か ど ま さ の り ) Ben Collins-Sussman ( べ ン ・ コ リ ン ス ・ サ ス マ ン ) printed in J 叩 an ( ISBN978-4-87 引 1-630-3 ) 乱 丁 本 、 落 丁 本 は お 取 り 替 え 致 し ま す 。 本 書 は 著 作 権 上 の 保 護 を 受 け て い ま す 。 本 書 の 一 部 あ る い は 全 部 に つ い て 、 株 式 会 社 オ ラ イ リ ー ジ ャ パ ン か ら 文 書 に よ る 許 諾 を 得 ず に 、 い か な る 方 法 に お い て も 無 断 で 複 写 、 複 製 す る こ と は 禁 じ ら れ て い ま す 。

WEB+DB PRESS Vol.84


伊 藤 直 也 ITO Naoya Kaizen Platform,lnc. http://naoya.github.com/ ー [email protected] naoya @naoya_ito 第 3 章 多 く の 問 題 は 技 術 で は な く 人 間 に 起 因 す る URL GitHub い っ た 大 切 な こ と を チ ー ム メ ン バ ー が 集 ま っ て 議 論 で き て い な い 、 そ れ が 一 番 の 問 題 で す 。 そ ん な 光 景 を 何 度 も 見 ま し た 。 こ れ ま で の 章 で も 開 発 組 織 に お け る 集 団 の 組 織 化 の 重 要 性 に つ い て 述 べ ま し た 。 第 3 章 で は こ の 集 団 の 組 ◎ ソ フ ト ウ ェ ア 開 発 は チ ー ム 競 技 織 化 に 特 化 し て 、 つ ま り は チ ー ム ビ ル デ ィ ン グ と い う 別 の 書 籍 、 GoogIe の 中 の 人 が ソ フ ト ウ ェ ア 開 発 に お 文 脈 で CTO が 果 た す べ き 役 割 に つ い て 見 て い き ま す 。 け る チ ー ム ビ ル デ ィ ン グ の 重 要 性 を 説 い た 『 Team な お 、 第 1 章 で も 述 べ ら れ て い る と お り 、 CTO の 役 Geek 』 か ら 引 用 し ま し よ う 。 割 は 、 組 織 の 規 模 に よ っ て そ の 時 期 そ の 時 期 で 変 化 し ソ フ ト ウ ェ ア 開 発 は チ ー ム ス ポ ー ツ で あ る ま す 。 本 章 は 組 織 規 模 が お お よ そ 10 ~ 50 名 、 CT() が 本 Brian W. Fitzpatrick 、 Ben ColIins-Sussman 著 / 角 征 典 訳 格 的 に チ ー ム マ ネ ジ メ ン ト に つ い て 考 え 始 め る で あ ろ CTeam Geek Goog に の ギ ー ク た ち は し 、 か に し て チ ー ム を 作 る の か 』 オ ラ イ リ ー ・ ジ ャ パ ン 、 2013 年 、 p. 13 う 規 模 ・ 時 期 を 前 提 と し て 論 じ て い き ま す 。 こ と エ ン ジ ニ ア は 開 発 の す べ て が 技 術 的 な 取 り 組 み 人 間 の 問 題 を 解 決 す る の も CTO の 仕 事 で あ る と 錯 覚 し が ち で す 。 し か し 複 数 の 人 間 が 集 ま っ ◎ 多 く は 技 術 で は な く 人 間 の 問 題 て 1 つ の も の を 作 っ て い く 以 上 は 、 当 た り 前 で す が チ ー ム ワ ー ク が 必 要 に な り ま す 。 Tom DeMarco に よ る ソ フ ト ウ ェ ア 開 発 に つ い て の 名 著 『 ヒ 。 ー プ ル ウ ェ ア 』 に 、 次 の 一 文 が あ り ま す 。 素 人 の 寄 せ 集 め に よ る サ ッ カ ー チ ー ム は 、 11 人 全 員 で 目 の 前 の ポ ー ル を 一 斉 に 追 い か け る で し よ う 。 一 方 、 実 際 の と こ ろ 、 ソ フ ト ウ ェ ア 開 発 上 の 問 題 の 多 く 強 い チ ー ム は 11 人 そ れ ぞ れ が 役 割 に 従 っ て 連 携 し て 動 は 、 技 術 的 と い う よ り 社 会 学 的 な も の で あ る き ま す 。 そ こ に は シ ス テ ム が あ り ま す 。 そ れ と 同 じ く 、 Tom DeMarco 、 Timothy Liste 「 著 / 松 原 友 夫 、 山 浦 恒 央 、 長 尾 高 弘 訳 『 ピ ー プ ル ウ ェ ア 第 3 版 ー ー - ヤ ル 気 こ ソ フ ト ウ ェ ア 開 発 組 織 に も チ ー ム ワ ー ク の シ ス テ ム が そ プ ロ ジ ェ ク ト 成 功 の 鍵 』 日 経 BP 社 、 2013 年 、 p.3 必 要 で す 。 ご 存 じ の と お り ソ フ ト ウ ェ ア 開 発 に は 幾 多 も の 問 題 〇 Linus TorvaIds の 本 当 の 功 績 が 降 り か か る わ け で す が 、 DeMarco は そ の ほ と ん ど は 『 TeamGeek 』 で は 、 ⅱ nux を 生 み 出 し た ハ ッ カ ー と 技 術 的 な も の で は な く 社 会 学 的 な も の 、 つ ま り は 人 の し て 評 価 さ れ て い る LinusTorvalds に つ い て の 考 察 が 問 題 だ と 言 い 切 っ て い ま す 。 あ り ま す 。 Linux は 、 史 上 最 も 成 功 し た オ ー プ ン ソ ー 思 い 当 た る 節 が あ り ま す 。 あ の う ま く い っ て い な い ス ソ フ ト ウ ェ ア プ ロ ジ ェ ク ト で も あ り ま す 。 世 界 中 か プ ロ ジ ェ ク ト の 原 因 に は 、 コ ー ド が 汚 い と か 、 ま と も ら 優 秀 な プ ロ グ ラ マ が 集 ま っ て 、 賃 金 を も ら う わ け で な 技 術 標 準 が 定 義 さ れ て い な い と か 、 そ う い う こ と も も な い の に 、 ⅱ nux カ ー ネ ル 開 発 プ ロ ジ ェ ク ト に 邁 進 あ り ま す 。 し か し も と を 正 せ ば 、 何 を 標 準 に す る か と CTO に よ る チ ー ム マ ネ ジ メ ン ト Ⅳ 監 B + 08 P 第 55 MOL84 ・ 1 1 5

The Best Software Writing I. Selected and Introduced by Joel Spolsky


ERIC SINK 253 The very worst kind of manager is the one who feels threatened by his team. Consciously or not, he is afraid Of those whO are "the very best," so he consistently staffs his team with people who will not chal- lenge him. I suppose he might be able t0 get away with this in a big company. After all, I doubt that the Pointy-Haired Boss in the Dilbert comic strip was created With no source Of inspiration at all. But things are very different in the world of small software compa- nies. If you are the founder or "chief geek" in your small ISV, take a careful, honest, and objective 100k at yourself. If you are the type 0f per- son wh0 feels threatened by your own staff, stop and rethink. Until you move yourself past this problem, you have exactly zero chance 0f build- lng an effective team. The real point of the usual advice is not tO inflate our egos—lt is tO remind us that we should not be afraid t0 search for the best people. But we still need a more specific understanding Of what the word "best" really means. Look for SeIf-Awareness The "very best" people never stop learning. When I evaluate a candidate, one of the most important criteria IS what I call "the first derivative. ' ' ls this person learning? ls this candi- date moving forward, or have they stagnated?(For more 0f my thoughts on this topic, see the 。 。 Career Calculus" article on my weblog. 8) people WhO are seriously focused on their own future success are very likely tO be successful. This is Often the strongest predictive indicator in the hiring process. l'm not saymg you should just hire people wh0 want t0 succeed. Everybody wants to succeed. l'm talking about hiring people who are 8. See http://software.ericsink.com/Career Calculus. html.

WEB+DB PRESS Vol.88


サ ー ビ ス の 成 長 を 支 え る 現 場 の 技 術 で す 。 ま と め て 取 得 す る に は こ の 「 一 度 ア ソ シ ェ ー シ 適 し た シ ー ン 、 そ し て 3 つ の 使 い 分 け を 紹 介 し ま す 。 ド を 用 意 し て い ま す 。 各 メ ソ ッ ド の メ カ ニ ズ ム と 利 用 に Record で は ほ か に preload と eager load と い う メ ソ ッ せ て 取 得 し 効 率 化 す る た め の メ ソ ッ ド と し て 、 Active includes の よ う に ア ソ シ ェ ー シ ョ ン の デ ー タ を 合 わ 3 つ の メ ソ ッ ド Eager Loading に 関 連 し た で 、 そ の 利 用 方 法 を 見 て い き ま す 。 す 注 5 。 ActiveRecord に は 後 者 の 方 法 も 用 意 さ れ て い る の う 方 法 に 加 え て 、 RDB の JOIN 句 を 使 う 方 法 も あ り ま の デ ー タ を 取 得 す る SQL ク エ リ を 別 途 発 行 す る 」 と い ョ ン 元 の デ ー タ を 取 得 し て か ら 、 ア ソ シ ェ ー シ ョ ン 先 「 可 oad . "name" AS t0 rl, iusersl SELECT "users" . "id" AS t0 r0, > User. eager_load( :team) マ 図 13 rails ( onso 厄 で eage 「 」 oad を 実 行 す る FROM "users" WHERE "teams" . "namel SQLite3: :SQLException: no such column: teams . name: SELECT " namei SELECT "users" . * FROM "users" WHERE "teams" increments' } ) > User. preload( :team) . where(teams: { name: teams テ ー フ ル の カ ラ ム で 条 件 指 定 で き な い SELECT * FROM teams WHERE teams . id IN ( . SELECT * FROM users ; > User. preload( :team) マ 図 12 「 a ( onso 厄 で p 「 eload を 実 行 す る 各 RDBMS の ド キ ュ メ ン ト な ど を 参 照 し て く た さ い 。 注 5 本 稿 で は 」 OIN に つ い て の 詳 し い 説 明 は 行 い ま せ ん 。 詳 し く は せ ず に 、 複 数 の ク エ リ 発 行 に よ っ て 取 得 し ま す ( 図 12 ) 。 p 「 e 朝 ad メ ソ ッ ド は ア ソ シ ェ ー シ ョ ン の デ ー タ を J()IN こ れ ま で の includes 利 用 の 際 と 同 じ メ カ ニ ズ ム で す 。 な お p 「 eload で は ア ソ シ ェ ー シ ョ ン 先 の テ ー ブ ル の カ ラ ム を 検 索 条 件 に 指 定 す る こ と は で き ま せ ん 。 複 数 ク エ リ を 使 っ て 取 得 す る た め 、 2 番 目 に 問 い 合 わ せ る テ ー プ ル ( 今 回 の ケ ー ス で は teams テ ー ブ ル ) の 条 件 を も と に 取 得 す る 全 体 の デ ー タ を 絞 り 込 む こ と は で き ず 、 SQL の エ ラ ー が 発 生 し ま す 。 Oeager load eager_load は 、 ア ソ シ ェ ー シ ョ ン の デ ー タ を 対 象 テ ー カ レ と LEFTOUTERJOIN す る こ と で ま と め て 取 得 し ま す 。 JOIN に よ り 1 つ の SQL ク エ リ で 取 得 す る た め 、 preload と は 違 っ て ア ソ シ ェ ー シ ョ ン 先 の テ ー フ 。 ル ( JOIN し た テ ー カ レ ) の カ ラ ム を 使 っ て 絞 り 込 む こ と も で き ま す ( 図 1 3 ) 。 た だ し 、 JOIN は レ コ ー ド 数 の 多 い テ ー フ 。 ル で は 時 間 が か か る こ と も あ る た め 、 条 件 を 指 定 す る 必 要 の な い 場 合 は preload の ほ う が 適 切 で あ る こ と も 多 い で し よ う 。 namel usersl lincrements . "team id" AS t0 r2, "users" . "created at" AS t0 「 引 nusersll . "updated at" AS t0 ー 「 4 , "teams" . 駐 d ” AS tl r0, users . "updated at" AS tl 「 3 "teams" . "created at" AS tl r2 ′ AS tl 「 FROM "users" LEFT OUTER JOIN "teams" ON "teams" . "id" teams テ ー フ ル の カ ラ ム で 条 件 指 定 も 可 能 マ 図 14 refe 「 en ( es で ア ソ シ ェ ー シ ョ ン を 指 定 す る 以 下 は エ ラ ー に な る 'incrementsi } ) > User. eager load( :team) . where(teams: { name: incrementsl ) > User. includes( :team) . where('teams . name = User Load ( 1.4ms ) SELECT "users" . * FROM "users" WHERE (teams . "team idi . name increments 150 ・ W 第 8 + DB P を 55 Vo 88 「 efe 「 en ( es を 使 っ て ア ソ シ ェ ー シ ョ ン を 指 定 = > # く ActiveRecord : : Relation [# く User id : .. # く User id: 乙 lusersl "teamsl' ON "teams' . "id" . "team id" WHERE (teams . name = iincrementsi) AS tl r2, . " 叩 dated_at" AS tl r3 FROM "users" LEFT OUTER JOIN "teams" . "name" AS tl 「 AS t0 「 "teams" . "id'i AS tl 「 0 , "teams" . "created at" usersl . "team id" AS t0 r2, "users '."created at" AS t0 r3, "users" . " 叩 dated at" SQL ( 1. Oms ) SELECT "users". "id'i AS t0 r0, "users". "name" AS tO rl を > User. includes( :team) . where(lteams. name = 'increments つ . references( : team) SELECT "usersi' . * FROM "users'l WHERE (teams. name = 'increments') ActiveRecord : : StatementInvaIid : SQLite3: : SQLException : no such column : teams. name : WHERE (teams. name = incrementsl) SQLite3: :SQLException: no such column: teams. name: SELECT "users". * FROM "users" 0 includes includes は 「 複 数 ク エ リ 発 行 」 「 JOIN の 利 用 」 と い う 前 述 し た 2 つ の 手 法 を 、 状 況 に 応 じ て 使 い 分 け て く れ る メ ソ ッ ド で す 。 多 く の ケ ー ス で は 複 数 ク エ リ 発 行 方 式 ( p 「 eload 方 式 ) を 使 い 、 ア ソ シ ェ ー シ ョ ン 情 報 を 別 の ク エ リ で 読 み 出 し ま す 。 し か し ア ソ シ ェ ー シ ョ ン 先 の テ ー プ ル の カ ラ ム で 検 索 条 件 を 指 定 し て い る と き や 別 の ア ソ シ ェ ー シ ョ ン に 対 し て す で に eager load を 呼 ん で い る と き な ど は JOIN を 利 用 し ま す (eager_load 方 式 ) 。 な お 、 includes し た ア ソ シ 工 ー シ ョ ン 先 の テ ー ブ ル を 使 っ て 条 件 を 指 定 す る た め に は 、 図 14 の よ う に references と い う メ ソ ッ ド を 呼 ぶ 必 要 が あ り ま す 。 reference(:team) の よ う に 条 件 と し て 指 定 し た い ア ソ シ ェ

WEB+DB PRESS Vol.88


Ra ア プ リ ケ ー end end シ ョ ン の デ ー タ ベ ー ス チ ュ ー ニ ン グ 0 ◇ 0 A ( t ⅳ eRe ( ord に お け る ポ ト ル ネ ッ ク の 発 見 と そ の 解 消 以 上 で テ ス ト 用 の ア プ リ ケ ー シ ョ ン が 作 成 で き ま し た 。 次 に 、 テ ス ト 用 に デ ー タ を い く っ か 挿 入 し ま す ( 図 1 0) 。 以 上 で 、 increments チ ー ム に 所 属 す る 10 名 の ユ ー ザ デ ー タ が 作 成 さ れ ま し た 。 こ れ ら に 対 し て N + 1 問 題 が 発 生 す る よ う な SQL を ビ ュ ー か ら 発 行 し て み ま す 。 く % User. all. each dO luserl % > く % = use 「 . team . name % > く % end % > 「 ails s に よ り RaiIs サ ー バ を 立 ち 上 げ て http://Iocalhost:3000/ app/views/home/index . html . erb マ 図 10 テ ス ト 用 デ ー タ の 投 入 $ rails c > team = Team. create(name: ー increments つ > 10. times { は 一 User. create(name: "test-user-#{i}", team id: team. (d) } マ リ ス ト 1 log/bullet. log 2015-07-04 17 : 14 : 56 [ WARN ] use 「 : yaotti http://IocaIhost:3000/home/index N + 1 Query detected :includes = > [ :team] ー ー ・ ② Add t0 you 「 finder: N + 1 Query method call stack /private/tmp/myapp/app/views/home/index. html. erb:2:in ー ー 0 、 block in _app_views home index html erb ー 1 囲 9492749201388797 ー 703180421350 囲 ' /private/tmp/myapp/app/views/home/index. html. erb:l:in app_views home index html_e 「 b 1 囲 9492749201388797 ー 703180421350 囲 ・ /private/tmp/myapp/app/views/home/index. html. erb : 2 : in 、 block in _app_views home index html erb 1 囲 9492749201388797 703180421350 囲 ・ /private/tmp/myapp/app/views/home/index. html. erb: 1 : in app_views home index html_erb 1 囲 9492749201388797 70318042135 囲 0 ・ home/index ヘ ア ク セ ス す る と 、 Bu Ⅱ et の ロ グ フ ァ イ ル ( 朝 g / bullet. log) に リ ス ト 1 の よ う な 内 容 が 出 力 さ れ ま す 。 こ の ロ グ に は 、 N + 1 問 題 を 起 こ す ク エ リ の 発 行 場 所 ( 0 ) 、 問 題 と な っ て い る モ デ ル の 関 連 ( 0 ) と 解 決 方 法 ( ② ) が 出 力 さ れ て い ま す 。 こ の よ う に N + 1 問 題 が 発 生 す る と ロ グ 出 力 か ら 修 正 個 所 お よ び 解 決 方 法 を 教 え て く れ る の で 、 こ れ ら に 沿 っ て 修 正 す れ ば N + 1 問 題 を 解 消 で き ま す 。 N 十 1 問 題 の 解 決 N + 1 問 題 は 、 事 前 に 関 連 テ ー フ 。 ル の デ ー タ を 読 み 込 む こ と で 解 決 で き ま す 。 こ れ を EagerLoading と 言 い ま す 。 先 ほ ど Bullet に よ り 提 示 さ れ た と お り 、 N + 1 問 題 を 引 き 起 こ し て い た コ ー ド を 次 の よ う に 変 え て み ま す 。 く % User.incIudes( :team) . all. each d0 luserl % > く % = user . team. name % > く % end % > 前 回 と は 違 い 、 includes(:team) を 追 加 し て い ま す 。 こ れ に よ り 、 次 の よ う な SQL2 つ の 発 行 の み に 抑 え ら app/views/home/index . html.erb れ ま す 。 SELECT * FROM users LIMIT 10 : SELECT * FROM teams WHERE teams . id IN ( 1 , 2 を , 10L こ で 利 用 し て い る includes メ ソ ッ ド に よ り 、 引 数 で 指 定 さ れ た 関 連 テ ー フ 。 ル を 合 わ せ て 必 要 な だ け 取 得 で き ま す 。 今 回 の ケ ー ス で は 、 u se rs テ ー プ ル の 10 件 に 対 応 す る teams テ ー プ ル を 1 つ の SQL 発 行 に よ り 取 得 し ま す 。 こ れ に よ り 、 includes を 使 わ な い 場 合 は 11 個 の SQL を 実 行 し て い た の に 対 し て 、 2 つ の SQL の み で 同 じ デ ー タ を 取 得 で き ま す 。 Bullet か ら N + 1 問 題 の あ る ク エ リ を 警 告 さ れ た 場 合 は こ の よ う に コ ー ド を 変 更 し て 、 パ フ ォ ー マ ン ス を 改 善 し ま し よ う 。 マ 図 11 includes で 関 連 テ ー ブ ル を 取 得 す る > User. includes( :team) . tO a SELECT * FROM users : SELECT * FROM teams WHERE teams . id IN ( . - SQ し の 発 行 数 を 減 ら す A&CEagar.Loading の し く み 前 節 に て 「 N + 1 問 題 を 解 決 す る Eager Loading を 行 う に は includes メ ソ ッ ド を 呼 ぶ と よ い 」 と い う 話 を し ま ' で は も う 少 し 踏 み 込 ん で 、 な ぜ includes に よ っ て N + 1 問 題 が 解 決 さ れ る の か を 解 説 し た う え で 、 EagerLoading の た め に includes と 併 せ て 知 っ て お く こ で 、 2 つ 目 の SQL に あ る teams . id IN ( . ル ま で 、 別 途 ク エ リ を 発 行 し て 取 得 し ま す ( 図 1 1 ) 。 includes を 実 行 す る と 、 引 数 で 指 定 し た 関 連 テ includes の 効 果 べ き メ ソ ッ ド を 紹 介 し ま す 。 ー プ WEB + DB P 震 ド 55 0L88 ・ 149 に な る デ ー タ を 事 前 に ま と め て 取 得 し て お く 」 と い う も こ の よ う に 、 Eager ading の 基 本 的 な 概 念 は 「 必 要 回 数 を 大 幅 に 減 ら す こ と が で き ま す 。 の で は な く 一 括 で 取 得 す る こ と で 、 SQL ク エ リ の 発 行 ー ド を 、 users テ ー フ 。 ル の レ コ ー ド ご と に 取 得 し に い く ポ イ ン ト で す 。 将 来 必 要 と な る teams テ ー ブ ル の レ コ