だましだまし
今日もまた何だか辛く苦しい日々であった。
自分は何かとすぐ理由をつけたがってしまう。この辛さはきっと●●のせいだからだろう、と。そして、自分はそこそこの行動力とそこそこの知恵があるので、その思い当たる困難を克服してしまう。
そして、それを克服しても結局人生は辛いままなのである。
少なくとも3年くらいはこの繰り返しだった。結局、能力を得ても、新しい仕事を得ても、お金を得ても、自分が救われることはなかった。この感じとの付き合いも8年目となるとだいぶ熟練してきた気がする。そう、趣味は自分救いである。
もしかしたら、最近は一生本当に幸福だと感じる日は来ないのかもしれない。そんな中でもだましだまし、回復しながら生きて行く術は身につけられたのである。
幸いなるかな。
気に入ったので。
前日は早く寝たので起きたら7時くらいだった。
もそもそと起き上がり、テーブルの上に転がっているメモ帳とボールペンを手に取る。
メモ帳から紙を一枚切り取り、今日やりたいことをツラツラとリストアップしていく。
10個くらいリストアップできたので、毎日のノルマになりつつある勉強を始める。
2時間くらい試行錯誤しながら、何となくコードの全体像も分かってきて満足する。
次に、だらだらと日記を書き始める。昨日朝から夜までをボーッと思い出して、カタカタとキーボードを叩く。
最近買ったハッピーハッピングのキーボードは音が結構大きいが、メカニカルキーボードではなく静電容量式なので軽く叩いても反応があったりして面白い。
なんかすごい長い文章になったなぁと思いながら、内容の空虚さに満足してそのまま投稿する。
この辺で眠くなってきたので昼寝をする。
昼寝から目覚めたら、ランニング用の服に着替える。走るときはいつもAmazonプライムミュージックから適当にプレイリストを流している。
ボーカロイドを流すことが多いが、今日は「サラリーマン応援ソング」を選んだ。一曲目は「夢を諦めないで」
家を出たら、少し雨が降りそうな雰囲気だったが、まぁ大丈夫だろうと特に何も準備はしなかった。
しばらく走って皇居周辺についた。一部車が通行止になっていた、神輿を担いだ一段が道路を埋めていた。
半周くらい走ると、雨が降ってきた。プレイリストからは演歌歌手っぽい誰かのアンパンマンの歌が流れてきた。何のために生まれて、何をして喜ぶ。
雨はどんどん強くなっていった。
誰からも好かれるはずがないという自己認識
なかなか布団から起きられなかった。
もう買って数年たった布団は少しくたっとしていて、寝心地が良いわけでもないが、起きてもやりたいことが思いつかず、いっそもうこのままぐだぐだと1日が終わってしまった方が良いのではないかと考えながらゴロゴロとしていた。
2時間くらいゴロゴロして、だいたい満足したくらいで布団から起き上がり、色々とタスクを片付けていく。
布団を干し、いつも着ているシャツの襟に最近買った襟用洗剤を塗りたくり、洗濯機に放り込みスイッチを押し、床に散らばるゴミ類をまとめてゴミ袋に詰め込み、ルンバのスイッチを入れ、ゴミを捨てにいく。
ゴミを捨てに行った時に、ふと思い立ち近くの自販機でコーヒーを買い、家の目の前にある神社にいく。
今週はとても寒かったが今日はとても暖かかった。そんな日差しの中、神社の前では工事が行われていて、カラーコーンで区切られた中では60歳くらいのおじいさんが働いていて、その肌は日に焼けて黒かった。
神社の境内に向かうには、急な階段と少し緩やかな階段があり、クロックスを履いている我が身を振り返り、これ途中で裾を引っ掛けて転んだら階段の下まで転がり落ちて死ぬんだろうなと思いながら、階段をのぼっていく。
境内には土曜日なのに、というか土曜日だから、というか人が結構いて、僕はその辺のベンチに腰掛けて、人をぼんやりと眺めながらコーヒーを飲む。
コーヒーを飲み終えたら、境内の中にある池を眺める。池のそばに立つと、鯉が大量に近寄って着て口をパクパクさせている。しゃがみこんでぼんやり眺めていると、小さな子もわきに座り込み、同じように池を眺めている。その子の親らしき人が「餌をもらえると思って近寄ってくるんだね」と子どもに話しかけている。
池を離れて、境内を出ようとする、登りと同じ階段を降るのは怖いので、ゆるやかな階段をぼんやりと下っていく。
家に帰ると、鍵を閉め忘れていたことに気づくが、特に誰も入った気配もなく、入られたとして盗られて困るもんは特にないなと思いつつ、家中のものがなくなっていたらやはり困るな、と考え直す。
部屋の掃除は途中だったような気がするが、自分の最低限の許容量は超えたのでもうこの程度で良いかと思う。ネットでハウスクリーニングを調べると二万円くらいでたまには利用しても良いかなと考えたりする。
PCを立ち上げ、2時間くらい適当にプログラムを書く。特に書きたいものがあるわけではないが、書けたら良いなと思っているものはある。MVVMパターンについて解説された本を読むが、内容は英語でイマイチ分からず、とりあえず書いてみて動きを確かめて、いつか天啓が落ちて理解できる日がくることを祈る。
ノルマも達成して満足したので、ネットで近くの銭湯を調べる。
歩いて20分くらいのところにカプセルホテルがあることを知り、外に出る準備をする。朝干した洗濯物は生乾きな気もするし、乾いている気もするが、襟につけた洗剤の効果があったようで、汚れは落ちているような気がする。そのことに満足して、生乾きなんだかよく分からないシャツを着て外に出る。
ぶらぶらと歩きながら、今日の神社の様子を思い浮かべ、絵とか書けたら素敵なことじゃないかと思ったりする。
着いたカプセルホテルの利用料は1時間1000円だった。受付の人に1000円と消費税を払い、初めてだと言うと、ロッカーの場所と風呂は地下一階と告げられる。
ロッカーに荷物をしまう。ロッカーを閉めた段階で、携帯と財布もしまいっぱなしだが、まぁ別に良いかと思う。
風呂は思ったより狭い気がして、まさにカプセルホテルだなと思う。とりあえず足が伸ばせれば良い。
風呂に入って足を伸ばして、前の会社にいるときに行われたハッカソンのことを思い出す。何も知らないおじいさん型に2年前くらいに流行った技術を使ったことをアピールするというタイムマシン的方法で技術賞を貰ったが、最優秀賞を取れなかったことを思い出す。仮に今年も出るとしたらどんなもんを作るかなと考える。
今なら前よりiOSを書けるようになっているが、機械学習もARもなんだかなぁと思ったりする。
風呂を入ってサウナに入る。サウナはミストサウナらしく、目の前が真っ白で何も見えなくなる。段々目が慣れてきたが、蒸気が強すぎてあまり長くいたくないな、とすぐに外に出る。
体の汗をシャワーで流し、もう一度風呂に入りなおす。
風呂を入って牛乳の自動販売機を見つける。財布をロッカーにしまったことを後悔したが、入館時にもらったIDタグをかざすだけで買えることを知り嬉しくなる。
牛乳を飲み干し、二階の漫画コーナーに上がる。
オススメ一覧からアイアムアヒーローを見つけ、最終巻を読んでいないことを思い出して、適当な椅子に座って読み始める。
「その人は生きている方が勝手に苦しむから」という台詞が印象に残る。
入館時間を覚えていなかったので、延長料金を取られるかもなぁと思いながらチェックアウトする。値段は牛乳代の130円だけだった。
カプセルホテルを出て、東急ハンズの場所を探す。歩いて20分。
GoogleMapで位置をみて、ざっくり方角だけ理解して歩き始める。
途中、横断歩道で信号待ちをしていると、中国人の人に「Excuse me」と話しかけられる。GoogleMapを突きつけられる。自分の手元でも検索し、通り沿いを200m先ということが分かったので、この通りを200m先と伝える。
中国人が日本で質問するときにExcuse meというとは、英語は世界公用語なんだな、と思う。
東急ハンズに着いて、入り口の階案内を眺める。階案内がオシャレなカタカナで書いてあって、どこに何があるのか全く分からない。
諦めて適当にまわるかとエレベータに向かう。
エレベータ前の階案内にはカタカナ語に配置してあるものの詳細が書いてある。
文房具はカラフルステーションにあるらしい。
カラフルステーションに着いて、ノートコーナーに行き、なるべくシンプルな自由帳を買う。
東急ハンズを出ると、もう外は暗くなっていて、何かを食べたいと思う。
ただ、何かを食べたいが食べたいものは思いつかず、駅前を3往復くらいウロウロとする。
ぼんやりと歩いていると、女の人に話しかけられる。
20代後半男性がどんなところに住みたいかのアンケートを取りたいと言われる。
身の危険を感じたが、暇なのでOKをし、道の脇に移動させられる。
許可もとっているので怪しいものではないですと言われ道路使用許可証を見せられる。
今後も突然話しかけられたときは、許可を取っているか確認すれば良いのかと思う。
アンケートは本当に大したことなくて、年収と家賃と住居選びで大事にすることと、今後持ち家が欲しいか賃貸が良いかを聞かれる。
年収と家賃を答え、今のところはやはり家賃が高いなぁと思ったりする。家は多分持たずにずっと賃貸だろうなと思う。
引き続きぼんやりとウロウロすると、シャフト原画展という看板に、マギアレコード・化物語・Fateの絵がある。どれも知ってそうであまりよく知らないなと思いながら、入場料無料という文言に惹かれて建物に入り、8Fまでエレベーターで上がる。
原画展の入り口はもう封鎖されている。
そばにいた係の人に「もう終わりですか」、と聞くと、「5分前に終わりました、大丈夫ですか」と聞かれる。
「大丈夫かと聞かれたら、悲しいです」と答えると、ちょっと考えた末に15分以内に見終えるならいいですよ、と通してくれる。
中は化物語の原画展だった。アニメを見たことがないのでよく知らないなと思いながら適当に眺める。結局3分くらいで見終わる。
係の人にお礼を言って外に出る。
せっかくだからこの建物でご飯を食べようと思い、地下に降りる。
地下には牛タン屋があった。
カウンター席に座り、定番っぽい定食を頼む。
近くのテーブル席で男の人二人が会話しているのが聞こえてくる。
働き蜂の法則というものがあって、80%はちゃんと働くけど20%は働かないし、この20%を取り除いても残りで同じように働く奴と働かない奴が出るんだよ、ということを片方の男が言っている。
働き蜂にそういう性質があるからといって、人間にもそれが当てはまるという部分にはなんの論拠もないよな、と思った。
牛タンはとろろが美味しかった。
行きは歩いてきたが、帰りは電車に乗ることにした。
最寄駅で降りて、帰り道のローソンで、珍しくお酒を買うことにする。
徳島店フェアという珍しいものを見ながら、サワーとよもぎ餅を買う。
家についたら、よもぎ餅を食べる。あまり美味しくなくて残念。
Discordで大学時代の知り合いからチャットが飛んでくる。
僕が紹介したラジオの話と、仕事の話を少し。地方公務員をしていると、なぜか国に行った人は偉いという価値観があるらしい。その偉いの内訳を聞くと、どう整理しても忙しいから偉い、以外の理由を見出せない。
以前も国に行っていた人のプチ講演会があったので聞いてみたが、ただの忙しい自慢で、講演会のあとはお酌をする列ができたらしい。
気持ち悪い世界観だね、と返す。
学歴が役に立ったことはないが、無根拠な権威主義的なものがつかなかったことは良かったと彼は言う。
11時くらいになったので布団に入る。
布団の中で悶々と考える。今日は自分は幸福だったのかどうか。幸福とはなんだ。
友達に言われたことを考える、「そもそも人生の目的が幸せにあるとは思わないけどな」。そうかもしれない。
1時間くらい悶々と考えて、ふわっと脳裏に浮かんだ考えがとてもしっくりくる。
自分は「誰からも本当に好かれるはずはない」ということ。
他者との関係性を利益の与え合いという枠組みでしか捉えられない。自分と仲が良い人も僕といて楽しいから付き合うわけで、僕といてつまらなかったら離れてしまうんだろうな、と考えている。
自分が色々と自助努力にこだわるのも、有益・有能であることで公共としての価値があり、これが失われると人が離れてしまうだろう、という感覚があるからではないか。
初対面など関係性のない人との会話が苦手な理由も、相手に自分の立場から提供できる能力や知識がないとコミュニケーションの方法が分からなくなるからだろう。
自分の持つ、自信満々さと自信のなさとの共存も理解できる。自分の能力には自信はあるが、自分の存在自体には自信はほとんどないのだろう。
事実かどうかはともかく、そう認識しているという話である。
自分のことを、とても悲しい人間だなと思ったりする。
それでも自分の考え方が分かってホッとする。自分が何を考えているのか分からないのが辛いのだ。
次やることは、誰からも本当に好かれないなりの生き方を探すか、この考え方を改める方法を探すかのどちらかだろう。
期待値のコントロール
低気圧がくると体調が悪くなる。
一般的な症状らしい、何年か前から精神的にも不調になりやすくなった。
久々の連日の雨はそういう感じですぐわかった。
期待値のコントロールって難しいと思う。
人はいつでも誰かに何かを期待している。多くは言語化されないことが多い。
一緒に協力して何かを為すとなると、とても感じやすい。
期待値のコントロールがなされていないと、相手がその能力に至っていない無能と無意識のうちにみなしてしまうことがある気がする。
ちなみにTwitterだと主婦と旦那の育児という文脈でよく散見される。
仕事の話。
エンジニアとしては、いつだって企画の人には端末の仕様や制約について理解をしていて欲しい。デザインガイドラインだって公開されているんだから、ちゃんと読んで欲しい。スケジュールについてもしっかり策定し、仕様をそれを意識してコントロールして欲しい。
そういう思いが出てくる。
そんな中でこういう記事を見た。
実社会と開発側が異なる言語を扱っている状態。記事に書いてあるまさにこの状態だなと思った。相互が相互に理解しあわないといけない(むしろ予算などについてはこちらは結構意識しているので何も考えていないわけでは無いが)
何にせよまだまだ道半ばといったところか。
相手を無能とみなして仕事をするのは辛いものがあるので、互いに期待値のコントロールはしたいと思う。
やりたいことがない
転職して三ヶ月が経った。最初はまた新しい環境で人間関係を作るのか、と少し萎えていたところもあったが、思ったほど心配はしなくて済みそうだった。
周囲の人も気さくでは無いが、共同体というものを感じさせない。言い方を変えると、集団生活という意識に乏しい人が多く、馴染むのはそんなに大変ではなかった。孤独は集団のなかで発生するという言葉が思いだされる。
仕事も前とは大きく変わったが、どうやら期待値は満たしているようだ。
人が少なすぎるというのもあるが、入ってそうそう新しいプロジェクトでは音頭を取ることになったりもしている。
私生活では、GWを活用してラスベガスに遊びに行ってきた。趣味のポーカーのためである。
現地に住んでいる知人が、ポーカープレイヤー向け安宿を知っているらしく、一週間で$100と破格で泊めてくれた。
当日も現地の有名カジノを色々案内してくれたり、現地でポーカーで生活をしている人たちから面白い話を聞いたり、自分も実際にプレイして$400くらい稼いでみたりした。
もう少し滞在期間が長ければ交通費・宿泊費含めてプラスにするのも、そんなに難しくはなさそうだった。
こうやって列挙してみると、順風満帆に見える。
だが、本当にこれで良いのか、わからなくなっている。
ここ4年くらい、人生これで良いのか分からんという問題意識があり、仕事について真面目に勉強していた。結果、転職して給与も上がり、資格もいくつか取り、そこそこ評価燃されつつあるような気がする。
ただ、内的な幸福にはあまり関係がなかったような気がする。
結局、多少何かができるようになっても、この世にはまだまだ高い山が存在するという当たり前の事実に気づかされるに終わった。どうしても目標とする地点を絶えず用意せざるを得ず、定期的に情報を得て追いついていかないような作業は、周囲や世間と常に比較する必要があり、いつまで経っても満足感は得られないようだ。
そこで内的な幸福を得るために、自分が心からやりたいと思うことに目を向けたいと思った。
驚いたことにそれが何も無いのである。
確かにポーカーやゲームは一つの選択肢だが、これもまた他人と競争があるという意味では仕事と変わらないような気がする。どっかで疲れてしまうだろう。
色々なことに手を出しているので、「多趣味でいいね」と言われることがある。
そう言われるたびに、楽しそうにやってるように見えるかもしれませんが、自分でもこれが楽しいのかどうか良く分からないんですよね、と心で答えている。
ReactiveExtensionsへの理解のメモ
何故最近Rxについて調べているのか
個人的な動機
最近は動くことより、読みやすい設計、変更に強い設計などに興味がある。
その中で、Reactive Extensionを使ったReactive Programmingに触れる機会があったので、
勉強してみた。
# ゴール
正直内容の抽象度が高すぎて理解が難しいと思うので、以下を覚えてもらえれば良い。
* ReactiveProgrammingという概念が存在すること
* ReactiveExtensionsというライブラリが存在し、それは特定言語だけではなく様々な言語に存在すること
* ReactiveExtensionsは非同期処理を扱う時に便利であること
# ReactiveExtensionsとは
ReactiveProgrammingを実現するためのデザインとライブラリ。
Java/Kotlin/JavaScript/C#/Scala/Python/Swift etc etc
主に非同期な処理を解決するためのフレームワーク。
## 非同期処理とは
* ユーザーからの画面入力
* ボタンタッチ
* HTTPリクエスト/レスポンス
* 現在地取得センサー
* ファイルアクセス
etc
## 既存の問題解決手法
* delegateパターン(コールバック)
相手に終わったらこれを呼び出してね、とお願いする
* Observerパターン
イベント発信側と受信側を用意し、非同期処理が完了した時点で受信側にそれを通知するというデザインパターン
(GoFデザインパターンなどを参照)
RxはObserverパターンをより拡張(隠蔽)したものである。
ReactiveProgrammingはデザインパターンや思想なので、言語を跨いで利用できる。
実際、RxJSで利用していたのでRxSwiftは簡単に扱えた。
# ReactiveProgrammingのパラダイム
1. 宣言的な記法(どうするではなく、どうなっているを記載する)
2. データの時系列リスト化
* 宣言的プログラミングや関数型プログラミングなど似たような概念が結構あって、僕もまだ区別できていない。
## 反応的(宣言的)
反応的に変化しない命令的な場合
A = 1
B = A * 3
A = 2
A-> 1,B -> 3
反応的に変化する宣言的な場合
A = 1
B = A * 3
A = 2
A -> 1, B -> 6 <— AとBは *3 という関係性が定義されているので、Aの変更がBにまで反映する。
B = A * 3
BとAは*3の関係性を持つ。ここで定義されたのは何をするのか、ではなくどうなっているのか?である
ExcelなどはReactiveと言える。プログラムとしては奇妙だが、動作自体は直感的とも言える。
内部的にはAの変更を検知して、Bに反映されているのだが、その部分を隠蔽してくれるのがRxとも言える。
## 非同期イベントを全てストリーム(時系列リスト)として考える
関係性と考えると、その関係性への入力は「状態」とみなすことができる。
そして、状態というのは時系列に変化する(例えばチェックボックスやテキストボックスも状態と考えることができる)
全てのものがどういう状態の場合、どうなるのか、ということを定義し、
そこに時系列的なデータを入力すると、データや画面が入力に応じてパチパチと変わっていくよね?
ということである。
(すべてのセルに関数が埋め込まれており、ある一つのセルが時系列に応じて変化していく様を想像してほしい)
## そう考えると何が良いのか?
抽象度が高すぎて難しいかもなので、実際のコードを見た方が早いかも。
1. テストがしやすくなる、動作が理解しやすい
手続き型で“BにはAに3をかけたものを入れる”というコードを書いたときのテストは、”BがAの3倍であること”を確認するはずである。これは解説すると、”BにAに3をかけたものを入れた意図は、BがAの3倍であるようにしたいから”という意図を表現したいからである。
宣言型の場合、”BはAの3倍である”と書いており、意図もなく書いた通りである。もう定義の時点で、テストの目的の一つである意図を表現することができているのである。
つまり、テストとはそもそも宣言的なものであるため、宣言的に書かれるとテストがしやすくなるのである。
また、コードは振る舞いそのものなので、振る舞いは当然理解しやすい
2. すべてのデータが変換可能になる
先の例だと、A -> [1,2,3]となったときB->[3,6,9]となる。これは一つのストリームが別のストリームに変換できたことになる。
チェックボックスがクリック何度かクリックされると、そのたびテキストボックスに「使用可」「使用不可」と表示される流れを考える。
[false, true, false] -> [使用不可,使用可,使用不可]というストリーム変換と理解できる。
このように抽象度を引き上げると、全てのものに関係性を記述することが可能になる。
3. 組み合わせられる
"CはAの偶数判定の結果である”という定義があったとする、
A[1,2,3] -> C{false, true, false]となる
当然このCというストリームは2.のテキストボックスの表示に利用することができる。
# memo
* 状態は変化するが、振る舞いは変化しない
* 変化するものを引数にし、変化しないものを固定させる。
→状態を変数化、振る舞いを定数化させる。
→また、状態は時系列に変化するため、状態をシーケンシャルなリストで表現する
RxSwift ReactiveProgramming with Swift メモ2
Subscribing to observables
- ObservableをSubscribeすることはIteratorの.nextを呼ぶことと近い
- event要素はOptionalなのでUnwrapして使うことができる