風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

Twitter で「work」ドメインの記事を引用するとツイートが表示されなくなってしまう件

このブログは「memo.furyutei.work」のように、gTLDとして「.work」を使用しているわけですが。
Twitter にて「.work」ドメインの記事(URL)を引用してしまうと、状況によってはそのツイートが表示されないといった不具合が発生してしまう、というお話です(2021/02/11現在)。




不具合の内容

元ツイートが「.work」ドメインの記事を含む場合

「.work」ドメインの記事を引用してツイートした場合、そのツイートにリプライが付くと、元ツイートを開いたらリプライツイートも表示されます。
ここまではいいのですが、実は、

  • リプライツイート(およびリプライツリーで繋がったツイート)を開くと、(自分以外のユーザーからは)元のツイート(リプライ先・「.work」ドメインの記事を引用したもの)は見えず、「このツイートは表示できません。This Tweet is unavailable. )」状態となってしまう

という不具合が発生します。
これ、自分で見る分には普通に表示されるため、誰かに指摘されたりしないと気が付かない罠

リプライツイートが「.work」ドメインの記事を含む場合

また、Twitter のツイートに対するリプライ中に「.work」ドメインの記事(URL)を引用してしまうと、

  • 元ツイートのユーザーには通知が行かない
  • (自分以外のユーザーが)元ツイートを表示しても、「.work」ドメインの記事を引用したリプライツイートは見えず、リプライ数としてもカウントされない
    この場合も、自分で見る分には普通に表示されているので気が付きにくい
  • 当該リプライツイートにさらにリプライが付いた場合、当該ツイートは「このツイートは表示できません。This Tweet is unavailable. )」状態となってしまう
    もちろん自分では普通に見える

という不具合が発生してしまいます。
なお、 (自分以外のユーザーであっても)当該リプライツイートを直接URLを指定して開けば見ることはできます。

自分のところだけではないらしい

最初、自分のところだけかと思いましたが、gTLD「.work」を使っているサイトを3か所ほど探して試してみたところ、いずれも同様の不具合が発生していたので、少なくとも「.work」に関しては普遍的に発生するのではないかと予想しています。
他の TLD で同様の不具合が発生するかどうかまでは調べられていません。
「.work」は新gTLDと呼ばれる比較的歴史の浅いものらしいですが、そういうのが関係していたりするのですかね?

回避方法

現状、「.work」ドメインの URL は引用しないようにするしか……。
このブログの場合、もともとはてなブログなので「furyu.hatenablog.com」の方の URL を使って引用する、という手はないではないです(面倒くさいけれど……)。

Twitter さんに不具合報告はしているのだけれど


2020/12/03・12/09、2021/02/09 と、これまで都合3回この不具合に関して報告しているのだけれど、なしのつぶて……(2021/02/11現在)。

追記


やっぱりTwitterさんにスパム判定されているってことですかねぇ。
安さで判断したのが悪いって? さすがにこういう「安かろう悪かろう」は納得いかないのですが……。

Web版TwitterからFleet画像/動画をダウンロードできるユーザースクリプト

スマホ用Twitterアプリに「Fleet(フリート)」がリリースされて早三ヶ月が経とうとしていますが、未だに使い道がよくわからない風柳です、ごきげんよう。

Web版TwitterではなかなかFleetが見られるようにならないので、こっそり(?)ダウンロードツールを作って公開していたのですが、現在もまだ見られないようなので、記事でも紹介しておきます。
スマホアプリ版みたいにリアルタイムで誰が投稿しているか表示されるわけでもなく、画像/動画を別タブで開いた際も誰が投稿したものかもわかりづらいので、使い勝手としてはイマイチですが……😅

インストール方法

ユーザースクリプトとして公開しています。
[このページを参考に](https://greasyfork.org/ja)、お使いのブラウザに Tampermonkey 等のユーザースクリプトマネージャーをインストールした状態で、
greasyfork.org
のページを開いて[スクリプトをインストール]ボタンを押し、フリートキャプチャーをインストールしてください。

使い方

フォローしている方のFleet画像/動画のダウンロード方法

[Twitterのホームタイムライン](https://twitter.com/home)を開くと、上部に[Fleets 💾]のようなボタンが表示されます。

f:id:furyu-tei:20210206123026p:plain
HOME画面上のボタン

これをクリックすると、フォローしている方が公開中のFleet画像/動画をまとめて(ZIPファイルで)ダウンロードできます。
また、[Alt]+クリックで、画像/動画を別タブでまとめて開くこともできます。
ブラウザのポップアップブロックにより別タブでうまく開けない場合は、ポップアップブロックをオフにするか、あきらめてください。

ユーザーが公開中のFleet画像/動画のダウンロード方法

ユーザーのプロフィールタイムラインを開くと、その方がFleetを公開中であれば、プロフィールアイコンの周りが水色になり、同時に[Fleets 💾]のようなボタンが表示されます。

f:id:furyu-tei:20210206123913p:plain
プロフィール上のボタン

これをクリックすると、その方が公開中のFleet画像/動画をまとめて(ZIPファイルで)ダウンロードできます。

f:id:furyu-tei:20210206123802p:plain
Zipファイルサンプル

こちらも、[Alt]+クリックで、画像/動画を別タブでまとめて開くこともできます。
注意書きも同上です。

おまけ

Fleet用自作テンプレートです。ご自由にお使いください。

f:id:furyu-tei:20210206124108p:plain
フリート用テンプレート.伝言板

【お知らせ】アマゾン注文履歴フィルタが突然使えなくなるかもしれません!!

多くの方にご利用いただいている拙作「アマゾン注文履歴フィルタ」

memo.furyutei.work

ですが、Amazon.co.jp 様側のページ仕様の変更に伴い、残念ながら今後使えなくなる可能性が高いです。

現状、本拡張機能(アドオン)は、領収書ページのHTMLを用いて一括印刷やCSVダウンロード等の機能を実現しているのですが、領収書ページのフォーマットがHTMLからPDFに変わってしまったアカウントが存在するようです(2020/12下旬に確認)。今後はこの切り替えが実施されるユーザーの方が増えていくものと予想されます。

こうなると抜本的な改修が必要となってくるのですが、現状当方の所持するアカウントではまだ切り替えが行われておらず、また時間的な余裕もないことから、対応は困難です。
少なくとも、2020年分からの確定申告の期間には本拡張機能は使用できないという前提で、各位対処されることをお勧めいたします。
大変ご不便をおかけしますが、ご容赦願います。

エクセルのVBAで正規表現のメソッド実行に時間がかかる現象と対策(仮)

エクセルの VBA で、正規表現(VBScript.RegExp)の .Excute メソッドを使っているプロジェクトにて、不自然に動作が重くなってしまう現象に遭遇しました。
Windows 10 Pro バージョン 2004 (OS ビルド 19041.630) 上で、Microsoft® Excel® for Microsoft 365 MSO (16.0.13328.20262) 32 ビットにて発生。

実は、以前にも同じ現象が発生していたのですが、そのときには Windows の再起動で発生しなくなったので放置していました。
しかし、今回の場合は Excel や Windows を再起動しても改善が見られなかったため、少し調べてみることにしました。




発生した状況(再現方法)

  1. 「Microsoft Excel マクロ有効ワークシート」を新規作成
  2. 標準モジュールを追加し、VBSCript.RegExp の Excute メソッドを使用しているこちらのプロジェクトのソースコードを貼付け
  3. サンプルツイートのテキスト(【】部分に隠し文あり)を選択してコピーし、A1セルに貼り付けたあと、B1セルに「=ZenDecode(A1)」のような数式を入力(画像1)
    なお、この段階では特に遅くは感じない
  4. 一度保存して閉じてから、再度開き、「セキュリティの警告」に対して [コンテンツの有効化] ボタンを押す(画像2)
f:id:furyu-tei:20201115142102p:plain
1. サンプル
f:id:furyu-tei:20201115142146p:plain
2.「セキュリティの警告 マクロが無効にされました。」表示
[コンテンツの有効化]を押した直後や、B1セルを再入力したり、A1&B1を別セルにコピーしたりすると、体感できるほどに不自然に動作が重くなってしまいました。

対策

ワークシートを作成直後には特に重くなかったのに、保存して閉じる→再度開く→[コンテンツの有効化] を実施後に重くなってしまう(その後はずっと重いままとなる)ことに気づいたので、セキュリティ関係の機能の問題ではないかとあたりをつけ、トラスト センターの「信頼できる場所」に、当該マクロ有効ワークシートの場所を追加してみました。
  1. リボンの「ファイル」メニューから、「オプション」→「トラスト センター」で [トラスト センターの設定 (T) ...] をクリック
  2. 「信頼できる場所」の [新しい場所の追加 (A) ...] で、当該ワークシートを置いてあるフォルダを指定する(必要に応じて、「□ この場所のサブフォルダーも信頼する (S)」にもチェックを入れておく)
その後、該当ワークシートで試してみると、軽快に動作するようになりました。

注意事項

  • 同様の環境であっても、現象が再現しない場合もあります
    自分のところでも、同じファイルを、別の PC 上で試しても(「信頼できる場所」に置いていないにも関わらず)特に重くなりませんでした。また、同一 PC 上であっても、ファイルの内容によっては(?)再現しない場合もあるようです。
  • 上記の対策は、マクロのセキュリティ関連の設定になるため、「信頼できる場所」に追加するフォルダについては慎重に検討するようにしてください。試して見る場合には自己責任でお願いします。
  • あくまで当方個人の環境での対策のため、同様の現象が発生していて対策通りの手順を踏んでも改善されない場合もあるかと思いますが、ご容赦願います。

エクセルで揮発性の数式を含むセルを抽出する試み



はじめに

エクセルのワークシートで使える関数の中には揮発性関数というものがあり、これらは再計算の度に再評価(実行)されてしまいます。

揮発性関数の中には OFFSETINDIRECT といった便利な関数も含まれているためについ使ってしまいがちですが、かといってこれらを多用していると動作が重くなる要因のひとつとなります。
場合によっては、他の関数に置き換える等の対処を考えたほうが良いかも知れません。
自動再計算を行わないという対処法もありますが、これはこれで何かと不便です。

そこで、調査用として、シート中の揮発性の数式を含む(再計算時に常に再評価されてしまう)セルを抽出する方法について考えてみました。

f:id:furyu-tei:20201105095343p:plain
サンプルマクロの実行結果例

なお、他の方々から知見を得るために、クイズ形式でツイートもしています。

もっとうまい方法をご存じの方、コメントやこのツイートへのリプライででも教えて下さいませ。

試し方

標準モジュールに下記のサンプルコードを貼り付けて、目的のシートをアクティブにした状態でマクロ(MarkVolatileCells)を実行すると、揮発性の数式を持つセルにメモが添付されます。

サンプルコード


解説

引数の値をそのまま返すような単純なユーザー定義関数(UDF)を作成した場合、その引数にセル参照を指定しておくと、再計算時には参照先が揮発性の場合にのみ当該 UDF が呼び出されることになります。

サンプルソースコードの MarkVolatileCells() では、この性質を利用して、

  1. 作業用に、対象シート(target_sheet)を複製
  2. 複製した作業用のシート(temp_sheet)中で数式を持つセル(=target_sheetでも同じアドレスのセルは数式を持つ)に対し、数式を target_sheet の同じアドレスのセルへの参照を引数としたUDF(ReferCellValue)に置換
    置換を行う前には自動計算状態(Application.Calculation = xlCalculationAutomatic)にして、全ての ReferCellValue が一度呼び出される(実行される)ようにしておく
  3. 手動計算状態に切り替え(Application.Calculation = xlCalculationManual)た後、コレクション(VolatileAddressCollection)を初期化する
  4. 強制的に再計算(temp_sheet.Calculate)を行うと、参照先が揮発性の場合にのみ ReferCellValue が呼び出されるため、このアドレスをコレクション(VolatileAddressCollection)に記録
  5. 記録されたアドレスに対応する target_sheet 中のセルにメモを添付

という処理を行っています。

注意事項

上記の手法は当方が思いつきで試してみたものであり、正しく揮発性の数式を持つセルが検出できるのかについての保証はありません。あくまで参考として考えて下さい。

また、数式が指定されているセルに対してしか使えないため、

  • 条件付き書式内で揮発性数式が使われている場合
  • リンクした図の場合

等のケースについては検出できません。