koboriakira.com

2020年4月6日、月曜日。 珍しく午前中に起床。サボり気味だった掃除洗濯を早めに済ます。早めに買いものを終えて、ホットクックでいくつか常備菜を準備。


午後は『[Clean Architecture](/tags/Clean Architecture) 達人に学ぶソフトウェアの構造と設計』を読みなおすことにした。とりあえず第Ⅰ部。

  • 第1章: 設計とアーキテクチャ* ソフトウェアの設計=アーキテクチャは、システム構築・保守にかかるリソースを最小限に抑えることを目的とする* 「動くものを作る」姿勢だと、時間経過に応じてチーム・プロダクトの生産性は落ちていく* そのようにして生産性が落ちたプロダクトは、スクラッチから再設計されても同じように崩壊するだろう* 第2章: 2つの価値のお話* ソフトウェアは、「振る舞い(仕様)」と「アーキテクチャ」の2つの価値を持つ* 現場では「振る舞い」が優先されるが、 「アーキテクチャ」を優先させなければならない* 「完璧に動作するが変更できないプログラム」と「動作しないが変更の用意がプログラム」のどちらがよいか?

  • 「アーキテクチャ」は第Ⅱ領域、「振る舞い」は第Ⅲ領域* 開発者はステークホルダーとしてビジネスマネージャー(最近なら「プロダクトオーナー」だろうか)と闘争し、アーキテクチャの重要性を伝える責務があるそして第Ⅱ部。

  • 第3章: パラダイムの概要* 3つのプログラミングパラダイムは、「何をすべきでないか」という枠組みを提供した* 「構造化プログラミング」は、直接的な制御の移行に規律を課す* 「オブジェクト指向プログラミング」は、間接的な制御の移行に規律を課す* 「関数型プログラミング」は、代入に規律を課す* 3つのパラダイムは、アーキテクチャの重要な関心事とそれぞれ対応する* 構造化: 機能(の分割)

  • オブジェクト指向: コンポーネントの分離* 関数型: データ管理* 第4章: 構造化プログラミング* 構造化プログラミング以前、goto文の時代は、プログラムの処理はあちこちへ飛んでいた。そのためモジュールの分割、それぞれのモジュールの証明(テスト)ができなかった* 構造化プログラミングは、goto文を「順次」、「選択(if/then/else)」、「反復(do/while)」で置き換える発想である* 構造化によりプログラムは大きな機能を小さな機能に無限に分割することができた。今日のプログラミングはこれが基本* モジュールを分割することで、分割された機能は「反証可能」なものになった* 科学が「真であること」を証明できないように、テストも「正しく動作すること」を証明できない。可能なのは「誤った動作をすること」を証明することである(感想: だからTDDはfailから書き始める)

  • 第5章: オブジェクト指向プログラミング* 優れたアーキテクチャの基本は、オブジェクト指向設計の原則と似ている* オブジェクト指向の重要な点は、 ポリモーフィズム を安全に提供することにある* ポリモーフィズムによって、上位モジュールが下位モジュールに依存していた関係性を逆転することができる(依存関係逆転)

  • プラグイン・アーキテクチャ(OSは個別のIOデバイスに依存しないようにする)を元にした発想* ポリモーフィズムを利用することで開発者は、依存関係を制御の流れと関係なく好きなように制御できる* 依存関係を逆転・制御することで、一緒くたになっていたコンポーネントを独立してデプロイ・開発することができるようになった* 第6章: 関数型プログラミング* 関数型プログラミングの特徴は、可変変数を持たないことだ* 可変変数を持たないことで、競合・デッドロック・並行更新のトラブルを排除することができる* この「不変性」を実際に使うためには、サービスを「可変コンポーネント」と「不変コンポーネント」に分離させることが重要* (第3章からのまとめでを含めて)ソフトウェアは、「順次」「選択」「反復」と「間接参照」で構成されている。

とくにポリモーフィズムが大事だということがハッキリと伝わってくる。アナロジーを思いついたのでnoteポリモーフィズムと野菜炒め〜『クリーン・アーキテクチャ』を理解するためにを寄稿してみた。

---それでPythonで依存関係の制御を行おうと、実際のコーディングを勉強。InjectInjectorの2つのライブラリがよく使われているみたいで、とりあえず Inject から使ってみようか。次の2つのQiitaをもとに勉強する。


2020年4月5日、日曜日。 コンビニでコピーをとる以外には家にいた日。外出自粛というより日常を送っていたらそうなった、ってだけ。 SlackApp用のLambdaプロジェクトはいったん完成。App(ボット?)に対してメンションを送れば、その内容をもとにコマンド(呼び出すAPI)を使い分けるようになった。以前にGolangでも作ったのだけれど運用面を考えればPythonのほうがよかった。

とりあえず「モノがつくれる」レベルにはなったので、そろそろPythonのプログラミング技術をちゃんと勉強しようと思う。個人的にはコーディングよりもモジュール・パッケージ構成のベストプラクティスを知りたい。とくにクリーン・アーキテクチャをどうやって実現しているのか。書籍はあまり見つからなかった。

ちなみにできるかぎり端末を汚さないようにしていたが、やはりnpmは必要そうなのでちゃんとnodebrewを学んだ。 export PATH=$HOME/.nodebrew/current/bin:$PATH でパスを通しておけば nodebrew useで指定したバージョンをcurrentに配置して使える、ということを理解して「なるほどな〜」って感じ。こういう少しの成長が大切。


EDINETのxbrlファイル解析は、デモ製品が完成した。自分の作ったプログラムでは、良品計画、河西工業、ムゲンエステートあたりが「超割安」と判断されている。とくに良品計画は「10倍でも不思議じゃない」ぐらいの値になった。明日実際に有価証券報告書を見たりしてみよう。


2020年4月4日、土曜日。 最近夜型が当たり前になってきた。昨日からずっと30年前のフジテレビのスタジオで暮らしている。

食洗機の手配を早速済ました。再来週には設置してもらえそうで恐縮してばかりだった。店員さんに最近の状況を聞いたら「むしろ外出自粛で自宅にこもることが増えるので家電を買い換える人は増えたかも」とのこと。

あとはパッカーズのブログを更新。デビン・ファンチェスがコルツから加入。それなりに実績のあるプレーヤーなので楽しみ。


AWS CLIをDocker経由で利用できるように、公式がAWS CLI v2 Dockerimageを公開。Dockerイメージの公開と操作方法を解説してくれた。

たとえば下記のコマンドを利用することで、ホスト内の設定やCredentials(.aws)とカレントディレクトリをコンテナと共有させてawsコマンドが使える。

$ docker run —rm -ti -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli 公式ではこれを aws エイリアスとしておくことを推奨している。バージョンが気になる人は指定すればOK。

---ついでにServerless Frameworkも勉強してみた。最初はAmazonのサービスかと思っていたが、どうやら違うようだ(これがさらに誤認識だったりして)。その程度の理解だけど、とりあえずメモ。

  1. あらかじめserverlessのサインアップとAWS、githubとの連携を済ませ、serverlessを(npmなどで)インストールしておく
  2. serverless login でターミナルからログイン
  3. serverless コマンドでプロジェクトを作成して、 serverless deploy でLambdaにアップすることができる
  4. serverless.yml を編集して設定可能。API Gatewayを作るだけならすごい簡単

やっと簡単にgit管理しながらLambdaのプロジェクトを作ることができた。次のコマンドでイベントを実行することもできるみたい。本当にどんどん便利になる。

serverless invoke —function {ファンクション名} -p {jsonファイルのパス} —log さっそくSlack App用のLambdaプロジェクトをServerless Frameworkで作成しなおしてみた。

ところでいつもjsonの扱いを間違えて1時間かかるので気をつけないと。とくにSlackからのwebhookの”body”は文字列であることを忘れないように。

chat.postMessage を使うまでにもめちゃくちゃ時間がかかった。公式のドキュメントがまちがっている?

トークンをヘッダに入れないといけないはずだけど、その旨が書かれてなかった。自明だからか。


2020年4月3日、金曜日。

会社の最終出社日。退職でもないし、こういう状況で社内の人数も少ないので、とくに送別の雰囲気もなく終わった。個人の性に合う、ほぼ理想に近い最終出社だったと思う。

帰りしな、家電量販店に寄って食洗機の導入を相談した。帰宅後は配偶者がカレーを食べたいというので作ったけれど、配偶者に合わせて甘口を食べた。ほぼ「カレーのような食べ物」だったけれど滋味はあった。陳腐な感想だけど年齢が一桁だった頃を思い出す。


EDINETのXBRL解析は、MySQLをインストールして「過去5〜10年のデータを溜め込む」ことができたので、数年間にわたっての「1株あたりの価値」を見ることができるようになった。ためしに気になっている株を適当に見てみた。

昨日考えていた現状の株価を出す機能の開発を忘れていたので、明日以降にやるつもり。また処理とDBを同じコンテナ内でやっているので、これを分離させてdocker-composeで管理できるようにもしてみたい。 そこまで終わったらQiitaに投稿して、アウトプットのまとめをしておこうかと思う。

---昨日の『アメトーーク』の「みちょぱスゴいぞ芸人」は、このブログでは本当に何度も言っているので言い疲れたけれど、それでも将来の記録のため書いておこう。今日の放送は、バラエティ好きとして大笑いしながら見つつも、自身に深く刻み込まれてしまった《コンプライアンス》が何度もレッドシグナルを出していた。絶対に炎上するぞこれ。 私だって素直にみちょぱを褒めたい(先に言うけど、つまるところ関係性のプロがみちょぱだ。やりたい/やってほしい役を察知してくれるから、どんなこともできる。個人的にはそこに対する負い目のようなものを感じている「にこるん」のほうが共感はするけれど)。しかしバラエティはドラマじゃない。

あの場で行われていることは現実だと認識されて(みんな居酒屋の隣の席を見ている気分になっているのだ。めちゃくちゃ的を得ているアナロジーでは)、みんな怒りを覚えている。

そんなことを考えていたら、さっそく炎上してそうなタイトルの記事が目に入った。読むのはやめておこう。

---そんな感じで無駄に疲れを感じていたら、たまたま志村けんといしのようこの「五時の夫婦」のyoutubeがレコメンドされた。気づいたら2時間ぐらい見てしまっていて、あっという間にいしのようこのファンになっていた。コンプライアンス疲れの行く先は、コンプライアンスのまだ無かった「あの素晴らしい頃」かって? だったら相当にダサいぞ。 とりあえずしばらくは、このコントにコンプライアンスの流れ弾が当たらないことを祈ろう。「インターネットによって現実と虚構を区別できなくなる」という警鐘は、あながち棄却できないかもしれない。時間と空間が消えたいま、2020年のテレ朝のスタジオだって、1990年のフジテレビのスタジオだって、ヤフコメの照準は合わせられるのだから。


理論株価

2020/04/09

2020年4月2日、木曜日。 先日のEDINETのXBRLファイルの解析について、 edinet_xbrlというライブラリを作っている人がいた。ファイルのダウンローダーもパーサーも備えていて、ほとんどこれに頼ればよいことがわかった。

おかげで『知ってそうで知らなかった ほんとうの株のしくみ』を参考に、気にしている株の「1株あたりの価値」を出すところまでできた。たとえば日本電気硝子株式会社は現在1,326円だが、計算では2,972円になってもいい、と出た(注:当然ながら適当な結果ですので、投資は自己責任で)。

まだ実際の株価は手動で見つけるしかないのでこれをスクレイピングで取得することで、安全圏の調査までを自動化できるようにしよう。


2020年4月1日、水曜日。エイプリルフールは面倒なので無視。

理由あって休職の準備を進めている。今週で終わりを迎えるので、今週は業務を一切していない。素晴らしい「成果」」だ。新型コロナウイルスのせいで普段のマネジメントと多少異なるスキルが必要とされるが、次のリーダー・残るメンバーが上手くやってくれることを祈る。


この1年間を振り返ると、マネジメントを意識的にやった一年だった。とくに意識したことを振り返ってみると、こんな感じだったように思う。

  • 「友人」に先立って「仕事仲間」であることを意識させる* 「一緒に仕事をしてくれていること」に対しては素直に感謝を表す* メンバーの行動を客観的に描写して、本人の自己理解を促す* メンバーをどう評価しているかを定期的に伝える* メンバーの特徴・現状に応じて、自分の期待の提案を使い分ける* 仕事に慣れてない、まだ信頼関係がないメンバーには、期待する「行動」を伝える* 主体的に動けるメンバーには、期待する「ゴール」を伝える* チームの運営ルールはぜんぶ相談する。ただし決定権は自分がもつ実務レベルの貢献のほか、メンバーの効力感を高められたことが大きかった。各メンバーがひとつ「殻を破る」ような動きを見せてくれたことは、本人の姿勢は言わずもがな、自分がリーダーをやってよかったなと感じたこと。

チームの人数が10人を超えていたためやりづらい点は多々あったし、もうすこしエンジニアとして貢献したくもあったが、それなりに良い経験だった。複数チームの管理が今後のキャリアパスの短期目標になるだろう。なんて、久しぶりに仕事の話。

---フジテレビのバラエティは好き嫌いがハッキリ分かれるが、今日の志村けんの追悼番組は最高によかった。もし「自分が一番笑った瞬間」を尋ねられたら、たとえ笑いの量が劣っていようとも、絶対に今回の追悼番組のオープニングを紹介することに決めた。 コロナウイルスの影響で演者どうしの距離感が距離感が極端に空き、このスペースを埋めるために大きな遺影が置かれ、その全体を写すために(おそらくクレーンカメラから)引きで撮られた映像は、まぎれもなく「コント」である。高木ブーの「志村けんは死なないの、ずっと生きてる」はオカルトではなく真実だった。そう自分は評価している。

これで志村けんの最後のボケは「故人を偲ぶコメントを(写真経由で)邪魔した」ことと、「どう考えても遺影を突き破って飛び出てきそうなのに、まさか出てこない」ことになった。ご自身の仕事を最後まで貫いたのだ。カッコいいと思う。

令和2年、2020年。ノムさんが亡くなり、志村けんが亡くなり、私は大人になる。