【発想の転換・・・ならず】Excel設計書に新たな可能性を見出した。htm 保存で良いんじゃないですか？と思ったら駄目だった。

# 設計書作成ツールの現状は？
システム開発時に設計書を作成していますか？そのとき何のツールを使っていますか？
おそらく下記のいずれかではないでしょうか。※調査したわけではなくQiita記事を読んだ印象と経験と独断です。
>・Excel
>・Word
>・Markdown記述（VS Codeで書くのかな？）

私はExcelを使っています。便利ですよね、直感的にかけて編集の自由度も高く、絵も自由に貼れる。
実績もあるし、どのPCにもインストールされていることがほとんど。
しかしQiitaの記事を調べると以下の論調があります。
>Excelによる設計書を止めたい

# Excelによる設計書を止めたい理由
理由はGitなどのバージョン管理ツールで管理しづらいからです。一番多い理由です。これはWordも同じです。

Excelの保存ファイル拡張子である「xlsx」はバイナリファイルです。
そのためバージョン管理ツールに入れることはできますが、変更毎にリポジトリのデータ量が急激に増えるのです。
例えば10MBのExcelファイル内に誤字があって一文字変えた場合でも、バージョン管理ツールで差分を取ると10MB分全部変更があるとみなされてしまうのです。

またバージョン管理ツールを使えないため、変更場所の特定もできません。
※他にも理由があるかもしれませんが、それは今回置いておきます。

# 新たな可能性→「xlsx 保存をやめて、htm 保存をしましょう」
諸悪の根源は「xlsx」がバイナリであることです。
それならば「xlsx」を止めましょう。その代わりに以下にしてしまえば良いのではないでしょうか。
>・Excelを「xlsx」では保存せずに「htm」で保存する。
>・Excelで「htm」を直接編集する。

htmはテキストデータです。
バージョン管理ツールと相性が良いです。
Excel内の絵もpngとして別フォルダに格納され、リンクも保持されます。


# Excelで「htm」編集できるの？　→　めっちゃ簡単です。
これは実際にやってみたほうが良いでしょう。以下はExcel 2016で行ったものです。
まずは以下のような既存のxlsxファイルをhtmに変換しましょう。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/f6ea46c0-f79e-73c7-3488-babb1ffc00d9.png)

ファイル→名前を付けて保存→「このPC」でダブルクリック
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/d86797aa-9adf-0e30-8c33-6285c5caa366.png)

ファイルの種類から「Webページ」を選ぶだけです。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/b780ccd9-8cce-714a-6d7a-5eb8d90c2a09.png)

こんな感じでhtmファイルとfilesフォルダが作成されます。
filesフォルダには絵のファイルやシートが入っていますね。
>|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/5b3f9f44-f324-7ef8-b1c2-2219c3693078.png)|
|:-:|

>|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/bb1c4f5f-1ca1-767a-a6b2-fb32c3ac082b.png)|
|:-:|

一度Excelを閉じてから、再度Excelを開いてこの作成されたhtmを開いてみましょう。
どうでしょうか。xlsxとの違いは背景のグリッド線ぐらいですね。なんとシートまで再現されています。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/7cb16622-11c3-a61e-c3a0-91d00e448f26.png)

もちろん編集もできます。やってみましょう。
以下のように作成日を変えたり、4~11行目を色々変えてみました。普通のExcel操作と一緒の感覚で編集できます。
一点注意、「A起動」等のボタンはpngの絵として取り込まれているため、この文字列を変えることはできません。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/439a82d0-83bc-09ac-d07a-14c4590c2788.png)

ここまでで使える可能性は感じていただけたと思います。
ただ、実は致命的な落とし穴があったのです。大変残念です。

# htm保存の落とし穴ありますか？　→　致命的なやつ、あります。
落とし穴は、画像ファイルのファイル名が保存するたびに代わることです。
まず現在の画像フォルダ内のファイルが以下だとします。
>|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/adee65ba-a0ef-fe5d-7f33-6a536d00e258.png)|
|:-:|

そしてExcel上でただ「上書きボタン」を1回押します。すると以下になります。
img002が005に変化し、それ以外にもちょこちょこと変わっています。実に謎な現象です。
この動きのせいで希望は絶望へかわりました。私のワクワクを返せ！
>|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/c11ce578-b872-a15f-b7d6-c041056c057c.png)|
|:-:|

それ以外にも、htmファイルの中身が結構変わってしまっています。
謎の暗号があり、それがごっそり変更されて結局差分量が大きいです。
下図はGitではなく、Mercurialでバージョン管理した時の差分の絵です。
右下が謎の暗号。先頭に「-」がついているのは、これは以前のバージョンから削除されたことを意味します。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/1fee80cd-1ed3-dcc2-8a2c-7f3152ff31c8.png)

# 落としどころ　→　絵をほとんど使わないなら良い方法でしょう。
以下のように、絵がないExcelでhtmの差分を見てみました。
以前はボタンを表すのにExcelの図形を使っていましたが、今回は罫線とセルの色塗りだけです。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/5fc7e815-1c7e-d49a-1e9e-574b79832723.png)

その時のMercurialによる差分は以下です。
前のような意味不明な暗号文は消えました。良かった。ただちょとした変更でもちょこちょこ差分が出てしまっています。
絵の中央下のバーで紫に塗られた部分が変更部分です。意外と多いな。ただテキストの差分なら大したデータ量にはならないでしょう。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/733028/0356157c-3aa2-b71a-f4d6-41ae59e9cb2b.png)

# htm保存のExcel設計書としての使い道
Excelに絵を含めない場合はとても良い方法です。
なぜならExcelによる柔軟な編集機能を使いつつ、バージョン管理ツールでも管理しやすいためです。いいとこどりです。
まさにドラゴンクエスト2の「破壊のハヤブサの剣」レベルの強力な方法です。
さらに、参照したいだけの人はブラウザでブックマークに登録するだけでExcelロックなしで簡単に確認できます。

逆にExcelに絵を使う場合はお薦めしません。絵ファイルの管理でバージョン管理でデータの肥大化が起こるためです。

試したい方はどうぞお使いください。
ちなみにhtmからxlsx保存もできるようです。どこまでうまくいくかは未知数です。