ホーム » 2018 » 3月

月別アーカイブ: 3月 2018

24日目 そもそもなぜPython?

そもそも、何故Pythonなのか?

一昨年だったか、仕事場の後輩に誘われたのがきっかけだ。みんな時間がなくて頓挫したのだが、iOSでも動かせるPuthonistaというアプリを発見したり、pipやpyenvの概念を理解したりして、有益な時間だった。

その後、時間がなくなり、Pythonはお休みしたが、今年になり、まあ、もう少しやってみるか、と思い再開。

AppleWatchを使い始めてから、日の出日の入り時間に関心が向いてしまい、それをPythonで検証してみよう、というのが、このプロジェクトの始まり、というわけ。

最初の目標だったグラフも書けてしまい、Pythonで様々なことができそう。

構成管理とか、構造とか、まだやることはあるのでしばらく継続。基本的は営業日に更新する。

23日目 なやみ

現在悩んでいるのは、プログラムの構造だ。どのような粒度でモジュールを分けるのか。あるいは、モジュールないでは、どのような粒度でdefで区切るのか。いまいちよくわからない。

今の書き方は、COBOLのような書き方になっている。

これじゃあねえ、という感じだ。

22日目 Singaporeは? Osloは?

シンガポールの日の出、日の入りの前日差を確認してみた。

なんと、早くなったり、おそくなったり。

次にオスロ。3月頃に極大な差違がでる。これはどうやらサマータイムを導入しているから、だ。うーむ、どうやって処理すべきか。

UCTに変換するか。だが、そうすると日付が変わり、差違が正しく表示されないかもしれない。次の課題だ。日付処理に関する次の課題だ。

21日目 グラフをリファイン

方々調べて、以下のような記載としてみた。

  • figureでグラフのサイズを変更する。
  • subplotで、figure内に配置するグラフ数、レイアウト、位置を指定。
  • graphDateには日付を設定してみた。

結果は以下の通り。上段が日の出の前日差、下段が日の入りの前日差。先日触れた疑問点が可視化された。

日の出、日の入りそれぞれ、春分と秋分付近の前日差の増減が相似形になっていない。

地球の自転と公転が以下の結果を生じさせているんだと思う。おそらくは、公転方向と時点方向の問題と推察。継続調査。

20日目 グラフが書けた。

そうか。この命令文「plt.show()」が足らなかった。

plt.show() を使うとグラフウィンドウが表示された。

しかし、365本のグラフを引くのは今日のところはできない。

いろいろと調整した結果、30本ひくのがやっと。

横長の美しいグラフは引けるのだろうか?

19日目棒グラフを書く

棒グラフを書くことにした。

Metaplotlibを使ってみる

barというメソッドが、棒グラフを書くメソッド。

graphDate と言う配列には、シーケンスを設定した。

sunriseTableには、前日差を格納した。

しかし、何も起きない、ということで、時間切れだ。

18日目 日の出時刻、日の入り時刻の前日差を配列に格納する

日の出時刻、日の入り時刻の前日差を配列に格納しようと考えた。二次元配列になる。

日付、日の出時刻の前日差、日の入り時刻の前日差、という3要素を1年間分格納する。

配列の宣言はやり方はさまざまなのだそうだが、以下のようにするようだ。

以下のような配列ができあがった。2日分だが、これが365日分あるイメージ。

17日目 1年間の日の出、日の入り時間のテーブルを作る

日の出日の入りの1年間分のテーブルを作ってみて、前日差を観察してみた。

ほとんど小学生の自由研究の類いだ。おそらくは昨今の小学生であれば、低学年でもこの程度のPythonはあやつれるのだろう。

大人よりも時間をたっぷりもった小学生がうらやましい。

ちなみに、わたしは文系で高校数学の素養はまったくない。だが、SFが好きで、高校の地学は全校トップ(といっても選択者は10人程度だったはず)だった。

3月の日の出と日の入りの時間

日の出は86秒ずつ早くなる。日の入りは50秒程度で遅くなる

9月の日の出と日の入りの時間。

日の出は45秒程度で遅くなる。日の入りは90秒弱で早くなる。

1. 日の出と日の入りの前日差は、春分が最大86秒だが、秋分では最大89秒で不均等である。

2. 春分では日の出の前日差(86秒)のほうが、日の入りの前日差(51秒)より大きいが、秋分では日の入りの前日差(89秒)のほうが日の出の前日差(46秒)より大きい。

3. (前日差の揺らぎは、秒未満の差違と推察される)

「秋の日はつるべ落とし」といわれるが、「春の日はどんどん早くなる」という類いの慣用句は有名ではなさそうだ。秋の日の入りの時刻は加速度的に早い。だから「秋の日はつるべ落とし」という慣用句が生まれたのだろう。

次の謎の見えるかは、経年で日の出時間は変化するのか、である。

地球の公転がとまらないか、不安で仕方がない。

では。

16日目 1年間の日の出時間テーブルを作る

日の出時間の演算は、(あまりやりたくなかったが)うまくできないので、秒単位の数値型に置き換え、計算することにした。エクセルで計算するならこうするだろうから、Python的な面白味はない。だが、仕方がない。

また、このやり方は、日の出日の入りが夜半を超えるケースがあるとすれば無効となる。白夜など北極圏、南極圏はどうすれば良いのかという課題。

とはいえ、取り掛かろう。

日付時間型を入力に秒に変換する関数はこちら。

で、日の出テーブルを二年間分作ってみる。

テーブルを回す中で、当日と前日の日の出時刻の差分を秒単位で算出する。

以下のようなテーブルができた。右端は、前日と当日の日の出時刻の差分。3月19日は昨日と比べて86秒日の出時刻が早くなっている。

だが、おかしい。半年後の9月は、47秒ほどしか遅くならない。

遅くなっていく時間、最大は60秒ほど。地球の公転軌道は楕円ということと関係しているのだろうか? 太陽の位置が楕円中心より少しずれている、とか。

むしろ11月にピーク。なぜ? さらに、揺らいでいる。Astralの問題?

さしあたり今日はここまで。

15日目 時刻の計算

以下のコードを書いて、t とsの差分である、1分1秒が表示されないか、と想った。

しかしNGだ。

エポック時間に変換して秒単位で計算する、と言うことなんだとおもう。次の課題。

ちなみに、やっていることは本当にプリミティブなことなんだが、エクセルであろうが、なんであろうが起こる問題だ。

時刻の計算は簡単そうでありながら、実は難しいもの、ということがわかっているので、地道にやろうと思う。