久しぶりにバス献血してきた

十代のころから献血を続けています。特に学生の頃は献血ルームまで徒歩2分のアパートに住んでいたこともあって、月初めの土曜日は献血というかんじの生活をしていました(残念ながら、その献血ルームは今年3月に閉所となってしまいました……その地方唯一の血液センターだったのに……)。

東京で暮らすようになってからも時間を見つけては献血ルームに通っていましたが、あまり都合が合わなくなり年1~2回という頻度になってしまっています。

このCOVID-19の状況下で血液センターに出かけるのを自粛する人も多いのでしょう、今朝「すべての血液型の血液が足りません」というメールが届きました。前回の献血から十分な期間があいていましたし、近くで献血できるところがあればすぐにでも行こうと思ってはいました。そこで、さっそく日本赤十字社のページ献血車のスケジュールを調べたところ、ちょうど職場のそばに来ていたので、職場に置いてあるものを取りに行くついでに献血に行ってきました。

f:id:amarui:20200808172037j:plain
東京芸術センター前広場に来ていた献血車

ふだんは献血ルームに行くので、献血車での献血は久しぶりです。事前の血液検査は指先に針を刺すだけ(献血車では全血献血しかやらないのでこの方法で良いとのことです)になっていましたし、バス内部の仕組みなどもいろいろと変わっていました。

僕は両腕ともに献血の神に愛された血管を持っているので、いつも職員の方にうらやましがられたり褒められたりします。今日は400 mL全血献血でした。

東京都のCOVID-19データに指数関数をあてはめた

昨日、データが取って来れるようになりました。

marui.hatenablog.com

そこで、緊急事態宣言解除後の新規陽性者数について指数関数をあてはめてみました。

f:id:amarui:20200724125953p:plain

縦の破線が緊急事態宣言と解除の日*1、赤色の実線が7日間移動平均線で、緑色が指数関数フィットです。数日後まで外挿してあり、7日後は約450人となっています。

さらにこのペースのまま曲線を伸ばしてみると、21日後には1000人を超えるらしいことが計算できます。しかし、過去のデータに指数関数をあてはめて外挿してというのには、「得られたデータは正しい(操作されていない、集計方法に途中変更がない)」「このデータは指数関数のモデルから生じている」「過去に起きたことが未来もこのまま続く(誰も行動を変えない)」などという、本当にそうなるの?と思う点がいくつかあります。なので、占いみたいなものです。当たるも八卦当たらぬも八卦

*1:どちらも全国を対象としたもの。東京を含む都市部は1週間ほど早い4月7日に当初緊急事態宣言が発出されていました。参考:政府 2020年5月25日 緊急事態解除宣言(全国で解除)/新型コロナウイルス感染症特設サイト/とりネット

東京都のCOVID-19データを取ってくる(R版)

今日の東京都では366人の新規陽性者数が確認されましたね。今後どうなることやら。

catalog.data.metro.tokyo.lg.jp

統計を勉強している人は、生きているデータだとモチベーションが上がるし有用性もあるかもしれないから自分でもデータ分析してみよう、なんて考えるのではないでしょうか。すでに様々な人がプログラムを書いていると思いますが、遅ればせながら僕も東京都が公開しているデータを読み込んでグラフを書くプログラムを作ってみました。

# 東京都のサーバーからCSVを読み込む
dat_csv_url <- "https://stopcovid19.metro.tokyo.lg.jp/data/130001_tokyo_covid19_patients.csv"
dat <- read.csv(dat_csv_url, fileEncoding="UTF-8-BOM", header=TRUE, row.names=1)

# データのクリーニング
dat <- dat[, c(4, 7, 8, 9, 15)]
colnames(dat)<- c("公表日", "居住地", "年代", "性別", "退院済")
dat$公表日<- as.Date(dat$公表日, format="%Y-%m-%d")
dat$居住地 <- factor(dat$居住地)
dat$年代 <- factor(dat$年代)
dat[dat$年代=="'-",]$年代 <- "不明"   # 年代が '- となっているものを 不明 とする
dat$年代 <- ordered(dat$年代, levels=c("10歳未満", "10代", "20代", "30代", "40代",
                    "50代", "60代", "70代", "80代", "90代", "100歳以上", "不明"))
dat$性別 <- factor(dat$性別)
dat[dat$性別=="'-",]$性別 <- "不明"   # 性別が '- となっているものを 不明 とする
dat[dat$性別=="女",]$性別 <- "女性"   # 性別が 女 となっているものを 女性 とする
dat$性別 <- factor(dat$性別)
dat$退院済 <- factor(dat$退院済, levels=c(0, 1))
dat[is.na(dat$退院済),]$退院済 <- 0   # NAのデータは未退院(0)とする

以上でデータの整理ができました。データの概要を見るためにsummaryを使ってみます。

> summary(dat)
     公表日                    居住地          年代          性別      退院済  
 Min.   :2020-01-24               : 239   20代   :3096   女性  :4072   0:2868  
 1st Qu.:2020-04-16   湖南省長沙市:   1   30代   :2058   男性  :5974   1:7186  
 Median :2020-05-12   湖北省武漢市:   2   40代   :1381   調査中:   1           
 Mean   :2020-05-26   調査中      :  85   50代   :1146   不明  :   7           
 3rd Qu.:2020-07-11   都外        : 425   60代   : 725                         
 Max.   :2020-07-22   都内        :8965   70代   : 632                         
                      ―          : 337   (Other):1016     

居住地が空白になっているものとダッシュになっているものがありますが、不明にまとめてしまってしていいか分からないのでそのままにしています。

テレビなどでよく見る新規陽性者数の推移をプロットするのには以下のように、公表日ごとの人数を集計します。

# 新規陽性者数のグラフ
num.positive <- table(dat$公表日)
plot(num.positive, xlab="公表日", ylab="新規陽性者数")
grid()

ついでにN日間移動平均線を追加しましょう。以下ではN=7としています。

# N日間移動平均
npos <- as.data.frame(num.positive)
colnames(npos) <- c("公表日", "新規陽性者数")
N <- 7
npos$移動平均 <- filter(npos$新規陽性者数, rep(1,N)/N, sides=1)
lines(npos$公表日, npos$移動平均, col=2, lwd=2)

出てきたグラフは以下のようになりました(今日公開されているのは昨日までのデータなので366人の新規については入っていません)。CSVファイルで情報提供されていると、いろいろな人が試してみることができるのでいいですね。

f:id:amarui:20200723172059p:plain

Chromeのアプリ用URL

昔からabout:のようなちょっと秘密のURLというのはありました。

gigazine.net

このところChromeの使用頻度が上がったので、Chromeの隠し機能をオンオフできるchrome://flagsなどを知りました。そして、そのちょっと秘密のURLの一覧表にアクセスできるというURL(chrome://chrome-urls)があるというのも知りました。

news.mynavi.jp

面白いのもあるけど、chrome://newtabとか何に使うんだろう……?(ウェブページからは実行できず、アドレスバーに入力する必要があるみたいなので、手動でタブを開いてそこに記入するとそのタブが新しくできたものとされる、という何を言っているのか分からない状況なのです。)

WWDC 2020で発表されたAirPods Proの3Dオーディオ

今回のWWDC 2020では、MacIntelチップからARMチップへの以降が発表されて盛り上がりました。しかし個人的に最も嬉しかったのはAirPods Proのアップデートでした。以下のビデオの42分25秒付近から始まる3分間です(ボタンを押すと42分25秒から再生されると思います)。

発表されたのは、デバイス間の自動切り替え(automatic switching)と空間オーディオ(spatial audio)の2点です。前者も便利といえば便利ですが、後者の空間オーディオがすごいのです。AirPods Proは左右独立のBluetooth接続イヤホンなはずなのに、iPhoneiPadとの相対的なヘッドトラッキングを行って適切なHRTFを畳み込むことで5.1 ch、7.1 ch、Dolby Atmosにも対応するとのことです。AirPodsを買う気がなかったため、この発表を見るまではAirPods Proの中にジャイロセンサーや加速度センサーが入っているとも気づいていませんでした(さっき見たら仕様表に書いてあった……)。

以下の記事によると、開発者はAirPods ProのモーショントラッキングAPI(Core Motion)が使えるそうで、どんなアプリが出てくるかとても楽しみです。

www.phileweb.com

このアップデートはiOS 14にあわせて行われる予定です。昔から使っているソフトがあるために僕はiPhone XsiOS 12のまま使い続けてきたのですが、この発表を受けて(別件でAirPods Proをじっくり試聴できる機会もあって性能にも驚き)思わずAirPods Proを購入してしまいました。ちゃんと設定して使うためにiPhoneiOS 13にアップデートしてしまい、今ではiOS 14を心待ちにしています。

自作PCを組み立てた

はじめに

一部で話題になっている5万円台PCや7万円台PCを参考にしつつPCを組んでみました。そもそも以下の記事が発端なんですが、その時期にあわせてメインマシンの買い換え時期がそろそろなことと、在宅勤務の時間が長くなったのに自宅でノート機を使っているのはなぁ、数年前のハイエンド・ノートPCよりも最近のエントリー・デスクトップのほうが性能は高いだろう、などの考えが交錯して「自作作業用に安価なデスクトップを作れば良い」という考えになりました。ここ20年くらいはデスクトップ機を持っていなかったので*1、最近はどんなかんじになっているのかという好奇心もありました。デスクトップ機でもノート機でも部品の追加や交換は平気でやっていたんですが、自作は初めてです*2

www.itmedia.co.jp

この記事を参考にして、Micro ATX規格のマザーボードRyzen 5 1600AFを中心にしてAMDのCPUとGPUで組んでいく予定だったんですが、1600AFが入手困難な状況が続いていたことと、Intel Core i5 10400も頑張っているよという意見も聞いたので、まずはGPU内蔵の10400にすることにしました。第10世代からはi5でもスレッド数はコア数の2倍になってますし、GPUが足りなくなったら追加すればいいですし。

部品構成

Windows 10 Homeのライセンスも新規購入しないといけないので、目標としては本体のみで5万円台に抑えたい(ディスプレイ、キーボード、マウスなどの周辺機器は探せば出てくるはず)。GPU内蔵とはいえCPUが高く付いたので、他はケチケチと。メインマシンにするMacを購入するときは「一番いいのを頼む」精神で、とにかくCTOリストから最上位のものを選んでいくことが多いのですが*3、予算制約の中で部品を選ぶのも楽しいですね。部品選びにはこのサイトが便利でした。

niku.webcrow.jp

*1:最後に使っていたデスクトップ機は1999年頃のPentium III (600MHz)で、ゲーム用(MS Flight Simしかやってなかった)のサブマシンにしていました。当時のメインマシンはPowerBook 5300cs/100を使っていたんだったかな。

*2:大学のときに(回路シミュレータ上ではありますが)AND/ORゲートを作ってそれを組み合わせてCPUを作っていくという演習授業も受けましたし、OSや言語処理系を作る授業もたいそう楽しく受講したので、そういう意味での自作は初めてではないです。Epson PC-386Mのクロック水晶の交換とかもやってますしね。でも、プラ板だけからとか、丸太一本削り出しでとか、あるいは鋳造では作ったことはあるけど、キットのプラモデルでガンダムを作るのは初めて、という感じでしょうか?

*3:数年前まではそれでも40万円くらいだったんですが、今のMacBook Pro 16 inchはSSDの値段がゴツいこともあって最上位構成は70万円と手が届かない値段になりますね-白目

続きを読む

本日の給油(スーパーカブ110プロ/JA07) & 千葉県一周の旅

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km)
2020-02-22 10890.0 2.67 141.95 51.20 2.77
2020-03-16 11037.1 3.46 138.73 42.51 3.26
2020-03-20 11217.6 2.83 133.92 63.78 2.10
2020-03-21 11407.0 3.11 142.12 60.90 2.33
2020-03-22 11612.2 3.50 138.57 58.63 2.36

3月の三連休に、千葉県一周ツーリングに行ってきました。松戸あたりから出発し、できるだけ海沿いを走って岬や灯台を巡る旅です。富津岬(A)〜館山城〜洲崎灯台(B)〜野島埼灯台(C)〜太東灯台(D)〜犬吠埼灯台(E)〜香取神宮(G)〜東峰神社(H)〜関宿城(I)。千葉県の最北端(富津岬)・最南端(野島埼灯台)・最東端(犬吠埼灯台)・最北端(関宿城)を制覇しました。(厳密には少しずれたところが端になっているそうです)

1日200 kmくらいで3日間で600 km。燃費が良いので交通費は1300円のみ。オドメーターのゾロ目には蘇我駅あたりで遭遇。