青竹雑記帖(6代目)

テキスト処理をメインとしたIT解説をします。

本日休業

いつもの講座はお休みです

今日はCOVID-19(新型コロナウイルス感染症)ワクチンを接種してきました。この記事を書いている時点で副反応は特に出ていません。今日の講座が休業なのは、単にネタを整えられていないからです。明日ご期待ください。

今日の活動

今日は、GnuplotLaTeXを組み合わせ、近いうちに出す同人誌(西鉄電車車両運用調査成果資料)を作っていました。年末のコミケの折、委託先 & 自分が留守番をするサークルスペースに分厚いファイルが鎮座しているはずです。こちらもご期待ください。当システムは、まさにテキストファイルを組み合わせてデータベースを作り、そこに自分のプログラムと偉大なる先人が作ったソフトウェア群(Ruby処理系、GnuplotLaTeX)を組み合わせてできたものであり、テキストファイル活用の集大成であるともいえます。将来的には謎の講座で紹介したいと思います。

次回予告

「テキストファイルに書かれたデータの活用法を模索します。」と書いたので、その約束を果たさねばなりません。何にしましょうかね。

文字だけで扱うコンピュータの世界(10):テキストエディタ小技集(矩形選択・指定桁改行)

承前

テキストエディタの小技を探すと、お手軽に紹介できる機能が意外と見つかりませんでした。今回紹介する「矩形選択」と「指定桁改行」で、一旦小技集は終わりにします。

矩形選択

  • 対応エディタ:メモ帳以外ほぼ全部

「くけいせんたく」と呼びます。行の途中から、複数の行を四角形(矩形)のように選択して、切り取り、コピー、貼り付け、編集ができます。最初のうちはうまい使いどころが見つからないかもしれませんが、プログラミングの時や決まった形のデータを処理する際に「おおっ!」と感動すること請け合いです。選択のイメージは下のような感じです。

矩形選択機能により、3行目から7行目までの「かきくけこ」だけを選択しました。
矩形選択機能により、3行目から7行目までの「かきくけこ」だけを選択しました。

マウスを使う場合、たいていのテキストエディタでは、Altキーを押しながら選択したい範囲をドラッグするとうまくいきます。Visual Studio Codeですと少々違うようです。

矩形選択された範囲に対しての編集処理の振る舞いは、テキストエディタによりさまざまです。たとえば、サクラエディタでは、矩形選択した状態で何かを入力すると、その選択範囲の前に、入力した文字が挿入されます。一方、MeryVisual Studio Codeでは選択していたものが消去され、その跡に入力した文字が入ります。通常の選択時の振る舞いを考えると、MeryVisual Studio Codeの方が一貫性のある動作であると評することもできますが、エディタによる振る舞いに注意してご活用ください。

指定桁改行

これは長い行を指定のケタ、たとえば80ケタ(半角80文字・全角だと40文字)で改行していくような機能です。これは古代コンピュータ史において要請されていたことがあるものですが、現代ではあまり使うことはないかもしれません。現代での用法を強いて挙げるならば、横方向に無限に長く表示されてしまうような環境でも困らないように、適度に改行を入れて折り返しておくような感じでしょうか。

どこまでも横に長い文章があります。
どこまでも横に長い文章があります。

折り返し表示があるテキストエディタなら設定すればよいですが、そうでないテキストエディタのために改行を一括して入れる機能を持つテキストエディタもあります。
折り返し表示があるテキストエディタなら設定すればよいですが、そうでないテキストエディタのために改行を一括して入れる機能を持つテキストエディタもあります。

こうすると、どのようなエディタでもいい感じに表示できます。
こうすると、どのようなエディタでもいい感じに表示できます。

次回予告

次からは、テキストファイルに書かれたデータの活用法を模索します。

文字だけで扱うコンピュータの世界(9.5):たぬきさんの暗号解読

本日は息抜き

こんばんは。今日は久々に丸一日空いたので部屋を浄化し、家から搬出する本や雑誌を選定していたら12時間が経っていました。そのため、本来の題材を休んで、息抜きでもやります。お題は「たぬきさんの暗号」です。

たぬきさんからの手紙

暗号がだいすきなたぬきさんからの手紙が届きました。いつもはAES 256bitで暗号化して送ってくる上に暗号鍵をくれないので、解読に無限の時間がかかって今も終わっていませんが、今日の手紙はなんか読めそうなものを送ってきてくれました。

こんたたばたんたたたたはた。きょたたたたたうたたのたごたはんたたたはたたらたーめたたんたたでたすた。たとたたたたてたたもおたたいたしたいでたす。ばたんたざたいたた!

ヒント:そう、わたしです!

そういえば昔から有名な謎かけがありました。たぬきさんからの手紙は「た」を抜いて読めばいいんだ! では紙に印刷して「た」以外の文字に丸をつけ……なんて面倒なことはいりません。上の暗号文をテキストエディタにコピーしてください。そして、以前説明した「置換」の機能で、「た」を消してしまいましょう。

サクラエディタの画面に暗号文を貼り付けました。
サクラエディタの画面に暗号文を貼り付けました。

「置換」コマンドを呼び出します。「編集」メニューをクリックし、次に「置換」サブメニューをクリックしてください。
「置換」コマンドを呼び出します。

置換前の欄に「た」を入れ、置換後の欄をカラッポにしておくと、「すべて置換」ボタンを押した瞬間に「た」が消えます。

置換画面です。置換前の欄に「た」を入れ、置換後の欄をカラッポにしましょう。
置換画面

「た」を全部消した結果です。
「た」を全部消した結果です。

こんばんは。きょうのごはんはらーめんです。とてもおいしいです。ばんざい!

おいしいラーメンを食べたみたいです。よかったですね。

たぬきさん(?)からの手紙

その直後、たぬきさんからの手紙がまた来ました。

こfa-upw3j4rんaf2qwtaば.[@/;/:kpoんは。:ikopあafし09opkjegたj:pのごはfasdんはうど"$#%&んhafwaですvawsd。あなwerq3wtygtた+IUJNがtefasrutagdすきeyzbbmrwgy150791345]{:[]なうafscwarnどんafwa sはうdasfzcえす46+44とでfaすか、す(')'%()&けafa3awqrさんうaaaどrq2wqrqんzxdvcでIHU0-7すか、まafseqきVXDのZSDう'()どzvcvzんですか。こfasewれZXDvふくfasdrfwqeおかあaeたfり16541385464のafsddasひddddとVzxcvにzxcvしかわaew1616131rd1634かzvdxりまzxvczせKL+*afんね。

ヒント:ひらがなをよんでください。

ヒントというかほぼ答えが来ましたけど、めっちゃ読みづらいです。どうにかなりませんかね。……できます。そう、テキストエディタならね。これまただいぶ前に説明した「正規表現」を利用して、ひらがなと句読点以外の文字を消しちゃいましょう。

今度は「正規表現」のチェックマークを入れ、呪文(正規表現)を入力しましょう。
今度は「正規表現」のチェックマークを入れ、呪文(正規表現)を入力しましょう。

なんと、ひらがなだけを取り出すことに成功しました!
なんと、ひらがなだけを取り出すことに成功しました!

こんばんは。あしたのごはんはうどんです。あなたがすきなうどんはうえすとですか、すけさんうどんですか、まきのうどんですか。これふくおかあたりのひとにしかわかりませんね。

ひょっとしてこのたぬきさん、福岡県在住なんですかね? ここで呪文を説明します。

[^あ-ん、。]*

記号を順に読んでいくと、「半角始め角カッコ、半角サーカムフレックス、あ、半角ハイフン、ん、読点、句点、半角終わり角カッコ、アスタリスク」になります。なんのこっちゃ。

  • 角カッコ:この中に書かれた文字、文字の範囲を表現する。
  • ハイフン:文字の範囲を結ぶ。「あ-ん」だとひらがな五十音の表現になる。
  • サーカムフレックス:範囲の指定を逆にする。この場合は「ひらがな五十音、読点、句点以外」を表現する。
  • アスタリスク:角カッコの中身で表される文字0文字以上に一致する。

こうすると、ひらがな五十音以外の文字がいろいろまぎれていても、ひとつひとつ指定せずに全部消すことができます。やったぜ。ちなみに、文がいくつもあって、改行を残したい場合は、角カッコの中、句点の後に「\r\n」(バックスラッシュ、小文字アール、バックスラッシュ、小文字エヌ)を加えるとうまくいきます。バックスラッシュは、たいていの日本語環境では円記号として表示されるかと思います。

たぬきさんからの手紙3

翌日、たぬきさんはまたAES 256bitで暗号化された手紙を暗号鍵なしで送ってきました。解読待ちの手紙がまたひとつ増えました。

次回予告

今度は小技の続きをやります。

文字だけで扱うコンピュータの世界(9):テキストエディタ小技集(日付自動入力)

承前

ここまで8回に分けて、テキストエディタとは何か、テキストエディタの種類、基本的な使い方を書いてきました。もし、ここまで記事を読むだけ読んできてテキストエディタを開いて3秒しか経っていない方は、ぜひどれかのテキストエディタを1週間ほどお試しください。「サクラエディタ」をお試しの方はつい昨日、新バージョン正式版が2年7か月ぶりに登場し、バージョン 2.4.2.6048になりました。多くの機能追加、およびバグ修正が実施されています。そして、せっかくスクリーンショットを撮って紹介した「Grep」画面の入力欄配置がガラっと変わってしまいました。オウフ

この記事と次の記事くらいで、テキストエディタにある便利そうな機能を紹介していきます。どのテキストエディタにも入っている機能や、特定のテキストエディタだけに入っている機能があります。

タイムスタンプ(日付と時刻)をお手軽入力

いろいろメモを取ったり、日記を書いたりする際に、お手軽に今の日付と時刻を入力したくなる時があります。ない方は次へ進んでください。その際、多くのテキストエディタではキー操作ひとつ、メニュー操作ひとつで今の日付と時刻を入力できます。

メモ帳

  • キーボード「F5」
  • メニュー「編集 > 日付と時刻」

超シンプルなテキストエディタであるメモ帳にもこうした機能があります。ただし、書式は既定では「17:57 2022/12/11」(時:分 年/月/日)(専門的な表記では h:mm yyyy/mm/dd)という形で固定されているようです。より詳しく言うと、この日付と時刻の書式はWindows自体の設定により決まります。項目は「時刻と言語 > 言語と地域 > 地域設定」にあり、この設定中の「日付 (短い形式)」と「時刻 (短い形式)」のスタイルに従って、時刻→日付の順に半角スペース区切りで入力されます。ここの設定を変えると入力形式が変えられますが、同時にタスクバーの表示やエクスプローラーの表示も切り替わりますのでご注意ください。

さらに、小技界隈のネタとしてよく取り上げられて記事になる、メモ帳特有の機能に「1行目に『.LOG』(ピリオドと英大文字LOG)を入力しておくと、次回以降ファイルをメモ帳で開いたときに、自動的に最終行に現在の日付時刻が入った状態で開かれる、というものがあります。ひたすら1つのファイルに書いていくときにこれを設定しておくと、いつ書いたか思い出す手がかりになります。

サクラエディタ

  • キーボード「Alt + ;(セミコロン)」(Altキーを押しながら、セミコロンのキーを押す)で日付入力、「Alt + :(コロン)」で時刻入力
  • メニュー「編集 > 挿入 > 日付挿入」

サクラエディタの場合は、日付と時刻を別々に挿入できます。標準の書式は、日付が「2022年12月11日」(yyyy年M月d日・西暦年4ケタ、先頭にゼロがつかない形の月、先頭にゼロがつかない形の日)、時刻が「18:18:37」(H時mm分ss秒・24時間制の時間でゼロが頭につかない、2ケタの分、2ケタの秒)です。この書式はサクラエディタ内の「共通設定 > 書式」タブで「カスタム」モードを選ぶと変更できます。設定方法はサクラエディタのヘルプを参照ください。

メモ帳にある「.LOG」による自動日付追記機能は、サクラエディタではマクロを記載してそのマクロを「新規/開ファイル後」に自動実行するようにすると同様のものが再現できます。サクラエディタでは複数の形式によるマクロをサポートしていて、その中にWindows Script Hostという誰もが忘れ去った化石的機能によるマクロが利用できるので、以下のJavaScriptコードを記載して設定ファイルディレクトリ(C:\Users[各個人のユーザ名]\AppData\Roaming\sakura\)に保存して、マクロを登録してください。キーマクロでも一部再現できますが、「.LOG」の記載に関係なくすべてのファイルに対して動作してしまう問題があります。

// windows-notepad-dotlog.js
// Windowsメモ帳の「.LOG」機能

var firstLine = Editor.GetLineStr(1);
var firstLineStr = firstLine.replace(/\r?\n/g,"");

if (firstLineStr == ".LOG") {
    Editor.GoFileEnd();
    Editor.Char(13);
    Editor.InsertDate();
    Editor.Char(32);
    Editor.InsertTime();
    Editor.Char(13);
}

Mery

  • キーボード「Shift + F5」(シフトキーを押しながらF5キーを押す)
  • メニュー「編集 > 日付と時刻」

メモ帳と同様に、キー入力1回で日付と時刻を挿入できます。こちらの書式もメモ帳同様、Windows自体の設定により決まります。入力する日付の形式をカスタマイズしたい場合は、公式サイトに有志が製作掲載しているマクロを利用するといいかもしれません。(プログラミングの知識が少し必要になります)

www.haijin-boys.com

Visual Studio Code

  • 標準対応なし。要設定。

意外なことに、大変メジャーなVisual Studio Codeには、このような機能は標準では備わっていません。実現方法としては、個人設定のカスタマイズによりコードスニペット(定型文)を定義してショートカットキーを割り当てる形や、プラグインを導入する形などがあります。

qiita.com

jsstudy.hatenablog.com

次回予告

なんだか日付の自動入力だけで結構いい長さになってしまったので、小技集・便利機能紹介は次に続きます。

文字だけで扱うコンピュータの世界(8):すべてはただちに置き換えられる

承前

パソコン上のファイルだからこそできる芸当、それは「ファイル中の文字や単語や文を、一気に別のものに置き換える」ことです。これは紙に書いたものに対してはとうてい無理なものですが、パソコンですとワープロソフト、表計算ソフト、もちろんテキストエディタにだってできます。ここまでに説明してきた文字を検索する機能に、検索した文字を置き換える文字や単語、文章を指定する欄がくっついただけです。

置換処理の際に注意すべきこと

検索の項で述べましたが、「単語のみを検索」的なオプションは、日本語文章(かな・漢字)に対しては一切効き目がありません。それゆえ、検索する語句の指定によっては、思いもよらない文字の並びを置換してしまうことがあります。関係ない部分が置換されると困るような場合は「一括置換」「すべて置換」のようなコマンドを入れず、文章を確認しつつ「置換」ボタンをポチポチ押していく方がいいでしょう。

次回予告

今回はあまり説明することがなかったので、500文字くらいで文章が終わりました。400字詰め原稿用紙1枚分を超えれば、たまには少なくてもいいでしょう。

テキストエディタとその基本機能の話が終わったので、次はテキストエディタに備わった面白い機能ですとか、なんかいろいろ使えそうな小技でも出してみますかね。それが済んだら、いよいよプログラミング行ってみます?