ギャン・バギャム・ソルドン

一打粉砕に怒喝の心力を込め、万物を叩き割る剛剣の刃を生み出さん

人を愛するという事

アイドルや声優(以下、アイドル&声優という意味で「アイドル」という言葉を用いています。)を好きになる行為は、とても自由だ。好きになりたい時に好きになって、消費し切れない程のコンテンツをマイペースに消費して、飽きたら離れて、また興味が出たら戻ってくる。誰も咎めるものは居ないし、好きになる事に責任を負う必要は無い。一見聞こえの悪い、誠実さの欠いた行動にも見えるが、これらの行為が許されているのは、アイドルの大きな魅力だと私は考えている。

また、自分の注ぐ愛情が(よっぽど変な事をしない限り)、それがどんなに重い感情であろうと、無条件で受け入れられるのも、アイドルの魅力なのだろう。ありったけの愛情をぶつけても壊れないサンドバッグに、僕はお金を使う。

自分が全力で声優を追いかけていた頃からこの考えを持っていた訳ではないが、少なくとも今の自分の価値観はここに書いたようなものだ。自覚がある。

 

…どうやら、僕の持つ愛情は一般的には「重い」方に分類されるらしい。まぁ確かに昔からその兆候はあった。いつだって、1つのアニメ、1人のアイドルに短期間で深く入り込んでいた。行き場のない愛情を、時にはインターネットの海に放ち、時にはオタクと喋りながら酒と一緒に飲み込んだ。

 

初めてアイドル以外の人間を好きになった。当たり前だが、アイドルを推すのとは訳が違う。そんな事は分かっていた。先述の通り、アイドルを好きになるのは自由だ。しかし、一般的に人を好きになるのは自由なのだろうか。私は No だと思う。勿論、何もかもが許さていない訳では無いが、不誠実な態度や中途半端な覚悟は相手を振り回してしまう。これは良くない。自他がアイドルを無責任に好きになる事に対して、一抹の罪悪感や気持ち悪さを抱いてきた僕は、必要以上に好きになる事、好きでいる事に責任を感じていたし、なんなら愛想尽かされるまでは、ずっと好きでいる覚悟もしていた(と思う)。明らかに重たいと感じるが、僕はこういう態度しか取れなかった。

 

別れてから数日経って、自分のダメだったところが次から次へと思い付く。恋は盲目とよく言うが、本当に何もかも見えていなかった。次があれば、もっと上手くやりたい。

彼女と別れました。

忘れたいけど、忘れたくないから、書く。

付き合う前、色んな人に恋愛相談をする度に「今が一番楽しい時期だね」と言われたのだが、当時の僕は「そんな訳ねぇだろ!!!!」と思っていた。だって好きな人と付き合って楽しくない訳ないじゃん。この言葉の正しさを実感する事になるとは思わなかった。

 めちゃくちゃ好きだった。でも相手の気持ちは変わっちゃうから仕方ない。こう、恋人の距離になれてない感じはちょっと前からあった。僕も僕でやっぱりそれは辛くて、多分このまま続いてもお互いに幸せになれなかったのだと思う。昨日あそこで僕が気持ちを打ち明けなかったら、このなぁなぁの関係がまた1ヶ月、2ヶ月と続いていたのかもしれない。それだったら僕の傷口が浅いうちに別れられて良かったと思う。ショックだったけど、ちゃんと面と向かって向こうが正直な気持ちを伝えてくれたのは、ありがたかった。5ヶ月弱の短い間だったけど、僕にとってはこれが初めてのちゃんとした恋だったし、簡単に忘れる事は出来なさそう。

手元に残ったのは、大事にし過ぎて1回も使ってない誕プレで貰ったマグカップと、今度しようねって言って買った大量の手持ち花火。あとデートで撮った写真。見ると思い出しちゃうから消したいけど、消したらもう一生この写真が目に入ることは無いんだなと思うと、消すのを躊躇ってしまう。

僕にも悪いところはあったのだと思う。この5ヶ月で2人の関係はそれほど進展しなかった。コロちゃんの影響で付き合い始めて2ヶ月目に全く会えない状況になってしまったのは、これはもう運が悪かったとしか言えないけど、ラブラブだった時期にもっと積極的になれてれば、今と違った未来があったのかなと思ったりする。

流石に昨日は死ぬほど辛かったけど、何だかこう、予兆みたいなものは感じ取っていたし、無意識のうちに心が別れの準備してたのか、今は普通に生きてられる。ただ今でも頭の片隅であの子の名前が浮かんだり消えたりしてるし、その度に辛くなるから、これだけは早めに無くなってほしいな。

またオタク家業に没頭出来れば良いんだけど、それも厳しそうだから、しばらく休憩したら新しい出会いを探しに行きたいなと思ってる。さぁどうなるかなぁ。いい男になって、将来、あの子に僕を振ったことを後悔させたい。

今日の頑張り

・今日の頑張り見て

SIGNATEの練習問題をやってたら一日経ってた。下のリンクから見れる。

【練習問題】民泊サービスの宿泊価格予測 | SIGNATE - Data Science Competition

1. MINPAKU.py

データの確認やクレンジング(欠損値の保管や、データのダミー変数化)、変数の返還方針の決定、変換したデータの吐き出し、変数同士の相関をヒートマップで見てる。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# CSV の読み込み
data = pd.read_csv('C:\\work\\SIGNATE\\TRAIN_MINPAKU\\train.csv')

# 欠損地が何個あるか確認
# print(data.isnull().sum())
'''''
・欠損のあるデータと補完の仕方
bathrooms:風呂の数 平均
bedrooms:ベッドルーム数  平均
beds:ベッド数   平均
first_review:最初のレビュー日 x
host_has_profile_pic: ホストの写真があるかどうか    f埋め
host_identity_verified:ホストの身元確認が取れているか  f埋め
host_response_rate:ホストの返信率 平均
host_since:ホストの登録日 2020/1/1
last_review:最後のレビュー日 2020/1/1
neighbourhood:近隣情報 x
review_scores_rating:レビュースコア  平均
thumbnail_url:サムネイル画像リンク x
zipcode:郵便番号 x

・特徴量の選択、加工
1. 削除カラム
id ,description ,name ,neiborhood , thumbnail_url ,zipcode
latitude ,longitude

2. 加工カラム
amenities ⇒ 文字データからアメニティの個数に加工、その後amenities drop
bed_type ⇒ ダミー変数へ加工しdrop
cancellation_policy ⇒ ダミー変数へ加工しdrop
city ⇒ ダミー変数へ加工しdrop
cleaning_fee ⇒ダミー変数へ加工しdrop

last_review - host_since ⇒ 営業日数として扱う
その後 first_review,last_review,host_since drop

host_has_profile_pic ⇒ダミー変数へ加工しdrop
host_identity_verified ⇒ダミー変数へ加工しdrop
instant_bookable ⇒ダミー変数にしてdrop
property_type ⇒ダミー変数にしてdrop
room_type ⇒ ダミー変数にしてdrop

'''
# 欠損値を f で置換
data = data.fillna({'host_has_profile_pic':'f' ,
'host_identity_verified':'f' })
# ホストからの返信率は文字置換して数字型へ
data['host_response_rate'] = data['host_response_rate'].str.replace('%','')
data['host_response_rate'] = data['host_response_rate'].astype(float)
# 欠損値を 平均値 で置換
data = data.fillna({'bathrooms':data['bathrooms'].mean()
,'bedrooms':data['bedrooms'].mean()
,'beds':data['beds'].mean()
,'host_response_rate':data['host_response_rate'].mean()
,'review_scores_rating':data['review_scores_rating'].mean()})

# last_review - host_since を計算
# 日付のデータを - で分割
df_last = data['last_review'].str.split('-',expand=True)
df_since = data['host_since'].str.split('-',expand=True)
# 欠損部分を平均で置換
df_last = df_last.fillna(df_last.astype(float).mean())
df_since = df_since.fillna(df_since.astype(float).mean())
# period を営業している期間の長さとして定義
data = data.assign(period=365*(df_last[0].astype(float)-df_since[0].astype(float))
+ 30*(df_last[1].astype(float)-df_since[1].astype(float))
+ (df_last[2].astype(float)-df_since[2].astype(float)) )
# アメニティの文字データをアメニティの個数データに変換
df_amenities = data['amenities'].str.split(',',expand=True)
data = data.assign(amenities=len(df_amenities.columns) - df_amenities.isnull().sum(axis=1))
# 文字型の変数をダミー変数へ
data = pd.get_dummies(data,drop_first=True, columns=['bed_type','cancellation_policy','city','cleaning_fee'
,'host_has_profile_pic','host_identity_verified','instant_bookable','room_type'])
# 不要なカラムをdrop
data = data.drop(['property_type','last_review','host_since','id','description' , 'first_review','name', 'neighbourhood', 'thumbnail_url' ,'zipcode','latitude' ,'longitude'] ,axis=1)
# 全て1のカラムを追加
data = data.assign(seppen=1)

# 欠損地があるか再確認
# print(data.isnull().sum())

data.to_csv('train_trance.csv')
# ---------------------- 変換ここまで ------------------------------------------------
# ---------------------- 可視化 ------------------------------------------------------
# ダミー変数を除く変数でヒートマップを描いてみる
cols = ['accommodates','amenities','bathrooms','bedrooms','beds','host_response_rate',
'number_of_reviews','review_scores_rating','y','period']
cm = np.corrcoef(data[cols].values.T)
heat_map = sns.heatmap(cm
,cbar=True
,annot=True
,square=True
,fmt='.2f'
,yticklabels=cols
,xticklabels=cols)
plt.tight_layout()
plt.show()

>>出力

f:id:kiui_4:20200711182357p:plain

ヒートマップ

 

2. MINPAKU_LinerRegiression.py

回帰に使う変数や関数をクラスを定義して、線形単回帰と重回帰でパラメータを推定。テストデータで平均偏差を求めて、モデルの評価としてる。最後にSIGNATEのモデル評価用のデータを加工して、予測値を算出してcsvに吐いてる

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

# 加工したcsv を読み込み
df = pd.read_csv('train_trance.csv')

# ----------------------- 回帰の為のクラスを定義 ----------------------
class liner_Regression(object):
# 学習率とパラメータの更新回数を定義
def __init__(self,eta=0.00000005 ,n_iter=5000):
self.eta = eta
self.n_iter = n_iter

# パラメータを推定する fit メソッドを定義
def fit(self,X,y):
# パラメータ w を初期化
self.w = np.random.random(len(X.columns))
# 更新規則に則ってパラメータを更新
for i in range(self.n_iter):
# 推定値と実測値の誤差を計算
self.error = y - self.predict(X)
# j 番目のパラメータを推定
for j in range(len(X.columns)):
self.w[j] += self.eta * np.dot(X.iloc[:,j], self.error)
return self
# 入力に対して予測値を計算する関数を定義
def predict(self, X):
return np.dot(X, self.w)

# 平均2乗誤差を求める関数を定義
def error_ave_test(self,X,y):
self.errors = y - self.predict(X)
return np.sqrt(0.5 * (self.errors*self.errors).sum()/len(X))
# ----------------------- クラスの定義ここまで ------------------------------------------
# 学習データとテストデータへ分割
df_train, df_test = train_test_split(df,test_size=0.4)

# ----------------------------------------- 単回帰モデルの実装 ---------------------------------------
# 単回帰なので accommodates を説明変数にし、切片を求めるためにseppen を抽出
data_train = df_train[['accommodates','seppen']]
# 目的変数に y を設定
target_train = df_train['y']

# 回帰クラスをインスタンス
linerReg = liner_Regression()
# fit メソッドを呼び出して、学習データにfitするパラメータを推定。
linerReg.fit(data_train,target_train)

# モデルの性能を評価
error = linerReg.error_ave_test(data_train,target_train)
print('単回帰のトレーニン2乗誤差:',error)

# テストデータで2乗誤差を推定
data_test = df_test[['accommodates','seppen']]
target_test = df_test['y']

test_error = linerReg.error_ave_test(data_test,target_test)
print('単回帰のテスト2乗誤差   :',test_error)

# ------------------------------ 重回帰モデルの推定 ----------------------------------------------------
# カラムを指定して説明変数を用意
colmuns = ['accommodates','amenities','bathrooms','bedrooms','beds','bed_type_Couch','bed_type_Futon','bed_type_Pull-out Sofa','bed_type_Real Bed','cancellation_policy_moderate','cancellation_policy_strict','cancellation_policy_super_strict_30','cancellation_policy_super_strict_60','city_Chicago','city_DC','city_LA','city_NYC','city_SF','cleaning_fee_t','host_has_profile_pic_t','host_identity_verified_t','instant_bookable_t','room_type_Private room','room_type_Shared room','seppen']
data_train = df_train[colmuns]
# 目的変数に y を設定
target_train = df_train['y']

# 重回帰クラスをインスタンス
Multiple_regression = liner_Regression()
# fit メソッドを呼び出して、学習データにfitするパラメータを推定。
Multiple_regression.fit(data_train,target_train)
# モデルの性能を評価
error = Multiple_regression.error_ave_test(data_train,target_train)
print('重回帰のトレーニン2乗誤差:',error)

# テストデータで2乗誤差を推定
data_test = df_test[colmuns]
target_test = df_test['y']

test_error = Multiple_regression.error_ave_test(data_test,target_test)
print('重回帰のテスト2乗誤差   :',test_error)

# ----------------------- 予測した様子を可視化 ----------------------------------------------
plt.scatter(target_test, Multiple_regression.predict(data_test))
plt.xlabel('correct')
plt.ylabel('predict')
plt.show()

# ------------------------------- テストデータから予測値を計算 -----------------------------------------------
# CSV の読み込み
data = pd.read_csv('C:\\work\\SIGNATE\\TRAIN_MINPAKU\\test.csv')

# 欠損値を f で置換
data = data.fillna({'host_has_profile_pic':'f' ,
'host_identity_verified':'f' })
# ホストからの返信率は文字置換して数字型へ
data['host_response_rate'] = data['host_response_rate'].str.replace('%','')
data['host_response_rate'] = data['host_response_rate'].astype(float)
# 欠損値を 平均値 で置換
data = data.fillna({'bathrooms':data['bathrooms'].mean()
,'bedrooms':data['bedrooms'].mean()
,'beds':data['beds'].mean()
,'host_response_rate':data['host_response_rate'].mean()
,'review_scores_rating':data['review_scores_rating'].mean()})

# last_review - host_since を計算
# 日付のデータを - で分割
df_last = data['last_review'].str.split('-',expand=True)
df_since = data['host_since'].str.split('-',expand=True)
# 欠損部分を平均で置換
df_last = df_last.fillna(df_last.astype(float).mean())
df_since = df_since.fillna(df_since.astype(float).mean())
# period を営業している期間の長さとして定義
data = data.assign(period=365*(df_last[0].astype(float)-df_since[0].astype(float))
+ 30*(df_last[1].astype(float)-df_since[1].astype(float))
+ (df_last[2].astype(float)-df_since[2].astype(float)) )
# アメニティの文字データをアメニティの個数データに変換
df_amenities = data['amenities'].str.split(',',expand=True)
data = data.assign(amenities=len(df_amenities.columns) - df_amenities.isnull().sum(axis=1))
# 文字型の変数をダミー変数へ
data = pd.get_dummies(data,drop_first=True, columns=['bed_type','cancellation_policy','city','cleaning_fee'
,'host_has_profile_pic','host_identity_verified','instant_bookable','property_type','room_type'])
# 不要なカラムをdrop
data = data.drop(['last_review','host_since','id','description' , 'first_review','name', 'neighbourhood', 'thumbnail_url' ,'zipcode','latitude' ,'longitude'] ,axis=1)
# 全て1のカラムを追加
data = data.assign(seppen=1)

# データから予測値を計算
data = data[colmuns]
predicts = Multiple_regression.predict(data)
predicts = pd.DataFrame(predicts)
predicts.to_csv('predicts.csv',header=None)


# 参考 -----------------------正規方程式を使った回帰パラメータの推定 ------------------------------
def normal_equation(X,y):
param = np.linalg.pinv(X.T.dot(X)).dot(X.T).dot(y)
return param
W = normal_equation(data_train,target_train)

# --------------------------------------- ここまで ----------------------------------------------------

>>出力

単回帰のトレーニング2乗誤差: 101.35950150166111
単回帰のテスト2乗誤差   : 101.34383018796446
重回帰のトレーニング2乗誤差: 92.66598989721335
重回帰のテスト2乗誤差   : 92.4839200158771

プロセスは終了コード 0 で完了しました

まぁ重回帰の方が予測性能が良い、過学習してる様子も見られないし、線形回帰の限界はこの辺りにありそう。まぁデータから有益な特徴量を作れれば話は別なんだけど、どうやって作るんだろ...。今度は非線形の回帰も勉強してみるか...。因みに自分でクラスを定義したのは初めてだったんだけど、使ってみると便利さが分かるね...。

 

3. Nural_network_regression.py

線形回帰の限界をみたので、気になっているニューラルネットワーク回帰に手を出してみた。中身はブラックボックスだけど、やっぱり予測の精度は重回帰より全然よかった。ただ使う分にはこれで問題ないのだけど、やっぱり使うからには中身で何やってるか理解しないと何か気持ち悪いな...。何も分かってなくても回帰より良い結果が得られちゃうの、ちょっと怖い。

import numpy as np
import pandas as pd
from sklearn.neural_network import MLPRegressor
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

# 加工したcsv を読み込み
df = pd.read_csv('train_trance.csv')

# 学習データとテストデータへ分割
df_train, df_test = train_test_split(df,test_size=0.4)

colmuns = ['accommodates','amenities','bathrooms','bedrooms','beds','bed_type_Couch','bed_type_Futon','bed_type_Pull-out Sofa','bed_type_Real Bed','cancellation_policy_moderate','cancellation_policy_strict','cancellation_policy_super_strict_30','cancellation_policy_super_strict_60','city_Chicago','city_DC','city_LA','city_NYC','city_SF','cleaning_fee_t','host_has_profile_pic_t','host_identity_verified_t','instant_bookable_t','room_type_Private room','room_type_Shared room','seppen']
data_train = df_train[colmuns]
# 目的変数に y を設定
target_train = df_train['y']

# ニューラル回帰をインスタンス
mlp = MLPRegressor(hidden_layer_sizes=(100,), max_iter=500)
mlp.fit(data_train, target_train)

# テストデータの生成
data_test = df_test[colmuns]
target_test = df_test['y']

# predict関数で予測値を計算
pred = mlp.predict(data_test)
# 平均2乗誤差を計算
errors = np.sqrt(0.5*((target_test - pred)*(target_test - pred)).sum()/len(pred))
print('ニューラルネットワーク回帰の2乗誤差:',errors)

plt.scatter(target_test, pred)
plt.xlabel('correct')
plt.ylabel('predict')
# plt.show()

# -------------------------- テストデータに対して予測値を計算 -----------------------------------
# CSV の読み込み
data = pd.read_csv('C:\\work\\SIGNATE\\TRAIN_MINPAKU\\test.csv')

# 欠損値を f で置換
data = data.fillna({'host_has_profile_pic':'f' ,
'host_identity_verified':'f' })
# ホストからの返信率は文字置換して数字型へ
data['host_response_rate'] = data['host_response_rate'].str.replace('%','')
data['host_response_rate'] = data['host_response_rate'].astype(float)
# 欠損値を 平均値 で置換
data = data.fillna({'bathrooms':data['bathrooms'].mean()
,'bedrooms':data['bedrooms'].mean()
,'beds':data['beds'].mean()
,'host_response_rate':data['host_response_rate'].mean()
,'review_scores_rating':data['review_scores_rating'].mean()})

# last_review - host_since を計算
# 日付のデータを - で分割
df_last = data['last_review'].str.split('-',expand=True)
df_since = data['host_since'].str.split('-',expand=True)
# 欠損部分を平均で置換
df_last = df_last.fillna(df_last.astype(float).mean())
df_since = df_since.fillna(df_since.astype(float).mean())
# period を営業している期間の長さとして定義
data = data.assign(period=365*(df_last[0].astype(float)-df_since[0].astype(float))
+ 30*(df_last[1].astype(float)-df_since[1].astype(float))
+ (df_last[2].astype(float)-df_since[2].astype(float)) )
# アメニティの文字データをアメニティの個数データに変換
df_amenities = data['amenities'].str.split(',',expand=True)
data = data.assign(amenities=len(df_amenities.columns) - df_amenities.isnull().sum(axis=1))
# 文字型の変数をダミー変数へ
data = pd.get_dummies(data,drop_first=True, columns=['bed_type','cancellation_policy','city','cleaning_fee'
,'host_has_profile_pic','host_identity_verified','instant_bookable','property_type','room_type'])
# 不要なカラムをdrop
data = data.drop(['last_review','host_since','id','description' , 'first_review','name', 'neighbourhood', 'thumbnail_url' ,'zipcode','latitude' ,'longitude'] ,axis=1)
# 全て1のカラムを追加
data = data.assign(seppen=1)

colmuns = ['accommodates','amenities','bathrooms','bedrooms','beds','bed_type_Couch','bed_type_Futon','bed_type_Pull-out Sofa','bed_type_Real Bed','cancellation_policy_moderate','cancellation_policy_strict','cancellation_policy_super_strict_30','cancellation_policy_super_strict_60','city_Chicago','city_DC','city_LA','city_NYC','city_SF','cleaning_fee_t','host_has_profile_pic_t','host_identity_verified_t','instant_bookable_t','room_type_Private room','room_type_Shared room','seppen']
data = data[colmuns]

# predict関数で予測値を計算してcsvに吐き出す
pred = mlp.predict(data)
predicts = pd.DataFrame(pred)
predicts.to_csv('NN_predicts.csv',header=None)

>>出力

ConvergenceWarning: Stochastic Optimizer: Maximum iterations (500) reached and the optimization hasn't converged yet.
% self.max_iter, ConvergenceWarning)
ニューラルネットワーク回帰の2乗誤差: 86.69826189432175

ちょっとエラーは言えるけど原因分から無し、でも結果は出てるから無視...。

以上。

 

7月頭のお話

いつも通り日記付けようと思ったらブログ開設3周年ですと言われて、そういえば始めたのは7月の頭だったなと思い出してた。このブログについてそんな語ることもないので、これからも読んでくれたら嬉しいなとだけ言っておきます。まぁ別に読んでくれなくても貴方が生きてくれてるだけできうは嬉しいよ。

f:id:kiui_4:20200705193146p:image

 

・日記

実は友達とスポッチャに行こうという話があったのだけど、昨今の情勢を見て延期になってしまった。しょうがない事ではあるけど、割とショック...。スポッチャ行くなんて高校生以来だから、結構楽しみにしてた...。という訳で、週末は半ば虚無みたいな生活をしてました。

土曜の夜は暇すぎて話題のチェーンソーマンとかいう漫画を全巻買って読んじゃいましたね。おかげで、まぁ完全な虚無にはならなかったかなぁという感じです。チェーンソーマンは各所で面白いと騒がれていたし、実際に身近な人にも勧められたりして、面白いんだろうなと思っていましたが、まぁ読んでみると想像通り面白かったです。ですが、途中からは面白いと分かっている漫画を面白いと確認する作業のようになってしまって、意外と僕の心の奥底には響かなかったかなぁ...というのが正直なところです。多分、もっと違う出会い方をしたら、心を抉られるような作品として自分の中に幾分か残ったかもしれません。昔からそうですが、人から面と向かって勧められた作品は大体中途半端な消費に終わっちゃいますね何故か。自分の興味のままに触れる作品の方が、面白いか面白くないかは置いといて、有意義な消費になっている気がします。

今日は劇場版サンシャインを見ました。2ヶ月に1回くらいのペースで見たくなる作品。そして見る度にボロボロに泣く。泣くのは健康に良いらしいので、できれば定期的に泣いておきたい。春クールもアニメを見て面白いねぇ~とは思うのだけど、なんだかんだ言っても自分の中に残るような作品にはならなくて、まぁそんな何でもかんでも心に残りまくっても嫌だけど。感情のストレッチは大事だから、沢山の作品を見ていっぱい感動できる方が僕は良いなと思っているのだけど、出来ないものはできないわな。一先ず、まだ僕は劇場版ラブライブを見たり、激情版サンシャインを見て顔をぐちゃぐちゃに出来るので、それが出来なくなってから色々考えようと思う。

そういえば、6月末で僕が1年間お世話になった会社の先輩が退職してしまったのだけど、退職の挨拶のメールが凄く良くて泣きそうになってしまった。思い出話をするのは反則だと思う。そのメールに触発されてLINEでご挨拶の連絡をいれたら、また嬉しい返事が返ってきて、本当に素敵な人だなぁと思った。久々に熱い気持ちになった。こう、感情的になれる機会がもっとあればいいのになと思う。

いつのまにか6月末

徒然なるままに。

すっかりアニメ・声優のことも書かなくなって、ただの日記として運用している当ブログです。まぁ最初から好きなこと書くと決めていたので、いいかなと思っています。

何といいますか、最近はそもそもSNS上でアウトプットをしようという欲求自体が薄まっている気がします。1~2年前はめっちゃアウトプットしてましたね。日記に始まり、アニメの感想なり、講義中に考え事をTwitterやブログに吐き出す。これはとても楽しい。

アウトプットが嫌いになった訳ではないし、むしろ好きですけど。欲求が無くなった原因の一つは、仕事で日常的にアウトプットをしているから...なのかなと思います。この日記を書いている途中にふと思いました。仕事柄ドキュメントを作ったり、SQLをカタカタ書く機会が多いのですが、割とこれが僕のアウトプット欲を満たしている説があります。結局、目の前にある対象を理解して表現する。その部分の楽しさは今も昔も変わらずに感じ続けています。

リングフィットアドベンチャーを買いました。買ってから1週間ほど放置していましたが、昨日重い腰を上げてやってみると...結構楽しい!来週友達と運動しに行くので、それまで体力をなるべく戻したい...。昨日は10分やって辛すぎワロタ侍と化していましたが、今日はちょっと運動の強度を上げて地獄に堕ちてみようかなと思います。取り敢えず地獄に堕ちておけば、後は上がるだけなので何とかなるでしょ。(謎理論)

そんな訳で、1か月後には上腕二頭筋バッキバキになってるきうが居ると思います。いや、分からんけど。

6月のモヤモヤ

その日のモヤモヤ、その日のうちに。(まぁ昨日の話なんですけど)

手が繋ぎたい。いや彼女に手を繋ぎたいと言えない僕が全面的に悪いというか、手を繋がなかったくらいでモヤモヤする自分がしょーもないというか。今のモヤモヤはそんな感じ。

昨日は中目黒にドイツビールを飲みに行ったのだけど、オシャレな街だけあってカップルが多かった。道行くカップルはやっぱり手を繋いでいたり腕組みをしている。

身体に触れるって特別だ。触れたいのだけど、少し考えてしまう。本当に触っていいのだろうかって。やっぱり慣れなのかなぁ。

どう動けばいいのか分からないことだらけだ。自分の中にある弱さというか、女々しさというか、乙女みたいな一面を最近よく発見する。そして自分をちょっとだけ嫌いになる。でも、それと同時にやっぱりイチャつきたい気持ちにも駆られる。本能には勝てない。

難しい。難しいなぁ。このモヤモヤはインターネットにポイしたいけど、なんだかんだ引きずりそうだなぁ...。

あっ、昨日飲んだドイツビールはめっちゃ美味しかった。というかビールの美味しさで行きたいお店を選ぶ彼女好き。(かわいい)

6/6

本来なら今日は大阪まで行き、フォロワーとi☆Risの大阪公演を楽しみ尽くす予定だったのだが、こんなご時世なので叶わなくなってしまった。悲しいけど、しゃーなし。とは言うものの、今日は彼女と一緒にアジサイを見れたので実際の心の中は相当ハッピーだったりする。

約1年前にフォロワーとアジサイを見た場所に、今年は彼女と行ってきた。今年もアジサイは綺麗に咲いていた。2ヶ月ぶりに会った彼女も変わらずに元気そうで本当に良かった。

因みにこいつは粛々と咲いてるガクアジサイ

f:id:kiui_4:20200606190943j:image

色々と書ける事はあるけど、こんな所で。最後に今日あった良い事を3つ書いて終わりにする。 

 

・彼女と沢山お喋りできた。

・久々に顔を合わせられた。

・今日も可愛かった。

・一緒にお散歩できた。

・ケーキ美味しかった。

・誕生日プレゼントを貰った。(大切にする)

アジサイを見れた。

 

数が数えられなくなっちゃったらしい。もうダメだ…。

5/24

1日中ダラダラ過ごしていたので、ブログでも書いてから寝ることにする。

 

①えっちな話

午前中はスローセックスについての本を読んでいた。男はセックスの中でフェラや挿入等で簡単に気持ち良くなれるけど、女性は性的な快感を得るのにとても時間が掛かるらしい。この格差が、女性が気持ち良くなれないSEXを生み出してしまう。なるほどな〜と思った。女性の身体は性感帯を刺激すると性的な快楽が得られるという単純なメカニズムで出来ておらず、皮膚の摩擦による刺激が脳に伝達され、その刺激を脳が「性的な快楽だ」と認識する事によって初めて気持ち良くなれる、という記述が興味深かった。なので、大事なのは相手の脳に「ここを触ると気持ち良い」と解らせることで、解らせる為には相手がリラックス出来る環境と長い時間が必要だという話だった。パートナーとは絶対に独りよがりなセックスはしたくないので、胸にずっとしまっておきたい。性の話をおおっぴろげにするの、やっぱり好きだな…。

 

②Detroitの話

午後はDetroitの実況動画をずっと見てた。自分以外の人間がどんな選択をするのか見るのはとても楽しかった。そう言えば、このブログではDetroitについて書いたことは無かった。僕のルートではカーラはジェリコで射殺され、マーカスは革命の最後に追い詰められて街に核を落とし、コナーは変異してサイバーライフの大量のアンドロイドを解放するENDでした。初見であのゲームをしている時は、アンドロイド側に情が移ってしまって「人間は生かしちゃおけんな…」と思いながら暴力の限りを尽くしてました。あとは女のアンドロイドが殺されそうな時は必死で守るんですけど、男が殺されそうになったら割と見捨てがちでしたね。なので、平和的な手段に出たり、仲間を誰一人見捨てない人は凄いな…と思いながら実況動画を見てました。このゲーム、マジで人となりが出ちゃうので怖いですよね。

 

③スキンケアの話

スキンケアを初めてだった3ヶ月弱で分かった事としては、インターネットにある情報ってやっぱりそんなアテにならないな…って事ですかね。人間の肌質って個人差がめちゃくちゃあって、ネットにある無数の肌を綺麗にする手法やテクニックが、自分の肌に合う確率ってそんなに高くないんじゃないかなと思います。でも結局はやってみないと合うか合わないのか分からないのが、スキンケアの厄介なところなんですかね。3ヶ月色々と試行錯誤して分かりましたが、固形石鹸で洗顔するのが僕の最適解っぽいです。外側からのケアは固形石鹸→無印化粧水→日によって珪藻土パックやフェイスマスク、内側からのケアはハイチオールBクリアとエビオス錠。2週間くらいこれを続けていますが、一時期荒れていた肌が今はかなり綺麗になってきました。あと2ヶ月くらい続けたら、最強のゆで卵肌になってしまうかもしれん。

5/20

今日は久々に会社の研修があった。オンラインでの研修は初めてだったけど、割と楽しかった。研修で「1日であった良かった事を3つ書き出してから寝ると精神的に良い」と教わったので、折角だから今日くらいはやって寝ようと思う。まぁ、2週間くらい何も書いてなかったし、ブログを書く良い口実だなと思う。

 

①スクスタのビッグライブで最優秀賞を取った

スクスタ楽しいですよね。ビッグライブというイベントが今日までありましたが、皆さんは楽しめましたでしょうか。僕は結構楽しめました。最初はハイスコアを狙ういつも通りの編成、即ち1つの作戦にアタッカーを配置して、後の6人でステータスをバフするという戦い方をしていたのですが、終盤は2作戦をメインで使う編成に変えたところ、最優秀賞が取りやすくなりました。1作戦にアタッカーを詰め込む編成に割と飽きていた側面もあったので、これは凄く楽しかったです。

f:id:kiui_4:20200520211708p:image

これが詳しい編成。右のSR善子・SR海未・SR真姫・UR曜の4人は、作戦変更時に30%の確率で特技発動率を8%or10%上昇させる個性持ちで、ライブ中に何十回も作戦を変更する事で全体の特技発動率がエグい程上がります。残りの5人にアタッカーやヒーラーを配置して完成です。ハイスコアは狙えませんが、特技発動回数が重要になってくるビッグライブではかなり強いです。1作戦に固定して戦うのが最強という固定観念を棄てられた事や、無凸のSRでも使いようによっては強いという気付きを得られたのがとても良かったです。長くなっちゃった、次。

 

②研修で同期と沢山おしゃべりした

久々に喋る同期も多く、楽しかったです。最近は特に在宅勤務で人と接する事が少なったし、人と接しても上司と仕事のクソ真面目な話しかしなかったので、とても有意義な時間でした。定期的に研修という名のお喋り大会を開催してほしい。

 

③彼女と電話した

今日も色んな話をした。好き。

 

以上どす。これを1週間くらい続けると良いらしいけど、今日っきりで終わりにしておく。本当は精神的に不調の人がやると効果的なので、ぶっちゃけ今の僕には必要ないみたいなところかある。

数学ガール/ガロア理論

最近は数学ガールにハマっている。サイモン・シンの著書「フェルマーの最終定理」を読み終えてから、数学チックな本を数冊読んだ。このフェルマーの最終定理は飽くまでも数学者の生涯を追ったドキュメンタリーであって、数学的に奥深い話は余り出てこない。逆に数学ガールは物語に乗せて小学生や中学生で習う簡単な数学から、難しい大学数学までを扱う。簡単と言っても、簡単であるが故に意識していなかった厳密な話をしてくれるので興味深く飽きない。勿論、数式もちゃんと出てくる。どうやら数学ガールは僕の持っていた需要にピタリとハマってくれる書籍らしい。活字に触れてきた経験が少ないので、これからは本も定期的に読むようにしていきたい。

 

数学ガール/ガロア理論 (数学ガールシリーズ 5)

数学ガール/ガロア理論 (数学ガールシリーズ 5)

  • 作者:結城 浩
  • 発売日: 2012/05/30
  • メディア: 単行本
 

今日は 数学ガール/ガロア理論 を読み終えた。めちゃくちゃ面白かった…。後半はかなり難しかったけど、何とかついて行けた。群と体の概念を駆使して、代数方程式が可解である必要十分条件を求めた第一論文を、19歳という若さで世に放ったガロアには頭が上がらない。
細かい部分で分からない事は沢山あるのだが、群と体の概念、論文の大まかな流れ、係数体の拡大とガロア群の縮小が対応している事…、この辺の話が感覚的に分かったのは大きな収穫だった。やっぱり概念の導入の仕方と例の挙げ方がとても上手い…(あみだくじの話から流れるように群論の話になったりする)。ただ、これ以上深い部分に踏み込んでいこうとすると、時間も頭も足りないんだなと本を読んでいると痛感する。
数学は趣味で勉強している手前、これ以上の理解は諦めているので、分からないなりに浅く広く色んな概念を知りたい。数学ガールは難しい話を、僕のギリギリ分かりそうな範囲で教えてくれるから好き。
難しい単語も出てくるけど、易しい説明から始めてくれるので、色んな人に読まれたらなと思う。次はゲーテルの不完全性定理に挑もう。