数学研究ログ 第011回「Windows側の整理」

研究を続けるための記録環境を作ります――Windows側の整理と躓いた点

前回は、VirtualBox上のUbuntuに作成していた計算環境を確認しました。
PythonやSATソルバーは正常に残っており、Ubuntu側を今後も計算とプログラム実行の環境として使用することにしました。

一方で、研究ノートや考察、参考文献、実験の記録までUbuntu上で管理するのは、僕にとって少し扱いにくいです。

そこで、Windows側に研究資料全体をまとめる場所を作ることにしました。

Windows側を研究資料の本拠地にしました

Windows側には、研究管理、研究ノート、参考文献、グラフデータ、プログラム、実験記録、成果物、古いファイルの保管場所を用意しました。

細かなフォルダ名そのものより、次の種類の資料を混在させないことが目的です。

  • 研究全体の方針
  • 学習中のノート
  • 論文や参考資料
  • 計算に使うデータ
  • プログラム
  • 実験ごとの記録
  • 公開用の記事や報告
  • 現在は使わない過去のファイル

フォルダの先頭には番号を付けました。
これは特別な規則ではなく、エクスプローラー上の表示順を固定するためです。

「00」とか「01」などとフォルダ名につけておくと、名前順にしたときにその順に並んでくれます。

研究管理を最初に表示し、古いファイルの保管場所を最後に表示するようにしました。
資料が増えたときにも、どこから確認すればよいか分かりやすくなると思います。

Markdownで研究記録を書きます

研究概要やロードマップは、Markdown形式で作成することにしました。

Markdownは、普通のテキストとして読める一方で、見出し、箇条書き、コード、数式などを整理しやすい形式です。
特定のワープロソフトに依存しにくく、WindowsとLinuxの両方で扱える点も、研究記録に向いています。

編集には、普段使い慣れているMeryを使用することにしました。
プログラミングなどでも使うエディタですが、何行目の記述か分かるのがとても良いです。
もちろん同じ機能を持つテキストエディタは他にもあるのですが、なんとなく僕はMeryを気に入っているのでこちらを使います。

Meryが「プログラムから開く」に表示されませんでした

最初に躓いたのは、MarkdownファイルをMeryへ関連付ける作業です。
.md ファイルを右クリックして「プログラムから開く」を選んでも、候補の中にMeryが表示されませんでした。

Mery本体がAppData内にあり、通常のフォルダ一覧から探しにくい場所へ入っていたことが原因です。
AppDataは通常、エクスプローラー上では隠しフォルダになっています。

そこで、エクスプローラーのアドレス欄からAppDataの場所を直接開き、Meryの実行ファイルを指定しました。
これにより、MarkdownファイルをMeryで開けるようになりました。

普段から利用しているソフトでも、インストール場所を意識する機会はあまりありません。
ファイルの関連付けを変更する段階になって、初めて実行ファイルの場所が問題になりました。

UTF-8のBOMとは何か確認しました

Meryでファイルを保存した際、文字コードが「UTF-8 BOMなし」と表示されていました。

BOMという言葉を見たことはありましたが、これまで明確には理解していませんでした。
BOMは、テキストファイルの先頭に置かれる、文字コードを示すための特別なデータのようです。

ただし、UTF-8ではバイト順を示す必要がなく、Markdown、Python、Linux、GitなどではBOMなしが一般的に使われます。

BOMが付いていると、プログラムによってはファイル先頭の余分な文字として扱われる場合もあります。そのため、今回の研究用テキストファイルは、原則としてUTF-8のBOMなしで保存することにしました。

正直あまりよく分かっていないのですが、現代ではあまり考える必要のない部分のようで、古いソフトを扱う場合は関係してくるかも、というようなもののようです。
問題があると、文字化けなどの症状が起こるということで、そういうことがあればまた考えようと思います。

研究概要とロードマップを作りました

研究を始める前に、まず研究概要を作成しました。

ここには、Hadwiger–Nelson問題を研究対象とすること、現在はグラフ理論の初心者であること、小さな既知結果の再現から始めることなどを書いています。

続いて、研究のロードマップを作成しました。

大まかな流れは次のとおりです。

  1. 研究環境と記録方法を整える
  2. グラフ理論の基礎を学ぶ
  3. グラフをデータとして扱う
  4. 彩色問題をSATへ変換する
  5. SAT解やUNSAT証明を検証する
  6. 小規模な正式実験を行う
  7. 単位距離グラフへ進む
  8. Moser spindleを再現する
  9. 既知の5彩色必要グラフを再現する
  10. 独自の実験課題を探す

計画は今後変更される可能性があります。

それでも、現時点でどこを目指しているかを書いておけば、途中で作業の目的を見失いにくくなります。

環境とフォルダの役割も記録しました

WindowsとUbuntuの役割分担についても文書化しました。

記憶だけに頼ると、数か月後には、どのファイルをどこへ置く予定だったか分からなくなる可能性があります。
特にプログラムやグラフデータをWindowsとUbuntuの両方へコピーすると、どちらが最新版なのか分からなくなりやすいです。

当面は、次のように扱うことにしました。

  • 研究ノートや考察の正本はWindows
  • プログラムの作業版はUbuntu
  • CNFや証明ファイルはUbuntu
  • 確定した重要結果はWindowsにも残す
  • 古いファイルは削除せず、用途が分かる形で保管する

将来的にはGitを活用し、プログラムの変更履歴を管理したいと考えています。

実験記録のテンプレートを作りました

正式な実験を始める前に、実験記録のテンプレートも作成しました。

テンプレートには、目的、使用したグラフ、頂点数、辺数、色数、予想、使用環境、実行コマンド、結果、検証方法、考察、次に行うことなどを記録する欄を用意しました。
最初の小さな実験では、すべてを埋める必要はないと思います。

しかし、大きなグラフを扱うようになると、どの入力ファイルを使ったのか、どのソルバーで実行したのか、どのコマンドで証明を生成したのかといった情報が重要になります。

結果だけが残っていても、同じ計算を再現できなければ、研究記録としては不十分です。
そのため、簡単な実験の段階から記録の習慣を作ることにしました。

詳しく作りすぎたかもしれません

今回作成した研究概要やロードマップ、実験記録テンプレートは、やや詳しい内容になりました。

まだ小さなグラフも扱っていない段階としては、管理作業に時間を使いすぎているようにも見えます。
ただし、これらを最初からすべて完璧に運用する必要はありません。

使わない項目は空欄でもよく、研究を進めながら不要な部分を削ったり、不足している項目を追加したりすればよいと考えています。

フォルダ構成やテンプレートを守ること自体が、研究の目的にならないよう注意したいです。

今回の躓いたポイント

今回の主な躓きは、次のようなものでした。

  • 研究資料をWindowsとUbuntuのどちらへ置くか迷った
  • フォルダへ付ける番号の意味が分からなかった
  • MarkdownをMeryで開く設定が見つからなかった
  • Meryの実行ファイルがAppData内にあり、探しにくかった
  • UTF-8のBOMなしという表示の意味が分からなかった
  • 管理文書をどこまで詳しく作るべきか迷った

どれも数学そのものではありませんが、研究を継続するうえでは避けて通れない問題でした。
計算環境を作るだけでなく、自分が無理なく使い続けられる形に整える必要があります。

おわりに

今回の作業により、研究資料を置く場所、計算を行う場所、実験を記録する方法が決まりました。
予定していた研究環境と記録方法の整備は、ひとまず完了と考えてよさそうです。

ここからは、ようやくグラフ理論の基礎学習へ進みます。

最初は、グラフ、頂点、辺、隣接、次数、道、閉路といった基本用語を整理します。
その後、三角形や四角形を実際に調べ、手作業での彩色とSATによる判定をつなげていきたいです。

準備だけで終わらせず、次回からは数学と計算の中身へ少しずつ入っていきます。

ここからが楽しいところかもしれません。