2020年07月09日

どうしてもエンジニアの視点で見てしまう。「様と名前が逆転したメール」

iPhoneを使っていたり、インターネット上のサービスを利用していたり、ゲームをプレイしていたりしているときも、何か事象が発生すると、どうしても「エンジニア視点」で観てしまうことがあります。

例えば、先日発生したコレ。

202007_samaname_.jpg

上の方にある「宛先:」欄の後ろが「様矢吹拓也」になっていました。
何でこんなことが起きるのだろうか?

このサービスを作った会社のテスターがサボっていたかどうかとかではなく、どうしてこんな現象が生じてしまうのだろうか?というような視点。

以前、マイクロソフトのサイトのアンケートかなんかのページで、「職業」選択欄が「博士」「」「」「」になっていたという事件がありました。これはどうやら、「Dr.」「Mr.」「Mrs.」「Miss」を翻訳(誤訳)したものらしい、とのこと。

となるとこれも、似たような現象かもしれません。つまり、「Mr.矢吹拓也」が「矢吹拓也」になったような感じ。

例えば、次のようなことが考えられます。

  • 海外のパッケージ製品を使っている。
  • そのパッケージ製品では、メールのエンペローブに「Dr.」「Mr.」「Mrs.」「Miss」をつけることができるようになっているが、それを「」と翻訳した。
  • メール本文の方はカスタマイズして「様」を後ろに付けることができたが、エンペローブ部分については、何らかの理由でそのままになっている(なってしまった)。

さらに、これをテスターが見つけられたか否かについても、次のようなことが考えられます。

  • テスターはこの誤りを見つけていたが、この海外パッケージの制限により、「Dr.」「Mr.」「Mrs.」「Miss」の位置を変えることができない or 変えるには多額の投資が必要となってしまい、仕様として放置した。

ありえそう。
全部想像ですが。





posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング

2020年05月23日

ver.1.21は、いってんにじゅういち と読むのが正しいらしいな

最近、ソフトウェア制作をしていて、ふと思ったこと。

ver.1.21は、「いってんにじゅういち」と読むのが正しいらしいな。

MS-DOS ver.3.3のころ、「ver.3.3」と「ver.3.30」は同じことを意味しており、いわゆる普通の小数点の表記と同じだったような気がする。

これであれば、さんてんさんれい と読むのが正しいんだと思うんだけど、最近では、さらにその下のマイナーナンバーを示したければ3.3.0と書くようなのが一般的らしいから、1.21はいってんにじゅういちであって、最後の1が1.2のさらにマイナーな(小数点第二位相当の)バージョンアップということを意味したいなら、1.2.1と書くのが一般的っぽい。

所説あるはず。

posted by ayacy at 23:25 | Comment(0) | TrackBack(0) | プログラミング

2020年04月23日

「マウスふるふる」と同じ機能をPowerShellでも作れないかな?という試み

DIYプログラミングのお時間ですね。

リモートワークブームのおかげで、なぜだかSNS上で話題をよく見かけるようになったマウスふるふるなのですが、そもそもインターネットからファイルをダウンロードすることが許されないとか、許可されたexe以外を実行できない環境もあるとかで、ExcelだったかVBSだったかで同じような機能を作った、みたいな話も聞こえてきました。

となると、PowerShell版も作れるのかな?とふと思い浮かんで、試してみました。
50秒おきにマウスを左右に1ピクセルゆらす感じの。

# .NETのCursorクラスを利用するためにSystem.Windows.Formsをロード
add-type -AssemblyName System.Windows.Forms


while ($true) {

    # 50秒スリープ
    echo "50秒スリープ"
    Start-Sleep 50

    # 現在のマウスのX,Y座標を取得
    $x = [System.Windows.Forms.Cursor]::Position.X
    $y = [System.Windows.Forms.Cursor]::Position.Y
    echo "マウス座標:($x, $y)"

    # マウス座標を少し左にずらす
    $x++;
    [System.Windows.Forms.Cursor]::Position = new-object System.Drawing.Point($x, $y)
    $x = [System.Windows.Forms.Cursor]::Position.X
    $y = [System.Windows.Forms.Cursor]::Position.Y
    echo "→マウス座標:($x, $y)"

    # マウス座標を少し右にずらす
    $x--;
    [System.Windows.Forms.Cursor]::Position = new-object System.Drawing.Point($x, $y)
    $x = [System.Windows.Forms.Cursor]::Position.X
    $y = [System.Windows.Forms.Cursor]::Position.Y
    echo "→マウス座標:($x, $y)"
}



あれ?うまく動かない。スクリーン セーバーを1分に設定したら、60秒ちょっと経過したところでスクリーン セーバーが起動しちゃいました。
もしかして管理者権限で動かさないとダメとか…?とか思いましたが、管理者権限でもダメでした。

もしかして、もっとはっきり、かつ、時間をおいてマウスを動かさないとダメ?とか思いまして、1秒おいて10ピクセル右、また1秒おいて10ピクセル左、という動きを永久ループさせてみることにしました。


# .NETのCursorクラスを利用するためにSystem.Windows.Formsをロード
add-type -AssemblyName System.Windows.Forms


while ($true) {

    # 1秒スリープ
    echo "1秒スリープ"
    Start-Sleep 1

    # 現在のマウスのX,Y座標を取得
    $x = [System.Windows.Forms.Cursor]::Position.X
    $y = [System.Windows.Forms.Cursor]::Position.Y

    # マウス座標を少し左にずらす
    $x+=16;
    [System.Windows.Forms.Cursor]::Position = new-object System.Drawing.Point($x, $y)
    $x = [System.Windows.Forms.Cursor]::Position.X
    $y = [System.Windows.Forms.Cursor]::Position.Y
    echo "→マウス座標:($x, $y)"

    echo "1秒スリープ"
    Start-Sleep 1

    # マウス座標を少し右にずらす
    $x-=16;
    [System.Windows.Forms.Cursor]::Position = new-object System.Drawing.Point($x, $y)
    $x = [System.Windows.Forms.Cursor]::Position.X
    $y = [System.Windows.Forms.Cursor]::Position.Y
    echo "→マウス座標:($x, $y)"
}



やっぱりうまく動かない。スクリーン セーバーは動いてしまいました。
もしかすると、.NET Frameworkだとサンドボックス的なところの中で動くからうまく行かないとかでしょうか?よくわかりませんでした。

最初に触れた、ExcelだったかVBSだったかで同じような機能を作った方は、その後うまく動いたのかが気になりますね。
…と、ここまで書いて、ふと、マウスのポインタの移動ではダメで、マウスイベントを偽装させる必要があったことに気づきました。


続きを読む
posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | プログラミング