ログのつくりかた (ログ作成関連 秀丸マクロほか)


突発フリートークのお時間です。

この記事、書いた後に随分やり方変えたので、現状と全く合っていませんが、一応残しておきます。

ログ作成

前にこんな動画作ったけど、『マクロでお掃除します』の一言で済ませているところを説明するべきでは? となんとなく思ったので。

需要があるかどーかは知らんけど、10年以上前からコネコネしてるフォーマットだからそこそこデキはいいと思うんだよね。
ちなみに私がわざわざこんなコトしてるのは、『黒っぽくない字は読みづれーーーー!』からです。
ココフォリアもそうだし、どどんとふもそうだったんだけど、発言者の色がそのままテキストカラーになっているので、カラフルすぎて目に優しくないし、明るい色だったりするともうおばちゃん目がシパシパしちゃうのヨォ。あと、顔グラあった方が誰が発言しているか一目で分かるしね。

前提

あくまで私が私用に作った物なので、内容はアホマクロだったりしますが、そのへんは使われる方が良いようにコネコネしてください。
あと、これは秀丸用です。
仕組み上、本文に『:』が含まれていると最終段階でぶっ壊れて泣けます。
あんまり多くないから吸収する仕組みは作ってないけど、最近増えてきたし、作ろうかな……

作業手順

お掃除マクロ

ルール別整形マクロ

作業用マクロを使いつつ手動整形

終了整形マクロ

終わりなきエラーチェック

となります。

お掃除マクロ

生ログをお掃除します。タグやカラー指定などをごっそり削除しちゃいます。
編集するのに便利です。

作った当時正規表現全く分かんなかったので、今見ると「もっとなんとかなるだろ!!」って思うけど、面倒くさいから直しません。ちゃんと動くもん。

//■TRPG初期

//■余分な改行の削除
replaceallquick “\r\n ” , “” , regular, nocasesense, nohilight;
//■余分なタグや空白の削除
replaceallquick “<span> [メイン]</span>” , “” , inselect, nohilight;
replaceallquick “</span> :” , “:” , inselect, nohilight;
replaceallquick “<span>”, “” , inselect, nohilight;
replaceallquick “: “, “:” , inselect, nohilight;
replaceallquick “</span>\r\n </p>\r\n ” , “” , regular, nocasesense, nohilight;
replaceallquick “\r\nDiceBot” , “<br><b>DiceBot</b>” , regular, nocasesense, nohilight;
replaceallquick ” [雑談]</span>” , “[雑談]” , inselect, hilight;
//■カラー
replaceallquick ” <p style=\”color:#……;\”>” , “” , regular, nocasesense, nohilight;
replaceallquick ” \r\n” , “\r\n” , regular, nocasesense, nohilight;
//■『w』を『w』に
replaceall “w(。|…|\r\n|」)” , “w\1” , regular, inselect, nohilight;

ルール別整形マクロ

ルール別に目立たせたいところを目立たせたりするマクロです。
色々おかしな事になる場合もあるので、本文編集前、お掃除の直後に走らせるとグッドです。

大体こんな感じなのでがんばってください。

//■整形マクロ
//■ダイス
replaceall “(ファンブル|致命的失敗|失敗)” , “<font color=\”red\”><b>\1</b></font>” , regular, nocasesense, nohilight;
replaceall “(スペシャル|クリティカル|成功)” , “<font color=\”blue\”><b>\1</b></font>” , regular, nocasesense, nohilight;

//■強調表示 太字のみ
replaceall “(スキル1|スキル2|スキル3)” , “<b>\1</b>” , regular, nocasesense, nohilight;

//■強調表示 太字《》
replaceall “(スキル1|スキル2|スキル3)” , “<b>《\1》</b>” , regular, nocasesense, nohilight;

//■強調表示 太字【】
replaceall “(スキル1|スキル2|スキル3)” , “<b>【\1】</b>” , regular, nocasesense, nohilight;
replaceall “</b><b>” , “” , inselect, nohilight;

ちなみにメガテン用ならこんな感じ。

//■女神転生用整形マクロ
replaceall “命運” , “<b>【命運】</b>” , regular, nocasesense, nohilight;
replaceall “失敗” , “<font color=\”red\”><b>失敗</b></font>” , regular, nocasesense, nohilight;
replaceall “成功” , “<font color=\”blue\”><b>成功</b></font>” , regular, nocasesense, nohilight;
replaceall “(WEAK|ニュートラル|ロウ|カオス|ライト|ダーク)” , “<b>\1</b>” , regular, nocasesense, nohilight;
replaceall “(回避)” , “<b>《\1》</b>” , regular, nocasesense, nohilight;
replaceall “(コンピュータ操作|地獄突き|宝探し(運判定)|アナライズ|薬草治療|コンピューター操作)” , “<b>《\1》</b>” , regular, nocasesense, nohilight;
replaceall “(マハラギダイン|アギダイン|マハアギラオ|アギラオ|マハラギ|アギ|マハブフダイン|ブフダイン|マハブフーラ|ブフーラ|マハブフ|ブフ|マハジオダイン|マハジオンガ|マハジオ|ジオダイン|ジオンガ|ジオ|マハザンダイン|マハザンマ|マハザン|ザンダイン|ザンマ|ザン|リムドーラ|マハンマオン|ハマオン|マハンマ|ハマ|マハムドオン|ムドラ|ムドオン|マハムド|ムド|メギドラオン|メギドラ|メギド|ディアラマ|ディアマ|メディラマ|ディア|メディア|サマリカーム|リカームドラ|リカーム|ネクロマ|パトラ|メパトラ|ペンパトラ|ポズムディ|パララディ|ペトラディ|タルカジャ|ラクカジャ|スクカジャ|マカカジャ|デカジャ|タルンダ|ラクンダ|スクンダ|マカンダ|デクンダ|ランダマイザ|ドルミナー|マカジャマ|マリンカリン|プリンパ|テトラカーン|マカラカーン|テトラジャ|サバトマ|トラフーリ|エストマ|リベラマ|リフトマ|マッパー|シバブー)” , “<b>《\1》</b>” , regular, nocasesense, nohilight;
replaceall “(悪魔カード|交渉|悪魔合体|好感度|会話判定|《コンピューター操作(運判定)》|ファイアブレス|水の壁|セクシーアイ|退魔の矢|毒針|猛毒の矢II|守護天使|水の壁|ヒートウェーブ|ひっかき|ハッピーステップ|悪魔のキス|冴えたやり方|指揮)” , “<b>《\1》</b>” , regular, nocasesense, nohilight;
replaceall “(物理反射|バステ反射|精神反射|火炎反射|氷結反射|電撃反射|物理反射|物理半減|バステ半減|精神半減|火炎半減|氷結半減|電撃半減|物理半減|物理無効|バステ無効|精神無効|火炎無効|氷結無効|電撃無効|魔力無効|物理無効)” , “<b>【\1】</b>” , regular, nocasesense, nohilight;
replaceall “(妖精の輪)” , “<b>《\1》</b>” , regular, nocasesense, nohilight;
replaceall “アイテ<b>《ムド》</b>ロップ” , “アイテムドロップ” , inselect, nohilight;
replaceall “《<b>《ディア》</b>II》” , “<b>《ディア II》</b>” , inselect, nohilight;
replaceall “《<b>《マハブフ》</b>II》” , “<b>《マハブフ II》</b>” , inselect, nohilight;
replaceall “《<b>《アナライズ》</b>(威力ロール)》” , “<b>《アナライズ》</b>(威力ロール)” , inselect, nohilight;
replaceall “</b><b>” , “” , inselect, nohilight;
replaceall “<<b>《” , “<b>《” , inselect, nohilight;
replaceall “》</b>>” , “》</b>” , inselect, nohilight;
replaceall “<b>《<b>《” , “<b>《” , inselect, nohilight;
replaceall “》</b>》</b>” , “》</b>” , inselect, nohilight;
replaceall “<b>【<b>【” , “<b>【” , inselect, nohilight;
replaceall “】</b>】</b>” , “】</b>” , inselect, nohilight;
replaceall “<font color=\”blue\”><b><font color=\”blue\”><b>” , “<font color=\”blue\”><b>” , inselect, nohilight;
replaceall “</b></font></b></font>” , “</b></font>” , inselect, nohilight;

ドロ縄的に作っているから後半とか見苦しいですけど、動くからいいの!!

作業用マクロ 行の合体

今カーソルがある行の発言者を削除して上の行に改行コード入れてつなげます。
このマクロないとお話にならない。

//■行の合体マクロ
replacedown “^[^:]+:” , “” , regular, nocasesense, nohilight;
backspace;
insert “<br>”;
golineend;
right;

作業用マクロ 強調表示

選択部分を囲むようにタグ突っ込みます。
このマクロもないとお話にならない。
必要に応じてカッコの部分書き換えたり消したりしたバリエーションを用意します。
フォントカラーとかサイズとか。
この辺必要に応じてワンボタンで使えるようにして加工してくわけです。

//■強調表示マクロ
cut;
insert “<b>《”;
paste;
insert “》</b>”;

作業用マクロ 分割線

話題変わるときに。
こういうのを自動化してくのが大事なんだよ!

//■分割線
insert “<hr>”;
insertreturn;

作業時やっとくと便利

畳めるようにしたい話題の前に
『▼▼任意の言葉』 デフォルトオープン
『▼▼▼任意の言葉』デフォルトクローズ
「任意の言葉」部分に入れた奴が、畳むときに見出しとして表示されます。

最後に
『▲▲』
を入れとくと、後で纏めて処理できて便利です。
最後のとこには区切り線も入ります。

最終整形マクロ

できあがったログをhtmlに変換します。
ただここはキャラ名やシステムによって変わってきますので、頑張って書き換えてください。
あと、絶対もっと良い処理順や処理があると思いますので、「ここはもっとこう書いた方が良いよ」みたいなのがあったら教えてください。正規表現わかんねぇ。

ゲームごとまたはセッションごとの終了処理の最初と最後に共通処理を呼び出して使います。

//■終了処理 共通1.mac
replaceall “^雑談\]” , “” , regular, nocasesense, nohilight;
replaceall “\雑談\:” , “<div><div id=\”☆\”>\1</div><div id=\”☆tt\”>” , regular, nocasesense, nohilight;
replaceall “^([^:]+):” , “<div><div id=\”☆\”>\1</div><div id=\”t☆\”>” , regular, nocasesense, nohilight;
replaceall “☆\”>どどんとふ</div><div id=\”t☆” , “d\”>どどんとふ</div><div id=\”td” , regular, nocasesense, nohilight;
replaceall “☆\”>system</div><div id=\”t☆” , “d\”>system</div><div id=\”td” , regular, nocasesense, nohilight;
replaceall “\n<div><div (.[^\n]+)” , “\n<div><div \1</div></div>” , regular, nocasesense, nohilight; replaceall “\n<div id=\”story\”>(.[^\n]+)” , “\n<div id=\”story\”>\1</div>” , regular, nocasesense, nohilight;
replaceall “▼▼▼(.)” , “<details close><summary><img src=\”/talk.png\”>\1</summary>” , regular, nocasesense, nohilight; replaceall “▼▼(.)” , “<details open><summary><img src=\”/talk.png\”>\1</summary>” , regular, nocasesense, nohilight;
replaceall “▲▲” , “</details>\n<hr>\n” , inselect, nohilight;

//■終了処理 共通2.mac
replaceall “<div id=\”story\”>(.)</div></div>” , “<div id=\”story\”>\1</div>” , regular, nocasesense, nohilight;
replaceall “(</summary>|</details>)</div>” , “\1</div>” , inselect, nohilight;
replaceall “</div></div></div>” , “</div>” , inselect, nohilight;
replaceall “<hr>\r\n<hr>” , “<hr>” , inselect, nohilight;
replaceall “uploads/(.)talk” , “uploads/talk” , inselect, nohilight;

こっから先がゲーム別ですが、キャラ名やキャラ数で変わってきます。
例に挙げているのはダブルクロスの簡略版です。(ここから更にキャラが増えているので実はもっと長い)

//■終了処理 タブルクロス
execmacro “終了処理 共通.mac”;

//■八雲 乾風 c1
replaceallquick “☆\”>八雲 乾風</div><div id=\”(t)☆” , “c1\”>八雲 乾風<img src=\”pc1_1.png\”></div><div id=\”tc1″ , regular, nocasesense, nohilight; replaceallquick “☆\”>同級生Y</div><div id=\”(t)☆” , “c1\”>同級生Y</div><div id=\”tc1″ , regular, nocasesense, nohilight;

//■ヴェロニカ・ロジェトヴェンスカヤ c2
replaceallquick “☆\”>ヴェロニカ・ロジェストヴェンスカヤ</div><div id=\”(t)☆” , “c2\”>ヴェロニカ<img src=\”pc2_1.png\”></div><div id=\”tc2″ , regular, nocasesense, nohilight;

//■古賀 咲夜 c3 replaceallquick “☆\”>古賀 咲夜</div><div id=\”(t)☆” , “c3\”>古賀 咲夜<img src=\”pc3_1.png\”></div><div id=\”tc3″ , regular, nocasesense, nohilight;

//■GM GM
replaceall “☆\”>(GM|トレーラー|霧谷雄吾|矢神秀人|綾瀬真花|白銀 明日香|チェスニィ|永見 孝三|永見 昴|千木良 昭仁|従者A|従者B|都築 京香|ジャンジャック|八雲 沙織)</div><div id=\”(t)☆” , “GM\”>\1</div><div id=\”tGM” , regular, nocasesense, nohilight; replaceall “(GM|トレーラー|霧谷雄吾|矢神秀人|綾瀬真花|白銀 明日香|チェスニィ|永見 孝三|永見 昴|千木良 昭仁|都築 京香|八雲 沙織)</div>” , “\1<img src=\”gm_.png\”></div>” , regular, nocasesense, nohilight; replaceallquick “(GM|トレーラー)<img src=\”gm_” , “\1<img src=\”gm1” , regular, nocasesense, nohilight; replaceallquick “霧谷雄吾<img src=\”gm_” , “霧谷雄吾<img src=\”gm2” , regular, nocasesense, nohilight; replaceallquick “矢神秀人<img src=\”gm_” , “矢神秀人<img src=\”gm3” , regular, nocasesense, nohilight; replaceallquick “<img src=\”.png\”></div><div id=\”t(..)tt\”>” , “</div><div id=\”tt\1\”>” , regular, nocasesense, nohilight;
replaceall “<img src=\”” , “<img class=\”face\” src=\”【画像基礎アドレス】/dxgmf” , inselect, nohilight;

execmacro “終了処理 共通2.mac”;


css

でもってできあがったソースを整形してくれる基本css。
全体的な構造はここで作っています。また、そのままでも機能するように色指定も入ってます。(BBのログ作ってたときにまだ汎用性についてちゃんと考えずに作っていたやつが残っているだけなんだけど)
私はこれをワードプレスの追加CSSに貼ってますが、そのまま使いたい場合は本文に記述するか読み込んでください。クソ長いぞ~。

a {
color:#0054A6;
font-weight : bold;
text-shadow: 1px 0px 0px C0C0C0;
}
DIV#GM,DIV#c1,DIV#c2,DIV#c3,DIV#c4,DIV#c5,DIV#c6,DIV#c7,DIV#c8,div#all,DIV#d,DIV#st{
color : #ffffff;
min-height : 40px;
font-weight : bold;
text-align : right;
width : 138px;
font-size : 14px;
background-color : #000000;
align-items: center ;
text-shadow: 1px 1px 0px #1A4472;
}
@media screen and (max-width:480px) {
DIV#GM,DIV#c1,DIV#c2,DIV#c3,DIV#c4,DIV#c5,DIV#c6,DIV#c7,DIV#c8,div#all,DIV#d,DIV#st{
margin-left : -20px;
height : 56px;
min-height : 56px;
width : 50px;
font-size : 8px;
 padding : 5px;
vertical-align: top;
line-height : 120%;
}
}
DIV#tGM,DIV#tc1,DIV#tc2,DIV#tc3,DIV#tc4,DIV#tc5,DIV#tc6,DIV#tc7,DIV#tc8,Div#tall,Div#td,DIV#tst,DIV#ttGM,DIV#ttc1,DIV#ttc2,DIV#ttc3,DIV#ttc4,DIV#ttc5,DIV#ttc6,DIV#ttc7,DIV#ttc8,Div#ttall,Div#ttst,DIV#tGMh,DIV#tc1h,DIV#tc2h,DIV#tc3h,DIV#tc4h,DIV#tc5h,DIV#tc6h,DIV#tc7h,DIV#tc8h{
border-style : solid;
border-width : 1px 5px;
padding : 4px 10px;
margin-top : -40px;
margin-left : 138px;
background-color : #fefefe;
min-height : 40px;
font-size : 14px;
font-family: sans-serif;
border-color : #777777;
line-height : 160%;
background-color : #fafafa;
}
@media screen and (max-width:480px) {
DIV#tGM,DIV#tc1,DIV#tc2,DIV#tc3,DIV#tc4,DIV#tc5,DIV#tc6,DIV#tc7,DIV#tc8,Div#tall,Div#td,DIV#tst,DIV#ttGM,DIV#ttc1,DIV#ttc2,DIV#ttc3,DIV#ttc4,DIV#ttc5,DIV#ttc6,DIV#ttc7,DIV#ttc8,Div#ttall,Div#ttst,DIV#tGMh,DIV#tc1h,DIV#tc2h,DIV#tc3h,DIV#tc4h,DIV#tc5h,DIV#tc6h,DIV#tc7h,DIV#tc8h{
margin : -56px 0px 0px 30px;
min-height : 56px;
width : 96%;
padding : 2px 6px;
font-size : 18px;
}
}
DIV#ttGM,DIV#ttst{
background: linear-gradient(to left, #777777 ,1%, white);
}
DIV#c1{
background-color : #6633cc;
}
DIV#tc1,DIV#ttc1{
border-color : #6633cc;
background-color : #f6f3fc;
}
DIV#ttc1{
background: linear-gradient(to left, #6633cc ,1%, white);
}
DIV#c2{
background-color : #ff0099;
}
DIV#tc2,DIV#ttc2{
border-color : #ff0099;
background-color : #fff0f9;
}
DIV#ttc2{
background: linear-gradient(to left, #ff0099 ,1%, white);
}
DIV#c3{
background-color : #0033ff;
}
DIV#tc3,DIV#ttc3{
border-color : #0033ff;
background-color : #f0f3ff;
}
DIV#ttc3{
background: linear-gradient(to left, #0033ff ,1%, white);
}
DIV#c4{
background-color : #993300;
}
DIV#tc4,DIV#ttc4{
border-color : #993300;
background-color : #f9f3f0;
}
DIV#ttc4{
background: linear-gradient(to left, #993300 ,1%, white);
}
DIV#c5{
background-color : #006633;
}
DIV#tc5,DIV#ttc5{
border-color : #006633;
background-color : #f0f6f3;
}
DIV#ttc5{
background: linear-gradient(to left, #006633 ,1%, white);
}
DIV#c6{
background-color : #339999;
}
DIV#tc6,DIV#ttc6{
border-color : #77dddd;
background-color : #f3f9f9;
}
DIV#c7{
background-color : #663300;
}
DIV#tc7,DIV#ttc7{
border-color : #aa7744;
background-color : #ffeedd;
}
DIV#c8{
background-color : #460000;
}
DIV#tc8,DIV#ttc8{
border-color : #fb7591;
}
DIV#c9{
background-color : #00391e;
}
DIV#tc9,DIV#ttc9{
border-color : #b2e2ae;
}
DIV#d{
background-color : #00aa00;
}
DIV#td{
border-color : #44ee44;
}
div#all{
background-color : #333333;
}
div#tall,div#ttall{
border-color : #333333;
}
DIV#ttGM,DIV#ttc1,DIV#ttc2,DIV#ttc3,DIV#ttc4,DIV#ttc5,DIV#ttc6,DIV#ttc7,div#ttall{
color : #333333;
border-style : double;
}
DIV#talk{
background-color : #999999;
padding : 5px;
border-width : 3px;
border-style : ridge;
border-color : #222222;
color : white;
margin : 5px 10px;
}
DIV#story{
color : #362b25;
background-color : #f5f4ef;
padding : 6px;
border-width : 1px 5px;
border-style : double;
border-color : olive;
margin : 15px 0%;
}
DIV#mad{
color : #4d170e;
background-color : #fff0f0;
padding : 6px;
border-width : 1px 5px;
border-style : double;
border-color : #d41e1e;
margin : 15px 0%;
}
.face {background-position : center;
width : 32px;
border-width : 0px;
vertical-align : middle;
margin : 4px 0px 0px 5px;
}
@media screen and (max-width:480px) {
.face {
background-position : center;
width : 46px;
border-width : 0px;
position: absolute;
margin :2px 0px 0px -46px ;
}
}
summary {
position: relative;
display: block; /* 矢印を消す / padding: 10px 10px 10px 30px; / アイコンの余白を開ける / cursor: pointer; / カーソルをポインターに / font-weight: bold; background-color: #5cbbff; transition: 0.2s; height: 30px; } summary:hover { background-color: #ccebfb; } summary::-webkit-details-marker { display: none; / 矢印を消す / } / 疑似要素でアイコンを表示 / summary:before, summary:after { content: “”;  margin: auto 5 auto 10px; position: absolute; top: 0; bottom: 0; left: 0; } summary:before { width: 16px;  height: 16px; border-radius: 4px; background-color: #1da1ff; } summary:after { left: 6px; width: 5px; height: 5px; border: 4px solid transparent; border-left: 5px solid #fff; box-sizing: border-box; transition: .1s; } / オープン時のスタイル */
details[open] summary {
background-color: #ccebfb;
}
details[open] summary:after {
transform: rotate(90deg); /* アイコンを回転 / left: 4px; / 位置を調整 / top: 5px; / 位置を調整 / } / アニメーション */
details[open] .details-content {
animation: fadeIn 0.5s ease;
}
@keyframes fadeIn {
0% {
opacity: 0;
transform: translateY(-10px);
}
100% {
opacity: 1;
transform: none;
}
}

で、次がカラー指定です。
それぞれのキャラクターに指定カラーがある場合は更にこちらを本文の前に貼ります。(ワードプレスの場合はカスタムhtmlで記事の最初に貼る)
インセインの奴なので秘匿ログ用にメッセージ整形css最後に「h」がついてるやつもありますね。

本文用にフラットカラー、雑談用にグラデーションとなっております。

<style>
DIV#tGMh{
border-color : #000000;
background-color : #000000;
color : #ffffff;
}
DIV#c1{
text-shadow: 1px 1px 0px #1d324b;
background-color : #2196f3;
}
DIV#tc1,DIV#ttc1,DIV#tc1h{
border-color : #2196f3;
background-color : #f0f8ff;
}
DIV#ttc1{
background: linear-gradient(to left, #2196f3 ,1%, white);
}
DIV#tc1h{
color : #f0f8ff;
background-color : #010101;
}
DIV#c2{
text-shadow: 1px 1px 0px #1d324b;
background-color : #795548;
}
DIV#tc2,DIV#ttc2,DIV#tc2h{
border-color : #795548;
background-color : #fff9f7;
}
DIV#ttc2{
background: linear-gradient(to left, #795548 ,1%, white);
}
DIV#tc2h{
color : #e4edfe;
background-color : #010101;
}
DIV#c3{
text-shadow: 1px 1px 0px #ffeb3b;
background-color : #ffeb3b;
color : #000000;
}
DIV#tc3,DIV#ttc3,DIV#tc3h{
border-color : #ffeb3b;
background-color : #fffefa;
}
DIV#ttc3{
background: linear-gradient(to left, #ffeb3b ,1%, white);
}
DIV#tc3h{
color : #fffefa;
background-color : #010101;
}
DIV#c4{
text-shadow: 1px 1px 0px #1d324b;
background-color : #ff9800;
}
DIV#tc4,DIV#ttc4,DIV#tc4h{
border-color : #ff9800;
background-color : #fffcf7;
}
DIV#ttc4{
background: linear-gradient(to left, #ff9800 ,1%, white);
}
DIV#tc4h{
color : #fffcf7;
background-color : #010101;
}
DIV#c5{
text-shadow: 1px 1px 0px #1d324b;
background-color : #673ab7;
}
DIV#tc5,DIV#ttc5,DIV#tc5h{
border-color : #673ab7;
background-color : #f7f2ff;
}
DIV#ttc5{
background: linear-gradient(to left, #673ab7 ,1%, white);
}
DIV#tc5h{
color : #f7f2ff;
background-color : #010101;
}
</style>


参考に……なる? これ。

書いてみて思ったけど、自分用に10年かけて積んだものってわけわかんないね。

まあ、一部でも誰かの役に立てばいいな、と思います。