ラスト・デイズ

建物の外に出ると意味不明な病気?で死んでしまう終末世界を舞台に、はぐれてしまった恋人に遭うため奮闘するスペインの映画らしいのだけど、設定ガバガバだったw

ASIN:B07M9STPCB

ラストはなんとなく感動的な感じに強引に持っていった。

まあ、それなりに楽しめたかな。

これまでの元号に使われた漢字の頻出度をMySQLで算出し、新元号を予測してみるテスト

日本の元号は247個ある

昨晩、僕が愛してやまないキンシオのシリーズ、長い地名の旅がファイナルを迎えた。

そして次シリーズが「元号の地名の旅」ということで、これまでの元号が地名についた場所を訪れる旅になるそうで、とても楽しみだ。

その中でキンさんは「元号はこれまでに247個ある」とおっしゃっていた。

なるほどと思い、Wikipediaを調べて見ると、下記の通りとなった(カッコ内は西暦)。

大化(645-650)
白雉(650-654)
朱鳥(686)
大宝(701-704)
慶雲(704-708)
和銅(708-715)
霊亀(715-717)
養老(717-724)
神亀(724-729)
天平(729-749)
天平感宝(749)
天平勝宝(749-757)
天平宝字(757-765)
天平神護(765-767)
神護景雲(767-770)
宝亀(770-781)
天応(781-782)
延暦(782-806)
大同(806-810)
弘仁(810-824)
天長(824-834)
承和(834-848)
嘉祥(848-851)
仁寿(851-854)
斉衡(854-857)
天安(857-859)
貞観(859-877)
元慶(877-885)
仁和(885-889)
寛平(889-898)
昌泰(898-901)
延喜(901-923)
延長(923-931)
承平(931-938)
天慶(938-947)
天暦(947-957)
天徳(957-961)
応和(961-964)
康保(964-968)
安和(968-970)
天禄(970-974)
天延(974-976)
貞元(976-978)
天元(978-983)
永観(983-985)
寛和(985-987)
永延(987-989)
永祚(989-990)
正暦(990-995)
長徳(995-999)
長保(999-1004)
寛弘(1004-1013)
長和(1013-1017)
寛仁(1017-1021)
治安(1021-1024)
万寿(1024-1028)
長元(1028-1037)
長暦(1037-1040)
長久(1040-1044)
寛徳(1044-1046)
永承(1046-1053)
天喜(1053-1058)
康平(1058-1065)
治暦(1065-1069)
延久(1069-1074)
承保(1074-1077)
承暦(1077-1081)
永保(1081-1084)
応徳(1084-1087)
寛治(1087-1095)
嘉保(1095-1097)
永長(1097-1097)
承徳(1097-1099)
康和(1099-1104)
長治(1104-1106)
嘉承(1106-1108)
天仁(1108-1110)
天永(1110-1113)
永久(1113-1118)
元永(1118-1120)
保安(1120-1124)
天治(1124-1126)
大治(1126-1131)
天承(1131-1132)
長承(1132-1135)
保延(1135-1141)
永治(1141-1142)
康治(1142-1144)
天養(1144-1145)
久安(1145-1151)
仁平(1151-1154)
久寿(1154-1156)
保元(1156-1159)
平治(1159-1160)
永暦(1160-1161)
応保(1161-1163)
長寛(1163-1165)
永万(1165-1166)
仁安(1166-1169)
嘉応(1169-1171)
承安(1171-1175)
安元(1175-1177)
治承(1177-1181)
養和(1181-1182)
寿永(1182-1184)
元暦(1184-1185)
文治(1185-1190)
建久(1190-1199)
正治(1199-1201)
建仁(1201-1204)
元久(1204-1206)
建永(1206-1207)
承元(1207-1211)
建暦(1211-1214)
建保(1214-1219)
承久(1219-1222)
貞応(1222-1224)
元仁(1224-1225)
嘉禄(1225-1228)
安貞(1228-1229)
寛喜(1229-1232)
貞永(1232-1233)
天福(1233-1234)
文暦(1234-1235)
嘉禎(1235-1238)
暦仁(1238-1239)
延応(1239-1240)
仁治(1240-1243)
寛元(1243-1247)
宝治(1247-1249)
建長(1249-1256)
康元(1256-1257)
正嘉(1257-1259)
正元(1259-1260)
文応(1260-1261)
弘長(1261-1264)
文永(1264-1275)
建治(1275-1278)
弘安(1278-1288)
正応(1288-1293)
永仁(1293-1299)
正安(1299-1302)
乾元(1302-1303)
嘉元(1303-1307)
徳治(1307-1308)
延慶(1308-1311)
応長(1311-1312)
正和(1312-1317)
文保(1317-1319)
元応(1319-1321)
元亨(1321-1324)
正中(1324-1326)
嘉暦(1326-1329)
元徳(1329-1331)
元弘(1331-1334)
正慶(1332-1333)
建武(1334-1336)
延元(1336-1340)
興国(1340-1347)
正平(1347-1370)
建徳(1370-1372)
文中(1372-1375)
天授(1375-1381)
弘和(1381-1384)
元中(1384-1392)
暦応(1338-1342)
康永(1342-1345)
貞和(1345-1350)
観応(1350-1352)
文和(1352-1356)
延文(1356-1361)
康安(1361-1362)
貞治(1362-1368)
応安(1368-1375)
永和(1375-1379)
康暦(1379-1381)
永徳(1381-1384)
至徳(1384-1387)
嘉慶(1387-1389)
康応(1389-1390)
明徳(1390-1394)
応永(1394-1428)
正長(1428-1429)
永享(1429-1441)
嘉吉(1441-1444)
文安(1444-1449)
宝徳(1449-1452)
享徳(1452-1455)
康正(1455-1457)
長禄(1457-1461)
寛正(1461-1466)
文正(1466-1467)
応仁(1467-1469)
文明(1469-1487)
長享(1487-1489)
延徳(1489-1492)
明応(1492-1501)
文亀(1501-1504)
永正(1504-1521)
大永(1521-1528)
享禄(1528-1532)
天文(1532-1555)
弘治(1555-1558)
永禄(1558-1570)
元亀(1570-1573)
天正(1573-1593)
文禄(1593-1596)
慶長(1596-1615)
元和(1615-1624)
寛永(1624-1645)
正保(1645-1648)
慶安(1648-1652)
承応(1652-1655)
明暦(1655-1658)
万治(1658-1661)
寛文(1661-1673)
延宝(1673-1681)
天和(1681-1684)
貞享(1684-1688)
元禄(1688-1704)
宝永(1704-1711)
正徳(1711-1716)
享保(1716-1736)
元文(1736-1741)
寛保(1741-1744)
延享(1744-1748)
寛延(1748-1751)
宝暦(1751-1764)
明和(1764-1772)
安永(1772-1781)
天明(1781-1789)
寛政(1789-1801)
享和(1801-1804)
文化(1804-1818)
文政(1818-1831)
天保(1831-1845)
弘化(1845-1848)
嘉永(1848-1855)
安政(1855-1860)
万延(1860-1861)
文久(1861-1864)
元治(1864-1865)
慶応(1865-1868)
明治(1868-1912)
大正(1912-1926)
昭和(1926-1989)
平成(1989-2019)

元号一覧 (日本) - Wikipedia

これまでの元号に使われていた漢字を組み合わせて、新元号を予測してみる

さて、漢字2文字が多い元号なわけだが、なんとなく似たような名前がある。

という時は 治める(おさめる) とも書くのでよく使われているように思えた。

そこで、「これまで頻出される漢字ってどれくらいあるのだろう?もしかしたら組み合わせれば新元号がわかるのではないか?」と思い、MySQLを使ってカウントしてみた。

Table定義

とりあえず漢字一文字だけ入ればいいので、割と適当。

CREATE TABLE `kanji` (
  `name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insertデータ整形

先程のWikipediaからもらってきた一覧データをinsert文に整形

gifってみた。VCS好きです。

View post on imgur.com
imgur.com

できたSQLがコレ。

insert into kanji values ("大"),
("化"),
("白"),
("雉"),
("朱"),
("鳥"),
("大"),
("宝"),
("慶"),
("雲"),
("和"),
("銅"),
("霊"),
("亀"),
("養"),
("老"),
("神"),
("亀"),
("天"),
("平"),
("天"),
("平"),
("感"),
("宝"),
("天"),
("平"),
("勝"),
("宝"),
("天"),
("平"),
("宝"),
("字"),
("天"),
("平"),
("神"),
("護"),
("神"),
("護"),
("景"),
("雲"),
("宝"),
("亀"),
("天"),
("応"),
("延"),
("暦"),
("大"),
("同"),
("弘"),
("仁"),
("天"),
("長"),
("承"),
("和"),
("嘉"),
("祥"),
("仁"),
("寿"),
("斉"),
("衡"),
("天"),
("安"),
("貞"),
("観"),
("元"),
("慶"),
("仁"),
("和"),
("寛"),
("平"),
("昌"),
("泰"),
("延"),
("喜"),
("延"),
("長"),
("承"),
("平"),
("天"),
("慶"),
("天"),
("暦"),
("天"),
("徳"),
("応"),
("和"),
("康"),
("保"),
("安"),
("和"),
("天"),
("禄"),
("天"),
("延"),
("貞"),
("元"),
("天"),
("元"),
("永"),
("観"),
("寛"),
("和"),
("永"),
("延"),
("永"),
("祚"),
("正"),
("暦"),
("長"),
("徳"),
("長"),
("保"),
("寛"),
("弘"),
("長"),
("和"),
("寛"),
("仁"),
("治"),
("安"),
("万"),
("寿"),
("長"),
("元"),
("長"),
("暦"),
("長"),
("久"),
("寛"),
("徳"),
("永"),
("承"),
("天"),
("喜"),
("康"),
("平"),
("治"),
("暦"),
("延"),
("久"),
("承"),
("保"),
("承"),
("暦"),
("永"),
("保"),
("応"),
("徳"),
("寛"),
("治"),
("嘉"),
("保"),
("永"),
("長"),
("承"),
("徳"),
("康"),
("和"),
("長"),
("治"),
("嘉"),
("承"),
("天"),
("仁"),
("天"),
("永"),
("永"),
("久"),
("元"),
("永"),
("保"),
("安"),
("天"),
("治"),
("大"),
("治"),
("天"),
("承"),
("長"),
("承"),
("保"),
("延"),
("永"),
("治"),
("康"),
("治"),
("天"),
("養"),
("久"),
("安"),
("仁"),
("平"),
("久"),
("寿"),
("保"),
("元"),
("平"),
("治"),
("永"),
("暦"),
("応"),
("保"),
("長"),
("寛"),
("永"),
("万"),
("仁"),
("安"),
("嘉"),
("応"),
("承"),
("安"),
("安"),
("元"),
("治"),
("承"),
("養"),
("和"),
("寿"),
("永"),
("元"),
("暦"),
("文"),
("治"),
("建"),
("久"),
("正"),
("治"),
("建"),
("仁"),
("元"),
("久"),
("建"),
("永"),
("承"),
("元"),
("建"),
("暦"),
("建"),
("保"),
("承"),
("久"),
("貞"),
("応"),
("元"),
("仁"),
("嘉"),
("禄"),
("安"),
("貞"),
("寛"),
("喜"),
("貞"),
("永"),
("天"),
("福"),
("文"),
("暦"),
("嘉"),
("禎"),
("暦"),
("仁"),
("延"),
("応"),
("仁"),
("治"),
("寛"),
("元"),
("宝"),
("治"),
("建"),
("長"),
("康"),
("元"),
("正"),
("嘉"),
("正"),
("元"),
("文"),
("応"),
("弘"),
("長"),
("文"),
("永"),
("建"),
("治"),
("弘"),
("安"),
("正"),
("応"),
("永"),
("仁"),
("正"),
("安"),
("乾"),
("元"),
("嘉"),
("元"),
("徳"),
("治"),
("延"),
("慶"),
("応"),
("長"),
("正"),
("和"),
("文"),
("保"),
("元"),
("応"),
("元"),
("亨"),
("正"),
("中"),
("嘉"),
("暦"),
("元"),
("徳"),
("元"),
("弘"),
("正"),
("慶"),
("建"),
("武"),
("延"),
("元"),
("興"),
("国"),
("正"),
("平"),
("建"),
("徳"),
("文"),
("中"),
("天"),
("授"),
("弘"),
("和"),
("元"),
("中"),
("暦"),
("応"),
("康"),
("永"),
("貞"),
("和"),
("観"),
("応"),
("文"),
("和"),
("延"),
("文"),
("康"),
("安"),
("貞"),
("治"),
("応"),
("安"),
("永"),
("和"),
("康"),
("暦"),
("永"),
("徳"),
("至"),
("徳"),
("嘉"),
("慶"),
("康"),
("応"),
("明"),
("徳"),
("応"),
("永"),
("正"),
("長"),
("永"),
("享"),
("嘉"),
("吉"),
("文"),
("安"),
("宝"),
("徳"),
("享"),
("徳"),
("康"),
("正"),
("長"),
("禄"),
("寛"),
("正"),
("文"),
("正"),
("応"),
("仁"),
("文"),
("明"),
("長"),
("享"),
("延"),
("徳"),
("明"),
("応"),
("文"),
("亀"),
("永"),
("正"),
("大"),
("永"),
("享"),
("禄"),
("天"),
("文"),
("弘"),
("治"),
("永"),
("禄"),
("元"),
("亀"),
("天"),
("正"),
("文"),
("禄"),
("慶"),
("長"),
("元"),
("和"),
("寛"),
("永"),
("正"),
("保"),
("慶"),
("安"),
("承"),
("応"),
("明"),
("暦"),
("万"),
("治"),
("寛"),
("文"),
("延"),
("宝"),
("天"),
("和"),
("貞"),
("享"),
("元"),
("禄"),
("宝"),
("永"),
("正"),
("徳"),
("享"),
("保"),
("元"),
("文"),
("寛"),
("保"),
("延"),
("享"),
("寛"),
("延"),
("宝"),
("暦"),
("明"),
("和"),
("安"),
("永"),
("天"),
("明"),
("寛"),
("政"),
("享"),
("和"),
("文"),
("化"),
("文"),
("政"),
("天"),
("保"),
("弘"),
("化"),
("嘉"),
("永"),
("安"),
("政"),
("万"),
("延"),
("文"),
("久"),
("元"),
("治"),
("慶"),
("応"),
("明"),
("治"),
("大"),
("正"),
("昭"),
("和"),
("平"),
("成");

504レコードあるらしい。

文字のカウント

重複を排除した文字数をカウント。

select name from kanji group by name order by name;

72文字使われているらしい。

万
中
久
乾
亀
亨
享
仁
保
元
勝
化
吉
同
和
喜
嘉
国
大
天
字
安
宝
寛
寿
平
康
延
建
弘
徳
応
感
慶
成
承
授
政
文
斉
昌
明
昭
景
暦
朱
正
武
永
治
泰
白
祚
神
祥
禄
禎
福
老
至
興
衡
観
護
貞
銅
長
雉
雲
霊
養
鳥

文字ごとの頻出回数を調べる

select count(name) as count, name from kanji group by name order by count desc, name asc;

が29回使われ、堂々の1位だった。

やはり未来永劫幸せに暮らしたいと思うのが日本人の想いなのだろうか。

ちなみに、 という文字もこれまで17回使われているそうなので、もし新元号 という文字が使われたとしても、総理大臣とは関係ないと思ったほうが自然。

29   永
27  元
27  天
21  治
20  応
19  和
19  文
19  正
19  長
17  安
16  延
16  暦
15  保
15  寛
15  徳
14  承
13  仁
12  嘉
12  平
10  宝
10  康
9   久
9   建
9   慶
8   享
8   弘
8   貞
7   明
7   禄
6   大
5   亀
4   万
4   寿
3   中
3   化
3   喜
3   政
3   神
3   観
3   養
2   護
2   雲
1   乾
1   亨
1   勝
1   吉
1   同
1   国
1   字
1   感
1   成
1   授
1   斉
1   昌
1   昭
1   景
1   朱
1   武
1   泰
1   白
1   祚
1   祥
1   禎
1   福
1   老
1   至
1   興
1   衡
1   銅
1   雉
1   霊
1   鳥

それぞれの頻出割合を算出してみる →間違ってた

ざっとこんな感じか?

select name, concat(round(count / total * 100, 2), "%") as rate from (
  select name
       , count(name) as count
       , (select count(distinct name) from kanji) as total
    from kanji
   group by name
   order by count desc
          , name asc
) result;

に至っては40%も出てくるので、もしかしたら1/3くらいの確率で新元号に入るかもしれない。

永  40.28%
元 37.50%
天 37.50%
治 29.17%
応 27.78%
和 26.39%
文 26.39%
正 26.39%
長 26.39%
安 23.61%
延 22.22%
暦 22.22%
保 20.83%
寛 20.83%
徳 20.83%
承 19.44%
仁 18.06%
嘉 16.67%
平 16.67%
宝 13.89%
康 13.89%
久 12.50%
建 12.50%
慶 12.50%
享 11.11%
弘 11.11%
貞 11.11%
明 9.72%
禄 9.72%
大 8.33%
亀 6.94%
万 5.56%
寿 5.56%
中 4.17%
化 4.17%
喜 4.17%
政 4.17%
神 4.17%
観 4.17%
養 4.17%
護 2.78%
雲 2.78%
乾 1.39%
亨 1.39%
勝 1.39%
吉 1.39%
同 1.39%
国 1.39%
字 1.39%
感 1.39%
成 1.39%
授 1.39%
斉 1.39%
昌 1.39%
昭 1.39%
景 1.39%
朱 1.39%
武 1.39%
泰 1.39%
白 1.39%
祚 1.39%
祥 1.39%
禎 1.39%
福 1.39%
老 1.39%
至 1.39%
興 1.39%
衡 1.39%
銅 1.39%
雉 1.39%
霊 1.39%
鳥 1.39%

それぞれの頻出割合を算出してみる(2019/02/05 13:17:45 訂正)

分母が文字の種類となる74件の数字としていたため間違っていた。

正しくは、重複を含む504件の文字とするはず。

select name, concat(round(count / total * 100, 2), "%") as rate from (
  select name
       , count(name) as count
       , (select count(name) from kanji) as total
    from kanji
   group by name
   order by count desc
          , name asc
) result;
永  5.75%
元 5.36%
天 5.36%
治 4.17%
応 3.97%
和 3.77%
文 3.77%
正 3.77%
長 3.77%
安 3.37%
延 3.17%
暦 3.17%
保 2.98%
寛 2.98%
徳 2.98%
承 2.78%
仁 2.58%
嘉 2.38%
平 2.38%
宝 1.98%
康 1.98%
久 1.79%
建 1.79%
慶 1.79%
享 1.59%
弘 1.59%
貞 1.59%
明 1.39%
禄 1.39%
大 1.19%
亀 0.99%
万 0.79%
寿 0.79%
中 0.60%
化 0.60%
喜 0.60%
政 0.60%
神 0.60%
観 0.60%
養 0.60%
護 0.40%
雲 0.40%
乾 0.20%
亨 0.20%
勝 0.20%
吉 0.20%
同 0.20%
国 0.20%
字 0.20%
感 0.20%
成 0.20%
授 0.20%
斉 0.20%
昌 0.20%
昭 0.20%
景 0.20%
朱 0.20%
武 0.20%
泰 0.20%
白 0.20%
祚 0.20%
祥 0.20%
禎 0.20%
福 0.20%
老 0.20%
至 0.20%
興 0.20%
衡 0.20%
銅 0.20%
雉 0.20%
霊 0.20%
鳥 0.20%

omiendの予想

順当に行くと、

  • 永元
  • 永天

かなとは思うのだけど、今の日本はあまり元気がない気がするので

  • 元治
  • 元応

や、子供の将来を考えて平和な日本であって欲しいという思いも込めて

  • 長安
  • 徳保(トクホw)

も良いかも。

なんとなくだけど、 という時は入りそう。そうすると

  • 大治
  • 永治

かなあ。

どんな元号になるのかな。

さいごに

僕はデータアナリストでもなんでもないので間違った算出をしているかもしれない。

もし「こうじゃない?」などあったら @omiend までメッセージください!

昭和生まれな僕ですが、平成生まれよりも平成を行きてきました。

そんな平成がもうすぐ終わりを迎えようとしているのは少しさみしい気もしますが、次の時代も素敵な時代になればいいなと、切に願っております。

#Nuxt.jsのComponent単位でSSRしたかったけどダメだった話

2019/01/23 16:18:18 更新 fetch()メソッドからのStore経由でPropsを使わないSSRが実現できたので追記

Componentが正しくSSRされない

先日、こんな感じ↓でComponentの設計をした。

omiend.hatenablog.jp

利用するデータは極力Component内部だけで完結させたく、SectionComponent単位でaxiosの処理を行うように実装をしていた。

これはメンテナンス性の向上を図り、SectionComponent単位で独自の機能とすることとしたかったため。

f:id:omiend:20190122205821p:plain

さらに、今回構築しているサイトはSSRが必須なため、同じくSectionComponent内部でasyncDataを定義。

f:id:omiend:20190122205457p:plain

そして正しくSSRされているか試したところ、どうにも上手くレンダリングされなかった。

そもそも

そもそも、ComponentはasyncDataを持っていないとのこと。

コンポーネントは asyncData メソッドを持たないため、サーバーサイドでコンポーネント内で非同期にデータを取得することは直接的にはできません。

参考: コンポーネント内の非同期データ - Nuxt.js

SSRを試したらasyncData内部の処理も動くことは動いていており、何回か試したところ正常にSSRされることは確認した。

しかし、基本的にはSSRされず。

f:id:omiend:20190122205510p:plain

上記のページにて、

ページコンポーネントの asyncData() または fetch() メソッド内に API コールを作成し、データを props としてサブコンポーネントへ渡すこと。この方法ではサーバーサイドレンダリングでもうまく機能します。マイナスな側面: ページ内 asyncData() または fetch() が他のコンポーネントのデータをロードするため、可読性が落ちるかもしれません。

とあるので、とりあえずはこの方法でSSRすることにする。

f:id:omiend:20190122210737p:plain

ただ、SSRの場合はpropsを使うしか無いというのが・・・。

fetchメソッド

fetchメソッドを利用してStore経由でComponentにデータを渡すことで、Propsを利用せずにSSRを実現することが出来た。

2019/01/23 16:18:18 更新 fetch()メソッドからのStore経由でPropsを使わないSSRが実現できたので追記

fetchメソッドとは。

fetch メソッドは、ページがレンダリングされる前に、データをストアに入れるために使われます。コンポーネントのデータをセットしないという点を除いては asyncData メソッドとよく似ています。

fetch メソッドが設定されている場合、コンポーネント(ページコンポーネントに限ります)がロードされる前に毎回呼び出されます。サーバーサイドレンダリングや、ページを遷移する前にも呼び出されます。

参考:ja.nuxtjs.org

axiosを利用してAPIからデータを取得し、mutationsを呼び出すactionsを定義する。(actions自体にasyncをつける)

そして、fetch内部で当該actionsを呼びだし、Promiseを返却すればOK。

f:id:omiend:20190123163310p:plain

フレンチ・ラン

フレンチ・ラン(字幕版)

スリである主人公がバッグを盗むのだけど、目ぼしいモノもなく捨てる。

しかし、その捨てたバッグにテロリストの爆弾が入っており、主人公がテロリストだと疑われるところから始まる話。

これもなかなか面白かった。