閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

魔術師オーフェン第四部

存在は結構前から知っていたのだけど、元のシリーズを読んでいたのが高校生の頃でその時点で10年以上経っていたのでなかなか食指が伸びなかったのですが最近なんとなくポチって一気読みしました。元々富士見ファンタジア文庫でやっていたのが一部と二部で、新シリーズが三部を飛ばして四部という扱いになっています。二部の20年後で登場人物なども続けて登場するので元シリーズを読んでいることが前提。主人公はタイトル通りオーフェンのままだけど、オーフェンの子供(!)など新しい世代のキャラクターも主人公格となっている。

二部まではリアルタイムで読んでいたけど、完結したのが2003年らしいので実に17年振り。色々忘れていることも多かったけど、読んでいるうちに思い出してきて楽しめました。二部に入ってから急に文体変わったり暗い話になっていた覚えがあるけど、四部はまぁまぁ落ち着いていて読みやすかったです(?)。魔術を発展させた「魔王術」というものが出てくるけどこれがまたかっこよくて。詠唱を「偽典構成」(儀典じゃなくて偽典)と呼んでいるとかいちいちネーミングが素晴らしいんですよねぇ。

ともあれマジクおじさんには幸せになってほしい……。

【合本版 第四部】魔術士オーフェンはぐれ旅 (TOブックスラノベ)

【合本版 第四部】魔術士オーフェンはぐれ旅 (TOブックスラノベ)

  • 作者:秋田禎信
  • 出版社/メーカー: TOブックス
  • 発売日: 2018/07/06
  • メディア: Kindle

一部がちょうどアニメ化もしているけど、なんか懐かしいものを見ているようでこれもこれで楽しい。尺が厳しそうな雰囲気はあるけども。

ハイコンテクストなデザインはそれ自体がバリアなのだろうか

全盲の新入社員はサイボウズに出社できるのか?

このnoteを見て見出しのようなことを少し思った。とてもいい記事なのだけど、かっこいいオフィスデザインが人によっては障害になり得るという点で、ちょっとそんな連想をしたのでした。

卑近な例だとコンビニのコーヒーメーカーがテプラだらけにされるというネタがあるけど、あれも普通の人にっては洗練されすぎたデザインはバリアとなり、使いにくくなってしまうのかもしれない。逆に言えばバリアフリーなデザインはダサい、のか? ダサいっていっても主観的な問題なので我々の価値観の方を変えてしまえば済みそうではあるけども。

城にエレベーターを頑なに導入したがらない政治家とか、バリアを敢えて設けたがる節があるのもその方がかっこいいと思われているのでしょうか。オタク同士の会話は楽、みたいなのもコンテクストを共有している者同士では話が速くなるということで、実際そういう会話(ネットスラング使いまくりとか)は心地良いこともある。しかし、少し離れたところから見ればそれもバリアなんですよね。

まあ結局はバランスということになるのでしょうが、自分は分かっている側だから良いとならずに歩み寄れるゆとりは持っておきたいものです。

血液検査の結果を眺めてみる

血液検査の結果も2015年から記録を続け、そこそこ貯まってきたので年毎にプロットしたら何か見えるかな?と思って描いてみた。今回はPythonを使いました。

色々計っているけど関心があるのは血中リン濃度くらいなので、横軸は月、縦軸はリンの値のプロットを描いています。他にカリウムなんかも大事なんだけど、これは上がりすぎると死ぬってだけでたまに外れ値があってもまぁ生きていればいいやという感じなのでスルーです。リンは高い状態が長く続くとじわじわ体に悪影響が出てくるタイプのものなので、よく見ています。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime

# プロットの設定
plt.figure(figsize=(20,5))

def create_plot(dd, pp, label, color):
    norm_dates = [datetime.datetime(2020, d.month, d.day) for d in dd]
    plt.plot(norm_dates, pp, label=label, color=color)

df = pd.read_csv('./summary.csv', sep=',',
    index_col='日付',
    date_parser=lambda dates: pd.datetime.strptime(dates, '%Y-%m-%d'),
    usecols=['日付', '無機リン(P)'])
dates = df.index
p = df['無機リン(P)']

# プロット作成
colors = ['#0000FF', '#AAAA00', '#00FF00', '#009999', '#888888']
for i in range(5):
    y = 2019-i
    start = f'{y}-1-1'
    stop = f'{y}-12-31'
    create_plot(dates[(dates > start) & (dates < stop)], p[(dates > start) & (dates < stop)], f'{y}', colors[i])

# リン5.5未満が望ましい
plt.fill([datetime.datetime(2020,1,1), datetime.datetime(2020,12,31), datetime.datetime(2020,12,31), datetime.datetime(2020,1,1)], [5.5, 5.5, 7, 7], color='#FF000022')

# オプション
plt.legend(loc=1)
ticks = [datetime.datetime(2020, m+1, 15) for m in range(12)]
plt.xticks(ticks, [m.strftime('%m') for m in ticks])
plt.xlim('2020-01-01', '2020-12-31')
plt.ylim(3, 7)

f:id:wata_d:20200124145848p:plain

……わからん! 点数を減らすために平均を取ってみる。

def create_plot(dd, pp, label, color):
    norm_dates = [datetime.datetime(2020, d.month, d.day) for d in dd]
    # 月ごとの平均をプロットする
    mean = pp.groupby(dd.month).mean().values
    start = 13 - len(mean)
    x = [datetime.datetime(2020,i,15) for i in range(start, start+len(mean))]
    plt.plot(x, mean, label=label, color=color)

    # 他に pp.rolling(4).mean() で移動平均を取るとか、近似曲線もあるけど略

f:id:wata_d:20200124145859p:plain

2018年はわりとちゃんとやってたのに、去年(2019年)はだらしないな。なんとなくだけど、連休がある月に上がる傾向にあるように思える。前々から「食べなさすぎてもリンは上がるのでは」と考えているけど、自分は休日の方が食べないことの方が多いので関連付けたくなる。

この後statsmodelsとかも使って季節性とかも探ってみたかったけど、今のところうまくいっていないので没となっております。

集中力がない

おもむろにVisual Studioを起動するも、スプラッシュウィンドウが表示されている間にブラウザを前面に移動してしまい、そのままその日が終わる。

ブラウザ上にも未読のタブが複数開かれており、タブAを読んでいる最中にタブBに移動し、それを読み終える前にタブCに移ってしまう。なぜ。タブCを読んでいる間に横目に移るTweetDeckに流れてくる猫の動画に気を取られ、続けて出てきたURLをクリックしてさらにタブが増える。

最近の読書はもっぱらスマホ電子書籍スマホに届く通知は割と無視できるのだけど、なぜか会話シーンの途中で別のアプリ(Twitterとか)にシュッと移ってしまう。

紙の本だと通知もないしスワイプして別のアプリに移動したりもできないので、結構集中して読める。これも紙の利点でしょうか。まぁ、物理的なスペースがないしすぐになくすので、滅多に買わなくなってきてしまいましたが……。

だからなんだというわけでもない、オチのないエントリです。

最近のWindows 10には集中モードという通知を一時的にOFFにできる機能もあるみたいですが、通知は別にそれほど影響ないからなー。MacだとWriteRoomみたいな物書きにだけ集中できるアプリとか昔話題になっていた気がするけど、ネットもできないポメラとか、仕組みで解決できる部分もあったりするのかな。

エディタ自体を全画面表示にしてタスクバーを見えなくすれば少しは浮気しづらくなるだろうか?(VSCodeやVSならF11で全画面化でき、これが集中モードのトリガでもある)。プログラミングはどうしても最中に調べ物をするためにブラウザを開いてしまうので詰みそうだけど。

ヨドバシカメラの通販は+350円でクロネコヤマトを指定できる

一人暮らしで宅配ボックスもないので、注文時に配送業者にクロネコヤマトを指定して配送前に届くメールから配送先を近所のPUDOに変更というのをやっています。これで再配達もなく、帰宅ついでに受け取れて快適です。配送業者を指定できればネットで話題のデリバリーなんちゃらの問題もなくなって良いのではないでしょうか。

Amazonは注文時点でコンビニ受け取りを指定できたりするけど、そういうのが標準化してくれればもっと楽になるんですけどね。今後に期待です。

ヨドバシ.com - 配達会社の選択について

食事内容の記録をExcelからAccessで取るようにしてみる

2016年から食事内容を記録するようにしていたのだけど、思うところありそこに大雑把なカロリーやたんぱく質も書き込むようになり、ここまでやるならExcelよりAccessの方がいいのかな? と2020年分からAccess(accdb)にしてみた。

Excelでも、選択範囲内のセルの統計(合計とか平均)を取れるのでその日のカロリー合計とかもそれなりに簡単に見られるけど、AccessならSQLで一発だし、閲覧性はこの方が良いかも。しばらくこれで試してみたい。

f:id:wata_d:20200114212751p:plain

これが、

f:id:wata_d:20200114212820p:plain

こう。

記録はレコーディングダイエット…などではなく(むしろ体重は増やしたい)、血液検査の結果と比較するため。3年以上経ってもいまいち相関が取れないのだけど、今年こそコツを掴みたい。

Office 365 Soloには他にPubliserもついているけど、さすがにこれは使い道ないかなぁ…。

Fluent Assertionsのソースを少し読んでみた

先日のエントリに書いた例ですが、

Add(1, 2).Should().Be(3);
// => Expected Add(1, 2) to be 3, but found 2.

これ、 Add(1, 2) の部分どうやって取ってるんだろう、と思ってソース読んでみました。StackTraceでそこまで取れるのかなぁと思ったんですが、テストコードの実装(*.cs)を直接見ていたみたいです。

CallerIdentifierクラスのDetermineCallerIdentityメソッドが目的のメソッドですが、ここでStackTraceクラスを使ってソースファイルのパス、行番号を取ってきてそれを元にソースファイルからコードを読み込んでいるようです。

確かに手元にソースがある状態でなら、あらゆる情報が取れますね…。

別解として、PowerAssert.Netだとアサーションにラムダを渡すことでLambdaExpressionから処理内容を取り出しているものがありました。

using PowerAssert;

int Add(int x, int y) => 2;

[Test]
public void Test()
{
    PAssert.IsTrue(() => Add(1, 2) == 3);
}

実行結果:

System.Exception : IsTrue failed, expression was:

PowerAssertTests.ParserTest.Add(1, 2) == 3
                                . .     __
                                \ /     |
                                 |      False
                                 2

こちらはテストメソッドがIsTrueだけで覚える事が少なくてシンプルです(Throwsは割愛)。思想の差が面白いですね。