ことえりの句読点の種類を切り替えるやつ、アプリにしてみた

app作ったの初めてなの

macOS標準の日本語入力を使っている人向けの話題です。
以前は「ことえり」っていうかわいい名前がついていた、あいつですよ。

いま職場ではまだMontereyなんですが、
扱う案件によって本文で使う句読点が「 、。」だったり「 ,。」だったり「 ,.」だったりしてて。
ちょっとならoptionキー併用で済ませるんですが。ちょっとじゃないなら切り替えてしまいたいじゃない。

いざ切り替えたいとなると、「システム環境設定」を開いて、
「キーボード」を開いて、「入力ソース」を開いて、「日本語-ローマ字入力」を開いて、
ずーっと下にスクロールして、「句読点の種類」をプルダウン選択するんですよ。
なんてめんどうなんだ、と思いながら、かれこれ20年以上やってますねえ。

…などと書いているうち、たった今、メニューバーからわりとすんなりアクセスできることに気付いてしまい、ものすごく呆然してます。

ていうか、勢いで切り替えるメニューバーアプリ作ってしまってました。
どうしよう。すごい無駄足だ。。まあ勉強にはなった。
まあ、作ってしまったので公開しときます。
自己責任になりますが、よかったらどうぞ。


ダウンロード

先に謝っておきますが、これしきの内容なのに50MBちょっとあります。
なんだかもうほんとにわからないままです。
(後述のリサイズ作業により20MB切りました)

SetPunctuation.dmg

macOS Monterey12.7.6 で作成、動作確認。他でもたぶん運がよければ動きます。

参考にさせてもら(というか、コードをぱく)ったサイト:
サポミク:macOSでCLIで日本語入力の句読点を切替
https://tech.sup39.dev/jp-punctuation/

NIFTY engineering:超簡単にメニューバーアプリを作りたい(macOS)
https://engineering.nifty.co.jp/blog/22146


いれかた

今さらですが、dmgファイルを開いて、マウントされたボリュームを開いて、アプリ本体をいい場所にコピーするだけです。
初回の起動時、もし何かセキュリティ的なことを言われたら、ものかのさんのGlow関連の説明を参考に右クリックで開いてみてください。いわゆる野良アプリなのでご了承のほど。
https://tama-san.com/app-page/unnotarized.html


つかいかた

起動するとメニューバーにアイコンが追加されます。
使うやつを選びましょう。操作直後の入力開始があまりにも早いと、切り替え完了前に半角英数が入力されてしまう場合があります。なんだかなあだけど、どんまい。

常駐させておきたい場合は、システム環境設定 > ユーザーとグループ > ログイン項目 に追加するとよいんでないですかね。
最近のOSを知らないので表現が古かったらすまんごめんです。

以上、大半のATOKを愛用してる人にはまったく関係のない話です。。


後日談:軽くなりましたよ(2025.05.08)

ChatGPTさん様に相談して、無用なライブラリを除外しまくり、なんとか17MBちょっとまでおさめました。
当時IntelMacで作ってたのがApple Siliconに移行しちゃってた影響でイロイロと大変だったけど。
ノリを合わせてくるねえ…

というわけで、再ダウンロードするといいです。機能はおなじです。

InDesign:CEPエクステンション jsx Timer の説明

どうもどうも。
泥作業オペレーターの悲願である
あっちこっちに同じ文字を何度も何度も何度も何度も打つ時
とか、あるじゃないですか。まあ、あるんですよ。
え、コピペしろって? まあねえ。そうなんですけど…

昔、それで寝言をゆったんですわ。
「選択しただけで定型のテキストが入るようにならんかなあ」って。
そしたら、まんまと叶えてもらえて。

当時、感激した記事です。さすがに記事内リンクはすべて切れていますw
InDesign:あっちこっちに同じ文字を何度も何度も何度も何度も打つ時にすごい便利なやつ

ご尽力いただいた信長と秀吉のお二人には、ほんとにもう感謝で。オッス、オラ家康!
今でも足を向けて寝られないので、毎晩北枕です。あれ、西か。西だわ。

ところがこれ、CS6当時の話で、当時のエクステンションはFlashベースだもんで、
CC2015の頃にはもう使えなくなっちまいまして。はかないよ。
(実際にはCC2019を作業メインにするまでずっとCS6を使ってたので寿命はもう少しあったが)
以来、作業効率が落ちるわ、キーボードは同じキーばっかり打つからへたっていくわ、散々。
「あたらしいのつくってー」とかおねだりできるほどツラのカワも厚くなくて(ということに)。

いつか、そのうち、自分でなんとか、とかぼんやり思って幾年、
何度かCEP系の案件をいただいたことで、ちょっとずつ自由が利くようになり、
ようやく動くものを作ることができましたのでお披露目です。
BOOTHで頒布を開始しました。


導入までの流れ

ダウンロードとインストール

ご購入はこちらから。BOOTH「鯵屋」

購入後にダウンロードできるzxpファイルをインストールする必要があります。
インストールについては有志の作成したエクステンション管理アプリを利用してください。
下記2点いずれかで。どちらも良好に動作しています。管理アプリはMac/Winに応じたものをどうぞ。

Anastasiy’s Extension Manager

ZXP Installer

エクステンションが正しくインストールされた場合、InDesign再起動後、メニューの ウィンドウ > エクステンション に「jsxTimer」が現れます。
※初回の起動時は登録前ということで、まだ機能制限がかかっています。せこいです。

(以下、肝心の認証の流れを追記しました。記載を忘れていましたすみません…)
UIが出現したら、右上の ≡ メニューから「注文番号の登録」を行ってください。
これはBOOTHで購入いただいた際の8ケタの注文場号です。
BOOTHにログインして購入履歴から商品をクリックすると確認することができます。

入力が終わったら、「認証」を実行してください。
これで機能制限が解除されます。やったー。


当時の物に対して、ガワ(UI)だけはなるべく忠実に模倣しました。
中身は、できればまるっともらってラクしたかったんですがスキル的に無理だったため一新しました。

どんなもんなのか

端的には、
一点時間おきにスクリプトを実行するもの。

詳しくは、
一定時間おきにInDesign上の選択範囲をみて、前回と違っていたらスクリプトを実行します。
なので、操作してないのに延々スクリプトが走る、ということにはなりません。
あのー、お鍋の吹きこぼれ防止装置みたいなもんです。
なにかを選択するたびにスクリプトが実行される、と思って差し支えありません。

外観はこんなかんじです。

一番上から、

  • delay: 繰り返しのディレイ間隔 1/1000秒
  • storage: 入力する文字列
  • regist: 文字列ボタンを作成
  • delete: 文字列ボタンを削除
  • その下: 登録済みの文字列ボタン群
  • choose jsx folder: スクリプトのたーっぷり詰まったフォルダの丸焼き選択ボタン
  • JSXs: フォルダから読み込んだスクリプトのボタン群

クリックしたスクリプトボタンは赤色(アクティブ)になりタイマーが発動します。
スクリプトの不備や選択オブジェクトの属性違いでエラーが起きたときは黄色になります。
もう一度クリックで基本色になりタイマーが解除されます。


ツールヒントあるよ

フライアウトメニュー「ツールヒントの表示」で、上記の説明がひととおり出ます。
見終わったら作業のじゃまになるので再び「ツールヒントの表示」を実行して表示を切りましょう。


実演

実際の動作はこんなかんじです。基本となるスクリプト「文字を挿入」を使用して、
挿入文字列に「です」を入力。
あとはレイアウト上のテキストを選択しただけで「です」が入力されていきます。
デモなので反応遅めにしてますが、実務ではディレイを落とし、もっと瞬間でいきます。

実際この内容だと「正規表現検索置換でよくね?」ともなるんですが…
フリーダムな文字訂正指示に手早く対応できるでございます。


うごかすスクリプトについて

サンプルとして以下のスクリプトを同梱してあります。

  • 文字を挿入
  • 大文字に変換
  • 小文字に変換
  • 先頭だけ大文字に変換
  • コンストラクタ名調査(入力文字列の欄に返る)
  • 登録文字を変換_外部(同梱の「登録変換ソース.txt」とペア。タブ区切りで検索/置換 を記述)
  • 登録文字を変換(スクリプト内に検索文字列・置換文字列を記述)

基本的には名前順で並ぶが、ファイル名先頭に「00_」とナンバリングしておけば
優先して前に来る、という仕様にしました。
UI上ではナンバリングと拡張子は省略され、すっきりな表示になります。

それ以外のスクリプトは各自で用意してもらうことになりますが、
ちょっとのスクリプトでも絶大に便利化します。まじです。
書けない人は書ける人つかまえて書かせましょう。


スクリプティングの補足

2つばかし、定数のような変数を用意してあります。
処理内容にそぐわない選択範囲に早い段階で見切りをつけるための仕組みです。
豪華なPCを使っている場合は無視して大丈夫です。

filter:             選択範囲の種別を指定。指定外の属性は調査をスルー。
maxSelectionLength: 選択オブジェクトの最大個数を指定。指定数以上は調査をスルー。

また、実行ブロック内で利用できる変数・関数があります。
詳細はコメントで記載しているほか、サンプルスクリプト内で利用していますので参考にどうぞ。

そんなかんじです。
はかどりすぎて顔がニヤけてしまい周囲に気味悪がられることうけあいです。
どうぞどうぞ。

macOS:クイックルックからテキストをコピペするのはアリかナシか

どうもどうも。
先に結論を言うと、アリかもしれない(結論とは)。

今年の春、ようやく会社機のmacOSをMontereyまで上げたんですよ。
業務使用していくうち、クイックルック上でテキストを選択&コピーできるのに気づいて、
うわー、おめーすげー便利じゃんすか、と一瞬だけ盛り上がったんですけども。
ちょっと怪しい結果がちらついたので、使うのやめました。
特性を把握した上で自己責任で使うにはいいんでしょうけど、
追加原稿のちょっぴりのテキストをものぐさに取り込む時など、
つい使ってしまいそうだったのをつよいこころでやめました。


以下、今回の質素な検証内容です。

Illustrator上でテキストを入力してみました。

察しのよいあなたにはもうおわかりでしょうけど、
Helvetica Neue Regularで「Illustrator」と打ち込むことで、
大文字アイと小文字エルの紛らわしいところがうまくできているのか見てやろうってんです。
ついでなので「Adobe」も入れちゃいました。
察しのよいあなたにはもう略でしょうけど、
これ「gdobA」を左右反転したやつです。

スペースが余ったので、小文字オー、ゼロ、大文字オー もなんとなく入れときました。
これをPDFで保存。
それをクイックルックで選択、コピー。

それをInDesignのテキストフレームにペースト。
さてどうじゃ。
おおっ、しっかりと「Abodg」になってる。ほかの箇所も存外に大丈夫だった。

つまり、今回これ、きわめて精度のよいOCRなのではないかと疑っていたんですが、
ちゃんとテキスト情報を拾ってくださってたという結果です。
反転したbとdを正しく拾ってくれてたわけ。
文字ごとに座標のZ順で評価してるのかな。たぶん。

とりあえず、事故るまで使ってみることにします。
でも皆さんはちゃんと慎重にやりましょうね。
うちだけ早く終わらせて早く帰ります。


── 追記 および 追試 ──

ものかのさんからコメントいただいてたのに気付いたのが盆休み明け。うわーすみません。
ということで追試。アウトライン文字はどうだ。
いちおう例によって左右反転したテキスト。

クイックルック上で選択はできそうで、できなさそうで、できそう。だけどぎこちない。
ので、⌘+Aしてコピーした。

InDesignにペースト…んんん、ぜんぶ半角スペースに。。

というわけで、テキスト以外(画像・図形でできた文字)が入っている可能性のあるファイル形式ではちょっと油断しきれないな、という結論に上書きです。
言ってしまえばプレーンテキスト(.txt)以外ほぼ全部、気をつけましょうということに。
なんということだ。