私事ですが、私のデスクトップとノートパソコンは、どちらもNTPで時計合わせができません。
しかも、ついこないだできなくなった、というレベルではなく、最初からできません。

ノートパソコンは4年前に購入したので、かれこれ4年近く時計合わせできていない、ということになります。
4年間も放置していた、というのは、要するにちょっとぐらい、具体的には8秒くらい遅れていても何も困らないということを意味するわけですが、この度、諸事情により重い腰を上げることになりました。

タイトルにもありますが、NTPを使う方法はあきらめました。おそらくルーターが悪さをしており、環境によっては手の出しようがありません。
もっと手軽で環境を選ばない解決策を……ということで、誰もが日常的に使っているHTTPを使っちゃおう、というお話です。

動機

私は「電撃小説大賞の選考通過作品のリスト」をよく見ます。

自分がその回に応募していようがいまいが、何度も見ます。これは単純に「通過作品のタイトルと作者」だけが列挙されているだけのリストですが、有象無象十人十色の楽しいラインナップであると同時に、――ああ、この中から大賞をゲットする人間がおそらく出るのだ、今年もこの中から――ああ、もう電撃文庫は「大賞:該当者なし」なんてメッセージを出せるようなレーベルではなくなってしまったのだ――そんな微妙な情感が脳内を去来する、電撃文庫の過去と今と将来に思いを馳せることのできる、そんなタイム・リープ的エンタテイメントのあるページなのです。

それはさておきこのリスト、同じ作者名で固まって載っているかと思えば、分散して載っている部分もあります。
このことから、あいうえお順やランダム順などではなく、単に「応募順」で掲載されていることが想像できます。

つまり、「締切のギリギリに応募すれば、選考を通過した際には『江嵜追風』という名前をリストの一番最後に載せることができる」はずです。

リストの最後尾のこの注目度の高さ!
リストの最後尾のこの注目度の高さ!

もちろん、こんなので注目を集めたところで、受賞作の選定には何ら影響しません。
角埜先生が第22回において大賞を受賞したことと、リストの最後に載っていることは全く関係のない話です。
しかし本当に何の意味もないかといえば、こと第25回においてはそうでもなくなってしまいました。

ワナビの皆さんは、第25回電撃大賞において「読者賞」という賞が創設されたのをご存知でしょう。

第25回を迎える「電撃大賞」では、記念企画として「読者賞」を実施!
小説・イラスト・コミック部門の各編集部が選出した作品から、
ユーザーのみなさんが「これは!」と思う作品に投票していただく企画です。
各部門で最も投票数が多い作品は、文庫化や雑誌掲載などが確約されます。

―― AMW|電撃大賞(小説・イラスト・コミック公募企画)

一番最後というのは、一番最初と同じぐらいに目立ちます。
そうなると、見た人が「なんだこいつ?」と名前で検索する可能性が増します。そうすれば当サイトが検索結果に表示され、深層心理的に私の名前が認知されることになります。もし読者賞が大いにバズって常設の賞になった場合、第26回に私の名前がリストの最後に載り、かつノミネートされれば「あーコイツ、リストの最後だったんで名前だけは覚えてる、まあどれも似たり寄ったりでつまらないけどコイツにしとくか」というような流れになり、私への投票行動が起こるであろう、という算段です。つまり、ギリギリに応募すれば読者賞を受賞する確率が上がります。

しかし、ここで時計がガッチリ合わせていないと「一番最後に載るために4月10日23時59分59秒の数秒手前でWeb応募のボタンを押そうとタイミングを計っていたら8.8秒も遅れていて来年にお流れになった」という悲劇に見舞われる可能性もあります。まさにハイリスクハイリターンであり、やるなら万全の状態で臨まねばなりません。さもないと、またひとつ年を取ることになります。

そんなわけで、来年4月10日の夜までに、ガッチリと時計を合わせないといけないという状況が生まれました。

方法

それでは本題の、HTTPでWindows 10の時計を合わせる方法です。

具体的には、Windows PowerShellで、HTTPで時刻を取得できるURLにアクセスし、その時刻に時計を合わせる、という方法になります。

そういう機能を持つソフトウェアもあるようですが、今回の方法のほうが最初からWindows 10に入っている機能だけで実現できるのでシンプルです。
フリーソフトの方が手軽だ、と思う向きもあるかもしれませんが、もし読者賞にノミネートされたらもっと面倒なSNS対策、例えばライバルを通報して一人残さず凍結ファンを増やすための地道な作業が待ち受けているわけで、それを思えば時計を合わせる環境づくりなんて面倒のうちにも入りません。10分で作れます。

1. PowerShellのスクリプトを用意する

HTTP経由でのNTP時刻合わせ(PowerShell利用)
https://qiita.com/suitap/items/e4726ef827499e99caa9

こちらのページのスクリプトを拝借して、メモ帳にコピペし、「名前を付けて保存」します。
ファイル名はntptime.ps1に。文字コードはうっかりUTF-8を選択しそうになりますが、「ANSI」(Shift_JIS)のままで大丈夫です。
スクリプトは以下に引用。

# 管理者権限で実行すること
$ntpdatestring = (new-object System.Net.WebClient).DownloadString("http://ntp-a1.nict.go.jp/cgi-bin/time").Replace(" JST", " +0900").Trim()
$datetime = [DateTime]::ParseExact($ntpdatestring, "ddd MMM dd HH:mm:ss yyyy zzzz", [Globalization.CultureInfo]::CreateSpecificCulture("en-US"))

set-date $datetime
いつの間にかデフォルトのフォントが游ゴシックになったメモ帳さん
いつの間にかデフォルトのフォントが游ゴシックになったメモ帳さん

なお、スクリプトからアクセスされている「http://ntp-a1.nict.go.jp/cgi-bin/time」は、実際にブラウザーでアクセスしてみると、どういうページかがわかります。

2. スクリプトを実行するためのショートカットを作成する

おそらく下のようなアイコンが出てきます。

いかにもダブルクリックすると実行できそうなアイコンなので、どきどきしながらダブルクリックしてみるわけですが、それだけでは実行されません。
そこで以下の情報。

Powershellを楽に実行してもらうには
https://qiita.com/tomoko523/items/df8e384d32a377381ef9

ps1ファイルをPowerShellで実行する方法が紹介されています。
おそらく「ダブルクリックで実行してもらう」の「ショートカット作成編」が一番ラクです。
今回は(スクリプトのコメントに書いてある通り)管理者権限で実行する必要があるので、以下のような感じ。

  1. ntptime.ps1をAltキーを押しながらドラッグアンドドロップして、ショートカットを作成
  2. ショートカットを右クリックして、プロパティ→ショートカット→「リンク先」を以下のように変更
    powershell -ExecutionPolicy RemoteSigned -File もともと入力してあったファイル名


    ※もともと C:\Users\User\Desktop\ntptime.ps1 と入力してあった場合は
    powershell -ExecutionPolicy RemoteSigned -File C:\Users\User\Desktop\ntptime.ps1となる

  3. 右下の「詳細設定」ボタンをクリックして、「管理者権限として実行」にチェック
  4. 好きな名前に変更
  5. ショートカットをダブルクリックすると時計合わせが実行される

管理者権限で実行されるので、ユーザーアカウント制御を有効にしていると「許可しますか?」というダイアログが出ます。この場合は、「はい」をクリック。
あとは黒い画面が一瞬~数秒出て、自動で消えたら処理終了です。

3. 実際に時計が合ったかどうか確認する

あまりにもあっさり終わってしまうので、実際に時計が合っているか確かめたくなるわけですが、例えば以下のサービス。

Time.is
https://time.is/ja/

シンプルに時計を表示してくれるのですが、原子時計と同期しているらしいです。
PCの時計がどれだけ進んでいるか・遅れているかも表示してくれます。

ぴったり
ぴったり

ぴったり合っている場合は「ちょうどぴったり」と表示されますが、大抵は「0.x秒遅れています」と表示されるはずです。
これは要するに、誰かに「今何時何分何秒何ミリ秒?」と聞いて、答えてもらった時にはもうそのミリ秒ではない、というのと同じです。
つまり、「ちょうどぴったり」と表示された場合は、それはむしろ、間違いなくぴったりではない、ということ意味します。

ぴったりとは何なのか――そんな哲学的疑問を残して当エントリの本編を終わります。

補足1: スタートアップに登録するとどうなるんだろう?

スタートアップに登録すれば、毎回起動時に自動で時計合わせしてくれる気もしますが、おそらく「そろそろ起動したかな」と戻ってきたらユーザーアカウント制御のダイアログが出たままになっていて微妙にがっかりすることになると思うので、それよりかは好きなタイミングで心ゆくまで実行した方がいいような気もします。

最初に書いた通り、パソコンの時計が8秒くらい遅れていたところで、人生には何の影響もありません。
1秒以上遅れてはならないという状況、まさにここぞというところで実行するのがベストでしょう。4月10日とか。

補足2:「読者賞」に対する私の本音

上記は4月における私のツイートです。
9月現在においては「まあ好きにすればいいけど、ああ、俺らの憧れの電撃小説大賞がこんな企画に手を出すなんて……」といったところ。

まあ人によっては「別に何やったっていいじゃないか、お前は何と戦っているんだ?」とツッコみたくなるところでしょうが、何ていうんだろう、「最終選考にも残らなかったボツ作を読者に拾い上げさせて受賞作にする」的なスタンスを取り入れるのはやっぱり電撃小説大賞には似つかわしくないと勝手に思っており、「みんなで『おもしろい』を決めよう!」というのが時代の要請・売るための方策であったとしても、最後までそういうのには迎合せずにいてほしい、と思っていた、ということなのです。電撃小説大賞に原稿を送る人の動機はそれぞれでしょうが、やっぱり平たく言えば「電撃小説大賞にお墨付きをもらいたい」という人が多いんじゃないだろうか。もっと賞を獲りやすい公募や企画はあるだろうし。そういう人にとって読者賞は電撃小説大賞であって電撃小説大賞ではない、本当に無用の長物というか、そんな中途半端な賞とか肩書を貰うくらいなら書き直して次回また送るわ、と普通に考えそうな気がする。私だけだろうか?

あんまりネガティブなことを言いまくるのももうやめようと思いますが、ワナビ的には読者賞なるものを創設するよりかは「水木しげ子さん」みたいな20回記念特別賞みたいなのをやってほしかったなぁ、という感じです。これはほら、「特別賞」とはいえ最後は選考委員にちゃんと選ばれて箔がついてるじゃないですか。