{"version":1,"pages":[{"id":"fDJh8urvDYBK3R9xisFo","title":"Rubyで実装するフルスクラッチ三目並べ","pathname":"/rubydesurufurusukuratchibe","siteSpaceId":"sitesp_yUs7H","description":""},{"id":"zpIRMILfptd5eiHBtyTR","title":"本書の進め方","pathname":"/rubydesurufurusukuratchibe/nome","siteSpaceId":"sitesp_yUs7H","description":""},{"id":"zsLOOxMM3TEnuPlQ1JAw","title":"環境構築","pathname":"/rubydesurufurusukuratchibe/huan-jing-gou-zhu","siteSpaceId":"sitesp_yUs7H","description":""},{"id":"WERqfbZWJaLFgzmKFJ5P","title":"ゲーム板の出力関数","pathname":"/rubydesurufurusukuratchibe/rojikkuno/gmuno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第一章 基本ロジックの実装"}]},{"id":"ZCHNc9eaaLUNJdlUgDLQ","title":"勝利判定","pathname":"/rubydesurufurusukuratchibe/rojikkuno/sheng-li-pan-ding","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第一章 基本ロジックの実装"}]},{"id":"YNyoewq9cwyedpfWoUWc","title":"入力部分","pathname":"/rubydesurufurusukuratchibe/rojikkuno/ru-li-bu-fen","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第一章 基本ロジックの実装"}]},{"id":"LkqmBwj0CpoqXDaycszn","title":"ゲーム板の更新","pathname":"/rubydesurufurusukuratchibe/rojikkuno/gmuno-1","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第一章 基本ロジックの実装"}]},{"id":"Zzk0hQ21vpRvC1hL6c7o","title":"ゲームの終了条件","pathname":"/rubydesurufurusukuratchibe/rojikkuno/gmuno-2","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第一章 基本ロジックの実装"}]},{"id":"SMPGZwfGelmDtY1gmDbg","title":"メイン部分の実装","pathname":"/rubydesurufurusukuratchibe/rojikkuno/meinno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第一章 基本ロジックの実装"}]},{"id":"NlOfRWtGHLwTdTesXJgg","title":"テストコードが必要な理由","pathname":"/rubydesurufurusukuratchibe/tesutokdo/tesutokdogana","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第二章 テストコード"}]},{"id":"w6ydbpFs9V26id43infg","title":"テストファイルの作成","pathname":"/rubydesurufurusukuratchibe/tesutokdo/tesutofairuno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第二章 テストコード"}]},{"id":"AROdtfFYydBgBcwlSqsl","title":"テストコードの記述","pathname":"/rubydesurufurusukuratchibe/tesutokdo/tesutokdono","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第二章 テストコード"}]},{"id":"H8HRS3LdGF0LQxSqoMA7","title":"静的解析が必要な理由","pathname":"/rubydesurufurusukuratchibe/di-san-zhang-jing-de-jie-xi/gana","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第三章 静的解析"}]},{"id":"YAw1Iw8d8wpFe1DNRvJC","title":"RuboCopのインストール","pathname":"/rubydesurufurusukuratchibe/di-san-zhang-jing-de-jie-xi/rubocopnoinsutru","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第三章 静的解析"}]},{"id":"ba8ZAlbslwlxOxb4CQ30","title":"静的解析の実行","pathname":"/rubydesurufurusukuratchibe/di-san-zhang-jing-de-jie-xi/no","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第三章 静的解析"}]},{"id":"cFJ7UGVKryp2G7A6c5pj","title":"リファクタリングが必要な理由","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/rifakutaringugana","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"xCDWtYJcWzLt6HqbOAd8","title":"TicTacToeValidatorClassの実装","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/tictactoevalidatorclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"AF5vFSlbufvRcTytok1h","title":"PlayerClassの実装","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/playerclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"CNkhwd8E4COkO00sZZ4J","title":"定数による改善","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/niyoru","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"DVUTpaN6aE0oqsZxVKDa","title":"BoardClassの実装","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/boardclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"wmYSzUEOjgILTi0mrIMu","title":"GameManagerClassの実装","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/gamemanagerclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"11HDtB9m2vvCDa9fo2Yp","title":"GameManagerFactoryClassの実装","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/gamemanagerfactoryclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"07g235qL7RUBTQjvqvXi","title":"TicTacToeClassの実装","pathname":"/rubydesurufurusukuratchibe/rifakutaringu/tictactoeclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"第四章 リファクタリング"}]},{"id":"DZkFuXQMJ9ZbAZOqIDs2","title":"追加機能の説明","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/no","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"BPqsQtnZYT8JSBvLcfJS","title":"PlayerClassの修正","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/playerclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"8MDIo8mqN8Z8pdnT1edn","title":"OrderlyComPlayerの追加","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/orderlycomplayerno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"ASUj5qC7Q4QQmfPraeiB","title":"RandomComPlayerの追加","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/randomcomplayerno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"xsZZrNxSZTM6ehyglqMr","title":"GameManagerClassの修正","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/gamemanagerclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"KAt7G2WUE0D8jiaQz7zo","title":"GameManagerFactoryClassの修正","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/gamemanagerfactoryclassno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"VH2WkjVXpcm64lduGmDT","title":"COMを適用させる","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/comwosaseru","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"YFwY9tEs0CO1mAhgqV9A","title":"オリジナルCOMの追加","pathname":"/rubydesurufurusukuratchibe/zui-zhong-zhang-ji-neng-zhui-jia/orijinarucomno","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"最終章 機能追加"}]},{"id":"Wt7ZCINaIqlIZK36000j","title":"rspecのインストール","pathname":"/rubydesurufurusukuratchibe/omake-rspecwottatesuto/rspecnoinsutru","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"おまけ rspecを使ったテスト"}]},{"id":"Pl3K6oRDJ0Ne5oPwKpry","title":"rspecでテストを書き直す","pathname":"/rubydesurufurusukuratchibe/omake-rspecwottatesuto/rspecdetesutowokisu","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"おまけ rspecを使ったテスト"}]},{"id":"ZKObBfFxLcOjAfbzbCgL","title":"まとめ","pathname":"/rubydesurufurusukuratchibe/nomatome/matome","siteSpaceId":"sitesp_yUs7H","description":"","breadcrumbs":[{"label":"本書のまとめ"}]}]}