はじめに
今年から製造フェーズに携わることになり、コードを書くようになりました。
コードの中を書く中で定数を定義したり、前のフェーズで作成したものを基にコードを書くのにあたり、
「こういうのは普通に書かずに省力化できないか……?」と思い、
サクラエディタのマクロ機能やエクセルの関数を使って繰り返し書くようなコードを生成するようになりました。
この記事では現在使っているエクセルやサクラエディタの機能(主に置換)について書いていきます。
文字の前後にさらに固定の文字列を付加する
例えば
private static final String APPLE = "リンゴ";
private static final String ORANGE = "ミカン";
のように、(APPLE,リンゴ)(ORANBGE,ミカン)のよう文字列の組が複数あり、
その前後に固定の文字列を付け加えたい、というような場合です。
エクセルでは文字列結合の関数で直観的に作れます。
B列とD列に作りたい定数の名前と値、A・C・E列に固定の文字列を入れ、
CONCAT関数でつなげて目的の文字列を作るようにしています。
単純な文字列の連結であれば一番作り方が直感的で楽だと思います。

文字列結合の「&」は文中の「"」は「""」に置き換えたり、文字列結合の「&」を入れたりと、
タイピングが少し面倒になりますが、1セルで書く分コンパクトになります。
ただ、こうやって文字列を生成するときは別に作るのに使ったエクセルを保存しておくこともないので、楽さではCONCATに軍配が上がるという感じでした。
エクセルはカーソルの移動をしようとしたらセルが移動してしまう、というような細かいフラストレーションがあったりもするので、
サクラエディタになれることができれば、より小回りが利くのではと思っています。
まずは可変の文字が一つしかない、
例えば
りんご → "りんご",
みかん → "みかん",
のように、カンマ区切りの文字列に起こしたい場合を考えてみます。
置換前:^(.*)$
置換後:"$1",;
置換前
^:文頭
$:文末
.:任意の一文字
* :任意回数の繰り返し
→.*:任意の文字列
():括弧でくくると置換後に$1,$2などで参照できる
→(.*):任意の文字列(後で参照可能)
置換後
$1:置換前に()でくくった文字列(出てきた順に$1,$2,$3,...)
文頭・文末は明示的に指定しないとうまく置換してくれませんでした。
文字列の連結
APPLE りんご → private static final String APPLE = "りんご";
ORANGE みかん → private static final String ORANGE = "みかん";
※APPLEとりんごの間にタブ記号
置換前:(.*)\t(.*)
置換後:private static final String $1 \= "$2";
置換後
=など、必要な記号はバックスラッシュでエスケープする
エクセルではShift+数字キーで入力することになる「&」や「”」を差し込むのに対し、
Shiftなしで入力できる「\」を差し込むだけでよいのは、エクセルよりもいろいろな文字がエスケープに引っかかることを差し引いても楽に感じました。
一方で置換前の文言が置換ウィンドウを開くたびにリセットされるので、置換前の文言は都度コピペできるようにしておかないとストレスになります。
特定のフォーマットから文字列を抽出する
タイムスタンプからメッセージ部分だけを取り出したい、という場合などです。
[2025/10/16 12:13:41] [ERROR]エラー発生
[2025/10/16 12:13:42] [DEBUG]HELLOWORLD
[2025/10/16 12:14:42] [ERROR]エラー発生
置換前:^\[.*\] \[.*\](.*)
置換後:$1
このような場合は特徴的な部分だけ正規表現で表現すればよさそうです。
1個目の[]を\[..../../.. ..:..:..\]と細かく表現したり、2個目の[]を[[A-Z]*]で表現するなど、さらに絞り込みもできますが、
最低限共通している構造を把握して、それだけ表現する、で十分そうです。
今回は^[]で行頭が[]のフォーマットになることを指定しています。
マクロ
サクラエディタでいくつかの置換を流れで行う場合にマクロでの記録をしています。
「ツール」タブから「キーマクロの記録開始」でマクロの記録を開始し、一連の置換などの操作を実行します。
最後にCtrl+A、Ctrl+Cをしておくと、出力の文字列をクリップボードに持っておくところまでできます。
Ctrl+Pでマクロの読み込み、Shift+Ctrl+Pでマクロ実行を行います。


