Lチカで始めるテスト自動化(12)書籍化の作業メモ

## 1. はじめに
Lチカで始めるテスト自動化シリーズ第十二弾です。

Lチカで始めるテスト自動化(1～11)の書籍化[^1]の作業メモです。

<details><summary>Lチカで始めるテスト自動化・記事一覧</summary><div>

1. [Lチカで始めるテスト自動化](https://qiita.com/pbjpkas/items/fd4bd2689deda2d793aa)
2. [Lチカで始めるテスト自動化(2)テストスクリプトの保守性向上](https://qiita.com/pbjpkas/items/337bce392281ee5f0526)
3. [Lチカで始めるテスト自動化(3)オシロスコープの組込み](https://qiita.com/pbjpkas/items/b80b7e199a5aed4688a4)
4. [Lチカで始めるテスト自動化(4)テストスクリプトの保守性向上(2)](https://qiita.com/pbjpkas/items/a02c4128baf5a3f2a46c)
5. [Lチカで始めるテスト自動化(5)WebカメラおよびOCRの組込み](https://qiita.com/pbjpkas/items/9af9e6441e1e20c5909e)
6. [Lチカで始めるテスト自動化(6)AI(機械学習)を用いたPass/Fail判定](https://qiita.com/pbjpkas/items/405d55f809da1221b867)
7. [Lチカで始めるテスト自動化(7)タイムスタンプの保存](https://qiita.com/pbjpkas/items/8e3c4330f4a81d30bd53)
8. [Lチカで始めるテスト自動化(8)HDMIビデオキャプチャデバイスの組込み](https://qiita.com/pbjpkas/items/58f84c347e44fb9d5635)
9. [Lチカで始めるテスト自動化(9)6DoFロボットアームの組込み](https://qiita.com/pbjpkas/items/7a4cb4c59886b1fd2cf9)
10. [Lチカで始めるテスト自動化(10)6DoFロボットアームの制御スクリプトの保守性向上](https://qiita.com/pbjpkas/items/c011d7ad6f98bc1458d5)
11. [Lチカで始めるテスト自動化(11)ロボットアームのコントローラ製作](https://qiita.com/pbjpkas/items/fa6d2956ea3dd18b3584)
</div></details>

## 2. 作業環境の構築
1. ThinkPad X1 Carbon + Windows 10 64bit Home(Ver.1909[^2])
- Re:VIEW
- md2review
- Visual Studio Code + Re:VIEW Extension
- INKSCAPE

### 2.1 ThinkPadのVT-Xを有効化
ThinkPadのBIOS設定を変更してDocker環境を使えるようにします。

- [Virtualization Technology (VT-X)を有効にするには](https://support.lenovo.com/se/ja/solutions/ht500006)

### 2.2 Re:VIEWのインストール
[Re:VIEW](https://reviewml.org/)はTeckBooster謹製の一式セットアップ済みのdockerイメージを利用させていただきました。

- [WindowsでDocker+Re:VIEWを使う](https://github.com/vvakame/docker-review/blob/master/doc/windows-review.md)

### 2.3 md2reviewのインストール
QiitaのMarkdownファイルをRe:VIEW形式に変換するため[md2review](https://github.com/takahashim/md2review)を利用させていただきました。md2reviewはWSL(Windows Subsystem for Linux)で実行しています。

2025/3/21追記
Windows 11 Pro 24H2、WSL2、Ubuntu 24.04.1 LTSの環境構築手順です。

```sh
sudo apt-get update
sudo apt install build-essential
sudo apt install ruby-rubygems
sudo apt install ruby-dev
sudo gem install md2review
```

### 2.4 Visual Studio Code + Re:VIEWエクステンション
Re:VIEWのエクステンションをインストールするとキーワードがハイライトされて編集作業がしやすいです。

### 2.5 INKSCAPE
物理本のデプロイを想定し表紙の.epsファイルを作成するためのソフトとして[INKSCAPE](https://inkscape.org/ja/)をインストールしました。

## 3. Excel Tips
1. Excel方眼紙&ペイント
- テキストボックス内の文字配置の調整

### 3.1 Excel方眼紙&ペイント
Excelといえば「テスト実行からデータの整理、グラフ作成までをこれ一本でできるとっても身近な統合開発環境[^3]」であり、Excel VBAで作業を自動化したりREST APIを叩いてダウンロードしたデータをシートに展開してピボットテーブルで集計したりもできる万能ソフトですが、画像の作成にももちろん大活躍です。

例えば書籍p.12の図2.1:テストベンチ概要はExcel方眼紙で作成し、以下の手順でRe:VIEWに取り込んでいます。

1. Excel方眼紙で作図する
![fig2_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221758/763bf526-93ed-ab97-4480-2b49223b6086.png)
2. Excelの表示倍率を72%にして、Alt+PrintScreenでスクショを撮る[^4]
3. ペイントにスクショを貼付けて、幅が489ピクセル[^5]になるように調整[^6]する
![037-01_testbench.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221758/5beda949-5af3-8c49-47e4-779d6f86f410.png)
4. PNG形式で保存する

### 3.2 テキストボックス内の文字配置の調整
Excelのテキストボックス内で改行したときの行間隔は、文字列を選択する→右クリックメニューで段落...→固定値にする、という手順で任意の間隔に調整できます。
![textbox-space.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221758/cc3942bc-a380-f20f-aa7b-05ee8c4946ec.png)

## 4. 原稿の編集
書き下ろしを加えたり章立てを変更したほか、下記3点の編集を行っています[^7]。

- 一部の画像の作り直し
- リスト5.3のソースコードをOpenCVのチュートリアルのサンプルコード[^8]をもとに作成
- リスト6.1のソースコードを追加[^9]

## 5. fritzingのライセンス
本書に記載の一部の配線図や回路図は[fritzing](https://fritzing.org/)で作図しています。fritzingはプログラム本体はGNU GPL v3で、ドキュメントやブレッドボードビューの画像はCC-BY-SAで提供されています。そこで下記2点、ライセンスを改めて確認しました。

- fritzingで作図した画像の利用
- fritzingロゴの利用

結論としては

- "this image was created with Fritzing."のようにfritzingで作成されたことを表示する
- 画像にfritzingロゴを組込むことでもOK

ということで、(もともと画像にfritzingロゴを組込んでいましたが)画像にfritzingロゴを組込むことと、参考資料のfritzingの項目に"The wiring diagram and the circuit diagram with the fritzing logo were created with Fritzing."の一文を入れています。

[FAQ](https://fritzing.org/faq/):
> **What about the circuits that I created with Fritzing?**
> First of all, you can do whatever you want with them. Only when you decide to publish images of the breadboard view on a website or in a book, we ask you to attribute us. Attribution can be as simple as "this image was created with Fritzing." And if you think it turned out particularly nice, drop us a link/copy! 

[forum](https://forum.fritzing.org/t/what-is-the-license-of-work-greated-with-fritzing/492):
> **What is the license of work greated with Fritzing?**
> (略)
> You can embed fritzing image(s) in a closed source project. We just ask for you run the Fritzing name if you use any pictures from inside the breadboard view. A simple, made using Fritzing giving credit to Fritzing somewhere in your project ie; credits section. or an embedded/embossed fritzing logo on the picture(s) used, that would also work. If you export this said image from inside fritzing, this credit is already embedded in the lower right-hand corner.
> (略)

## 6. 積み残し
### 6.1 付録C 参考資料のURL表記
参考資料はタイトルとURLを併記しているのですが、「受け入れテストの自動化～ OpenCVの「眼」で捉え、Pythonの「脳」が思考し、Appiumの「指」で動かす」の講演資料は電子書籍向けのリンクと物理本向けのURL文字列表記を両立できていません。

URL文字列が以下のように長く適宜改行しないとページからはみ出してしまうものの、@\<href\>{}タグの引数内で改行を効かせる方法が未解決です。
[https://speakerdeck.com/cygames/shou-keru-retesutofalsezi-dong-hua-opencvfalse-yan-dezhuo-e-pythonfalse-noy-gasi-kao-si-appiumfalse-zhi-dedong-kasu](https://speakerdeck.com/cygames/shou-keru-retesutofalsezi-dong-hua-opencvfalse-yan-dezhuo-e-pythonfalse-noy-gasi-kao-si-appiumfalse-zhi-dedong-kasu)

## 7. 書籍 Ver. 1.0.1以降の改版作業

- 2020/09/20(Ver.1.0.1)：[Re:VIEWで作成した電子書籍(PDF)に裏表紙を付ける](https://qiita.com/pbjpkas/items/2089ffe01e2d472fccdf)


[^1]: [技術書典9](https://techbookfest.org/event/tbf09)で[頒布](https://techbookfest.org/product/5661312486998016)しています。
[^2]: この記事を書いている2020年9月時点でもいまだにWindows 10 Ver.2004のアップデートが降ってきません…
[^3]: [ストップウォッチを使う性能テストを実ステップ300行に満たない自動テストシステムで自動化する](https://qiita.com/pbjpkas/items/d525d7d19095d1e26452)
[^4]: グラフィックの拡大縮小はExcelで行ってスクショを撮ってペイントに貼ります。ペイントで拡大縮小するよりもきれいにできます。
[^5]: A5判の書籍に取り込んでdot by dotで表示される画像の最大サイズは筆者が試したところ幅489 x 高さ730でした。図2.4(p.20)や図2.5(p.21)はこの大きさで画像ファイルを作成しています。
[^6]: ペイントで画像ファイルの幅、高さを調整するのはファイル→プロパティ(E)で行います。
[^7]: このほか誤記の修正や、言い回しを変えてページ内に収まるようにしたりもしています。
[^8]: BSD 3-Clause License, Copyright 2020, OpenCV teamで公開されているものです。
[^9]: [Arduino Leonardoで多目的ツールの製作](https://qiita.com/pbjpkas/items/97dbf835b0aab6725e94)で公開しているプログラムから必要な個所を移植したLite版です。