Bingが検索クエリーをGoogleから奪取すべくいろいろやっているけれど

検索エンジンがGoogle1強となって久しいけれど、なんとか対抗馬になろうと頑張っているのがMSのBingだ。
Windowsの支配力を使って、なんとかBing検索に客を呼び込もうとしている。今の主戦場であるスマホでは何の意味もないけれど、デスクトップ分野の頑張りはなかなか涙ぐましい。

Windowsの標準ブラウザであるEdgeの、デフォルト検索エンジンがBingであること
②EdgeでChromeを検索するとEdgeでいいじゃんとか言い出すこと
③BingでGoogle検索するとBingの検索窓が現れること
④AIとの連携
⑤RewardsというBingでの検索をユーザがマネタイズできる機能を提供
ということをやっている。とはいえ、検索エンジンの強さは「検索力」だ。Googleの検索力は大幅に落ちているものの、それにしたってBingの検索力に比べれば100倍程度マシだ。なんで、検索力を上げる方向にリソース費やさないのかなと思うけれども、まあ検索力を大幅に上げる方法が見つからないか、見つかっても投資が莫大すぎて難しいのだろう。

まあ、これらの施策がうまくいっていればいいけれど、まあ①④以外はうまく行っていないと思われる。

Windowsの標準ブラウザであるEdgeの、デフォルト検索エンジンがBingであること

これについてはかなりうまくいっている。Googleの長年のユーザ訓練の結果として、「検索はブラウザのアドレスバーで行えばよい」と学習したユーザが多い。今のWindows標準搭載ブラウザはEdgeなので、Windowsで検索しようとするとBing検索になるのだ。

②EdgeでChromeを検索するとEdgeでいいじゃんとか言い出すこと
Chomeなんていらないよ?(すっとぼけ)

ChromeをインストールしようとEdgeでChromeを検索すると、「Edgeがおすすめよ?」とかいいだす。いやいやEdgeさん、あなた「Googleアカウント持ってる人」がChrome必須なのわかって言ってるよね?ほぼ同一テクノロジなのにGoogleのパスワードマネージャ使えないブラウザとか要らないんですけど。
とか思うユーザは少なからずいるだろう。

③BingでGoogle検索するとBingの検索窓が現れること
、、、、え?

さすがにこれはユーザの錯誤狙っていて笑えないと思う。いやちょっとひどくない?訴えられたら負けそうな気がする。

④AIとの連携

MSはAI方面については投資がうまくいっており、Googleに負けていない。Bing検索とBing Chatの連携は今後検索の概念を多く変えるかもしれない。

⑤RewardsというBingでの検索をユーザがマネタイズできる機能を提供

最大の問題がこれだ。Bingは顧客の囲いこみのため、RewardsというBing検索に報酬が出るプログラムを提供している。とはいえそんなに高額なわけではなく、一日がんばっても200ポイントくらい、金額にして22円も稼げればいいほうだ。
まあ私も、たまに暇なときにRewards経由で検索し、ポイントを稼いでおり、やっとのことで5400ポイント、金額にして600円稼いだのであった。まさに徒労。その時間働けばもっと稼げていたのは間違いないw

まあ、それはそれとして、600円に交換しようとしたところ、エラーが発生した。

エラーコードくらい出せや

まあ、エラー発生したからカスタマーサポートに聞けと書いてある。ということでカスタマーサポートに聞いてみることにした。フォームに状況を記載すれば、24時間以内にいったん返信が来るようだ。これが10/25のこと。翌日(10/26)きた応答メールを見て驚愕した。「いまどきこんな精度の低い翻訳メール送ってくるか?」というレベルであった。正直なところ意味が分からなくはないが、少なくともMS社のブラウザが自動で翻訳するレベルよりはるかに下レベルの翻訳であった。なんじゃこりゃ。意訳すると
「問題が起こったことは理解した。状況確認したいから詳しい情報送って!」

詳しい情報といっても、あなた方の出したエラーメッセージがプアすぎるから、役に立たないんなんじゃないか?と思ったけれど、こういうのは何らかの情報返信しないと「返信来ないから調査してないよ」となりがちなので、すこし遅くなった(10/29)けれど返信しておいた。

そこから待てど暮らせど返信が無い。ひょっとして、こっちからの返信がロストしてるんじゃね?と思い、再度フォームで投稿してみた(11/8)。やはりフォーム投稿すると応答は来る(11/9)。相変わらずひどい翻訳だ。
意訳すると
「君が記載した前回の問い合わせ番号と同じ内容だから統合するよ」
であった。んでもって11/19現在、なんの返答もない。600円なんてどうでもいいんだ。おれはMSの本気度が知りたいんだ。そしてMSが本気でないことはよくわかった。

結論としては、Bingなんて使うもんじゃない。検索効率も悪いし、Rewardsは死ぬほど適当だ。
時間を無駄にしたい人は使ってもいいんじゃないだろうか。

ただし、Bing Chatはサービスを契約しなくても使えるAI機能なので、そこそこ重宝するだろう。

勝手にハイパーリンクを作成するのはやめた方がいいのではないか

勝手にハイパーリンク

Outlookを使用しているとよく出会う現象に、文章中にURI記載すると勝手にハイパーリンクになってしまうっていうのがある。多分この現象は設定でキャンセルすることはできるのだろうけれど*1、デフォルトでONになっていることをやめてほしいのだ。
なんせURI表記には終端文字が定義されていないので、絶対に意図したリンクにはならないのだ。特に日本語などの全角文字が混じった場合、ひどいことになる。

よくある自動変換

MSさんよ、お節介機能作るなら、もうちょっとちゃんとお節介しろよと思うのだった。おそらく、英語と日本語の最大の違いである、「日本語は、単語と単語をデリミタで分けない*2」ことが、このような変な動作をする原因だろう。

んでもって、このような動作はOutlookにかぎったものではなく、WordやExcelでも同様な動作をする。するのだけれど、なんだかんだOutlookが特にひどいのだ。Outlookは「メール編集完了時には、ただのURI表記なのに、メール送信ボタンを押下すると勝手にURIハイパーリンクになる」という機能を有しており(笑)、当然URI末尾に日本語が混じっていると、誤ったリンク先を生成し、そのままメール送信する。どこの馬鹿がこんな仕様OKするんだと思うのであった。*3

まあそれはそれとして、そもそもURI記載するとリンクになるという機能自体の弊害と思うことがあって、それはリンク表記と実際のリンク先が同一になるという経験をユーザにさせることだ。

アンカータグとは

ハイパーリンクを実現するために、HTMLではアンカータグ(Aタグ)っていうのが定義されている。アンカータグを使用するとほかのURIにリンクすることができる。このとき「ユーザに見せる文字列」と「実際のURI」を指定可能だ。基本的には文中の文字列を別文書へのリンクにするようなことを想定しており、おそらく「用語」と「用語の解説ページ」みたいなのが、一般的な使い方だ。たとえば、ユーザに見せる文字列「ライフライン」と、その解説ページとして「wikipediaライフライン項目のURI」をアンカータグにすると

 <A HREF=https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%95%E3%83%A9%E3%82%A4%E3%83%B3>ライフライン</A>

こんな感じになる。HREF=の後に記載されるのがURIで、</A>の前に記載されるのが、ユーザに見せる文字列だ。

実際にHTML記載すると、↓こんな感じにハイパーリンク表示される。
ライフライン

アンカータグの表示文字列をURIにすると

MS製品の「URIを記載すると勝手にハイパーリンクになる機能」は、日本語が混じるとでたらめな判定をすることもさることながら、URIと表記を同一にすることが「普通のことである」という誤解を与える。表記URIとリンクURIは同じという誤解。つまり、悪意あるハイパーリンク*4に引っかかる人を増やしてしまうのだ。

・ユーザの理解(リンク表記とリンク先は同一である)

 <A HREF=https://google.co.jp>https://google.co.jp</A>

https://google.co.jp


・悪意あるリンク(リンク表記はGoogleだがリンク先はyahoo)

 <A HREF=https://www.yahoo.co.jp/>https://google.co.jp</A>

https://google.co.jp

URIハイパーリンクに自動変換しないほうが良い

URIハイパーリンクに自動変換する環境に慣れると、ハイパーリンクの表記がURIなら、そのURIはリンク先URIであると誤解する人が発生する。それは、「安全なURIを表記している、危険なリンク先」に気づけないことを意味する。URIハイパーリンク自動変換機能とは、アンカータグのそもそもの動作を誤解する人を量産する機能なのだ。

勝手にアンカータグを分析する機能がブラウザやメーラーに欲しい

というかですね、メーラーやブラウザは、アンカータグの表記が「URI」っぽかったら、実際のリンク先URIと比較して、同一ドメインなのか判断し、ドメインが異なったら警告する機能くらいつけてもいいんじゃないだろうか。

とか思ったりした。

まあ、表記のURIっぽさを回避するような表記された場合、どうすりゃいいかという問題があるんだろうけど。

*1:テキストがハイパーリンクに変換されないようにする - Microsoft サポート

*2:英語の場合、単語間には必ず、デリミタ(スペースかカンマかピリオドか半角カッコ)がある。日本語は、単語をデリミタで分けないので、URIの直後に全角文字があっても問題ない。しかしコンピュータは、デリミタが無ければ、どこまでがURIなのか自動判定できない

*3:筆者はMSによく文句言っているけれど、別にMSが嫌いなわけじゃない。むしろ好きな企業である。

*4:googleへのリンクに見せかけてyahooへのリンク

vbscriptの終了について

Windowsは長いこと、まともなシェルを標準搭載していないOSであった。コマンドプロンプトという貧弱なシェル上で、バッチというこれも貧弱なシェルスクリプトを実行するという、なかなかの苦行を必要とするOSであったが、Windows98とかWindows2000の頃に、すこしまともなシェルスクリプト動作環境が誕生する。それがWSHで、WSH上で動作する言語が「jscript」と「vbscript」だった*1

言語仕様の良しあしはともかくとして、vbscriptはバッチなんかよりははるかにマシで、ファイルやDBをまともに扱うことができるありがたいスクリプト言語であった。特別な処理系がインストールされていない環境に、自動実行を入れることができるのだ。もっとも、シェルと統合されていないという大きな欠点や、まともなデバッグ環境を構築できないという欠点や、まともな開発環境が提供されていないという欠点や、まともなドキュメントが提供されていないという欠点はあったけれど*2

とはいっても、Powershellの登場とともに扱いがぞんざいになったことや、基本的にSJISのテキストを扱うように作られていること*3Windowsの標準テキストフォーマットがUTF-8になりつつあること。UTF-8に対応するような機能向上が図られていないこと*4などから、vbscriptが終了に向かっているのは誰の目にも明白な事実であって、いつ発表されるのか待ち状態であった。

vbscriptの代替としては、「Windows標準搭載」という面からPowershellスクリプト一択だと思うけれど、この歳になってからPowershellスクリプトを学ぶのは正直しんどいなと思っていた。しかしAI技術の進化によって、Powershellスクリプトの記載方法はかなり簡単に調べられるようになった。正直かなりクセが強い言語だけれど、移植は難しくなさそうだ。

逆に言えば、AIの進化によるスクリプトの自動生成が無ければ、vbscriptの終了は、生産性をかなり落としていたんじゃないだろうか。

ということでちょっと早いけれど、vbscriptさん今までありがとう。君のおかげで何万時間の工数が浮いたよ*5


というか、レガシーASPとかhtaどうなるのかね?いまさらリライトしたくないんだけれど。

*1:この時まともなシェルが出なかったのがMSのアレなところ

*2:こうやって振り返ると致命的な欠点だらけだな

*3:ADODB.Stream使って読み書きことはできるけれど

*4:というより、そもそも機能向上が長いこと図られていない

*5:保守会社なので自動実行のインパクトは非常に大きい

EXCELシートを申請フォームにするときのネガパターン

この世で最も便利なアプリケーションことEXCELであるが、そのあまりの汎用性の高さから、申請フォームとして使用されることがある。本来ならMicrosoftのFormsとか使うべきなんだろうけれど、FormsのようないわゆるSaaSシステムは契約期間中にしか使えない。契約が終わってしまうと履歴が残らないのだ。そうなってくると、少なくともファイルは残ってくれるEXCELシートを使いたい気持ちはよくわかる。わかるんだけれど、「紙の申請用紙」をそのままEXCEL化したようなものが作成されることがあってそれは違うんじゃないかと思う。なので、今まで出会ったネガパターンな手法を適当に書き散らしたいと思う。

1.そもそも印刷前提にするならEXCELなんて使うんじゃねーよ

EXCELの大きな問題点として、印刷するとセル内右端の文字が欠けるというものがある。どんなフォームを作成したところでEXCELで作ったら印刷時に必ず欠ける。なので、印刷を重視するならWORDで作ったほうがよいのだ。この欠落するという欠点はPDF化でも発生する。
データの再利用を考えるなら(ほかのアプリケーションでデータソースとして使用したい場合や、マクロで一覧表を作りたい場合等)EXCELを使いましょう。この際、正確な印刷は諦めましょう。正確な印刷を求めるなら、WORD等別のアプリでフォーム作りましょうということだ。

2.死ぬほど凝ったレイアウトにしちゃう症候群

申請フォームはもともと申請用紙として存在した場合があって、これをEXCEL化する際に、紙のレイアウトを完璧にトレースしたくなっちゃう人がいる。部署名を左上に、日付を右上に書かせ、大量の承認印欄を上部または下部に配置する。
これをセルで再現しようとすると、セルの横幅が不定になってしまうので、結合で対応し始める。

こんなめんどくさい調整したくないので、セルを正方形にして結合させるような手法、所謂EXCEL方眼紙が降臨してしまうのだ。

フォームEXCEL化の際に、項目を欠落させてはいけないけれど、レイアウトを再現する必要はない。EXCELというソフトに沿ったレイアウトに変更すべきであって、それは「1行に1値(+補助項目1つまで)入力を原則とするレイアウト」だと思われる。
例えば承認印欄をEXCELに最適化させるとこんな感じになるかもしれない。

3.なんとしてもA4用紙1枚に入れたい症候群

いやいや、電子化するんだったら電子の便利な部分に目を向けるべきで、紙の制約は無視していいでしょ?と思うのだけれど、その申請書をPDFなんかに変換して永続保存したいような場合、A4サイズのPDFにしたいのはまあわからんでもない。
そうではあるけれど、少なくともA4用紙1枚に入れなきゃいけないという固定観念をまずは取っ払った方がよいのではないかと思う。
A4用紙1枚にいれたいという制約があると、1行に2つも3つも記入項目入れたくなってしまう。これをやってしまうと、ヘッダ部分のセルと入力用セルのつじつまを合わせるために、悪名高い方眼紙EXCELが出来上がってしまうのだ。だから、極力やめた方がいいと思う。1行に入力項目は1つが原則だ。
ただし、例えば購入申請で購入数も記載させたい場合には、補助項目として2つ目の入力項目があってよい。

4.セルに中途半端な値が入っているフォーム

①いやいや、セル内に印って何よ?
最近出会ったEXCELのフォームに、セルの中に「          印」という値が入っているフォームがあった。

これは、このセルに、名前記載して電子印を押してほしいってことなのだろうけれど、なんでわざわざスペース消して、名前書いて、印の文字が右寄りになるように調整せにゃならんのだ。そもそも電子印なんて必要か?とおもうのだけれど、どうしても印をおすスペースを作りたいのなら、印を押す場所の専用セルを設ければいいのだ。

②いやいや、セル内に年月日って何よ?
非常によく見かけるのがセルの中に「    年 月 日」という値がはいっているパターンだ。

なんで2023/9/28と入力したいだけなのに、わざわざスペース消して2023って書いて、スペース消して9って書いて、スペース消して28って書かなきゃならんのだ。
入れてほしい値のフォーマットを値としてそのセルに入れるべきではない。年月日表示させたいのであれば、セルの表示形式をyyyy年mm月dd日にすればよいだけだ。そうして、入力説明として「2023/9/28のように、日付を入力してください。正しい値が入ると2023年9月28日のように表示されます。」と表示させておけばよいのだ。

この亜種が年と月と日を別々に入れるというやつで、1つの値を入力させるために6セル使用してくる。

せっかくEXCEL使うんだから、俺は「CTRL+;」で日付入力したいのだ。

5.セル結合したくてしょうがない症候群

あまり推奨はしないけれど、文書作成のためにEXCELを使うことがある。この文書に記載されたデータが再利用されないような場合、レイアウトとしてセル結合を使うのは、まあ許容範囲ではある。しかしこのような文書をつくり続けていると、セル結合が当たり前になってしまう。
問題は「申請フォーム」のようにデータ入力してもらい、そのデータを使うようなものを「セル結合が当たり前と思っている人」が作ると、データ入力域もセル結合してしまうのだ。セル結合のなにが問題かといえば、入力値の再利用が難しくなることだ。要はコピペが失敗するということ。いやいや、電子化のメリット打ち消すんじゃねーよという話である。
ということで、「セル結合したくてしょうがない症候群」に罹患しないためにも、EXCELで文書を作成させるのはやめた方がよい。罹患患者を見かけたら、「再利用したいデータ欄だけは結合するな」と口を酸っぱくして言いましょう。
逆に言えば、意地でも結合しないレイアウトを目指すべきで、それが「1行に1値+補助項目」までにするレイアウトなのだ。

6.○をつけさせたがる症候群

WORDならわからないでもないけれど、EXCELの申請フォームで「どちらかに○をつけてください」というものがあったりする。この際に「描画オブジェクト」で○をつけさせたりするのだ。

その描画オブジェクトの○って印刷すると確実にずれるけど、大丈夫だよな?*1
基本、2択であっても、オブジェクトで○なんてつけさせるのではなくて、セルに値を入れさせるべきだろう。

以上のことから、EXCELの申請フォームってのは、おそらくこんなものがいいのだろう。

ポイントとしては
Excel申請フォームは3列でよい。→3列とは見出し、値、補助項目のこと。
・横に長くなるようにレイアウトせず、縦に長くなるようにレイアウトすること。
・特にデータ入力欄は結合しない。

ということかなと思ったりしたのであった。

*1:正確にはセル内の文字位置が印刷でずれるので、「はい・いいえ」で「いいえ」側に〇をつけたつもりが、間の・に〇がついたようになっていることがある

ごくまれに発生する夜間作業の心得

基本的に私はソフトウェア系の技術屋なので、設置とか入れ替え作業とかいった物理作業は行わないのだけれど、ごくまれに発生する大規模ユーザの入れ替え作業で、急遽夜間の物理作業に駆り出されることがあった。そういう時に注意しないといけないことは、替えのズボンと安全ピンを持って行けということだ。

大規模ユーザの入れ替え作業のは2パターンあって、1つは「単純に広範囲のユーザ」、もう1つは「広大な施設」。もちろん駆り出されるのは後者の「広大な施設」の方だ。なぜなら、とにかく「その施設の休日中」に完了させる必要があるので、基本的に「間に合わない」ということが許されない。ということは「とにかく人数が必要」なので、まあ物理作業にとにかく向かない私みたいなやつも呼ばれるのだ。

基本的にそんな作業は作業着で行うべきだと思うのだけれど、客先によっては「スーツでやれ」というよくわからん方針もあって、そういうところで作業すると、「スラックスが破れる」という現象が発生する。スラックスは「しゃがみこんで作業する」ことに向いていないズボンなので、まあ作業慣れしていない数合わせの作業員は無理な格好をしてスラックスを破る確率が高いのだ。

ということで、1度私もスラックスを破いてしまったことがある。この時は「ホッチキス」で応急措置をして何とかしたのだけれど、まあホッチキスはそんなに耐久性があるわけでもなく、また結構痛いのだ。

作業中は「ははは、破けちゃいました」でいいのだけれど、問題は作業場所から、帰宅するときで、さすがにホッチキスリペアのズボンで帰宅するのは結構厳しいものがある。

基本的に「素人が」夜間作業する場合は、替えのズボンか安全ピンを持っていくべきだ。特にスラックスならなおさらだ。最後の手段はホッチキスだ。ということは知っておいた方がいいかもしれない。

メーカー製PCのWindowsの暗号化が中途半端な件

先日、後輩から「PCをメーカー修理に出したら、Bitlocker暗号化していないにもかかわらず、Bitlocker暗号化の回復キーを求められた」と相談された。このPCは会社で使用しているPCで、単目的で使用するため、Intune連携されていないPCだった。もちろんMSアカウント接続もしていない。要はローカルアカウント(そのPCの中で完結するユーザアカウント)で使用しているPCだった。

MSアカウント連携が必須になったWindows11と不要だったWindows10

Windows11はMSアカウント(またはADアカウント)が必要とされるOSで、基本的にMSアカウントなしでセットアップできないOSだったりする。もちろん「ローカルアカウント」のみでセットアップするような回避方法もあるのだけれど。

一方、Windows10は「ローカルアカウント」によるセットアップが可能なOSだ。具体的には「インターネット接続しないでセットアップ」すればよい。しかし、この場合に恐ろしいトラップがある。「メーカー製のPCは問答無用にPCをBitlocker暗号化する」ということだ。

Bitlocker暗号化の強制とそのわかりづらさ

メーカー製PCのWindowsの場合、購入後にPCを起動すると、OOBEという「Windowsの初期設定プログラム」が起動する。このプログラムが終わると勝手にBitlock暗号化を始める。そして、OOBEの中でMSアカウントと連携できていれば「MSアカウントにBitlockerの回復キーを保存する」ようだ。

んでもって困るのが、MSアカウントと連携できていない場合、Bitlocker暗号化された状態なのにもかかわらず、回復キーが保存されていないという状態になる。

まずは設定アプリで暗号化状態を確認すると、「暗号化を完了させるためにはMSアカウントが必要です」と表示される。

暗号化を完了させるためにはMSアカウントが必要です

次に「Bitlocker暗号化」の管理画面を確認すると、アクティブ化を待機中と表示される。

アクティブ化待機中

そしてドライブの管理画面を開くと、暗号化はされていることが確認できる。

暗号化はされています

一般的なイメージでは、「アクティブ化を待機中」というのは「暗号化の準備はできているけどやっていない」ではないかと思うし、「暗号化を完了させるには~」についても「暗号化自体は行っていない」ように思えるけれど、実際の「アクティブ化を待機中」と「暗号化を完了させるには~」は「暗号化を仕掛かっているか、完了しているけれど回復キーの保存が終わっていない状態」を意味するのだ。こんなもの誰がわかるというのか。

上記をまとめると以下2点となる。
・Bitlocker暗号化はデフォルトで実施されるもの。
・MSアカウント連携しない限り、回復キーは保存されない

それで何が問題なのか

Bitlocker暗号化とは「HWに大幅な変更が発生した場合、ドライブの複合が行えなくなる」ような暗号化だ。簡単な例で言えば、マザーボード交換されてしまうと、マザーボートに搭載されたTPMというチップも交換されてしまうので、起動できなくなる*1。最初に書いた、メーカー修理時などでマザーボード交換をしてしまうと、そのPCは起動できなくなってしまう。このとき「回復キー」さえあれば復元が可能なのだけれど、

自ら進んで暗号化したわけではないので、暗号化されていることも知らないし、回復キーが必要な事も知らないし、そもそも回復キー保存されていない

という状態に陥ってしまう。

ということで、マイクロソフトさんはMSアカウント接続を強制するようになっているし、MSアカウント接続を回避すると故障時にデータがロストするという結果になる。

個人的にはマイクロソフトさんが「個人のデータを人質にして、MSアカウント接続を強制している」ようにしか見えないので、やり口としてはランサムウェアに近いものがある。
ただし、iOSAndroid OSだって、まともに使用するためには、Appleアカウントか、Googleアカウント接続する必要があるので、あまりマイクロソフトさんを責められないような気もするが、そうであっても「MSアカウント接続しない場合の回復キーの問題の説明」くらいはOOBEの中でしてもいいんじゃないかなと思うのであった。

まあ、Windows11ではよほどのことが無い限り、MSアカウント連携しないなんてことは起こらないだろうから、
・Windows11でMSアカウントを無理やり回避した人
・どうしてもMSアカウントなんて使いたくないから、セットアップ時にMSアカウント作って、セットアップ終了後アカウント削除している人
以外の人は、そんなに気を付けなくてよいです・

今メーカー製のWindows10PCを使用している人、またはメーカー製のWindows10のPCをwindows11にバージョンアップした人は、
・Bitlocker暗号化されていないか
・回復キーはどこかにあるか
を確認した方がよいでしょう。

と書いた後に↓この記事見つけた。ほぼ同じ内容だけれど、MSアカウント回避行動が致命傷になるというのが今回の日記の焦点なのでそこはあまりかぶっていないかな。
pc.watch.impress.co.jp

*1:TPMの機能、特にキーの保存機能を用いてHDDの複合を行っているので