2016年12月31日

2016年も年末になりました

スーパーへ買い物に行くと、紀文の洗脳ソング(※褒め言葉です)が聞こえてくる時期になって、ようやく年末を感じさせられます。
直前までクリスマス商戦をやっていて、26日からサッと年末年始モードに切り替えられるのは、さすがです。
まぁ、正月も3日をすぎれば、次はさっさと節分モードに入るんでしょうけどね。

2016年は、あっという間に過ぎた気がします。まだ2016という数字になれていないまま、もう2017年を迎えてしまうことになるとは。
・・・ってのは、前にも書いたか。

2016年は色々ありました。ってか、色々ありすぎました。思いつく限りでも・・・、
芸能関係ではゲス・ベッキーにSMAPにパーフェクトヒューマンにPPAP。
ブラジルではリオ五輪が行われました。個人的に一番印象に残っているのは、吉田沙保里選手ですね。
他にも、電通のニュースだとか、カジノ法だとか、マイナス金利だとか、おとなり韓国の大統領の件だとか。
清原選手に、歌手のASKAに、シャープの買収に、熊本の大地震に、東京都知事問題に、ブレグジット、トランプ旋風。

僕の中でけっこう上位に来るのは、ポケモンGO、マリオRUN、シン・ゴジラ、君の名は。、こち亀終了、天皇陛下の生前退位 ・・・あたりですね。

この他、今年の大ニュースの記事を拾っていたら、「エレン先生フィーバー」「パナマ文章」「水素水フィーバー」「北海道置き去り男児」「PCデポ」「GalaxyNote7炎上」「博多陥没」なんてのもでてきました。色々ありすぎて、だんだん印象が薄くなってきています。これらは全部、今年のことだったですね。

2017年は・・・、とりあえず「ドラクエ11」が無事に発売されることを祈りたいですね。
それから、PSVitaで3月16日(木)に発売されるゲームも、今度こそ無事に発売して欲しいなぁ。

それでは皆様、良いお年を。


posted by ayacy at 00:00 | Comment(0) | TrackBack(0) | 日記

2016年12月30日

「改行コード変換Lite」(ver.2.01.08)更新内容(更新目的)のについて

昨日の件を受けて、「改行コード変換Lite」を更新(ver.2.01.08)しました。

昨日のブログやTwitterの方でも述べましたが、「Windows 10のアップデートで環境変数COMSPECの値がPowerShellに変わる」のではなくて、「環境変数COMSPECの値をPowerShellに変えるテクニックを紹介しているサイトがあって、そのテクニックを使っているPC環境では本ツールがうまく動作しなくなることの通知 or 回避」が目的です。

そして本来であれば、そのような標準外の環境変更を行っている状態で、本ツールが使用できなくなることは、作者的にはユーザーの「自業自得」と突っぱねて処理してしまっても差し支えない・・・はずではありますが、残念ながら、

  • 本ツールのヘルプやドキュメントに、コマンド プロンプト(CMD.EXE)に依存した動作をしていることが明記されていない。
  • うまく動作しない場合に、COMSPECの値を変えていることが原因であることがわからない。
  • 最近のユーザーは、ツールがうまく動作しない場合、作者へ申告するのではなく、SNSや2chの上へ、ツールや作者への悪口を書き込むだけで済ませてしまう人がおり、作者が状況を改善する機会を設けることができない/悪評が広まるだけになる。

といった状況が存在します。よって、これらへの対処が、主な更新理由となります。


[※]コマンド プロンプトに依存した動作について詳細

 本ツールの製作にあたり、作者が面倒くさがり屋なので、結果表示後の一時停止と、複数ファイル処理のために、コマンド プロンプトの内部コマンド「PAUSE」と「FOR」を利用しながら子プログラムを呼んでいます。そして、コマンド プロンプトを呼ぶために、環境変数COMSPECを利用しています。


ちなみにPowerShellでは、コマンドプロンプトでの類似コマンドへのエイリアスを準備する程度の互換しかありません。command.comとCMD.EXEの間のような、高い互換性は保たれていません。PAUSEコマンドは存在しませんし、FORコマンドは存在するものの全く異なる書式になっています。

おそらく、マイクロソフト社自身が、環境変数COMSPECをPowerShellに置き換えるとしたら、PowerShell-CMD.EXE間の高い互換性を確保してからでないと、世界中のシステムエンジニア達が大爆発を起こしそうですね。そう簡単には実施されないと考えています。


posted by ayacy at 02:16 | Comment(0) | TrackBack(0) | フリーソフト

2016年12月29日

環境変数COMSPECとコマンドラインシェルとPowerShell

12月12日に、コマンドプロンプトが無くなるという話題が出てきて一時騒然という話題を出しました。このときは、コマンドプロンプトが無くなるわけではなく、デフォルトのコマンドラインシェルがPowerShellに置き換わるらしいという話で落ち着いたことを書きました。

おそらく、スタートメニューからのリンクが「コマンド プロンプト(CMD.EXE)」から「パワーシェル(PowerShell.exe)」に変わるとか、環境変数COMSPECがPowerShell.exeへのパスに変わるのか…といった予想を書きました。

最近のInsider Previewを試した人の話によると、スタートボタンを右クリック or Windows+Xキーを押したときに表示される「コマンドプロンプト」へのリンクは「PowerShell」に変更になったが、環境変数COMSPECは依然としてCMD.EXEのままであったとのことです。

なお、これを変更するための設定は「タスクバー」の設定内に、現バージョンでもすでに準備されており、それのデフォルトが「PowerShell」側に置き換わっただけというだけのこと.
tskbar_cmd.png


というわけで、CMD.EXEを利用するプログラムも書いたことがあるプログラマとしては一安心だったのですが、これを調べる過程で、ちょっと怖いテクニックを紹介しているページがあって慌てています。

どこに恐怖したかというと、環境変数COMSPECをPowerShellに変更するというテクニックを紹介しているところですね。
これをやっている人が世の中にどれだけいるか、わからないけど、少なくともこれを実践している人がいると、当サイトで作っているソフトウェアのうち、環境変数COMSPEC経由でコマンドプロンプトを呼び、内部コマンドを使用しているものは、うまく動作しなくなるということ。

例えば、「改行コード変換Lite」は、各機能がGUIプログラムとは独立に子プログラムとして作られており、GUIプログラムはCMD.EXE用のコマンドラインを生成して子プログラムを実行する仕組みになっています。

このとき、一時停止には内部コマンドPAUSEを使っているし、複数ファイル処理するときには内部コマンドFORを使っています。
PowerShellにPAUSEはありませんし、FORの書式は全く違うものになっていますから、このままでは「改行コード変換Lite」は動作しなくなってしまいます。

環境変数COMSPECをPowerShellに変更するテクニックを実践している人は「改行コード変換Lite」が使えないことになってしまいます。
まぁ、そんな特異なことをしている人は自業自得だ・・・と言ってしまえばソレまでなのですが、うまく動作しない原因が環境変数COMSPECをPowerShellに変更するテクニックを実践しているためだと気づける人の方が希だと思いますので、それに気づかせるための手立てを準備するか、あるいは解決策を準備する必要があるかもしれません。

(作者にクレームが来れば気づかせて上げることもできるかもしれませんが、昨今では作者にクレームを入れるのではなく、2chやTwitter上で騒ぎ立てるだけ騒ぎ立ててオシマイで解決せず、作者だけが悪者になっているケースもあったりしますから、慎重に考えなければなりません)

例えば、COMSPEC内にCOMMAND.COMでもなく、CMD.EXEでもない文字列が入っていたら・・・、あるいはPowerShell.exeのような文字列が入っていたら起動時に警告メッセージを出力するとか。

あるいは、デフォルトではコマンドラインシェルを環境変数COMSPEC依存とするが、設定変更により自由にコマンドラインシェルを選べるようにする(C:\Windows\System32\Cmd.exeを直指定できるようにする)とか。

一般的に、こういったプログラムを書くときは、環境変数経由でファイル名を指定してやるのがキレイなことで、逆に直指定は汚いことであるというのが共通理解かと思うのですが、環境変数COMSPECに依存するとこんな落とし穴にハマってしまうとは、プログラムを書いていたときには全く気づきませんでした…。


続きを読む
posted by ayacy at 09:32 | Comment(0) | TrackBack(0) | PC