koboriakira.com

2020年4月18日、土曜日。

昨日は寝れずに『Clean Architecture』を読んでいたため寝るのが朝6:00頃だった。それでも眠れなかったので、なにかを聴きながら寝ようと思ってAmazon Audibleに契約。DaiGoの音読本ばかりが売れているなか、『サピエンス全史・上』を買ってみた。

歴史とくに人類史に疎いので、布団のなかで第1章の「認知革命」を聴いているだけでも知らないことばかりだった。たとえばホモ・サピエンスの「前」にホモ・ネアンデルターレンシスがいると思っていたが、そうではなく複数種類の人類がいること(こんなの当たり前の知識なのだと思う。たとえば「2001年のM-1には一般審査があった」とかは、私にとって当たり前の知識だ)。

聴きながら寝落ちしたので他は忘れてしまったけれど、寝る前の感覚はよく覚えている。「135億年前から2020年に生きる自分」を見ていた。正確に言えば「2020年に死ぬ自分」を想像していた。ワニの話?


そんなままダラダラ寝ていた13:00頃。唐突に配偶者が自分を呼んだ。向かってみると、どうやら破水が始まったらしい(このブログには明示していなかったけれど、無事に産まれたので以降は書ける。4月から有給をとっていた。このあとは育休が1年ある)。

昨日も破水のような出来事があって通院したため、なんとなく準備はできていた。とりあえず荷物を入れて、タクシーで病院へ。本来であれば一緒に院内に付き添いたかったのだけれど、緊急事態宣言中なので妊婦以外は院内にも入れない。送り届けて、そのまま自宅へ戻った。

雨風が強く、人通りの少ない日だ。帰りしな食洗機の洗剤と浴槽の洗剤を買って戻ったが、すぐにどこかに失くしてしまった。それなりに動揺している証拠。

戻ってからはしばらく部屋の掃除をしたり、買っておいた新生児用の道具を準備したりした。本来であれば5月に生まれる予定だったのが2週ほど早まったので、まだ準備のできていないもの多い。

しばらくすると配偶者からLINEが届いた。陣痛がひどく痛かったようで、麻酔をしてからは落ち着いたこと、出産中に聴きたい音楽リストを作っていることなどを話す。

22:00頃から出産が本格化することを伝えてもらい、22:25を境目に連絡が途切れた。テレビで観る出産シーンが繰り広げられているだろう。

---落ち着かないので、はじめて自宅待機の指示を破って外へ。すこし散歩をして帰ってきた23:00頃、配偶者からLINEが届いた。 40秒ほどの動画の中には、新生児が映っていた。息子がモニターの向こうにいる。スピーカーを割るような産声だった。


2020年4月17日、金曜日。結局「城之内死す」まで見てた。これも「何度見ても笑っちゃう」映像のひとつかも。フリが効いてるんだよな。

VSCodeのExtensionの管理をちゃんとやろうと思って調べてみた。 ~/.vscode/extensionsに拡張ファイルたちが入っていることがわかった。ただファイル容量が大きくなってしまうので、一覧を管理したいのが本音。

あわせてsettings.jsonもちょっと手入れ。Pythonをもうすこし極める気になったので明日もうすこしやってみようと思う。


食洗機を買ったことで、食洗機に依存した食器を揃えたほうがいいかなと計画していた。食洗機は安定度が高いので、食器や生活を食洗機に依存させるべきなんだろう。

というかもしかして生活全般を依存制御すべきなのでは。なんてちょっとダーティーなエンジニアすぎるかも。だけれど「私」について「安定している(依存される、変更できない)」とするか「安定していない(依存する、変わりやすい)」とするかは、とても哲学的というか、意外と人生教訓みたいになっちゃったな。「依存することは固着ではなくて、むしろ自分の可能性をどんどん変えられるチャンスなんだ」みたいな。自己啓発本が一冊かけそう。

---ひきつづき、『clean architecture 達人に学ぶソフトウェアの構造と設計』の第Ⅴ部。

  • 第15章: アーキテクチャとは?

  • アーキテクチャの「形状」の目的は、 ソフトウェアシステムの適切な動作ではなく 、開発・デプロイ・運用・保守を容易にすることである* それらを容易にするための戦略は、 できるだけ長い期間、できるだけ多く選択肢を残すこと である* 「残すべき選択肢」とは、重要でない詳細である* (開発初期の)データベースシステム* (開発初期の)ウェブサーバー(ウェブ経由で配信するかも決めなくていい)

  • (開発初期の)RESTなど、外の世界に対するインターフェース* (開発初期の)DIフレームワーク* 決定を遅延させることで、システムを適切につくるための情報が数多く手に入る* 優れたアーキテクトは、「方針」と「詳細」を慎重に区別して、詳細の決定を保留できるように方針をデザインする* 第16章: 独立性* ソースコードを変更から保護するために、システムの切り離し方式(の選択肢)をシステムの成長にあわせて検討しなければいけない* レイヤーやユースケースを切り離す方法として、次のようなレベルがある* ソースレベル: モジュールの変更が他モジュールの再コンパイルにつながらないよう、モジュール間の依存性を管理* デプロイレベル: モジュールの変更が他モジュールの再ビルドにつながらないよう、デプロイ可能な単位の依存性を管理* サービスレベル: 依存性をデータ構造のレベルにまで下げて、ネットワークパケットだけで通信する* たとえば最初からサービスレベルで切り離すこともできるが、そのためのリソースは高くつく* サービスを「作れそう」なところまで切り離すのが良いのではないだろうか* 第17章:バウンダリー:境界線を引く* アーキテクトはシステムの構築・運用リソースを最小限に抑えるため、早すぎる決定との「結合」を防がなければならない。

  • 早すぎる決定を延期・保留するには、「境界線を引く」ことだ。

  • 境界線は「重要なもの」と「重要でないもの」の間に引く* 入出力はモデル・ビジネスルールにとって「重要でない」

  • 境界線を引くためには、システムをコンポーネントに分割し、必要な機能が含まれるコアなコンポーネント以外をプラグインにする* 依存関係逆転の原則(DIP)、安定度・抽象度等価の原則(SAP)の適用* 第18章:境界の解剖学* モノリシックな実行ファイルであれば、下位レベルから上位レベルへ依存するように分割する* 最も強い境界はサービスであり、あらゆる通信はネットワークを介して行われる* (感想)通信の情報量は境界の強さと相関関係にある* 第19章:レベル* レベルとは「入出力からの距離」である* 入出力を管理する方針はレベルが最も低くなる* 上位レベルの方針は、変更の頻度は低いが、変更の理由は重要となる* 下位レベルの方針は、変更の頻度は高いが、(緊急性は高いものの)変更の理由は重要でないだんだん内容が大きく、抽象的になっていくので理解するのになかなか時間がかかる。クリーンアーキテクチャを示す同心円の図がシェアされて終わり、というのが本書のよくある読まれ方なのだが、精読すると「選択の保留」がもっとも重要であることにあらためて気づく(このあともっと重要なものが出たりして)。

読みながら感じたのは、よく「設計に”失敗した”からプロダクト開発も失敗した」と聞くけど、実際は「設計を”続けなかった”からプロダクト開発が失敗した」というのが正しいのかもしれない。言い換えれば「レジェンドコード」(下記参照)が生まれるのは当然であり、これをレジェンドにしない試みをプロダクトが存続するかぎり続ける必要があるのかなと思った。


2020年4月16日、木曜日。オシリスの天空竜が出てきた。

火曜日に届いた食洗機は、想像通りにいい感じ。まだ食器の入れ方がわからないので食洗機の大きさを持て余してしまっているが、いずれよくなるはず。ホットクックと合わせて、都合のいいときに家事をすればOKになった。


すこし時間が空いたけれど『clean architecture 達人に学ぶソフトウェアの構造と設計』のつづき。第Ⅳ部「コンポーネント」。

  • 第12章:コンポーネント* コンポーネントとは、「システムの一部としてデプロイできる最小限のまとまり」である* よいコンポーネントは、常に個別にデプロイできる状態を保つ* (感想)よいマイクロサービスの特徴もこれかな* 現在のわれわれは、気軽に使えるコンポーネントプラグインアーキテクチャを手に入れている* 第13章:コンポーネントの凝集性* コンポーネントの凝集性には3つの原則がある* 再利用・リリース等価の原則(REP): ひとつのコンポーネントを形成するクラスやモジュールは、まとめてリリース可能でなければいけない* 閉鎖性共通の原則(CCP): 同じ理由、タイミングで変更されるモジュールをコンポーネントにまとめること* 全再利用の原則(CRP): コンポーネントのなかに依存するクラスや依存しないクラスがないようにすること* REPとCCPはコンポーネントを大きくする方向に、CRPはコンポーネントを小さくする方向にそれぞれはたらく* 3つの原則はそれぞれに影響をおよぼすため、アーキテクトは三角形のなかで落としどころを見つける必要があり、それは常に変わり続ける* 第14章:コンポーネントの結合* コンポーネントの結合にも3つの原則がある* 非循環依存関係の原則(ADP): コンポーネントの循環依存はしてはならない* 依存構造はアプリケーションの成長、システムの論理設計にあわせて変わっていく* 安定依存の原則(SDP): 安定度の高い方向に依存すること* 安定度とは他コンポーネントとの依存/被依存ではかるもので、「ファン・イン(依存入力数)」と「ファン・アウト(依存出力数)」で計算できる* 安定度の高いコンポーネントは変更がしにくく(されない想定)、安定度の低いコンポーネントは変更しやすい* 安定度・抽象度等価の原則(SAP): コンポーネントの抽象度は、その安定度と同程度でなければならない* つまり「抽象度の高いコンポーネントに依存すべき」と言い換えられる* 抽象度は、コンポーネント内の「抽象クラス、インターフェースの割合」で計測できる* 「安定度の高い具象コンポーネント」は、拡張も変更も難しい「苦痛ゾーン」に位置される(ex.データベーススキーマ)

  • 「安定度の低い抽象コンポーネント」は、実際には使われていない「無駄ゾーン」に位置される* 理想的な安定度・抽象度(主系列)からの距離を計測し、できるかぎり近づけるようにすること「理解はしても実際にどうやるかが難しい」という話が多いが、これらの原則は忘れずにインストールしておきたい。株プログラムにデータ保存機能をあらためて持たせようと思っているので、原則にしたがっていくつかコンポーネントを作成する予定。

---深夜にちょっとした事件があり、すこしせわしなかった。ここから気持ちよく寝れない時期に入るかも。


2020年4月15日、水曜日。

ひきつづき身の回りの整理。Amazonのサブスクリプションの契約が多かったので(いつのまにか音楽、Kindle系のサービスに入ってた。一番笑ったのはdアニメに加入していたこと。なんか悔しいので『遊戯王』を見ながらこれを書いている。いま武藤遊戯とレアハンターが戦いはじめた)、まとめて解約しておいた。年間で3万ぐらい変わるはず。

それと来月以降に必要なものを一気に買う。「あれを買うと、これは要らないな」とか、「送料無料にならないんだっけ?」とか、パズルみたいな買い物だった。「せっかくならポイント10倍だ!」とか(どこで買ったかすぐわかるターム)、考えることが多すぎて、なかなか楽しい時間だった。

できれば配達が一括化されることを願うけれど無理そうで罪悪感を覚えつつ。


夜はゴスペラーズのDJの練習をやった。ツイッター配信もやったけれど、音声のルーティングにまた戸惑ってしまった。設定をスクショしたから多分つぎは忘れない。


2020年4月14日、火曜日。変な時間に起きてしまって、そのまま朝を迎える。

午前中、食洗機の設置のために家電量販店のスタッフが家に来てくれた。一緒に試行錯誤してもらいながら設置場所を決めると、その後はテキパキと設置を済ませてくれた。体力仕事をしている人はそれだけで尊敬する。

コロナの話を聞くと「エアコンの設置依頼が増えている」とのこと。


まったく眠くて頭がはたらかなかったのでプログラミングは休んで、いろんなウェブサービスの整理をしていたところ、CDBabyという音楽のディストリビュートのサービスに久しぶりにログインした。

CDBabyには私のデビュー作(smooth『contact』)を取り扱ってもらったのだけれど、11年経ったいま、実はSpotifyにアップしてくれていることを知った。当時は別名でやっていたのでこれまで見つけられなかったのだ。

それで検索してみたら本当にあって、ちゃんと聴くことができた。私ですらマスターがどこかに行っちゃったのに。

というわけで2009年から届いた私のデビュー作を久しぶりに聴いた。クオリティは度外視したうえで、なかなか良いじゃん、というのが感想。当然だけど私のやりたいヒップホップ(ヒップホップと編集)をやっている。

---2009年とくらべて私が(音楽面で)変わったことは一つだけだ。それは震災を経て「私がやるべき音楽を、生きている限りずっと続ける」という、すごいシンプルだけど強い選択である。 なんとなく、今年または来年は新曲を出す予感がしている。


楽天経済圏

2020/04/20

2020年4月13日、月曜日。

昨日につづいて雨が降っていて、かつ寒くなってきた。毎年会う人に伝えているけれど、「4月は寒い」ってことをみんな毎年忘れている。私も今日は忘れていた。

株のプログラムを書いたりしている間、投資に関するYoutubeを見ることが多かったせいで、Youtubeのレコメンドがとうとうお笑いの動画から投資、自己啓発へ移ってしまった。「あれを買え」、「これを捨てろ」みたいな動画ばかりで、なかなか面白い。自宅待機でヒマなのでモノマネの練習に励んだ。

「楽天経済圏」という用語もはじめて知った。そのうち楽天が紙幣刷ったりするのか?


ここ2週間ぐらいで得た知識を、「あとで後悔しないPythonのディレクトリ構成をつくってみる」(https://qiita.com/kobori_akira/items/aa42790354654debb655)として[Qiita](/tags/Qiita)にまとめた。とても小さな記事だが、分量はそれなりにある。この記事を書くことで自分のナレッジも定着した感じがする。

余った時間で、食洗機を設置できるように台所回りの片付けと掃除。久々にメラミンスポンジを使って本格的に掃除したかも。