Kuzunoha-NEのブログ

プログラミングなどの勉強をしてます

インターネットにつなげると時間が自動で正確になるのです

インターネットにつなげると時間が正確になるのです

※追加:スマートフォンについて、時刻修正は基本的にNTPを使用していないのではないのでは?というご指摘をいただきましたので、後ほど記事を修正を行います。パソコンについての記載と読み替えていただければと思います。ごめんなさい。


 

ずいぶんご無沙汰しております。葛の葉です。

 

いつのまにか5月に突入しており、びっくりしております。時計をちゃんと見ていないと、日付ってわからなくなりますよね。ところで(?)、スマートフォンやパソコンをインターネットにつなげると、すぐに正確な時刻に修正されることをご存知でしょうか。

 

これって、実はすごいことだと思いませんか?ほんの10数年前までは、「117」の時報に電話をして、それに併せておかしくなった時計を手動で直していたのです。ですが、現在はインターネットに接続すれば、時間を確認することも、直すのも自動なのです

 

今回はスマートフォンやパソコンの時刻を正確に直す仕組みについて、書いていこうと思います。

 

  

「正確な時刻」を知っているNTPサーバーさんに聞いているわけです

 

すごーく簡単な話をしますと、ネットワークを介して、正確な時刻を知っているNTPサーバーさんと呼ばれるコンピューターに定期的に現在の時刻を確認しているからなんです。

 

ほんとそれだけ。

 

正確な時刻を知っているNTPサーバーさんに対してスマートフォンやパソコンが「いま日本の時間は何時なのん?」って聞いていまして、

NTPサーバーさんは「あー…日本だと…2018年のぉ…5月3日の水曜日でぇ…10時14

分23秒だねぇ」って言ってるだけなんです。

 

f:id:Kuzunoha-NE:20180522212556p:plain

 

それを聞いたスマートフォンやパソコンは「OK~じゃあ、その時間にするわ~」っていって、時刻の修正を行います。

 

こうやって、正確な時刻になっているわけなんですね。

 

 

ちょっとまてよ、どうしてNTPサーバーさんは正確な時刻を知っているのだろう?

 

 

NTPサーバーさんもまた聞きなわけです

 

NTPサーバーさんはどうして正確な時刻を知っているのだろう?そもそもNTPサーバーさんが知っている時刻って正確なのだろうか?適当な時間を言ってないだろうか?

 

実は、NTPサーバーさんが正確な時刻を知っているのは、NTPサーバーさんも別のNTPサーバーさんに時刻を聞いているのです。つまり、また聞きをしているのです。

 

NTPサーバーさんはインターネットに沢山いまして、階層構造になっております。上長だったり、ボスがいるみたいに思ってください。

 

NTPサーバーさんはボスのNTPサーバーさんに「親分、今の時間は何時ですかい?」と聞いて、ボスのNTPサーバーさんは「おう、今は何月何日の何時何分何秒だぜぃ」と教えています。そして、そのボスのNTPサーバーさんも、自分よりも上のボスのNTPサーバーさんから時刻を教えてもらっています。

 

なんてこった。また聞きのまた聞きを繰り返していくわけですね。

 

しかしそうなると、最後のボスのNTPサーバーさんは誰から「正確な時刻」を聞いているのだろう?

 

Stratum0と呼ばれるNTPサーバーさんのボス、つまりはトップ

 

先程、NTPサーバーさんは沢山いて、段階構造になっていると書いたと思います。その階層構造のことをStratum(ストラタム、ストレイタムとも)と呼びます。

 

トップのNTPサーバーさんのことをStratum1と呼び、その下流にいくにつれStratum2、3、4…と数字が増えていきます。先程のボスの例えで言えば、Stratum3のNTPサーバーさんのボスはStratum2に当たります。

 

f:id:Kuzunoha-NE:20180522212616p:plain

 

 

 Stratum1のNTPサーバーさんはStratum0に時刻を聞きます…このStratum0さんは何者かと言うと原子時計であったりGPS時計であったりするのです。

 

専門的なことはよくわからないですけど、原子時計GPS時計もかなり正確な時刻を刻むものらしいので、その時計から時間を聞いているのでStratum1のNTPサーバーさんは正確な時刻を知ることが出来ているわけなんですねぇ。

 

きちんとした情報源からまた聞きを繰り返してきて、最終的にスマートフォンやパソコンは正確な時刻を把握しているわけなんです。

 

鳥瞰的に考えてみよう

 

じゃあ最初からまた聞きなんかしないで、Stratum0にみんなが時間を聞けばいいじゃん!って思うかもしれませんが、そういうわけにもいかんのです。

 

世界中のパソコンやスマートフォンがStratum0にアクセスしてみたとしましょうか。

 

Stratum0さんはてんやわんやになります。所謂、ワンオペになっちゃいます。

 

だから、同じ役割をもつNTPサーバーさんを束に揃えて、それぞれに問い合わせをするようにしたわけなんですね。それがStratumという階層構造になるのです。

 

 

WinパソコンがどのNTPサーバーさんに時刻を聞いてるか確認しよう

 

今、自分のパソコンがどのStratumのNTPサーバーさんに時刻を聞いているか確認してみましょう。

 

コマンドプロンプトを立ち上げて

w32tm /query /peers

と入力し、エンターを押してみてください。

 

コマンドプロンプトの立ち上げ方はちょっと調べてみてください。)

 

f:id:Kuzunoha-NE:20180522212633j:plain

 

ピアが、現在、お使いのパソコンで時刻を聞いているNTPサーバーさんのアドレスです。このアドレスにあるコンピューターに時刻を確認しているわけですね。

 

階層が、Stratumになります。このtime.windows.comはStratum4に当たるようです。

 

時間が自動で修正されるってすごいことだ

 

NTPサーバーさんについて、簡単に説明しましたけど、何となくわかってもらえたでしょうか?本当はもう少し複雑なので、残りは君自身の眼で確かめてみてくれ!

 

インターネットに繋ぐことで自動化が出来ていることは他にもあるので、次回も同じような感じの記事を作りたいと思います。

Python3の仮想の実行環境をVirtualenvで作ってしまう

こんにちは葛の葉です。

python3でflaskを使ったWebアプリケーションの勉強を行おうと思っています。

ただ、私は「Django」という別のWebフレームワークをインストールしているため、新しく「flask」を導入するのは怖いと思っています。

そこで、Pythonの新しい実行環境を作るべく、仮想環境を立ち上げることにしました。その方法が「virtualenv」です。仮想環境を立ち上げれば、それぞれの仮想環境上でライブラリをインストールできますので、ライブラリ同士のいたずらが発生しなくなります。

  • もくじ
  • 実行環境

windows 10

python 3.6.3

Anaconda 1.6.5

  • virtualenvのインストール方法

pipインストールでいけます。

コマンドプロンプトを立ち上げて以下のコマンドを入力すればOKです。

pip install virtualenv
  • virtualenvを使って仮想環境を構築する

virtualenvで環境を構築しましょう。以下のコマンドを叩けば好きな名前の仮想環境が構築されます。

virtualenv fsk

※fskは好きな環境名を入れましょう

しばらくすると英文で完了したメッセージが出ますので、そうしたら完了になります。

  • virtualenvで構築した仮想環境を実行する。

virtualenvで構築した仮想環境はその直下に、先に入力した[fsk]ディレクトリが生成されています。 ※fskは先に入力した好きな環境名です。

[fsk]ディレクトリが作られて f:id:Kuzunoha-NE:20180522205530j:plain

[fsk]直下に[Scripts]があります f:id:Kuzunoha-NE:20180522205550j:plain

更にその直下に[Scripts]というディレクトリが作成されていますので、そこまで]コマンドプロンプト上で移動してください。

f:id:Kuzunoha-NE:20180522205705j:plain

cd fsk/Scripts

※fskは先に入力した好きな環境名です。

その状態でactivateコマンドを実行します。

activate

操作しているディレクトリの頭に(fsk)という文字が出ていれば成功です。 f:id:Kuzunoha-NE:20180522205719j:plain

  • 仮想環境から抜けるには

vituralenvで作成した仮想環境から抜ける場合はdeactivateを実行します。

deactivate

f:id:Kuzunoha-NE:20180522205730j:plain

  • おわりに

これを使ってpip installを使えばfsk環境で好きにライブラリを入れ放題になるはずです!!!!ちょっと遊んでみよう。

正直、そこらの参考書買うよりいいんじゃないかなっていうくらいオトクなUdemy

こんにちは

 

最近、Python3の勉強をしている葛の葉ともうします。

 

Python3にかぎらず、独学で何かを勉強するのはなんでも骨が折れると思います。私がいま、具体的にどんな方法で勉強しているかというとUdemyという動画配信サービスによるオンライン講習を使用しています。

 

 今回はそのUdemyについて書いていこうと思います。

 

 

Udemyの素晴らしいと思うところ

Udemyはオンラインで動画を見ることが出来る動画講座サイトです。基本的には英語圏の方が利用されているようでして、日本語のものはまだまだ少ないというのが現状です。(2018/2/18現在)

 

ですが、日本語の講師も沢山いますし、英語で人気の講座が日本語に翻訳されて配信されていたりします。もし勉強したいと思っている学問があるのであれば、とりあえず検索してみてはいかがでしょうか。

 

www.udemy.com

 

とにかく安い

Udemyは通常価格ですとお値段が結構するのですが、だいたいいつも割引セールを行っています。15,000円の動画が1,400円だったりするから驚愕です。しかも買い取り式なので、月額料金とかも掛からないんです。

 

Python3だと、本屋さんで参考書を買おうとすると同じ値段かそれ以上に掛かってしまいますが、Udemyならお釣りが来るくらいですね。いつもチェックしておいて、欲しい講座が安いときに買う、これがベストな方法な気がします。 

 

質問すると講師が教えてくれる

Udemyは講師の人に質問することが出来ます。同じ講座を受けている人がした質問なんかも覗くことが出来ます。なにか困ったこと、わからないことがあったら「Q&A」を覗いてみてください。もしかしたら、同じところで躓いている人がいるかもしれません。

 

講師の人がそれに答えてくれている場合もありますし、質問者が自分で解決しているケースもあります。質問者の人もどのように解決したか、ちゃんと記録として残してくれていますのでとてもありがたいです。自分がQ&Aに書くときは同じようにしましょう。

 

動画ならではの受講スタイル

Udemyは動画講座ですので、シークバーをいじれば重要なところをもう一度聞くことが出来ます。例えば、動画の通りにプログラミングを書いてみる、説明を聞く、一時停止して、自分のプログラミングコードを見直す、といったことが可能です。

 

また、再生速度も0.75倍に遅くしたり、逆に1.25倍に早めたりすることが出来ます。私がいつも見ている講座では、0.75倍にしています。講師の人の話の速度についていけないわけではないのですが、ゆっくりなほうが私に性に合っているようです。

 

講座に動画が編集、追加されているケースも

Udemyでは受講者がQ&Aを使って講師とやりとりすることが出来ます。その中で、講師が取り入れたいと思った内容のものや既にアップロードされている動画で編集したいと思った箇所については、追加や変更がなされていることもあります。

 

ですので、既に購入済みで見終わった動画も、もしかしたら追加されているものがあるかもしれませんし、内容で行き詰ったところも編集されてわかりやすくなっているかもしれません。動画の内容が常に最新になるように編成されているようです。

 

 

困ったところもやっぱりある

Udemyはとても勉強に向いていると思うのですが、反面、よくないなと思うところもあります。

 

音質にバラつきがある

Udemyは講座によって、音響面での質の差が、講師によってはっきりと出てきます。マイクの音質が悪かったりしますし、音量が低くて聞き取りにくい講師の人や、ツバを飲み込む音が聞こえる講師の人など様々です。収録環境が講師によって異なるところが原因と考えます。

 

講師の教え方にバラつきがある

様々な講師がいるUdemyですので、教え方も千差万別といったところでしょうか。人によっては随分と雑な教え方をする講師もいます。前述した編集機能を使ってちょくちょく変更がかかっていたりする人もいます。画面が切り替わったと思ったら直前の動作と違うコードが書かれていたりと困惑するところもあります。

 

そういったところを見極めるには、購入前に幾つかプレビュー動画を無料で見ることが出来ますので、事前によく見てから判断しましょう。本屋さんで立ち見するのと同じ感覚でしょうかね。

 

 

 動画だからわかるUdemy

Udemyについて、いいところとわるいところ、少し書いてみましたがいかがだったでしょうか。自分の学びたいと思っている講座があれば、Udemyを利用してみるというのも手ではないでしょうか。