検索 - みる会図書館

検索対象: メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-から 245件ヒットしました。

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


76 ー 6 章 グ ロ ー バ ル 変 数 / 関 数 を 作 ら な い 6.3.2.2 AMD モ ジ ュ ー ル AMD モ ジ ュ ー ル に は 、 YUI モ ジ ュ ー ル と 多 く の 共 通 点 が あ り ま す 。 モ ジ ュ ー ル 名 、 依 存 モ ジ ュ ー ル 、 そ し て 依 存 モ ジ ュ ー ル の 読 み 込 み の タ イ ミ ン グ で 実 行 さ れ る フ ァ ク ト リ 関 数 を 指 定 し ま す 。 こ れ ら は す べ て 、 グ ロ ー バ ル 関 数 define() に 渡 さ れ ま す 。 第 1 引 数 が モ ジ ュ ー ル 名 、 第 2 引 数 が 依 存 モ ジ ュ ー ル 、 第 3 引 数 が フ ァ ク ト リ 関 数 で す 。 YUI モ ジ ュ ー ル と の 大 き な 違 い は 、 AMD モ ジ ュ ー ル の 場 合 、 依 存 モ ジ ュ ー ル が フ ァ ク ト リ 関 数 の 引 数 と し て 渡 さ れ る 点 で す 。 define("module-name" [ "dependencyl" "dependency2" ] , function(dependencyl, dependency2) { / / モ ジ ュ ー ル 本 体 名 前 指 定 さ れ た 依 存 モ ジ ュ ー ル は 、 そ の オ プ ジ ェ ク ト が 作 成 さ れ 、 フ ァ ク ト リ 関 数 に 渡 さ れ ま す 。 こ の よ う に し て 、 モ ジ ュ ー ル 間 に ま た が る 名 前 空 間 で は 名 前 の 衝 突 が 発 生 す る か も し れ ま せ ん が 、 AMD は こ れ を 避 け る 方 法 を 追 求 し て い ま す 。 1 つ の YUI モ ジ ュ ー ル の 中 に 新 し い 名 前 空 間 を 作 成 す る 代 わ り に 、 AMD モ ジ ュ ー ル で は フ ァ ク ト リ 関 数 が 公 開 イ ン タ フ ェ ー ス を 返 す こ と が 期 待 さ れ て い ま す 。 define("my-books", [ "dependencyl" "dependency2" ] , function(dependencyl, dependency2) { var BOOkS ー BOOks. MaintainableJavaScript author: "Nich01as C. Zakas" return Books; AMD モ ジ ュ ー ル は 、 完 全 に モ ジ ュ ー ル 名 を 省 略 し て 、 無 名 モ ジ ュ ー ル に す る こ と も で き ま す 。 そ の 場 合 、 モ ジ ュ ー ル ロ ー ダ は JavaScript の フ ァ イ ル 名 か ら モ ジ ュ ー ル 名 を 推 測 で き る こ と が 前 提 で す 。 my-books. js と い う 名 前 の フ ァ イ ル が あ り 、 モ ジ ュ ー ル ロ ー ダ 以 外 か ら は ロ ー ド さ れ な い 場 合 、 モ ジ ュ ー ル を 以 下 の よ う に 定 義 で き ま す 。 define([ "dependencyl" "dependency2" ] , function(dependencyl, dependency2) { var BOOkS BOOks. MaintainabIeJavaScript author: "Nich01as C. Zakas"

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


6.3 YUI. add("module-name", function(Y) { / / モ ジ ュ ー ル 本 体 "dependency2" ] , { requires: [ "dependencyl" verslon 1 ー グ ロ ー バ ル の ア プ ロ YUI. add() に モ ジ ュ ー ル 名 、 実 行 す る 関 数 ( フ ァ ク ト リ 関 数 と 呼 ば れ ま す ) 、 依 存 モ ジ ュ の リ ス ト ( 省 略 可 ) を 指 定 し て 呼 び 出 す と 、 YUI モ ジ ュ ー ル が 追 加 さ れ ま す 。 こ の モ ジ ュ 75 ー ノ レ ー ル の た め の コ ー ド は す べ て モ ジ ュ ー ル 本 体 に 記 述 し ま す 。 引 数 Y は YUI の イ ン ス タ ン ス で あ り 、 要 求 さ れ た 依 存 モ ジ ュ ー ル を す べ て 持 ち ま す 。 次 に 示 す よ う に 、 各 モ ジ ュ ー ル の 内 部 に 名 前 空 間 と し て モ ジ ュ ー ル を 追 加 す る の は 、 YUI の 規 約 で す 。 YUI. add("my-books", function(Y) { / / 名 前 空 間 を 追 加 Y. namespace("Books. MaintainableJavaScript"); "Nicholas C. Zakas" Y. Books. MaintainabIeJavaScript. author "dependency2" ] } ) ; " 1.0.0 " , { requires: [ "dependencyl" 渡 さ れ た Y オ プ ジ ェ ク ト に あ る 名 前 空 間 と し て 依 存 モ ジ ュ ー ル は 表 現 さ れ て い ま す 。 YUI は 実 際 に 名 前 空 間 の 概 念 と モ ジ ュ ー ル を 組 み 合 わ せ る こ と で 、 ア プ ロ ー チ 全 体 を 柔 軟 な も の に し て い ま す 。 作 成 し た モ ジ ュ ー ル を 使 う と き は 、 ロ ー ド す る モ ジ ュ ー ル ( 複 数 可 ) を YUI ( ). use ( ) メ ソ ッ ド に 渡 し ま す 。 YUI(). use("my-books" "another-module", function(Y) { console. 10g(). B00ks. MaintainableJavaScript. author); 「 my-books 」 と 「 another-module 」 と い う 名 前 の モ ジ ュ ー ル が ロ ー ド さ れ 、 依 存 モ ジ ュ ー ル が 完 全 に ロ ー ド さ れ た こ と を 確 か め て か ら 、 こ の コ ー ド が 開 始 さ れ ま す 。 依 存 モ ジ ュ ー ル が 指 定 さ れ た 順 番 で モ ジ ュ ー ル 本 体 は 実 行 さ れ ま す 。 最 後 に 、 YUI(). use() に 渡 さ れ た コ ー ル バ ッ ク 関 数 が 実 行 さ れ ま す 。 引 数 で 渡 さ れ た Y オ プ ジ ェ ク ト に は 、 ロ ー ド さ れ た モ ジ ュ ー ル に よ っ て 加 え ら れ た 変 更 が す べ て 含 ま れ る の で 、 ア プ リ ケ ー シ ョ ン コ ー ド が 実 行 可 能 な 状 態 に な り ま す 。 YUI モ ジ ュ ー ル に 関 す る 詳 し い 情 報 は 、 http: 〃yuilibrary.com/yui/docs/yui/ を 参 照 し て く だ さ い 。

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


6.4 0 ー グ ロ ー バ ル の ア プ ロ return Books; AMD モ ジ ュ ー ル に は 、 モ ジ ュ ー ル の 定 義 方 法 に い く つ か 選 択 肢 が あ り ま す 。 詳 細 に つ い て は 、 ク リ プ ト を 使 う 場 合 で す 。 こ う し た 状 況 は 、 必 要 な ス ク リ プ ト が す べ て 1 つ の フ ァ イ ル に 結 合 状 況 は 、 他 の ス ク リ プ ト か ら ま っ た く ア ク セ ス さ れ る 必 要 の な い 、 完 全 に ス タ ン ド ア ロ ン な ス プ ロ ー チ は 非 常 に 制 約 が あ る の で 、 極 め て 限 定 的 な 状 況 で し か 活 用 で き ま せ ん 。 最 も 使 わ れ る グ ロ ー バ ル 変 数 を 一 切 作 成 せ す に ペ ー ジ に JavaSc ⅱ pt を 組 み 込 む こ と は 可 能 で す 。 こ の ア 6.4 0- グ ロ ー バ ル の ア プ ロ ー チ を 使 う こ と が で き ま す 。 に 対 応 付 け る 機 能 も 含 ま れ ま す 。 jQuery と D 可 。 で は 、 RequireJS を 使 っ て AMD モ ジ ュ ー ル ジ ッ ク が 組 み 込 ま れ て い ま す 。 こ れ に は 、 国 際 化 オ プ シ ョ ン だ け で な く 、 名 前 を デ ィ レ ク ト リ RequireJS モ ジ ュ ー ル ロ ー ダ に は 、 モ ジ ュ ー ル の ロ ー ド を 容 易 に す る た め に 、 た く さ ん の ロ use() に 似 て い ま す ) 。 れ ら の 依 存 モ ジ ュ ー ル が す べ て ロ ー ド さ れ た ら す ぐ に 、 コ ー ル バ ッ ク が 実 行 さ れ ま す (YUI(). require ( ) が 呼 ば れ た ら 即 座 に 、 依 存 モ ジ ュ ー ル の ダ ウ ン ロ ー ド が 開 始 さ れ ま す 。 そ し て こ console. log(books. Maintainab1eJavaScript. author); require([ "my-book" ] , function(books) { / / RequireJS を 使 っ て AMD モ ジ ュ ー ル を ロ ー ド ル バ ッ ク 関 数 を 実 行 し ま す 。 バ ル 関 数 が 追 加 さ れ ま す 。 こ の 関 数 は 、 指 定 さ れ た 依 存 モ ジ ュ ー ル の ロ ー ド に 責 任 を 持 ち 、 コ ー も う 1 つ の モ ジ ュ ー ル ロ ー ダ が RequireJS で す 。 RequireJS で は require() と い う グ ロ ー ジ ュ ー ル の 中 に ロ ー ド さ せ る こ と も で き ま す 。 D 可 0 は そ れ 自 体 を AMD モ ジ ュ ー ル と し て 公 開 す る こ と も で き ま す 。 そ の た め 他 の AMD モ console. log(books. Maintainab1eJavaScript. author) ; var bOOkS = d0j0. require("my-books"); / / D0j0 に AMD モ ジ ュ ー ル を ロ ー ド ル 「 my ー books 」 を 次 の よ う に し て ロ ー ド す る こ と が で き ま す 。 の 標 準 モ ジ ュ ー ル ロ ー ダ は 、 AMD モ ジ ュ ー ル の ロ ー ド に 対 応 し て い ま す 。 そ の た め 、 モ ジ ュ ー AMD モ ジ ュ ー ル を 使 う に は 、 互 換 性 の あ る モ ジ ュ ー ル ロ ー ダ を 使 う 必 要 が あ り ま す 。 D 可 0 https://github.com/amdjs/amdjs-api/wiki/AMD に あ る AMD の 仕 様 を 参 照 し て く だ さ い 。

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


74 ー 6 章 グ ロ ー バ ル 変 数 / 関 数 を 作 ら な い / こ こ か ら の こ の 名 前 空 間 を 使 用 開 始 で き る YourGIoba1. Books. Maintainab1eJavaScript. author = "NichoIas C. zakas" ・ * YourG10baI. Books に HighPerformanceJavaScript を 追 加 す る * You 礼 10ba1. Books. MaintainableJavaScript は 残 っ て い る YourG10baI. namespace("B00ks. HighPerformanceJavaScript"); / / 正 し い 参 照 console. 10g(Y0u礼10ba1. B00ks. MaintainabIeJavaScript. author); / こ こ か ら メ ソ ッ ド 呼 び 出 し に 続 け て 新 し い プ ロ バ テ ィ を 追 加 で き る YourG10bal. namespace("B00ks"). ANewBook = 1ー グ ロ ーバ ル の 上 で namespace() メ ソ ッ ド を 使 う こ と で 、 開 発 者 は そ の 名 前 空 間 が 存 在 す る と 自 由 に 想 定 で き ま す 。 こ の 方 法 は 、 各 フ ァ イ ル ご と に ま ず 最 初 に namespace ( ) が 呼 び 出 さ れ 、 開 発 者 が 使 用 す る 名 前 空 間 が 宣 言 さ れ ま す 。 こ の ア プ ロ ー チ は ま た 、 名 前 空 間 を 使 う 前 に そ の 名 前 空 間 が 存 在 す る か ど う か を 検 査 す る と い っ た 退 屈 き わ ま り な い 作 業 か ら 開 発 者 を 解 放 し ま す 。 1 - グ ロ ー バ ル の ア プ ロ ー チ を チ ー ム が よ り 効 率 的 に 活 用 で き る よ う に な り ま す 。 文 字 に し ま す 。 こ れ は 設 定 項 目 の 質 問 で す が 、 こ れ ら の 選 択 肢 を 定 義 す る こ と で 、 し よ う 。 YUI と 同 じ よ う に 大 文 字 で 始 め る か 、 そ れ と も Dojo の よ う に す べ て 小 コ ー ド の 他 の 部 分 を 使 う と き は 、 名 前 空 間 に 関 連 す る 規 約 を 定 義 す る よ う に し ま 作 る 方 法 で す 。 モ ジ ュ ー ル の 概 念 は YU13 で 形 式 化 さ れ ま し た 。 次 の よ う な 形 に な り ま す 。 YUI モ ジ ュ ー ル は 、 察 し の 通 り 、 YUIJavaScript ラ イ プ ラ リ を 使 っ て 新 し い モ ジ ュ ー ル を 6.3.2.1 Y 団 モ ジ ュ ー ル Definition: 非 同 期 モ ジ ュ ー ル 定 義 ) モ ジ ュ ー ル の 2 つ で す 。 つ か あ り ま す 。 最 も 広 く 使 わ れ て い る の は 、 YUI モ ジ ュ ー ル と AMD (Asynchronous Modu1e ECMAScript6 ま で に 関 し て は ) あ り ま せ ん が 、 モ ジ ュ ー ル を 作 成 す る た め の パ タ ー ン が い く モ ジ ュ ー ル は 正 式 に は JavaScript の 部 品 で は あ り ま せ ん 。 モ ジ ュ ー ル の 構 文 は ( 少 な く と も ト を 持 っ こ と も あ り ま す 。 内 部 に 、 す べ て の コ ー ド を 記 述 し ま す 。 モ ジ ュ ー ル は 、 名 前 と 依 存 す る 他 の モ ジ ュ ー ル の リ ス ま せ ん 。 そ の 代 わ り 、 タ ス ク の 実 行 や イ ン タ フ ェ ー ス の 公 開 を 責 任 を も っ て 行 う 単 独 の 関 数 の ル で す 。 モ ジ ュ ー ル と は 、 汎 用 の 機 能 の 断 片 で あ り 、 グ ロ ー バ ル 変 数 や 名 前 空 間 を 新 規 追 加 し 1 ー グ ロ ー バ ル の ア プ ロ ー チ を 強 化 す る も う 1 つ の 方 法 と し て 開 発 者 が よ く 使 う の が モ ジ ュ ー 6.3.2 モ ジ ュ ー ル

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


第 部 自 動 化 「 そ ん な わ た く し が 無 上 の 幸 福 を 感 じ る の は 、 一 日 中 コ ン ピ ュ ー タ の プ ロ グ ラ ム を 書 い て 過 ご す と き だ 。 そ し て 、 人 手 で や れ ば ゆ う に 十 秒 は か か る よ う な 仕 事 を 、 す べ て コ ン ピ ュ ー タ で 自 動 的 に や れ る よ う に す る の で あ る 。 」 ダ グ ラ ス ・ ア ダ ム ス 『 Last Chance to See 』 す 2000 年 以 前 は 、 ウ エ プ 開 発 者 は ソ ー ス コ ン ト ロ ー ル に 保 存 し て い る の と 同 じ 形 式 で 、 つ ま り コ メ ン ト が 残 っ た ま ま の JavaScript フ ァ イ ル を ウ エ プ サ ー バ に ア ツ ッ プ ロ ー ド す る だ け で し た 。 ソ ー ス コ ン ト ロ ー ル に 10 フ ァ イ ル が あ っ た 場 合 、 サ ー バ に も 10 フ ァ イ ル 置 か れ ま し た 。 ロ ー カ ル に 保 存 し て い る の と 同 じ フ ァ イ ル が サ ー バ に 配 置 さ れ る の で 、 こ れ は 一 種 の ミ ラ ー リ ン グ で あ り 、 迅 速 な 変 更 が 可 能 で す 。 ま た 、 こ れ に よ っ て 「 ソ ー ス を 見 る 」 こ と が 可 能 に な り 、 多 く の ウ エ プ 開 発 者 は サ イ ト に 行 っ て 、 ペ ー ジ の ソ ー ス を 見 る こ と で JavaScript を 学 び ま し た 。 も ち ろ ん 、 ウ エ プ サ イ ト で 見 ら れ る JavaScript の 量 は 今 日 の 標 準 と 比 べ れ ば か な り 小 さ い も の で し た 。 一 人 の 開 発 者 が 書 い た 100 行 程 度 の JavaScript コ ー ド が 規 範 と し て 使 わ れ る 一 方 、 今 日 の モ ダ ン な ウ エ プ ア プ リ ケ ー シ ョ ン で は 数 千 行 も の JavaScript が 十 数 人 も の 開 発 者 に よ っ て 更 新 さ れ て い ま す 。 も は や 古 い や り 方 が 通 用 し な い の は 言 う ま で も あ り ま せ ん 。 大 規 模 な ( そ し て 多 く の 小 規 模 な ) ウ エ プ ア プ リ ケ ー シ ョ ン は 、 JavaScript フ ァ イ ル の 自 動 処 理 に 依 存 し ま す 。 自 動 化 は 、 ウ エ プ ア プ リ ケ ー シ ョ ン の ス タ ッ ク の 他 の 部 品 と 共 通 し ま す が 、 2005 年 ま で は JavaScript で の 自 動 化 は 一 般 的 で は あ り ま せ ん で し た 。 ウ エ プ ア プ リ ケ ー シ ョ ン 全 体 の 自 動 化 シ ス テ ム に JavaScript が 加 わ る こ と は 、 メ ン テ ナ ン ス 性 に と っ て 重 要 な ス テ ッ プ で あ り 、 シ ス テ ム の 他 の 部 品 と 同 じ 種 類 の 安 全 装 置 を 持 た せ る こ と に な り ま し た 。 す 訳 者 注 : 邦 題 『 こ れ が 見 納 め : 絶 滅 危 惧 の 生 き も の た ち 、 最 後 の 光 景 』 安 原 和 見 訳 、 み す ず 書 房 、 2011 年

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


ー は じ め に 置 き 始 め ま し た 。 こ の 経 験 が 本 当 に 目 を 覚 ま す き っ か け と な り ま し た 。 私 が コ ー ド を 書 く や り 方 は 、 チ ー ム の 他 の メ ン バ ー が そ う す る や り 方 と は ま っ た く 違 っ て い て 、 そ の こ と が 問 題 に な っ た の で す 。 チ ー ム で も っ と 効 率 よ く 仕 事 を す る た め に は 、 チ ー ム の 他 の メ ン バ ー が コ ー ド を 書 く や り 方 で コ ー ド を 書 き 始 め な け れ ば い け な い こ と を す ぐ に 悟 り ま し た 。 私 に と っ て サ ー バ サ イ ド の コ ー ド と SQL は 馴 染 み に く か っ た の で 、 そ れ に 詳 し い 周 り の 人 た ち の パ タ ー ン に 合 わ せ ま し た 。 同 時 に 、 他 の エ ン ジ ニ ア に HTML 、 CSS 、 JavaScript の コ ー デ ィ ン グ パ タ ー ン に つ い て 話 し 始 め ま し た 。 標 準 を 徹 底 す る た め に ビ ル ド プ ロ セ ス に JavaScript の lint を 追 加 し ま し た 。 そ の 会 社 で は ウ エ プ コ ー ド を テ ス ト す る の は 初 め て の 試 み だ っ た の で す 。 そ し て す ぐ に 、 チ ー ム は 潤 滑 油 が 注 が れ た 機 械 の よ う に う ま く 回 っ て い き ま し た 。 2006 年 に Yaho 。 ! に 転 職 し た と き 、 仕 事 の 進 め 方 に つ い て 明 確 な 考 え を 持 っ て い ま し た 。 変 な 動 物 が 一 匹 い る よ う な 感 じ で し た 。 最 初 に 仕 事 し た の は MyYahoo ! の チ ー ム で し た が 、 れ ま で の ど の プ ロ ジ ェ ク ト よ り も 大 規 模 で し た 。 す で に 擬 似 的 な ガ イ ド ラ イ ン が あ り 、 学 ぶ べ き こ と が た く さ ん あ り ま し た 。 新 し い 技 術 、 新 し い プ ロ セ ス 、 そ し て 新 し い ツ ー ル が 毎 日 の よ う に 導 入 さ れ ま し た 。 私 は 押 し つ ぶ さ れ そ う に な り な が ら 、 こ の 新 し い 環 境 に つ い て 学 ぶ こ と に 時 間 を 費 や し 、 同 僚 か ら 学 ん だ 知 識 を 詰 め 込 み ま し た 。 数 ヶ 月 後 、 問 題 を 見 つ け は じ め ま し た 。 私 が や っ と の こ と で 慣 れ た プ ロ セ ス は 、 い つ で も 機 能 す る わ け で は あ り ま せ ん で し た 。 多 く の メ ン バ ー が ば ら ば ら の や り 方 で 取 り 組 ん で い て 、 そ れ が バ グ を 生 み ま し た 。 マ ネ ー ジ ャ は 、 こ の 傾 向 に 気 付 き 、 あ る 日 私 を 呼 ん で 、 先 頭 に 立 っ て 開 発 を 整 理 し て く れ と 言 い ま し た 。 「 き み が コ ー ド を 書 く と 、 ち ゃ ん と 動 く し 、 ほ と ん ど バ グ も な い 。 き み の よ う に 全 員 が コ ー ド を 書 け る よ う に し て ほ し い 。 」 と い う 彼 の 言 葉 に は 、 い ま で も 元 気 づ け ら れ ま す 。 そ し て 、 私 は MyYahoo ! の フ ロ ン ト エ ン ド 開 発 チ ー ム に い く つ か の 仕 組 み を 導 入 す る 作 業 に 着 手 し ま し た 。 MyYahoo ! チ ー ム で の 功 績 に よ っ て 、 2008 年 の Yahoo ! ホ ー ム ペ ー ジ の 再 設 計 に お け る フ ロ ン ト エ ン ド の 技 術 リ ー ダ ー に 抜 擢 さ れ ま し た 。 組 織 力 と コ ー ド 品 質 の ス キ ル を テ ス ト に 注 力 し ま し た 。 同 じ コ ー ド に 20 人 以 上 も の フ ロ ン ト エ ン ド エ ン ジ ニ ア が 作 業 し て い た の で す 。 学 習 と 調 整 に 数 ヶ 月 を 費 や し た 後 、 チ ー ム は 生 産 性 と 品 質 を 高 い レ ベ ル で 達 成 し た の で 、 多 く の 人 が 驚 き ま し た 。 誰 が 書 い た か に よ ら す に ど の コ ー ド も 非 常 に 似 て い る だ け で な く 、 ほ と ん ど の 開 発 者 が 他 の メ ン バ ー の 作 業 を 分 担 し 、 バ グ の 修 正 や 新 機 能 の 実 装 を す ぐ に 行 な え た の で す 。 こ の 2 年 間 の エ ン ジ ニ ア の チ ー ム と し て の 業 績 は 、 私 の キ ャ リ ア の 中 で も い ま だ に 輝 か し い も の の 1 つ で す 。 本 書 で 説 明 す る ヒ ン ト や テ ク ニ ッ ク は 、 Yahoo! と い う 大 き な チ ー ム で 仕 事 し て い た と き に ま と め た も の で す 。 こ れ ら の ト ピ ッ ク ス は 、 か っ て ハ ッ カ ー で あ り 、 い つ も 自 分 の や り 方 に こ だ わ っ て い た 私 が 、 高 い レ ベ ル で チ ー ム が 機 能 す る た め に 自 分 の や り 方 を 我 慢 す る ソ フ ト ウ ェ ア 工 ン ジ ニ ア で あ り チ ー ム プ レ イ ヤ ー に 、 い か に し て 変 わ っ た か を 強 調 し て い ま す 。 こ の 本 で 示 し て い る の は 、 チ ー ム の 一 員 と し て JavaScript を 書 く 方 法 で す 。 開 発 者 が よ く 理 解 し て い な い 厳 し い 真 実 で す が 、 彼 ら は ほ と ん ど の 時 間 を コ ー ド の メ ン テ ナ ン ス に 費 や し て い ま す 。 テ キ ス ト エ デ イ タ を 開 い て 、 ゼ ロ か ら コ ー ド を 書 き 始 め る こ と は 滅 多

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


116 ー 11 章 所 有 し て い な い オ ブ ジ ェ ク ト を 変 更 し な い console. log(person. name); 〃 undefined こ の 例 で は pe て son オ プ ジ ェ ク ト か ら name プ ロ バ テ ィ を 削 除 し て い ま す 。 delete 演 算 子 は イ ン ス タ ン ス の プ ロ バ テ イ や メ ソ ッ ド に 対 し て だ け 機 能 し ま す 。 delete が prototype プ ロ バ テ ィ や メ ソ ッ ド に 対 し て 使 わ れ て い る 場 合 、 次 の よ う に 無 効 に な り ま す 。 / / 効 果 な し delete document. getElementById; console. log(document. getElementById("mye1ement")); / / 動 く document. getElementById() は prototype メ ソ ッ ド な の で 、 delete を 使 っ た 削 除 は で き ま せ ん 。 し か し 前 の 例 で 見 た よ う に 、 null を 設 定 す る こ と で ア ク セ ス で き な く す る こ と は 可 能 で す 。 既 存 の メ ソ ッ ド を 削 除 す る の は バ ッ ド プ ラ ク テ ィ ス で あ る 、 と い う こ と を 言 わ ず に 次 に は 進 め ま せ ん 。 メ ソ ッ ド に 依 拠 し て い る の は 開 発 者 だ け で な く 、 そ の メ ソ ッ ド を 使 っ て い る コ ー ド も す で に 存 在 し て い る か も し れ ま せ ん 。 使 用 中 の メ ソ ッ ド を 削 除 す る と 実 行 時 ェ ラ ー が 発 生 し ま す 。 あ な た の チ ー ム で 使 う べ き で な い 特 定 の メ ソ ッ ド が あ る と き は 、 ド キ ュ メ ン ト で 伝 え る か 、 あ る い は 静 的 な コ ー ド 分 析 を 使 っ て 、 非 推 奨 と し て マ ー キ ン グ し ま す 。 メ ソ ッ ド 削 除 は 本 当 に 最 後 の 手 段 に す べ き で す 。 る と 、 無 数 の ウ ェ ブ サ イ ト で エ ラ ー が 発 生 す る と 予 測 さ れ る か ら で す 。 長 時 間 に わ た り 不 完 全 な メ ソ ッ ド を 使 っ て い る 必 要 が あ り ま す 。 そ れ ら を 削 除 す し い の で す 。 多 く の 場 合 、 ラ イ ブ ラ リ と ブ ラ ウ ザ の 両 方 が バ グ を 共 有 し て い る か 、 る の は 、 そ の 機 能 に 依 拠 し て い る サ ー ド バ ー テ ィ の コ ー ド が あ る の で 、 と て も 難 ラ ク テ ィ ス で す 。 ラ イ ブ ラ リ や ネ イ テ ィ ブ の オ ブ ジ ェ ク ト か ら メ ソ ッ ド を 削 除 す 自 分 で 所 有 す る オ ブ ジ ェ ク ト に 対 し て メ ソ ッ ド 削 除 を 実 行 し な い こ と は 、 良 い プ が で き ま す 。 JavaScript に は 継 承 の 基 本 形 式 が 2 つ あ り ま す 。 オ プ ジ ェ ク ト べ ー ス と 型 べ ー ス 大 部 分 を 実 行 で き る あ る 型 の オ プ ジ ェ ク ト が あ る と し て 、 そ れ を 拡 張 し て 機 能 を 追 加 す る こ と JavaScript 以 外 で オ プ ジ ェ ク ト を 拡 張 す る 最 も 人 気 の あ る 形 式 は 継 承 で す 。 や り た い こ と の ン と 呼 ば れ る ア プ ロ ー チ が あ り ま す 。 進 化 し て き ま し た 。 既 存 の オ プ ジ ェ ク ト を 直 接 変 更 す る こ と な く 拡 張 す る に は 、 デ サ イ ン パ タ ー ほ と ん ど の コ ン ピ ュ ー タ サ イ エ ン ス の 知 識 は 、 Java の よ う な 静 的 型 言 語 で 問 題 を 解 く こ と で た か ら 起 き る の で す 。 し か し 、 与 え ら れ た 問 題 に は 常 に 1 つ 以 上 の 解 決 方 法 が あ る も の で す 。 系 統 的 に 解 決 で き る こ と は あ り ま せ ん 。 オ プ ジ ェ ク ト の 変 更 で 解 決 す る 問 題 に 開 発 者 が 遭 遇 し 所 有 し て い な い オ プ ジ ェ ク ト を 変 更 す る こ と で 、 問 題 が 解 決 で き る こ と が あ り ま す 。 通 常 は 1 3 よ り 良 い ア プ ロ ー チ

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


・ 著 者 紹 介 NichoIas C. Zakas ( ニ コ ラ ス ・ c ・ ザ カ ス ) フ ロ ン ト エ ン ド コ ン サ ル タ ン ト 兼 著 者 兼 ス ピ ー カ ー 。 Yahoo! に 5 年 ほ ど 在 籍 し 、 Yahoo ! ホ ー ム ペ ー ジ の フ ロ ン ト エ ン ド の 技 術 リ ー ダ ー と YUI ラ イ プ ラ リ の コ ン ト リ ビ ュ ー タ を 務 め る 。 『 professional JavaScript for Web Developer 』 『 professional Ajax 』 ( い ず れ も worx) 、 『 High Performance JavaScript 』 ( 邦 題 『 ハ イ パ フ ォ ー マ ン ス JavaScript 』 オ ラ イ リ ー ・ ジ ャ パ ン ) の 著 者 で も あ る 。 機 能 拡 張 、 ア ク セ シ ビ リ テ ィ 、 パ フ ォ ー マ ン ス 、 ス ケ ー ラ ビ リ テ ィ 、 保 守 性 を 含 む べ ス ト プ ラ ク テ ィ ス の 開 発 に 強 い 意 欲 を 燃 や す 。 定 期 的 に 更 新 さ れ る プ ロ グ は http://www.nczonline.net/、 [email protected] slickneto ・ 訳 者 紹 介 豊 福 剛 ( と よ ふ く つ よ し ) Web ア プ リ の 企 画 、 開 発 、 運 営 を 手 が け る IT 仕 事 人 。 主 な 訳 書 に fJava ク ッ ク プ ッ ク 』 、 『 Linux サ ー バ セ キ ュ リ テ イ 』 、 『 Head First JavaScript 』 、 『 JavaScript パ タ ー ン 』 、 『 MySQL ト ラ ブ ル シ ュ ー テ イ ン グ 』 ( オ ラ イ リ ー ・ ジ ャ パ ン ) 。 Arduino 、 PureData 、 Node. js 、 AWS な ど な ど を 使 っ て い る 。 カ バ ー の 説 明 表 紙 の 動 物 は 、 ギ リ シ ャ リ ク ガ メ ( 学 名 Testudo graeca) で す 。 「 ト ゲ モ モ リ ク ガ メ 」 と も 呼 ば れ ま す 。 現 在 少 な く と も 20 の 亜 種 が 知 ら れ て お り 、 大 き さ 、 重 さ 、 色 は 多 岐 に わ た り ま す 。 北 ア フ リ カ 、 南 ョ ー ロ ッ パ 、 西 南 ア ジ ア に 生 息 し て お り 、 暖 か く 乾 燥 し た 気 候 を 好 み ま す が 、 山 岳 地 帯 の 草 原 や 海 辺 の 砂 浜 で も 姿 を 見 る こ と が あ り ま す 。 ギ リ シ ャ リ ク ガ メ は 個 体 差 が 大 き い た め 色 や 大 き さ に よ る 亜 種 の 分 類 が 困 難 で す 。 そ の 原 因 の 多 く は 異 種 交 配 に よ る も の で す 。 異 な る グ ル ー プ の カ メ で も 交 配 す る こ と が 多 く あ り 、 結 果 と し て さ ま ざ ま な 色 や 大 き さ の 個 体 が 現 れ て い ま す 。 こ の 理 由 か ら 、 亜 種 を 特 定 す る に は 、 そ の 個 体 が ど こ に 生 息 し て い た か が い ち ば ん 重 要 な 情 報 と な り ま す 。 ギ リ シ ャ リ ク ガ メ の 大 き さ は 20 ~ 30 セ ン チ で 、 尻 尾 の 付 け 根 の 両 側 に ト ゲ の よ う な 鱗 が あ り 「 ト ゲ モ モ リ ク ガ メ 」 の 名 前 の 由 来 と な っ て い ま す 。 一 般 に 甲 羅 は 楕 円 形 で 、 大 き な 前 足 が 特 徴 で す 。 背 甲 と 縁 甲 板 に 斑 点 が あ り 、 さ ら に 大 き く 濃 い 斑 点 が 腹 面 に あ り ま す 。 ギ リ シ ャ リ ク ガ メ の 交 配 行 動 は 冬 眠 の 直 後 か ら 始 ま り ま す 。 産 卵 の 1 ~ 2 週 間 前 か ら あ た り を 動 き 回 り 、 穴 を 掘 り 、 土 の 味 を 確 か め 臭 い を 嗅 い で 、 産 卵 に 最 適 な 場 所 を 見 つ け ま す 。 産 卵 の 前 日 あ る い は 前 々 日 に な る と メ ス は 攻 撃 的 に な り ま す 。 イ 中 間 内 で の 力 を 強 め 、 産 ん だ 卵 の 安 全 を 守 る た め で す 。 平 均 寿 命 は 50 年 で す 。

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


5.2 CSS か ら JavaScript を 隔 離 す る 一 55 HTML だ け を 見 れ ば 解 決 で き る で し よ う 。 ス タ イ ル の 問 題 が 発 生 し た と き は 、 CSS に 問 題 が あ る こ と が わ か り 、 css を 修 正 す る だ け で 済 み ま す 。 最 後 に 、 も し 振 る 舞 い に 問 題 が あ る 場 合 、 JavaScript に 直 行 し て 解 決 す れ ば い い の で す 。 こ う し た 対 応 が 可 能 な こ と こ そ 、 メ ン テ ナ ン ス 性 に 優 れ た ウ エ プ イ ン タ フ ェ ー ス の 鍵 で す 。 52 CSS か ら JavaScript を 隔 離 す る lnternet Explorer8 と そ れ 以 前 の バ ー ジ ョ ン に は 、 一 部 で は 愛 さ れ 、 し か し 多 く の 人 々 に 嫌 わ れ た 機 能 が あ り ま し た 。 そ れ は CSS 式 で す 。 CSS 式 を 使 う と 、 CSS に JavaScript を 直 接 挿 入 で き ま す 。 CSS コ ー ド の 中 で 計 算 な ど の 機 能 が 直 接 実 行 で き る の で す 。 た と え ば 、 次 の コ ー ド で は 、 プ ラ ウ ザ の 幅 に 合 致 す る よ う に 要 素 の 幅 を 設 定 し て い ま す 。 . box { width: expression(document. b0dy.0 幵 setWidth + "px"); CSS 式 は expression() と い う 特 殊 な 関 数 で 囲 ま れ た 部 分 で あ り 、 JavaScript の い か な る コ ー ド で も 受 け 付 け ま す 。 CSS 式 は 頻 繁 に 検 討 し 直 さ れ 、 性 能 を 悪 化 さ せ る も の と 見 な さ れ ま し た 。 steve Souders の 『 High performance Web Sites 』 ( 邦 題 『 ハ イ パ フ ォ ー マ ン ス Web サ イ ト 』 オ ラ イ リ ー ・ ジ ャ パ ン 刊 ) で は 、 避 け る べ き も の に 数 え ら れ て い ま す ( ル ー ル 7 : CSS expression の 使 用 を 控 え る ) 。 性 能 問 題 と は 別 に 、 CSS の 中 に JavaScript を 埋 め 込 む と 、 メ ン テ ナ ン ス は 悪 夢 と な り ま す 。 著 者 も 直 接 体 験 し た こ と が あ り ま す 。 2005 年 、 私 が 担 当 し た JavaScript の バ グ に は 、 最 初 か ら 苦 し め ら れ ま し た 。 そ の バ グ は InternetExpIorer で の み 発 生 し 、 し か も プ ラ ウ ザ の ウ イ ン ド ウ の サ イ ズ 変 更 を 行 っ た 、 ほ ん の 数 回 し か 発 生 し な い の で す 。 そ の 時 点 で は 、 lnternet Explorer の た め の 最 良 の JavaScript デ ノ ヾ ッ ガ は Visual Studi0 で し た が 、 こ の 問 題 の 発 生 源 を 特 定 す る こ と は で き ま せ ん で し た 。 プ レ イ ク ポ イ ン ト の 設 定 と alert ( ) 文 の 挿 入 に 丸 1 日 を 費 や し て 、 何 が 置 き て い る の か 把 握 し よ う と し た の で す 。 そ の 日 の 終 わ り 近 く に な っ て 、 ど う に も 好 き に な れ な い デ バ ッ グ 手 法 で あ る コ ー ド の シ ス テ マ チ ッ ク な 削 除 を 試 し て み ま し た 。 1 つ 1 つ の フ ァ イ ル か ら JavaScript を 取 り 除 き 、 問 題 が 再 現 す る か 試 し た の で す す ぐ に イ ラ イ ラ が 募 り 、 ペ ー ジ か ら JavaScript を す べ て 取 り 除 き ま し た 。 そ れ で も バ グ カ 再 現 す る の で す 。 信 じ ら れ な い 思 い で ス ク リ ー ン を 見 つ め ま し た 。 JavaScript が 一 切 含 ま れ な い ペ ー ジ で JavaScript 工 ラ ー が 起 き る っ て 、 ど う い う こ と ? 結 局 CSS を 調 べ る こ と に な っ た の で す が 、 そ の 日 ま で CSS の ど こ に 罠 が あ る の か 知 り ま せ ん で し た 。 そ の と き は 、 何 を 探 せ ば い い の か す ら 、 よ く わ か ら な か っ た の で す 。 CSS の 頭 か ら 順 に 、 ゆ っ く り ス ク ロ ー ル し な が ら 、 何 か 目 に 飛 び 込 ん で こ な い か 見 て い ま し た 。 そ し て 遂 に 、 問 題 の 原 因 が CSS 式 だ と わ か っ た の で す 。 そ れ を 削 除 し た ら 、 JavaScript 工 ラ ー は 消 え ま し た 。 こ の 経 験 か ら 本 章 の ル ー ル を 学 び ま し た 。 JavaScript の バ グ を JavaScript か ら 探 す の に 丸 0 ヾ 、

メンテナブルJavaScript-読みやすく保守しやすいJavaScriptコードのための作法-


10.5 try-catch 文 ー 105 す る こ と が で き な い 場 合 、 エ ラ ー チ ェ ッ ク が 必 要 に な り ま す 。 自 前 の エ ラ ー を 投 げ れ ば 、 さ ら に 多 く の 利 点 が 得 ら れ る で し よ う 。 工 ラ ー を 投 げ る 最 善 の 箇 所 は 、 addClass ( ) 関 数 の よ う な ユ ー テ ィ リ テ ィ 関 数 に お い て で す 。 ユ ー テ ィ リ テ ィ 関 数 は 、 一 般 に ス ク リ プ テ ィ ン グ 環 境 の 一 部 で あ り 、 多 く の 箇 所 で 使 わ れ る で し よ う し 、 JavaScript ラ イ プ ラ リ は 、 既 知 の エ ラ ー 条 件 に 対 し て public イ ン タ フ ェ ー ス か ら エ ラ ー を 投 げ る べ き で す 。 jQuery 、 YUI 、 D 可 0 の よ う な 巨 大 な ラ イ プ ラ リ は 、 い つ 、 ど こ で そ の 関 数 が 呼 ば れ る の か ど う し て も 予 想 で き ま せ ん 。 何 か 悪 い こ と が 起 き た 原 因 を 調 べ る た め に ラ イ プ ラ リ コ ー ド を デ バ ッ グ す る 必 要 は な い は ず な の で 、 何 か 間 違 っ た こ と を し で か し た と き に 、 そ れ を 知 ら せ る の が ラ イ プ ラ リ の 仕 事 で す 。 ェ ラ ー の コ ー ル ス タ ッ ク は 、 ラ イ プ ラ リ の イ ン タ フ ェ ー ス で 終 了 す べ き で あ り 、 そ れ 以 上 深 い 部 分 は 不 要 で す 。 ラ イ プ ラ リ の 中 の 12 も の 関 数 が 積 み 重 な っ た エ ラ ー こ う し た こ と が 起 き る の を 防 を 見 て も 、 何 も 得 る と こ ろ は あ り ま せ ん 。 ラ イ プ ラ リ 開 発 者 は 、 ぐ 責 任 が あ り ま す 。 同 じ こ と は プ ラ イ ベ ー ト な JavaScript ラ イ プ ラ リ に つ い て も 言 え ま す 。 多 く の ウ エ プ ア プ リ ケ ー シ ョ ン が 、 自 前 の プ ロ プ ラ イ エ タ リ な JavaScript ラ イ プ ラ リ を 持 っ て い ま す 。 こ う し た ラ イ プ ラ リ は 、 よ く 知 ら れ た パ プ リ ッ ク オ プ シ ョ ン で 構 築 さ れ て い る か 、 あ る い は そ れ の 代 わ り に な っ て い る か 、 ど ち ら か で す 。 ラ イ プ ラ リ の ゴ ー ル は 、 開 発 者 の 苦 労 を 減 ら す こ と で す 。 汚 い 実 装 の 詳 細 か ら 離 れ た 、 抽 象 を 提 供 す る こ と で こ れ は 実 現 さ れ ま す 。 ェ ラ ー を 投 げ る こ と こ う し た 汚 い 実 装 の 詳 細 を 開 発 者 か ら 安 全 に 隠 す の に 役 立 ち ま す 。 は 、 ェ ラ ー を 投 げ る と き の 一 般 的 な 大 原 則 は 、 以 下 の 通 り で す 。 ・ デ バ ッ グ が 困 難 な エ ラ ー を 修 正 し た ら 、 同 じ 苦 労 を 繰 り 返 さ な い た め に 、 問 題 を 容 易 に 解 決 す る の に 役 立 つ 、 1 つ 、 な い し 2 つ の カ ス タ ム エ ラ ー を 追 加 し て み る 。 コ ー ド を 書 い て い る 際 に 、 「 こ の コ ー ド を 混 乱 さ せ る だ ろ う 『 何 か 』 が 起 き な け れ ば い い け れ ど 」 と 思 っ た ら 、 そ の 「 何 か 」 が 起 き た と き に エ ラ ー を 投 げ る 。 ・ あ な た が 知 ら な い 人 々 が 使 う で あ ろ う コ ー ド を 書 い て い る と き に は 、 そ の 関 数 を 誤 っ て 使 う こ と を 想 定 し て 、 そ う し た 場 合 に エ ラ ー を 投 げ る よ う に す る 。 忘 れ て な ら な い の は 、 エ ラ ー そ の も の を 防 ぐ の が ゴ ー ル で は な く 、 エ ラ ー が 発 生 し た と き に デ バ ッ グ が 容 易 に な る エ ラ ー に す る こ と で す 。 10.5 try-catch 文 JavaScript で は 、 投 げ ら れ た エ ラ ー を プ ラ ウ ザ が 処 理 す る 前 に 捕 捉 で き る try-catch 文 が 提 供 さ れ て い ま す 。 工 ラ ー を 発 生 さ せ る か も し れ な い コ ー ド を try プ ロ ッ ク の 中 に 置 き 、 エ ラ ー を 処 理 す る コ ー ド を catch プ ロ ッ ク に 置 き ま す 。 次 の 例 を 見 て み ま し よ う 。 try { somethingThatMightCauseAnError(); } catch (ex) {