人生に行き詰まった結果、『レンタル彼女』を借りた話

ある日 Twitter を眺めていると、とあるニュースが流れてきた。

去年の合計特殊出生率 1.20で過去最低に 東京は「1」を下回る

2023年の日本の合計特殊出生率は1.20で過去最低で、
東京にいたっては1.00を下回ったとのこと。

合計特殊出生率が2.07を下回ると、その国及び地域の次世代の人口が自然減するらしい。
このままだと日本の人口は凄い減り方をしそうだ。
自分が70歳になる頃には、日本の人口ピラミッドはどういう形になっているんだろう。

そんなニュースを見て、日本はどうしてこんなに急速に少子化が進んでいるんだろう?と疑問に思った。
考えられる少子化の原因は何だろう?

長時間労働
育児の経済的負担?
都市部の劣悪な住宅事情?
保育所の不足?
社会保障への不安?

そういった理由がよく挙げられるが、完全に的外れだと思っている。
なぜならば、少子化の原因は『俺』だからだ。

『俺』は28歳男性である。
もうすぐ誕生日が来るので、そうなったら29歳である。
最近は時間の経過する速度が指数関数的に速くなっているように感じるから、
ふと気が付いたら30歳になってしまっているんだろう。

恥ずかしいのであまり大っぴらに言いたくは無いのだが、『俺』には彼女が居たことが無い。
それだけではない。
そもそも、女性と会話した経験すらほとんど無い。

中学高校は男子校だったため、教室に女性は居らず、
かといって学校外の女学生と触れ合う機会も無い人間だったため、
中学高校では1度も女学生と会話しなかった。
(もしかしたらどこかで何回かくらいは会話したかもしれないが、少なくとも自分の記憶に残ってはいない。記憶に残っていないのであれば、それは無いのと同じだろう。)

大学の理工学部に進学すると、2割程度は女性も居たが、会話する機会はほとんど無かった。
科学実験や情報工学実験の科目などで同じ班になった女性と会話することはあったが、
私生活で会話することは1度も無かった。

『俺』は将棋サークルに入っていたが、女性部員は0人で、大学に在籍している間、その0という数字が1以上の大きさになった期間は存在しなかった。

大学生における異性との出会いの定番といえばバイトなのかもしれないが、
『俺』がしていたバイトはスーパーの品出しとラブホテルの清掃で、バイト先に同年代の女性は居なかった。

(どうでもいいが、ラブホでバイトしていたことを飲み会で話すとウケが良い。ラブホのツイートがバズったこともある。人間はラブホの話題が好きすぎる)



『俺』の環境が悪かったとかそういうことを言いたいわけではない。
男子校でも彼女が居る人間は居るし、
高校を卒業した後は行動範囲が無限に広がるのだから、
その後に異性と交友できなかったのはひとえに『俺』という人間の性質によるものである。

『俺』はパソコンが好きで、大学の専攻は情報工学だったので、IT業界に入った。
希望してIT業界に入ったというよりは、他にできる仕事が無さそうという消極的な理由だった。

『俺』の趣味はゲームとアニメとラノベと野球観戦で、他人と積極的に関わるような趣味は無い。
テンプレかどうかは分からないが、割と多いタイプのオタクなんじゃないかという気がしている。

そんな人生を送っていたら、いつのまにか30手前の年齢になってしまった。
『俺』のような男性が日本にたくさん居るから、日本の少子化が止まらないんだろう。
嘆かわしいことだ。

このままだと不味いかもな、と思いつつ、具体的に何か行動を起こしたことは無かった。
単に行動を起こすのが面倒だったのか、傷つくのが嫌だったのか、その両方なのかは分からないが、変わり映えの無い同じような生活をずっと送ってきた。

そんなある日、『レンタル彼女』というサービスを知った。
といっても、どこで知ったのか今はもう覚えていないのだが、どこかで存在を知って、頭の中に残っていたんだと思う。

興味はあるものの1人ではちょっと行き辛い...というイベントに行くか行くまいか迷っている時に、ふと『レンタル彼女』のことを思い出し、
電車の中でスマホから『デート』の申し込みをした。
Webページの『レンタル彼女一覧』にはたくさんの可愛らしい女性が写っていたが、
顔の違いがあまりよく分からなかったので、適当に1番上の女性と2番目の女性を選んだ。

その後、「2人の女性はスケジュールの都合で予約が難しいけど、別のキャストなら空いてるよ!」というメールが来た。
1人だと行き辛いイベントに一緒に行って欲しいだけだったので、別に誰でも良いと思い、すぐにOKの旨を返信した。

その後、すぐに予約確定のメールが届き、少し後悔した。
このサービスの料金表を見ないまま適当に申し込みをしてしまったが、
2時間『デート』するだけで1万3000円もかかるのか。ちょっと高い。

しかも、天気予報を見てみたら、予定日は1日中雨。
とはいえ、申し込んでしまったものは仕方が無いので、腹を括って、楽しもうと思った。

そんなかんやで『デート』の当日を迎えた。
朝から雨がずっと降り続いており、3月半ばとは到底思えないくらい寒い日だった。
予報によると、雨が止むことは無く1日中降り続けるらしい。俺の人生みたいだなと思った。

待ち合わせの場所に2時間ほど早く着いてから、目的地周辺をうろうろした。
なぜそんなことをしたかというと、『俺』は致命的なレベルの方向音痴だからだ。
せっかくの『デート』で目的地が分からずにオロオロするみっともない姿を見せるわけには行かないので、
目的地の場所を完全に把握しておきたかったのだ。

(うろうろしていたら、近くにコジマプロダクションのアレを見つけた)



待ち合わせの時間が近づくと、30分前に待ち合わせ場所に移動した。
もしかしたら相手が少し早く来るかもしれないと思い、待たせないようにと配慮した行動だったが、
待ち合わせ場所は雨はかろうじて防げるものの、室内というわけではなく、風が吹く度に雨が身体に打ち付けられて、とても寒かった。
こんな場所を待ち合わせ場所にしたことを後悔した。

待ち合わせ時刻丁度に『彼女』が来た。
事前に『彼女』の写真をWebページ上で見ていたので、あーこの人だなーと識別できた。

(どうでもいいことだが、Webページに掲載されている『彼女』の写真の右下に「Debut! デビュー」と記載されているのを見て、何故だか少し興奮し、
『性欲の科学 なぜ男は「素人」に興奮し女は「男同士」に萌えるのか』という書籍を思い出した。)

寒さで凍えている俺は、『彼女』を連れて商業施設の室内に逃げるように移動し、
本日は室内メインのプランに変更する旨を話した。
興味はあるものの1人ではちょっと行き辛い...というイベントに一緒に参加してもらう、のが当初の目的だったため、
最初にそのイベントに向かい、参加した。
『俺』の仕事とも少し関わりのあるイベントだったので、展示員に詳細を聞いたり、
写真や動画を撮影したりしながら、イベントを満喫した。

https://youtube.com/shorts/3UpAbj7LlMc?si=NoEqEMYZGnBpeRzj



その後、『彼女』とランチに行き、楽しく会話しながら食事をした。
前述のとおり、『俺』は女性と会話することがほとんどなかったため、
会話のキャッチボールを行うことができるのかどうか不安だったが、
なんとかキャッチボールを行うことができた。

それは、『彼女』と『俺』で共通のコアな趣味がたまたま存在していたことや、
『彼女』がプロであるため、『俺』が暴投した球を正確にキャッチして即座に投げ返していたりしただけなのかもしれないが、
どういう経緯であれ、女性と長時間会話できたことで、少し自信がついた。
『俺』という人間の成功体験はあまりにも少ないため、
その成功体験を1cm積み上げられるだけでも、とても貴重なのである。

ランチの後、タクシーを呼んで、神宮のバッティングセンターに向かった。
バッティングセンターを選んだ理由はいくつかあり、

  1. 俺はバッティングセンターに行くことが趣味なので、打つことで良いところを見せたかった
  2. HoloLensというXRデバイスを着用している状態でバッティングしている様子を動画に撮りたかった(1人だと撮れないので)
  3. 他に遊ぶ場所が思い浮かばなかった

などである。

以下は、『俺』がHoloLensを着用してバッティングしている動画。
慣れない場所、緊張、頭に着用している邪魔なXRデバイス、元々大して上手くない、等の要因で全然打てなかった。
バカ丸出しである。

https://youtube.com/shorts/0MSFIP83mp0

(バッティングマシンのバーチャル映像の『山口』は元巨人の山口鉄也でも元横浜の山口俊でもなく、近鉄サイドスローの投手で、誰やねん!となった。リリースポイントも他より低めに設定されており、微妙に打ちづらかった。)


『彼女』にも打席に入ってもらった。
女連れでバッティングセンターに来るというのは個人的な夢だったので、テンションが上がって茶々を入れたりした。

『彼女』の話す内容は面白く、ノリが良い一方で意外とオタク趣味もあり、プロ野球観戦という共通の趣味もあり、
まるで旧知の間柄のように自然体で接することができて、
「こんなに気が合う女性に出会える機会はもう無いんじゃないか?」
「こういう人と結婚したい」
「他の男に取られたくない」と思った。
(生まれたばかりの雛鳥が最初に見たものを親鳥と認識するように、モテない男性に最初に優しくしてくれた女性に好意を抱く事象が発生してしまっただけなのかもしれないが、『俺』は本当にそう思ったのだ。)

そんな感じで、とても楽しい『デート』を送ることができた。
会話は弾んだし、そのうちワンチャンあったりするんじゃないかと思い、
別れ際に次回の『デート』の口約束を交わしたりもしたのだが、
少し時が経ってから、『アリエリー教授の人生相談室 : 行動経済学で解決する100の不合理』に書かれていた一節をふと思い出した。

たとえば、君たちが「自分のお金」と「相手のお金」を分けて管理していたらどうなるか考えてみよう。
レストランの勘定は割り勘にする?どっちかがワインを1杯多く飲んだらどうする?
それに「相手のお金」がなくなったら?
1週間皿洗いとゴミ出しをしたら、「自分のお金」を少し分けてあげる?
困ったことに、深い人間関係にお金が絡むと、二人の関係は愛情やロマンス、思いやりというよりは、援助交際に近くなってしまう。

冷静に考えてみれば『俺』と『彼女』の関係にはお金が絡んでおり、いってしまえば援助交際の類である。
愛情やロマンスからかけ離れた場所から始まっている二人の関係は、
スタート地点が狂ってしまっている以上、どんなに時間とお金をかけたところで、ゴールには永遠に辿り着けないのではないか?と思った。 そんなことを考えていたら、とても憂鬱で虚しい気持ちになった。

だけども、この経験は無駄ではなかったと思ったし、『彼女』にも感謝している。
お金と引き換えとはいえ、女性と『デート』するという『成功体験』を得られたことで、
マッチングアプリで彼女を探すとか、街コンや婚活パーティや結婚相談所に行ってみるとか、
そういう、世の中の普通の人たちが普通にやっていることを、周回遅れかもしれないけどやってみよう、と、
『俺』はやっとそう思えるようになったのだ。

Android Studio で「戻る」「進む」のショートカットキーが効かないとき

【現象】
Android Studio で以下のショートカットキーが効かない

  • 戻る(Ctrl + Alt + ←)
  • 進む(Ctrl + Alt + →)

【環境】
Ubuntu 18.04.5 LTS (Bionic Beaver)

【原因1】
Ubuntuandroid Studio のデフォルトのキーマップは GNOME になっていて、
GNOME 用のキーマップでは別の割り当て(alt + shift + ← or → ) になっている
※ なぜかこの割り当ても反応しない... 自分だけ?

【解決策1】
Settings -> Keymap から Android Studio の キーマップ設定を GNOME から Windows に変更するか、 GNOME のキーマップでの割り当てを変更する

【原因2】
1. Ubuntu自体に設定されているショートカットキーと競合している

【解決策2】

  1. Ubuntuソフトウェアセンターを起動し、「dconf-editor」で検索し、インストール
  2. dconf-editor を起動
  3. 以下のように編集し、保存する

org.gnome.desktop.wm.keybindings の設定

switch-to-workspace-left と switch-to-workspace-right の Custom value を変更する

keybindings が変更されたことを確認する

Fire HD 10 (第9世代) で Google Play ストアを使えるようにする

念願のFire HD 10 を手に入れた!
これでニコニコ動画とかも見放題だ! と思ったんだけど、ニコニコ動画を見られるようなアプリがAmazonAppストアには無かった...
なので Google Play ストアを入れてみることにする

参考URL
http://omolite.webcrow.jp/fire/google_play/
FireタブレットにGoogle Playをインストールする方法【2023年版】 | 有限工房

できた!

スマブラSP 崖捕まりランキング(改)

崖捕まりの姿勢にはキャラ差があり、キャラによって射撃Miiのチャージショットが崖捕まりに当たったり当たらなかったりします。
それによってサムスとダークサムスのチャージショットが当たるかどうかも分かるんですけど、俺はどうせサムス使わないので画像データには情報を含めてはいません。
2019-01-23に hyperT's 氏が検証データをまとめてくださったのですが、当時まだ出ていなかったDLCキャラは含まれていません。
というわけでDLCキャラ5体(パックンフラワー、ジョーカー、勇者、バンジョー&カズーイ、テリー)を追加で検証してみました。

■崖上に手・身体がはみ出る長さ
* パックンフラワー 5 ~ 9cm
* ジョーカー 1 ~ 5cm
* 勇者 1 ~ 5cm
* バンカズ -5 ~ 0cm
* テリー 1 ~ 5cm

■一覧画像(緑色の枠の中のキャラは崖捕まり状態に射撃Miiのチャージショット最大溜めが当たる)

■ちなみに
パックン、バンカズ、フィットレ、ヨッシークッパJrの5キャラは崖捕まりの姿勢が大きく変化します。
バンカズは頭が上に大きく出てきた瞬間だけ射撃Miiのチャージショット最大溜めが当たります。
でも、頭が出てくるまでの時間が結構長いので、実戦ではあんまり当たらないかなと思います。
普通は無敵が切れた状態でそんなに長く崖に捕まらないので...
他の4キャラはどの姿勢でも当たります。

パスカルの三角形を描画するプログラム(C言語)

先に実行結果から

                                      1   
                                   1     1   
                                1     2     1   
                             1     3     3     1   
                          1     4     6     4     1   
                       1     5    10    10     5     1   
                    1     6    15    20    15     6     1   
                 1     7    21    35    35    21     7     1   
              1     8    28    56    70    56    28     8     1   
           1     9    36    84   126   126    84    36     9     1   
        1    10    45   120   210   252   210   120    45    10     1   
     1    11    55   165   330   462   462   330   165    55    11     1   
  1    12    66   220   495   792   924   792   495   220    66    12     1   
#include <stdio.h>
#define N 12 //描画するパスカルの三角形の段数

long combi(int,int);
int main(){
    for(int i=0;i<=N;i++){
        for(int t=0;t<(N-i)*3;t++){
            printf(" ");
        }
        for(int j=0;j<=i;j++){
            printf("%3ld   ",combi(i,j));
        }
        printf("\n");
    }
}

long combi(int n,int r){
    if (r == 0) {
        return 1;
    }

    return (n - r + 1) * combi(n, r - 1) / r;
}

フィボナッチ数列を求めるプログラム(C言語)

フィボナッチ数列 1,1,2,3,5,8,13,21,34,55… の一般式は

F_{n}=F_{n-1}+F_{n-2}   F_{1}=F_{2}=1   となる

再帰を使った素朴なC言語プログラムを書くとこんな感じ

#include <stdio.h>

int Fibo(int);

int main() {
    for(int i=0;i<10;i++){
        printf("%d ",Fibo(i));
    }
}

int Fibo(int n) {
    if (n == 0 || n==1) {
        return 1;
    }
    return Fibo(n-1)+Fibo(n-2);
}

nCrを求めるプログラム(C言語)

n個の中からr個を選ぶ組み合わせの数nCrを求める。

\displaystyle {}_n C _r =\frac{n!}{r!(n-r)!}

#include <stdio.h>

long combi(int, int);

int main() {
    int n, r;
    scanf("%d %d", &n, &r);
    printf("%d C %d = %ld\n", n, r, combi(n, r));
}

long combi(int n, int r) {
    if (r == 0) {
        return 1;
    }
    
    return (n - r + 1) * combi(n, r - 1) / r;
}