diff options
Diffstat (limited to 'docs/ja/newbs_flashing.md')
-rw-r--r-- | docs/ja/newbs_flashing.md | 399 |
1 files changed, 399 insertions, 0 deletions
diff --git a/docs/ja/newbs_flashing.md b/docs/ja/newbs_flashing.md new file mode 100644 index 000000000..54569e122 --- /dev/null +++ b/docs/ja/newbs_flashing.md | |||
@@ -0,0 +1,399 @@ | |||
1 | # ファームウェアを書きこむ | ||
2 | |||
3 | <!--- | ||
4 | original document: ed0575fc8:docs/newbs_flashing.md | ||
5 | $ git diff ed0575fc8 HEAD docs/newbs_flashing.md | ||
6 | --> | ||
7 | |||
8 | カスタムファームウェアは出来たので、キーボードに書き込みたくなるでしょう/フラッシュしたくなるでしょう。 | ||
9 | |||
10 | ## QMK Toolbox を使ってキーボードに書き込む | ||
11 | |||
12 | キーボードに書き込む最も簡単な方法は [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) を使うことです。 | ||
13 | |||
14 | ただし、QMK Toolbox は、現在は Windows と macOS でしか使えません。 | ||
15 | Linuxを使用している場合(および、コマンドラインでファームウェアを書き込みたい場合)は、下の方で概説する[方法](newbs_flashing.md#コマンドラインでファームウェアを書き込む)で行なう必要があります。 | ||
16 | |||
17 | ### QMK Toolbox にファイルをロードする | ||
18 | |||
19 | まず QMK Toolbox アプリケーションを起動します。 | ||
20 | Finder またはエクスプローラーでファームウェアのファイルを探します。 | ||
21 | ファイル名は `.hex` または `.bin` のどちらかの形式です。 | ||
22 | ビルド時に QMK は、キーボードに適した形式のものを `qmk_firmware` のトップフォルダにコピーしているはずです。 | ||
23 | |||
24 | Windows か macOS を使用しているときは現在のファームウェアフォルダをエクスプローラーか Finder で簡単に開くためのコマンドがあります。 | ||
25 | |||
26 | #### Windows | ||
27 | |||
28 | ``` | ||
29 | start . | ||
30 | ``` | ||
31 | |||
32 | #### macOS | ||
33 | |||
34 | ``` | ||
35 | open . | ||
36 | ``` | ||
37 | |||
38 | ファームウェアファイルは常に以下の命名形式に従っています。 | ||
39 | |||
40 | ``` | ||
41 | <keyboard_name>_<keymap_name>.{bin,hex} | ||
42 | ``` | ||
43 | |||
44 | 例えば、`plank/rev5` の `default` キーマップのファイル名は以下のようになります。 | ||
45 | |||
46 | ``` | ||
47 | planck_rev5_default.hex | ||
48 | ``` | ||
49 | |||
50 | ファームウェアファイルを見つけたら、QMK Toolbox の "Local file" ボックスにドラッグするか、"Open" をクリックしてファームウェアファイルを指定します。 | ||
51 | |||
52 | ### キーボードを DFU (Bootloader) モードにする | ||
53 | |||
54 | ファームウェアを書き込むには、キーボードを普段とは違う特別な状態、フラッシュモードにする必要があります。 | ||
55 | このモードでは、キーボードはキーボードとしての機能をはたしません。 | ||
56 | ファームウェアの書き込み中にキーボードのケーブルを抜いたり、書き込みプロセスを中断したりしないことが非常に重要です。 | ||
57 | |||
58 | キーボードによって、この特別なモードに入る方法は異なります。 | ||
59 | キーボードが現在 QMK または TMK を実行しており、キーボードメーカーから具体的な指示が与えられていない場合は、次を順番に試してください。 | ||
60 | |||
61 | * 両方のシフトキーを押しながら、`Pause` キーを押す | ||
62 | * 両方のシフトキーを押しながら、`B` キーを押す | ||
63 | * キーボードのケーブルを抜いて、スペースバーとBを同時に押しながら、キーボードを再び接続し、1秒待ってからキーを放す | ||
64 | * 基板(PCB)に付けられている物理的な `RESET` ボタンを押す | ||
65 | * PCB 上の `BOOT0` か `RESET` のラベルの付いたヘッダピンを探し、PCB 接続中にそれらを互いにショートする | ||
66 | |||
67 | うまくいけば、QMK Toolboxに次のようなメッセージが表示されます。 | ||
68 | |||
69 | ``` | ||
70 | *** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390 | ||
71 | *** DFU device connected | ||
72 | ``` | ||
73 | |||
74 | ### キーボードへの書き込み | ||
75 | |||
76 | QMK Toolbox の `Flash` ボタンをクリックします。 | ||
77 | 次のような出力が表示されます。 | ||
78 | |||
79 | ``` | ||
80 | *** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390 | ||
81 | *** DFU device connected | ||
82 | *** Attempting to flash, please don't remove device | ||
83 | >>> dfu-programmer atmega32u4 erase --force | ||
84 | Erasing flash... Success | ||
85 | Checking memory from 0x0 to 0x6FFF... Empty. | ||
86 | >>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex | ||
87 | Checking memory from 0x0 to 0x55FF... Empty. | ||
88 | 0% 100% Programming 0x5600 bytes... | ||
89 | [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success | ||
90 | 0% 100% Reading 0x7000 bytes... | ||
91 | [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success | ||
92 | Validating... Success | ||
93 | 0x5600 bytes written into 0x7000 bytes memory (76.79%). | ||
94 | >>> dfu-programmer atmega32u4 reset | ||
95 | |||
96 | *** DFU device disconnected | ||
97 | *** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390 | ||
98 | ``` | ||
99 | |||
100 | ## コマンドラインでファームウェアを書き込む | ||
101 | |||
102 | これは、以前のものと比較して非常に単純になりました。 | ||
103 | ファームウェアをコンパイルして書き込む準備ができたら、ターミナルウィンドウを開いてビルドコマンドを実行します。 | ||
104 | |||
105 | make <my_keyboard>:<my_keymap>:flash | ||
106 | |||
107 | たとえば、キーマップの名前が xyverz で、rev5 planck のキーマップを作成している場合、次のコマンドを使用します。 | ||
108 | |||
109 | make planck/rev5:xyverz:flash | ||
110 | |||
111 | これにより、キーボードの構成が確認され、指定されたブートローダに基づいてキーボードへの書き込みが試行されます。 | ||
112 | これはあなたがキーボードが使用するブートローダを知る必要がないことを意味します。 | ||
113 | コマンドをただ実行して、コマンド自身に難しい処理を任せます。 | ||
114 | |||
115 | ただし、これはキーボードごとに設定されているブートローダに依存します。 | ||
116 | もしこの情報が設定されていない場合、または使用しているキーボードのファームウェアの書き込みにサポートしていないターゲットが設定されている場合、次のエラーが表示されます。 | ||
117 | |||
118 | WARNING: This board's bootloader is not specified or is not supported by the ":flash" target at this time. | ||
119 | |||
120 | この場合、あなたは明示的にブートローダを指定する方法を使わなければなりません。 | ||
121 | |||
122 | ブートローダは主に 5 種類のものが使われています。 | ||
123 | Pro Micro とそのクローンは Caterina を、Teensy は HalfKay を、OLKBの AVR ボードは QMK-DFU を、その他の ATmega32U4 ボードは DFU を、そして多くの ARM ボードは ARM DFU を使います。 | ||
124 | |||
125 | より詳しいブートローダの情報は、[Flashing Instructions and Bootloader Information](flashing.md) にあります。 | ||
126 | |||
127 | 使用しているブートローダがわかっているならば、ファームウェアをコンパイルするときに、実は `make` コマンドにブートローダを指定するテキストを追加して、書き込みプロセスを自動化できます。 | ||
128 | |||
129 | ### DFU | ||
130 | |||
131 | DFU ブートローダの場合、ファームウェアをコンパイルして書き込む準備ができたら、ターミナルウィンドウを開いてビルドコマンドを実行します。 | ||
132 | |||
133 | make <my_keyboard>:<my_keymap>:dfu | ||
134 | |||
135 | たとえば、キーマップの名前が xyverz で、rev5 planck のキーマップを作成している場合、次のコマンドを使用します。 | ||
136 | |||
137 | make planck/rev5:xyverz:dfu | ||
138 | |||
139 | コンパイルが終了すると、以下の出力になるはずです。 | ||
140 | |||
141 | ``` | ||
142 | Linking: .build/planck_rev5_xyverz.elf [OK] | ||
143 | Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK] | ||
144 | Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK] | ||
145 | Checking file size of planck_rev5_xyverz.hex | ||
146 | * File size is fine - 18574/28672 | ||
147 | ``` | ||
148 | |||
149 | ここまでくると、ビルドスクリプトは5秒ごとに DFU ブートローダを探します。 | ||
150 | デバイスが見つかるか、あなたがキャンセルするまで、以下を繰り返します。 | ||
151 | |||
152 | dfu-programmer: no device present. | ||
153 | Error: Bootloader not found. Trying again in 5s. | ||
154 | |||
155 | これを実行したら、コントローラーをリセットする必要があります。 | ||
156 | そして下のような出力が表示されます。 | ||
157 | |||
158 | ``` | ||
159 | *** Attempting to flash, please don't remove device | ||
160 | >>> dfu-programmer atmega32u4 erase --force | ||
161 | Erasing flash... Success | ||
162 | Checking memory from 0x0 to 0x6FFF... Empty. | ||
163 | >>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex | ||
164 | Checking memory from 0x0 to 0x55FF... Empty. | ||
165 | 0% 100% Programming 0x5600 bytes... | ||
166 | [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success | ||
167 | 0% 100% Reading 0x7000 bytes... | ||
168 | [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success | ||
169 | Validating... Success | ||
170 | 0x5600 bytes written into 0x7000 bytes memory (76.79%). | ||
171 | >>> dfu-programmer atmega32u4 reset | ||
172 | ``` | ||
173 | |||
174 | ?> `dfu-programmer:no device present` など、これに関する問題がある場合は、[よくある質問](faq_build.md) を参照してください。 | ||
175 | |||
176 | #### DFU コマンド | ||
177 | |||
178 | ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。 | ||
179 | |||
180 | * `:dfu` - これが通常のオプションで、DFUデバイスが使用可能になるまで待機したのちファームウェアを書き込みます。5秒ごとに、DFUデバイスが存在するかチェックしています。 | ||
181 | * `:dfu-ee` - 通常の hex ファイルの代わりに `eep` ファイルを書き込みます。これを使用するのはまれです。 | ||
182 | * `:dfu-split-left` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」 EEPROMファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_ | ||
183 | * `:dfu-split-right` - デフォルトオプション (`:dfu`) と同様に、通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」EEPROMファイルも書き込まれます。_これは、Elite C ベースの分割キーボードに最適です。_ | ||
184 | |||
185 | |||
186 | ### Caterina | ||
187 | |||
188 | Arduino ボードとそれらのクローンの場合(たとえば SparkFun ProMicro)、ファームウェアをコンパイルして書き込む準備ができたら、ターミナルウィンドウを開いてビルドコマンドを実行します。 | ||
189 | |||
190 | make <my_keyboard>:<my_keymap>:avrdude | ||
191 | |||
192 | たとえば、キーマップの名前が xyverz で、rev2 Lets Split のキーマップを作成している場合、次のコマンドを使用します。 | ||
193 | |||
194 | make lets_split/rev2:xyverz:avrdude | ||
195 | |||
196 | ファームウェアのコンパイルが完了すると、以下のように出力されます。 | ||
197 | |||
198 | ``` | ||
199 | Linking: .build/lets_split_rev2_xyverz.elf [OK] | ||
200 | Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK] | ||
201 | Checking file size of lets_split_rev2_xyverz.hex [OK] | ||
202 | * File size is fine - 27938/28672 | ||
203 | Detecting USB port, reset your controller now.............. | ||
204 | ``` | ||
205 | |||
206 | この時点で、キーボードをリセットすると、スクリプトがブートローダを検出し、キーボードに書き込みます。出力は次のようになります。 | ||
207 | |||
208 | ``` | ||
209 | Detected controller on USB port at /dev/ttyS15 | ||
210 | |||
211 | Connecting to programmer: . | ||
212 | Found programmer: Id = "CATERIN"; type = S | ||
213 | Software Version = 1.0; No Hardware Version given. | ||
214 | Programmer supports auto addr increment. | ||
215 | Programmer supports buffered memory access with buffersize=128 bytes. | ||
216 | |||
217 | Programmer supports the following devices: | ||
218 | Device code: 0x44 | ||
219 | |||
220 | avrdude.exe: AVR device initialized and ready to accept instructions | ||
221 | |||
222 | Reading | ################################################## | 100% 0.00s | ||
223 | |||
224 | avrdude.exe: Device signature = 0x1e9587 (probably m32u4) | ||
225 | avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed | ||
226 | To disable this feature, specify the -D option. | ||
227 | avrdude.exe: erasing chip | ||
228 | avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex" | ||
229 | avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex | ||
230 | avrdude.exe: writing flash (27938 bytes): | ||
231 | |||
232 | Writing | ################################################## | 100% 2.40s | ||
233 | |||
234 | avrdude.exe: 27938 bytes of flash written | ||
235 | avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex: | ||
236 | avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex: | ||
237 | avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex | ||
238 | avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes | ||
239 | avrdude.exe: reading on-chip flash data: | ||
240 | |||
241 | Reading | ################################################## | 100% 0.43s | ||
242 | |||
243 | avrdude.exe: verifying ... | ||
244 | avrdude.exe: 27938 bytes of flash verified | ||
245 | |||
246 | avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF) | ||
247 | |||
248 | avrdude.exe done. Thank you. | ||
249 | ``` | ||
250 | うまくいかない時は、以下のようにする必要があるかもしれません。 | ||
251 | |||
252 | sudo make <my_keyboard>:<my_keymap>:avrdude | ||
253 | |||
254 | |||
255 | #### Caterina コマンド | ||
256 | |||
257 | ファームウェアを DFU デバイスに書き込むために使用できる DFU コマンドがいくつかあります。 | ||
258 | |||
259 | * `:avrdude` - これが通常のオプションで、Caterina デバイスが(新しい COM ポートを検出して)使用可能になるまで待機し、ファームウェアを書き込みます。 | ||
260 | * `:avrdude-loop` - これは `:avrdude` と同じです。ただし書き込みが終了すると再び Caterina デバイスの書き込み待ちに戻ります。これは何台ものデバイスへの書き込みに便利です。_Control+C を押して、手動でこの繰り返しを終了させる必要があります。_ | ||
261 | * `:avrdude-split-left` - デフォルトオプション(`:avrdude`)と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「左側の」EEPROMファイルもフラッシュされます。 _これは、Pro Micro ベースの分割キーボードに最適です。_ | ||
262 | * `:avrdude-split-right` - デフォルトオプション(`:avrdude`)と同様に通常のファームウェアが書き込まれます。ただし、分割キーボードの「右側の」EEPROMファイルもフラッシュされます。 _これは、Pro Micro ベースの分割キーボードに最適です。_ | ||
263 | |||
264 | ### HalfKay | ||
265 | |||
266 | PJRC デバイス(Teensy シリーズ)の場合、ファームウェアをコンパイルして書き込む準備ができたら、ターミナルウィンドウを開いてビルドコマンドを実行します。 | ||
267 | |||
268 | make <my_keyboard>:<my_keymap>:teensy | ||
269 | |||
270 | たとえば、キーマップの名前が xyverz で、Ergodox または Ergodox EZ のキーマップを作成している場合、次のコマンドを使用します。 | ||
271 | |||
272 | make ergodox_ez:xyverz:teensy | ||
273 | |||
274 | ファームウェアのコンパイルが完了すると、以下のように出力されます。 | ||
275 | |||
276 | ``` | ||
277 | Linking: .build/ergodox_ez_xyverz.elf [OK] | ||
278 | Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK] | ||
279 | Checking file size of ergodox_ez_xyverz.hex [OK] | ||
280 | * File size is fine - 25584/32256 | ||
281 | Teensy Loader, Command Line, Version 2.1 | ||
282 | Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage | ||
283 | Waiting for Teensy device... | ||
284 | (hint: press the reset button) | ||
285 | ``` | ||
286 | |||
287 | この時点で、キーボードをリセットします。すると、次のような出力が表示されます。 | ||
288 | |||
289 | ``` | ||
290 | Found HalfKay Bootloader | ||
291 | Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage | ||
292 | Programming............................................................................................................................................................................ | ||
293 | ................................................... | ||
294 | Booting | ||
295 | ``` | ||
296 | |||
297 | ### STM32 (ARM) | ||
298 | |||
299 | 主な ARM ボード (Proton C, Planck Rev 6, Preonic Rev 3 を含む)の場合、ファームウェアをコンパイルして書き込む準備ができたら、ターミナルウィンドウを開いてビルドコマンドを実行します。 | ||
300 | |||
301 | make <my_keyboard>:<my_keymap>:dfu-util | ||
302 | |||
303 | たとえば、キーマップの名前が xyverz で、Planck Revision 6 のキーマップを作成している場合、次のコマンドを使用し、(コンパイルが終わる前に)キーボードを再起動してブートローダを起動します: | ||
304 | |||
305 | make planck/rev6:xyverz:dfu-util | ||
306 | |||
307 | ファームウェアのコンパイルが完了すると、以下のように出力されます。 | ||
308 | |||
309 | ``` | ||
310 | Linking: .build/planck_rev6_xyverz.elf [OK] | ||
311 | Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK] | ||
312 | Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK] | ||
313 | |||
314 | Size after: | ||
315 | text data bss dec hex filename | ||
316 | 0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex | ||
317 | |||
318 | Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK] | ||
319 | dfu-util 0.9 | ||
320 | |||
321 | Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc. | ||
322 | Copyright 2010-2016 Tormod Volden and Stefan Schmidt | ||
323 | This program is Free Software and has ABSOLUTELY NO WARRANTY | ||
324 | Please report bugs to http://sourceforge.net/p/dfu-util/tickets/ | ||
325 | |||
326 | Invalid DFU suffix signature | ||
327 | A valid DFU suffix will be required in a future dfu-util release!!! | ||
328 | Opening DFU capable USB device... | ||
329 | ID 0483:df11 | ||
330 | Run-time device DFU version 011a | ||
331 | Claiming USB DFU Interface... | ||
332 | Setting Alternate Setting #0 ... | ||
333 | Determining device status: state = dfuERROR, status = 10 | ||
334 | dfuERROR, clearing status | ||
335 | Determining device status: state = dfuIDLE, status = 0 | ||
336 | dfuIDLE, continuing | ||
337 | DFU mode device DFU version 011a | ||
338 | Device returned transfer size 2048 | ||
339 | DfuSe interface name: "Internal Flash " | ||
340 | Downloading to address = 0x08000000, size = 41824 | ||
341 | Download [=========================] 100% 41824 bytes | ||
342 | Download done. | ||
343 | File downloaded successfully | ||
344 | Transitioning to dfuMANIFEST state | ||
345 | ``` | ||
346 | |||
347 | #### STM32 コマンド | ||
348 | |||
349 | ファームウェアを STM32 デバイスに書き込むために使用できる DFU コマンドがいくつかあります。 | ||
350 | |||
351 | * `:dfu-util` - STM32 デバイスに書き込むためのデフォルトコマンドで、STM32 ブートローダが見つかるまで待機します。 | ||
352 | * `:dfu-util-split-left` - デフォルトのオプション (`:dfu-util`) と同様に、通常のファームウェアが書き込まれます。 ただし、分割キーボードの「左側の」EEPROM の設定も行われます。 | ||
353 | * `:dfu-util-split-right` - デフォルトのオプション (`:dfu-util`) と同様に、通常のファームウェアが書き込まれます。 ただし、分割キーボードの「右側の」EEPROM の設定も行われます。 | ||
354 | * `:st-link-cli` - dfu-util ではなく、ST-LINK の CLI ユーティリティを介してファームウェアを書き込めます。 | ||
355 | |||
356 | ### BootloadHID | ||
357 | |||
358 | Bootmapper Client(BMC)/bootloadHID/ATmega32A ベースのキーボードの場合、ファームウェアをコンパイルして書き込む準備ができたら、ターミナルウィンドウを開いてビルドコマンドを実行します。 | ||
359 | |||
360 | make <my_keyboard>:<my_keymap>:bootloaderHID | ||
361 | |||
362 | たとえば、キーマップの名前が xyverz で、jj40 のキーマップを作成している場合、次のコマンドを使用します。 | ||
363 | |||
364 | make jj40:xyverz:bootloaderHID | ||
365 | |||
366 | ファームウェアのコンパイルが完了すると、以下のように出力されます。 | ||
367 | |||
368 | ``` | ||
369 | Linking: .build/jj40_default.elf [OK] | ||
370 | Creating load file for flashing: .build/jj40_default.hex [OK] | ||
371 | Copying jj40_default.hex to qmk_firmware folder [OK] | ||
372 | Checking file size of jj40_default.hex [OK] | ||
373 | * The firmware size is fine - 21920/28672 (6752 bytes free) | ||
374 | ``` | ||
375 | |||
376 | ここまでくると、ビルドスクリプトは5秒ごとに DFU ブートローダを探します。 | ||
377 | デバイスが見つかるか、あなたがキャンセルするまで、以下を繰り返します。 | ||
378 | |||
379 | ``` | ||
380 | Error opening HIDBoot device: The specified device was not found | ||
381 | Trying again in 5s. | ||
382 | ``` | ||
383 | |||
384 | これを実行したら、コントローラーをリセットする必要があります。 | ||
385 | そして下のような出力が表示されます。 | ||
386 | |||
387 | ``` | ||
388 | Page size = 128 (0x80) | ||
389 | Device size = 32768 (0x8000); 30720 bytes remaining | ||
390 | Uploading 22016 (0x5600) bytes starting at 0 (0x0) | ||
391 | 0x05580 ... 0x05600 | ||
392 | ``` | ||
393 | |||
394 | ## テストしましょう! | ||
395 | |||
396 | おめでとうございます! カスタムファームウェアがキーボードにプログラムされました! | ||
397 | |||
398 | 使ってみて、すべてがあなたの望むように動作するかどうか確認してください。 | ||
399 | この初心者ガイドを完全なものにするために [テストとデバッグ](newbs_testing_debugging.md) を書いたので、カスタム機能のトラブルシューティング方法については、こちらをご覧ください。 | ||