InDesign:コピペの罠ァ 5 もっかいテキスト

前回はこちら
その前の コピペの罠ァ 3 でテキスト絡みについてやったんですが、ひとつ書き漏らしがあって。
それなりの量になってしまったので追記ではなくこちらで。


今回の素材。ここからマゼンタのテキストを削除してテスト素材とします。

こんなかんじでストーリーの最後の段落で改段落しちゃってるの、自分では好きでないので基本的に削除しちゃってるんですが、ヨソから来たデータだとしょっちゅう見かけます。

このスミ文字を「書式なしでペースト」で上書きしようと思います。
ついでに無駄な改段落文字も消しちゃおう、という意思でテキストを選択すると、こうですね。

では「書式なしでペースト」はい、どん。
うおお、お前(属性)どっから来た!


考察の前に、他のパターンでテストをやりきっちゃいましょう。
次は、改段落文字を残して選択した場合。

はい、どん。
おっ、いいかんじ、というかふつうだ。このあとどうしても気になるなら改段落文字はあらためて削除。


最後のテスト。元のテキストの先頭を1文字残して選択。
これ、自分含めQuark時代にやってる人けっこういたような。

どん。まあふつう。このあと、残しておいた1文字目を忘れずに削除しないといけない。
なんだかとっても危なっかしい。実際たまにやらかすのでもうやってません。


では実際なにが起こっているのか

テキストを選択して上書きペーストした場合、
「置換」ではなく「選択テキストを削除してからペースト」が行われている
という認識でおそらく説明がつきます。

置換とどう違うの

ためしに最初の選択範囲と同じテキストが対象になるように検索置換を実行すると、当初の期待どおりの結果となるです。
スクショの検索文字列を参考に、手元でもやってみてね。

削除してからの場合、改段落文字が削除されると、その前後の段落は所属スタイルのマージが行われます。くっつきます。
見た目の属性は残っていてもマージ先の段落スタイルからオーバーライドした状態となるわけです。

これを軸に考えた場合、もろもろ合点がいくことになります。

*段落をまるごと選択した場合、段落そのものがなくなり、後続段落が繰り上げでペースト対象となる
*改段落文字を残して選択した場合、削除とペーストはその段落内で完結するので後続段落の影響を受けない
*先頭の文字を残して選択した場合、後続段落は削除対象となり,選択した段落だけが生き残りペースト対象となる

要は、選択テキストを削除したあと、各種パネルが指す属性がペースト後の属性となるかんじです。

ほんとはちがうんですが、いったんここまでで納得してください
そのほうが絶対に覚えやすいので。


ほんとはそうじゃないみたい

こっからが沼です。罠です。
「空の後続段落」、実はそんなもん存在しません(なんだってーMMR)。
検索置換ウィンドウで段落スタイルを検索するとナイナイって言われます。
検索置換に関しては原則として「文字」が対象なので仕方ないとはいえ。
正規表現で「^」だけとか「$」だけとかが効くのもテキストが1文字でもある場合だけなので。

スクリプトで段落の数を参照すると「1」が返る。これでもう決定的。
マゼンタ文字の段落は存在していない。

では、いまパネル群に現れている属性はどこで参照できるのだろう、という疑問。
テキストフレーム内に挿入点が立った状態、見た目に文字は選択されていませんが、
実体は「挿入点(InsertionPoint)が選択された」状態だったりします。

ところでこの挿入点の所属する段落は前の段落のおけつだったりする?
しない。というか段落に含まれていないことになっている。

え、じゃこの子の親は誰なの。
ストーリー直下のオブジェクトになっている。

そのストーリーの、末尾挿入点の塗りカラーを参照。
でたー。

んじゃんじゃ、親ストーリーの段落数は?
え、1こしかない。もうわからん!

このあたり、広義ではバグなのかもしれません。わかりません。
違ったら恥ずかしいので大声では言いません…

とりあえず挙動とその覚え方は参考になったら幸いです。
まとめませんが、
*ペースト前にいったんただ削除してみる
*削除後にパネル群で表示されている属性がペースト後のお前だ
と覚えておきましょう。

ではでは

InDesign:UXPに着手しています(うちの無課金チャピーが)

どもども。タイトルの通りです。
17年ぐらい連れ添ってきたExtendScriptが終わる終わる言われて3、4年。
自分が満足に使えるスクリプト言語ってこれしかないんですが。
とにかく規格が古い。らしい。と知ったのは、CEPでJavaScriptをさわり始めてから。
けっこう前だけと実感が出てきたのはここ数年。CEP 11ならv88およびNode.js v15.9.0に対応しとるそうです。
正直なんのこっちゃですが、ExtendScriptが準拠しているECMA3が相当古いのはわかりました。
便利を知ると、それまでの当たり前を不便に感じてしまう。

よし、これからはCEPだな、モダンなJavaScriptのお勉強にもなるし。
…と思った矢先、UXPの到来です。CEPもう部活やめるってよ。それももう4、5年前。
でもUXP、まだまだふわふわしていて、覚えた端から仕様が変わる、とは先人たちの声。
そんじゃあ固まってきてから覚えるとしよう。前にもこんなのあったな。ActionScriptか。

でも、さすがにそろそろなんじゃない? とそわそわし始めはしてて。

やろうとはずっと思っていた

何度か、最初のステップを踏み外しては逃げ帰って、を繰り返してました。
まず、先人の例文が何を書いているかさっぱり頭に入らない。目がすべる。すべっすべ。
なんとなくJavaScriptじゃねこれ、ぐらいはわかるんだけど、手続きの意味がわからない。
みたいなー。

だもんで、ちょっと方針を変えました。
チャピーに書かせてみて、修正の変遷を見ながら概念と傾向を掴んでいこう、と。雰囲気慣れ作戦。
ちなみに同じ目論見でSwiftアプリを作ってもらったことがあったんですが学習は一歩も進みませんでした…

いや、でもCEPという下地があってのことか、ちょっとずつ見えてきた。UXPが。
これまで一歩も踏み出せなかった原因も明確になったでした。
というわけで。

UXPがとっつきにくかった理由

なんか新しい言語を学習してやろう、となると、通例だいたい “Hello World!” の出力ってことになると思うんです。
UXPの場合、プラグインのUI(パネル)内にテキストを表示したり、コンソールに出力したり、になるのかな。

でもExtendScript出身者は、ExtendScriptでいちばん手軽だった alert(“Hello World!”) をやりたいじゃんすか。だって、そうだろう。
しかしそれがむずい。というか、それだけがむずい。できなくはない。しかしめんどう。しかも違和感。
ここだけ乗り切れば、もしくは無視すれば、ほぼあとはほぼCEPの差分でほぼいけますほぼ。個人の感想です。

以下、うちが目を背けた点を、ばらして雑に紹介していきます。
あ、InDesignでやってます。

冒頭にある未知の宣言

const { app } = require("indesign");

これについては残念ながら絶対に身に付けないと進めないやつでした。
モジュールを同期的に読み込んでいる、らしんですが、ExtendScriptしか知らない浦島だとここで足が止まります。
CEPでいくらかモダンなJavScriptにも慣れてきてたつもりでいたのに。

{ } の中は最低限でappが入りますが、Enumerationオブジェクトを扱う用事があるたんび順次列挙する必要があり、どんどこ増えていきます。
よくわからない人は、大文字で始まる定数っていう認識でたぶん最低限大丈夫です。SaveOptions とか AnchorPoint とかのあれです。

alert() が、ほんとにむずい

厳密には、alert(), confirm(), prompt() と3つ。
河野さん、お〜まちさんの記事などをたぐって、manifestに追記などして、それでも動かなくて、チャピーに泣きついて、どうにか出すことができたものの、欲しかったのはコレじゃないすぎる。にしても大味だなあ。

いろいろとぐぐった感じ、自作のダイアログボックスを出す、が王道のようです。
しかし結果として、今のところはピンポイントにdoScript()でExtendScriptを使う、が自分的には一番しっくりくる感じでした。

これだよこれ

UXPがExtendScriptの完全上位互換とは思わないほうがいい、と聞いてはいたけど、かなりだな。
アプリ間通信もまだ用意されていない。

他はだいたいいける

変数の宣言にvarは使わない(ほうがいい)。const と let を使う。
アロー関数など、見たことない記法は、とにかく JavaScript でぐぐる。
async, await などの同期処理も。
見たことない関数も、まずは JavaScript でぐぐる。
それでだいたいいけるのが判明。関数も引数も ExtendScript と共通しているものが多いのです。

そんなかんじで、将来ほんとにUXPしか選択肢がなくなったとしてもゼロから覚えないといかん感じからはどうにか抜け出せました。こわさが減った。スキルの幅が狭いと新しいもの覚えるのに苦労するわけで。
作品のほうはUIの匙加減が整いしだいリリースしたい感じです。

とりあえず全般、河野さんのブログにすがって情報を得ています。
また、お〜まちさんの記事が初心者視点に配慮してくれてて(俺だよ俺)、何よりInDesignをベースに進めておられててたいへん参考になりました。
うちは、ゴッコ気質のままてきとうにがんばります…

Twitter(現X)取り戻せました(´Ꙩ ̫ Ꙩ`)

前回の顛末です。

3日前にボンヤリしてTwitter(現X)のアカウントを乗っ取られましたのち、
のべ2日半ほどの奮闘でしたが、皆さんの支えもあり、先人たちの詳細な情報をもとに、
どうには無事に復帰できましたっ
17年連れ添ったアカウントを失うことになることはそれほど辛くなかったけど、
悪人にまんまと嵌められたことがとにかく悔しくて腹立たしくてだめでした無理でした。
俺を騙すな俺を。


発端となる怪しいDMも再び見られるようになったので、あらためて時系列を追ってみましょう。

できごと

6月29日 某ゲーム関連のAさんから、コンテンツ作成に向けた簡単なアンケートを受け返信

6月30日 Aさんから2回目のアンケートがあり返信

7月2日 未明、その某ゲーム関連のBさんからDM。前者の兼ね合いで、つい疑わずに返信。

(Bさんのポストは2025年3月以降動きがないのを事後に見に行って知った)

> こんにちは。突然ダイレクトメッセージを送ってしまい申し訳ありません。🙇‍♂️いくつか確認したいことがあるのですが、お時間をいただいてもよろしいでしょうか?

< こんにちは 傘使いの方ですね なんでしょう?(注:傘=某ゲームで使用する武器種)

7月3日 未明、返信あり。

> 数時間前、または昨日頃に、X(旧Twitter)のPremiumをご購入されましたでしょうか。

< いえ、ずっと無課金ですが このアカウントが何かやらかしてるような話題でしょうか?
(やけに慎重だな、さっさと言ってくれ、と思いプッシュ)
< あの、何かの取り違えかも、と慎重になられているなら、そのお気持ちわかりますし、こちらへのご配慮とてもありがたいことですが、ご用件を一度にまとめて書いていただいて大丈夫ですよ。 実際こちらが何かの問題を起こしていたとすれば早急に対応しなければですし。よろしくお願いします。

同日 夕方に返信あり

> 実は、私のクレジットカードが第三者に不正利用され、X Premium+の年間プランが勝手に決済されてしまいました。💳その決済の領収書に表示されていたアカウント名とプロフィール画像が、あなたのアカウントと一致していたため、ご本人様かどうか確認させていただきたく、ご連絡いたしました。

> 念のためお伺いしたいのですが、この決済にお心当たりはございますでしょうか。領収書のスクリーンショットも保管しております。📄 もちろん、責めるつもりは一切ございません。事実関係を確認したいだけです。

< わあ、こんなことになっていたとは… まさおさんから自分にプレミアムが贈られたという内容ですね…
< X Premiumは元から興味がなく、少なくとも人の手で何かをしたということは断じてありません。 ひとまず、お問い合わせへの回答として、アカウント名、プロフィール画像は間違いなく自分そのものですね。
< 決済については、残念ながら心当たりがありません。
< が、2〜3日ほど前に、正確な文言はさすがに覚えていないのですが「プレミアムに切り替える」のような画面が出て、その気がないためキャンセルして閉じた、という出来事がありました。 もとから数ヶ月おきでたまに出てくるものなので気にも留めていなかったのですが、関連あるでしょうか。
< もしかしてと思い、いまアカウントのメニューから「プレミアム」を押してみましたが、購入支払い済みのような状態にはなっていない様子でした。ねんのため画面記録をしておきました(※)が、それなりに容量があるため必要があればあらためてお送りします(注:結局送ってない。あぶなかった)。 なんというか、傘使いを見かけ次第フォローして動画のポストなど参考にさせてもらっているだけのつもりがこんな事態に…
<一刻も早く、無事に解決できることをお祈りしております。 今後も何かお力になれることがあればお知らせください。

> 私としては、どなたかがあなたになりすまして不正に利用し、私を騙した可能性があるのではないかと考えております。
> また、この件につきましては、すでにXサポートへ報告しております。その際、私の勘違いにより、誤ってあなたのアカウントを通報してしまった可能性があります。本当に申し訳ございません。その後、Xサポートからは「通報対象となったアカウントのご本人から事情説明が必要」と案内を受けました。このまま対応が行われない場合、アカウントに何らかの影響が生じる可能性があるとも説明を受けております。私の確認不足が原因で、このようなご迷惑をおかけしてしまい、心よりお詫び申し上げます。

< 承知いたしました。 その時はその時で、ということでこちらのことは大丈夫です。特に商業活動やブランディングもしておりませんので… 大変なのはまさおさんの方です。
<これで不正利用者の側に何の得が発生するのか、仕組みがよくわかっていませんが、もしサポートから何かあれば顛末はご報告します。

7月5日 22時すぎに返信あり

> 返信が遅くなり大変申し訳ございません!もしご都合がよろしければ、Xサポートに状況を説明するお手伝いをしていただけないでしょうか?これは完全に私の不手際によるものですので、ご協力いただければ大変ありがたいです。🙇‍♂️

< はい、何をすればいいですか?

7月6日 アフターカーニバル

> なお、この件を担当していると案内されたDiscordのXサポート(ID:techsupport.nate)宛に、「今回の件は相手方の勘違いによるものであり、私は一切関係ありません」という内容をお送りいただけますでしょうか。
> また、送信後にメッセージのスクリーンショットをご共有いただけますと幸いです。正しい宛先へ送信されていることを確認したいためです。
突然のお願いとなり誠に恐縮ですが、ご理解とご協力をいただけましたら幸いです。🙇‍♂️

この後、実際にDiscordで「テックサポートのナテ」に連絡をしてしまう。お人よしもすぎる。詳細は前回。

< Nateとのやり取りの途中ですが、町医者の待合室でやっていたため、呼ばれ次第ちょっと連絡が途絶える旨を伝え、診察が終わったら続きを、ということになりました。 どうも、複数のアカウントから自分のアカウントへの詐欺報告を受けているとのことで、けっこう衝撃です。 ひととおり終えたらお知らせします。

> このたびは、ご迷惑をおかけしてしまい、本当に申し訳ございません。 何卒よろしくお願いいたします。🙇‍♂️

この後、実際にメールアドレスを変更してしまいました。気付けよ。気付かなかったなあ。ああ。

一旦はあきらめた

あらかじめ事例を知っていれば難なくかわせたものの、いろいろが兼ね合い、Twitter(現:X)アカウントを騙し取られてしまいました。
悪いやつもいたもんです。
アホだから騙されるんだ、自分はこんなもん引っかからん、とみんな思ってるでしょう。
驕れるものは久しぶりの友人に騙されますよ。知らんけど。

アカウントを失ったことよりも、人の良心につけこむ系の悪者のエサにされたことが悔しいです。
その日は素直に諦めて新アカウントを作りました。
翌日、仕事中のシャキッとしてる時に同一事例を調べました。いくらでも出るな。流行ってんのね。
それに併せて、アカウントを奪回できた体験談もいくつか見つかったのでブクマ。
Xヘルプセンターに陳情するのね。
やれるかな。

X ヘルプセンター:アカウントがハッキングされた、または乗っ取られた

以下、自分なりの工夫は特になく、参考記事の読み込みの甘さから失敗を重ねてしまった、ただの体験談です。
お急ぎの方はリンク先の記事だけ参考にするのをおすすめします。
それでもつまずいた時は自分のつまづきが逆に参考になれば幸いです。

この時点で参考にした記事:X(旧Twitter)アカウントを乗っ取られたけど2日で復旧した話


1回目

リクエスト送信後、秒で諦めろメール(以下、諦メール)が到着。なんでだよ。
参考記事を斜め読みしたせい。いくつかの要訣を守らないとこうなるらしい。しっかり読もうね。
今回は「このXアカウントを作成するために使用した確認方法は何ですか? (必須)」の設問に対して正直に「メールアドレス」を選択したせい。事実はおいといて「電話番号」にしないとだめらしい。
よし覚えた(いや熟読しろ、と未来の自分が言う)。


2回目

先へ進むことができた。通称「チケットメール」が届く。
4つの質問に返信で回答してください、と。

  1. ユーザー名(アカウント名)
  2. アカウントに使っていたメールアドレス
  3. 最後にアクセスした日付(7月6日を選択すると7月5日になるが曜日は一致しているので、あちらさんの時間帯なのかと)
  4. アカウントに使っていた電話番号
    この4.電話番号に「なし」と答えてしまい、また諦メール。これが来たら最初からやり直しになる。
    参考記事にならい「There is no phone number associated with the account.」(アカウントに関連付けた電話番号はありません)と記載するのがよいみたい。
    4つの回答に加えて、あちこちで勧められていた「証拠となるデータ」を添付する旨を書いたりしていた。
    どちらが原因で追い払われたのかは、ちょっとわかりません。

3回目

参考記事をさらに読み込み、チケットメール到着後のことをしっかり頭に入れた。
が、また秒で諦メール
リクエスト送信画面の説明記入欄に毎回アドリブで記入していたのが、今回とびきりだめだったみたい。
これも先人の例文を参考に丸写しが無難かと。


4回目

今度こそ参考記事すべてを熟読。複数の記事を参考に要点を固めた。
リクエスト送信時に、「Xへの新規ログインがありました」「@俺さんのメールアドレスが変更されました」の2つのメールのスクショを添付した。今度はチケットメールが届いた。もう逃さない。
チケットメールが届いたら、いったんとりあえず4つの質問に答えただけの返信をする。
追加で判断材料になりそうなスクショなどがあれば、あらためて返信する形で添付するみたい?と認識(後述するけど見当はずれ)
ここ、「自分の返信したメールに返信する形」なのか、「ヘルプから届いたメールに何度も返信する形」なのか、記事により表現が曖昧でした。
はっきりしたことは、何度も返信する場合、すべてのメールに回答1〜4を記載していないとメール振り分けロボに終了させられるそう。こわいね。

今回は、奪われたアカウントのプロフィールに使用している画像、、ななこのカメラロールのスクショを添付してみた。
私のペットです、と。(ペットというか家族なんだけど、ややこしくなるので…)
かわいー。ななこに会いたいなあ。結果としてこれが有効かはまったく不明。ただかわいいだけ。

もう1つ、詐欺者とのDMのやりとりの中で依頼されていた「何やらのスクショ」(※)を撮っていたことを忘れており(詐欺者には結局送りそびれたまま)、Twitterのオプション画面の画面録画が保存されていたのでこれも添付。
Xサポートに、「わたしX Premium受け取ってませーん無課金でーす」を証明するために撮影したやつ。

この追加返信に1〜4の回答を入れなかったのが悪かったらしく、また諦メール。おのれー。


5回目

1〜4の回答を返信する際、こちらを参考に丸写し。

最終的に参考にした記事:【保存版】Xアカウント乗っ取り対処マニュアル|実際に8日で奪還した全手順(サポート問い合わせテンプレ付き)

自分が書いたものと何が違うんだ、という気もするけど、ここは人のつけた確かな足跡をたどるが吉。
送信文のとおり、
・他者がアカウントにアクセスした通知メールのスクショ
・アカウントの登録メールアドレスが変更された通知メールのスクショ
・身分証明証 ここは免許証の画像を入れつつ、生年月日がわかりやすいよう「右上に私の誕生日が記載されています。西暦19xx年11月28日です」と翻訳英文を追加した。
・おまけで、(※)のスクショ
の4点を添付しました。
これが7/8の22時まえ。

決着

翌朝7/9の朝6時ごろ、アカウント復帰完了を知らせるメール。
胸が悪くなるのを警戒して、職場に着いてからメールチェックしたw


あとしまつ

パスワード
新しいものに変更
DMは送信履歴がないことを確認(送られたあと消されたのかもだけど)

設定>アカウント
見知らぬ電話番号など登録されていないのを確認。

設定>セキュリティとアカウントアクセス>セキュリティ
2要素認証されていないのを確認。今回から設定することにしました。
身分証明書のアップロードがされていないのを確認。これは一旦いいかな…

追加のパスワードの保護
これは入れよう。

パスキー
これも入れよう。

アプリとセッション>連携しているアプリ
空っぽになってました。元から空だったのか、一時的にアカウントを削除された影響なのか。

アカウント権限の付与
なんだこれ。「他のユーザーがあなたをアカウントに招待できるようにする」がONだったので一瞬びびったけど、このアカウントと共有するって意味ではなくて別のアカウントに招待ってことね。まあこのままでいいか。

と、発端のDMをよこしたアカウントを通報。成仏してくれ。DMを見返すかもしれないのでブロックはまだ。
と、Discordの「テックサポートのナテ」を通報。Discord運営、対応措置はっや!

以上です。どうもお騒がせしました。
みんなも気をつけてね。
みんなはウチを騙さないでね。