ヌッ

適当

「現場で役立つシステム設計の原則」を読んでます(1-3章)

DDDやっていきたいなーとか言ってたら同期にこの人の本良いっすよと言われて読んでみたのだが思った以上に良い感じだった

1章 小さくまとめてわかりやすくする

ソフトウェアの変更が大変なのはどこをどのように変えればいいのかが分かりにくいのが原因。
だから分かりやすい構成、設計にするべき。
始めの方は「変数の命名はxとかじゃなくて意味がわかるものにしようね」とか、
DRY原則を守る」とかリーダブルコードに書いてあるような基礎的ですぐに実践しやすいことが記載されている。

ここで数値だったらなんでもbuildinの型使っちゃダメよと言っている。
例えばお金を示す値だったら整数だからとりあえずint型かなとしがちである。
が、システム内ではintの最大値と同じ金額を使うパターンが無いとか、100円単位で使われる可能性がある。
そのため専用の型として「値オブジェクト」を使い仕様を厳しくするべきである。
これにより異常値が入ってエラーが発生するということを防ぎやすくなる。

エリック・エヴァンスのDDD本とか実践DDD本とかだと割と後の章で値オブジェクトの概念が解説されるので1章目でこの話をするのかーと思った。
でも確かに「〇〇という概念がある。それは〜」という説明よりは「こういう課題があるので対策としてこういう設計がある。これを〇〇という。」という方がストーリーだっていて分かりやすかった。
また、よくエンティティと値オブジェクトの違いは可変か不変かですよという説明は見ていたのだが、なんでそういう分け方にしてるのかとかはよくわかっていなかった。
この書籍だと値オブジェクトの利用例があり分かりやすい。(他の書籍や記事でもあったのかもしれないがたどり着けてなかった)

2章 場合分けのロジックを整理する

基本はif-else文だと入れ子構造が深くなっていて複雑になるから控えようね、という話。
対策として「ガード節を使う」、「カテゴリ用のEnum作っておく」、「多態性ポリモーフィズム)をもたせる」などがある。
これは書籍にはなかったが個人的には以下のような辞書型を使ったスクリプトで場合分けを行うことが多い。(上司に教えてもらった)

# 元コード
fruit = input()
if fruit == 'apple':
  return 100
else if fruit == 'orrange':
  return 200
else
  return 0
# 改良版
fruit = input()
prices = {'apple': 100, 'orrange': 200}
return prices.get(fruit, 0)

3章 業務ロジックを分かりやすく整理する

書籍ではデータクラスとロジックは分けないで書こうという話をしている。
正直言うと僕は役割が異なるから別で分けるものという認識だった。
しかしここを分けてしまうとデータクラス、ロジックの変更の影響範囲がどこなのかを調査するのが難しくなってしまうという問題がある。
データクラスとロジックをあわせて業務内容を再現したオブジェクトをドメインオブジェクトという。

また三層アーキテクチャについても触れている。ここでいう三層は以下の層を示す。

  1. プレゼンテーション層
  2. アプリケーション層
  3. データソース層

n層とかレイヤーアーキテクチャとかはよく聞くのだが、上記の層含めどういう層があるのかとかはいまいち分かってなかった。
MVCでいうとそれぞれV, C, Mが対応してるんだろうか。
同じような役割の層でも呼称とか変わる場合もあるし難しいものである。flaskとかだとMVTだし
書籍では業務領域を表すドメインオブジェクトの集合であるドメインモデル(ここが一番複雑な処理になるはず)を別の1つのレイヤとして持つことで他の三層の記述は簡潔になる。

ふりかえり

手元に以下のDDD関連の古典がある。まだ全部は読みきれてない。

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)

実践ドメイン駆動設計

実践ドメイン駆動設計

頑張って古典を読んで理解しようと思ってたのだが、その途中で「現場で役立つシステム設計の原則」に触れておもしれーってなったので一通り読み進めたいところ。
これ読み終えたら上記2冊も読んでより理解を深めたい。
割と実装してる最中でも(この実装この階層であってんのか……?)となって開発に手間取ったり手戻りすることがあったりするので、サッと判断して爆速で開発できるようになりたいものである。
引き続き4章以降も読み進めます。

路上プロレス生で見た

皆さんは路上プロレスをご存知でしょうか。
大体こういう感じのやつです。アマゾンプライムでも「ぶらり路上プロレス」とかやってて面白いので皆見ましょう。

youtu.be

それはともかくとして、たまたまDDTのサイト見てたらこれを見つけたので行ってきた。

東京・グランデュオ蒲田「路上プロレスinグランデュオ蒲田
DDT ProWrestling

試合開始が18:00からだったので会社の会議終わってからすぐ出発した。
Twitter見る限り屋上からスタートするらしかったので、会場付いてからエレベーターで屋上に移動した。
と思ったのだが途中階で降りた瞬間に怒声が聞こえ、眼の前に樋口和貞がいた。男色ディーノもいた。
こりゃ行くしか無いと思いすぐに降りて観戦を始めた。

各階を移動しながら普通の床に叩きつけたりいろんな技をやっていた。
それに合わせて観客はヤジを飛ばしたり写真撮ったりして追いかけた。
男色ナイトメアや地獄門などのコンプラ的に非常に問題のある男色殺法も見た。
19:00頃に決着がついた。ピッタシ1時間くらいだし、タイムキープが素晴らしい。
というか早めに出発しておいて本当に良かった。

すごい近くでよく知ってるレスラーがいるってだけでも貴重な体験だけども、
普通のデパートの中、大人数でレスラーを追いかけるのが体験としていい。
ヤジ飛ばしたり、ちびっこが参戦したり、試合中にレスラーと記念撮影したり、路上プロレスでしか見れないシーンが沢山ある。
もちろんブック(八百長)というか茶番が沢山あるんだけどそれがこの上なく面白い。
他の団体もこういうのやればいいのになーといつも思う。
どう考えても「路上プロレスやらせてください」と交渉するのは難しいし、
明らかに試合後怒られてるんだろうけど。
それに普通に買い物に来てた人からすればクッソ迷惑なわけで……。
ただこういうバカをするというのがこの上なく楽しい。

したい。どうすれば出来るんでしょうか。新潟プロレスに所属して交渉すればいいんでしょうか。

www.n-p-w.jp

レスラーデビューコースあったわ。マジかよ。というか大日本と提携とか色々やってるんすね……。
デパートでやるにしてもリングたてるだろうし、路上プロレスはしてなさそうだけど……。
あと選手プロフィール見たらレルヒ少佐とかアオーレ長井とかいて草。


普通に今はエンジニア職しながら総合のジムでやっていきます。

youtu.be

初めてライブハウスに行った

フェスとかはたまに誘われていってたんだけど小さい箱ってあんまいったことない。
行きてぇなぁ行きてぇなぁとずっと思ってたけどようやく行動に移した。
特別気になるバンドがあるわけでは無い。
ただ下北沢は近いしバンドの街というイメージがあったので、たまたまライブやってるところを探して行った。

結局このイベントに行った。
liveholic.jp

箱はこじんまりしてるんだけどそこそこ人はいた。
客層としては大学生くらいの男性女性がほとんど。
意外におばさんもいた。

雰囲気としては割と落ち着いていて、体揺らしながら音楽楽しむ程度。厄介はいない。
空気だけでいえば学祭のライブとかを思い出したけど、
やっぱちゃんとしてるというか流石にプロ(?)で演奏は上手い。

聞いた中だとまちぶせというバンドが一番良かった。
曲も良かったんだけどMCのマシンガントークが面白くて盛り上がった。
「照明で暑い!なんだこの照明、こんな照明初めて見たぞ!たこ焼き器みたいな形して!たこパ、皆さんたこパやったことありますか?いねえよなぁ陰キャしかいねえんだから!」
とか脊髄で話してた。良かった、ロックは陰キャのものなんだ。
他のバンドは結構MCが短くて「後2曲やったら終わりますー」程度で、曲をしっかりやっていく、硬派タイプが多かった。

あと全体の感想としてステージ上で演奏するの楽しそうだなぁというのもあった。学校とかで演奏してたのが楽しかったのを思い出した。
滋賀県から来ました、〇〇です」とMCしてたバンドがいて、声に出して読みたい日本語だった。(ナンバガリスペクト)
コピバンでもいいけど、このネガティブで憂鬱な感情を歌詞に出来たらなとも思った。
曲としては電子音、重低音、変拍子とかが好きなんだけどジャンル的にどうなるのか、どこでライブやっているのか、あんましよく分かってない。
結局面倒でトラックメイカーにはならないんだろうな。

それはともかくとして今回みたいにフィールドワークしていくと新たな発見あっていいし、
ただ突っ立って聞いてるのも退屈なわけではなく割と曲を楽しめた。
音圧を感じるのがいい。周りがノッているのが分かるのもいい。
もっとライブに参加していく、バンドTを買っていく活動やっていきたい、楽しいので。

www.youtube.com

Vim再履修

色々あったので一日vimrcいじるなど開発環境の見直しをした。
技術的な話なのでQiitaに書いても良かったけど個人的なvimrcをちょっと改良した、勉強した程度なのでこっちにした。

dotfile

github.com

これが今の最高状態や。(更新したらまた変わるわけだけども。)
昔「最強のvimrc晒す」みたいな奴適当にパクって使ってたんだけども、
今回はちゃんと中身理解しようと思って色々調べてから必要な奴だけにした。

公式ドキュメント

vim-jp.org

やっぱ公式が最強や。vimtutorだけやってたけどマクロとか知らない操作ちょくちょくあったので勉強になった。

dein パッケージ管理

github.com


neobundleは死んだ、もういない。(開発中止している。)
ということでパッケージ管理は全部deinで出来るようにした。
調べてる限りだとtomlファイルで別に管理している人が多いようだったけども、
そんなに多くのパッケージ使わないだろうし、管理するファイルを離散させたくなかったのでvimrcにベタ書きすることにした。

利用パッケージ

github.com

入力途中で単語のサジェストをする。

github.com

日本語ドキュメント。:helpで呼び出せる。

github.com

ファイル一覧とか呼べる奴。Ctrl + nで開いたり閉じたり出来るようにした。

map <C-n> :NERDTreeToggle<CR>
let g:NERDTreeShowHidden = 1
let g:NERDTreeNodeDelimiter = "😀="
let g:NERDTreeDirArrows = 1
let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'
let g:NERDTreeGlyphReadOnly = "RO"

github.com

いろんな言語のカラースキーマとか勝手にやってくれる君

github.com

文法チェッカー君。
synatsticは死んだ。
そんなに細かく設定しなくてもコード書いてる途中に勝手にlinterが動いてくれる。
Ctrl + fでlintに沿うよう修正できるようにした。
flake8, autopep8とかは別でインストールする必要あり。

map <C-f> :ALEFix<CR>
let b:ale_linters = ['flake8']
let b:ale_fixers = ['autopep8', 'isort', 'yapf']

github.com

インデントの色つける君。
いつもHTMLのタグ間がわからなくなってたのでスペース2個のインデントでも色が変わるようにしてる。

let g:indent_guides_enable_on_vim_startup = 1
set ts=2 sw=2 et

所感

よくわからんまま使ってるところが分かってスッキリしたし面白かった。(小並感)
自称vimmerの割に有名どこのパッケージ使いこなせてなかったのは普通に恥ずかしい。
ただ設定できる範囲がデカすぎるし一日で知るのは到底無理だと思う。
また今度復習とかして見直したいところ。

最近の仕事

新卒二年目に突入した。
エンジニア業もなんやかんやクビにならずに済んでる。
最近疑問なのが近い職種の人とやってることが近いのか遠いのかである。
自分では割と幅広いような気がするのだが、本当に普通より範囲が広いのか狭いのかわからない。
もしかしたら今後ポートフォリオとかに書けるかもしれないのでまとめてみる。

本業

  • 設計
    • UI
      • google slide使う
      • 見た目もそうだけど機能の確認もする
    • 機能
      • google document使う
      • 機能の詳細を詰めたり調査結果まとめる
      • DBから変えるときは影響範囲もデカかったりするのでその辺も
    • テスト
      • google spread sheet使う
      • この辺まだ不慣れ
  • 実装
    • front end
      • Vue.jsでゴリゴリ作る
      • 微妙なズレとかでCSSと格闘しがち
    • server side
      • GAE+python
      • ここが一番やってて楽しい
      • リクエストの仕様はcerberusで書く
      • GAE ndbだとコードでDBスキーマかけるのでmigrationが不要で楽
  • テスト
    • UI - テスト設計に書いたやつをポチポチやる
    • API - postmanでポチポチ
    • その他 - ログ見たりとかdatastoreの中身見るとかしてチェック
  • 運用
    • リリース - 基本CIが全部やってくれるけど事故らないか見守る
    • サポート - 仕様どうなってるんすかというのに答える、正直これが一番辛い
    • 障害対応 - 事故ったときはGCP consoleとにらめっこして調査し修正対応、異常に不安になったりハイになったりする

副業

  • イベント系
    • 司会 - なんか喋る、たまに絶叫する
    • ケータリング手配 - 出前館 is GOD
    • ブースに立つ - お悩み相談する
    • 動画を作る - プロダクトの葬式用
    • 墓を作る - プロダクトの葬式用
  • 研修で面倒見る系
  • 求人お手伝い系
    • 面談 - 雑談
    • 求人イベント - 雑談
  • その他
    • ブログ - 書くかも
    • 発表 - 極稀、やっていきたい
    • 幹事 - 経費精算ももう慣れた
    • 電話応対 - たまにある、苦手

補遺

バイト時代は実装だけとかだったので大分やれることは増えた感。
出来るようにしたいことは色々あるけど、今は仕様の理解・提案をもっと早く精度高くやりたいなというお気持ち。
以上です。

youtu.be

技術書展6に行った

入場

話題の技術書展に行った。
昼間の時間帯が有料だったので14時くらいに会場に行った。
ちょっと眺める程度でいいかなーくらいの気持ちだったので遅めに行ったのだけど、その時間でも結構な列が出来ていた。
ぶっちゃけそれ見て帰ろうかなとなったけどせっかく来たんだと思って並んでいた。
思ったより進みは早くてすぐ会場に入れた。

場内

エンジニアだな〜って感じの人が沢山いて安心した。アキバらへんとか高専の学祭と同様の雰囲気。
同人誌即売会自体行くのが初めてだったけど、アプリ使ってQR読むだけで完結する会計は楽でスムーズだった。
スムーズすぎて買いすぎたというのはある。僕としては投げ銭的な意味合いもあったけど。
混んでるとこは人の流れがかちあっていてちょっと大変だった。
一方向に案内してもいいんじゃ、と思ったけどそう上手くはいかないものだろうか?
混雑時の人の流れいい感じにする手法とかって確立されているんだろうか……
実はあれが最適解なのだろうか……
とはいえずっと身動き出来ないわけではなくて全体はザッと見れた。

技術書

僕が今興味あるのはGCP、設計、フロントエンド周りなど、Web系で自分に足りないかなと思ってる技術だ。
ただフロントエンド周りの技術のが多かったような気がする。タイトルがそれと分かりやすかったというのはある。
あとweb系のバズワード?(PWA, SSR, GraphQL, gRPCとか)の認識がガバガバだったのでその辺も買った。
あと企業が出してる書籍は体裁が整っていて様々なコラムが載ってるのでどれも面白そうな印象があった。

売り子さんと話すのも結構良かった。
GAEの本を試し読みさせてもらったとき、あとがきに公式ドキュメントの愚痴があって分かる〜みたいな話をした。
ぶっちゃけ内容は知ってるやつだったのに買ってしまった。
はたまた全然興味の無いJSのフレームワークの本を手にとったら色々そのフレームワークの良さみたいのプレゼンされてすげ〜ってなったので買ってしまった。


所感

そういえば僕の夢というか野望の一つとして「書籍を出す」というのがあるんだけど、
だったらこういうとこで本出すところからやりゃいいじゃんと我に返った。
最近読んでる本とかでもアウトプットしていくべきという話は多かった。
理由として自分の理解を深めるのにつながるというのもあるのだが、
自分を売るという意味にもなる、というのを最近認識した。
あと売ってる人たち書いてる人たちが楽しそうというのもある。
ぶっちゃけ超マニアックな謎な書籍とか超初心者向けの書籍も結構置いてたりするので俺がショボい本出しても別にいいだろ感もある。
どういう流れでサークル出場すんだか全然知らんけど。やるとすれば半年後にGCP関連の書籍を個人で出すとかだろうか?
待ってろよ、技術書展7……!

www.youtube.com

格闘ジム電撃移籍(予定)

最近のジム

今は月6コースで、土日に行って柔術をする程度にとどまっている。
そこそこ有名どこのジムらしく、教えてもらうテクニックは勉強になるなぁと思ってはいる。
ただ打ち込みあとのスパーリングが3回くらいしかできなくて不完全燃焼感がある。

以前のジムだとスパーリング5分間6回連続やってもなんとかなってた。(ちびっこの相手してたからという説も有力)
その他にも打撃やレスリング、サーキットトレーニング的なことも出来てたので、終わるころには死ぬほど疲れてた。
正直せっかく練習に行くなら死ぬほど疲れた状態で終えたい。

自宅に一番近いジムがたまたま柔術の名門ジム的なところだったので、
しばらく柔術に集中して練習するかと思っていたが、
今や会社帰りには通えてないし、打撃もやりたいという気持ちも強くなってきた。

選びどころ

やっぱり家に近いところがいいが、通勤経路上のがいい。
近いうちに通勤経路を変える予定だったので、そのあたりで調べた。

どこのジムも曜日ごとのスケジュールとかが決まってるわけだが、
偶然にも土日に5時間ぶっ続けで色々な練習できるところ発掘したのでそこにしようかと思っている。
(出来るかどうかは別)

今後

昇段出来るほどには上手くなりたい。
上達しない理由の一つとしては通う頻度が少ないからだと思う。
それでいてダラダラ続けているので、上達を感じられず常に辛い。
ただ大学時代でも週2,3通ってたが試合では1回も勝ててない。
体はガチガチに固くて前屈しても床に手がとどかない。
腹筋も割れてない。

喧嘩商売の1コマで「間に合わなくてもやるしかないだろクズなんだから」というセリフがあって時折思い出す。
(読んだこと無いけど)
結局愚直にやるしかねえよなと思ってひとまず続けている。
もっと仕事さっさと終わらせて、帰りの道中でジムによって帰る生活にしていきたい。
本当は研究して技を改良しなきゃなんだけど全くわからない、雰囲気でやっている。

はたまたジョジョ8部で「結局強さは性格だ」という敵キャラのセリフがあって、これもそうだなぁ、好きなセリフだなぁと思っている。
まぁどういう性格が強いのかという明確な答えは出て無いが……

柔術始めてたぶん15年になるが相変わらず白帯である。
練習中も(いつになったら勝てるんだ……)と鬱々としながらも戦っている。
手加減されるときもあるがそっちのほうが滅茶苦茶悔しい。
それでもなぜ続けてるのかというのは一応理由がある。
中学、高専時代はそれぞれ別の部活をやっていて柔術から離れていたのだが、この時期も柔術のことが頭から離れなかった。
大学入ってからジムに入って練習を再開したが、やはり楽しかった。
なのでまた辞めたとしてもどうせすぐにやりたくなるんだろうなと思っている。
前述の通り結果は出せなかったが、ガタイは良くなったと言われるので多少効果はあったと思いたい。
これからもダラダラ死ぬまで続けようと思う。

www.youtube.com