見出し画像

プログラミング等(2021/6/6):PythonによるGraphviz支援ツール完成(※ソース公開とかは現状特にする気がない)

1.何があった?

ここしばらく作っていたプログラムが、どうやら基本的に完成したと考えてよい。

"Graphviz"という、マインドマップやフローチャート書くのにすごい便利なソフトがあったのですね。
で、これを使う上で、「あの機能があると助かるよな」とかいろいろ思うところがあったのです。
それを解決すべく、"Python"という比較的知名度の高いプログラミング言語で、サポートプログラムを、組んでいたのです。

(それにしてもJavaより体感的にお優しいですねPython。構文上も、実質そこまで必要とはいえない開括弧閉括弧を、あまり書かなくていいし)

数ヶ月くらい。
そもそも猛烈に忙しい職場仕事と並行作業で。
我ながら無茶苦茶だ。

2.内訳

A.Support_GraphViz_Main_A_Analysis.exe

(GraphVizでデータソースファイルとして使われる"DOT"ないし"TXT"(どちらもテキストデータ)の元データを構文『解析』する)

B.Support_GraphViz_Main_B_Breakdown.exe

("DOT"ないし"TXT"を"CSV"(EXCELで読むと便利なテキストデータ)に『分解』する)

C_C.Support_GraphViz_Main_C_Conversion_CriticalPart.exe

(自分の作業だと、フローチャートにループ構造があると処理が虎のようにグルグル回ってバターになって『致命的』なので、ループ構造が出来ていたらそこを抽出して警告を出す)

C_E.Support_GraphViz_Main_C_Conversion_EfficientPart.exe

(作業『効率』のため、同じ記述が複数回出ていたら除去してくれる。
あと、フローチャートでショートカットがあったらそこを抽出して警告を出す。
フローチャートは全部の流れを一個一個書きたいので、ショートカットがあると見づらいだけなので困る)

C_F.Support_GraphViz_Main_C_Conversion_FinalPart

(『最終』処理として、整理されたCSVをDOTに、DOTを"GIF"画像ファイルに『変換』する)

D.Support_GraphViz_Main_D_Division.exe

(区切りとして指定した項目名を元に、完成した画像をさらに前半と後半に『分割』する。
なおここに貼り付けてあるやつがそれの成果物です。文字が見づらくてごめんなさい)

画像1
画像2
画像3

3.未来へ…

これで、今後、読書要約でキーワードのフローチャートを作る時に、圧倒的に楽になるでしょう。
読書要約しまくってる身としては、これでキーワードを全部フローチャートに出来たら、非常に素晴らしい。
結構癖のあるGraphvizのDOT構文を、シンプルなCSVにすることで、手直しもべらぼうに容易になるだろう。

4.今の心境

嬉しくないと言えば嘘になるが、正直実感が追い付いていない。
まあ、実作業データを全部変換しきってからにしましょう。

(さすがに200行のデータをつつがなく加工しきるのに、7000行分の(あると嬉しいので吐かせている)中間ファイルを吐いて、延べ5分かかるの、「昔の工学部でプログラム走らせてコーヒー飲みに行って帰ってきたら出来てるかどうか」の世界の話なのでは?)

とりあえず、ここ数ヶ月の苦労が実った! そして一里塚達成!
さあ、ここから数ヶ月分の巻き返しだ! サクサク行くぞ!

5.(2021/6/6 9:50時点)実用時に発覚した欠点

・CSVはカンマ区切りなので、データにカンマが入っていたら止まる。

これはデータの方で何とかすべき。
(運用で対処というみっともないやつだ。
だが、プログラムを修正する場合、気力がべらぼうにかかる。
そこまでゴリゴリやるより、データを作る俺が気を付ければいいだけのことだ)

・よう考えたら作業量がいわゆるO(N^2)かかるやつになっている。

今のところ、リストを複製して走査しているので、作業量はデータの2乗になる。
知っている人は秒でピンとくるだろうが、「データ量が増えたら爆発的に遅くなるので避けるべき」やつだ。
これを何らかの手段でO(logN)にまで下げる。何らかの手段があったはず。

応援下さいまして、誠に有難うございます! 皆様のご厚志・ご祝儀は、新しい記事や自作wikiや自作小説用のための、科学啓蒙書などの資料を購入する際に、大事に使わせて頂きます。