6月はAtCorderとDDD。書籍学習と手を動かす作業のバランスに気をつけて進める。ある程度学習する方向性が見えてきたので3ヶ月後の理想の姿を考えてみました。他の仕事も頂けるようになりたいのでインプットを終えてアウトプットしている状態になりたいですね。今月に入って本格的にDDDを学習中なのですが、対面で増田さんの話を聞いてみたく参加してみました。DDD初セミナーでテンション上がってるのでまとめ記事書いてみました。19時半から21時半のセミナーでした。概要は以下の通りの2部構成でした。内容は上記スライドの通りですが、気になった内容は以下の通りです。なんでもドメイン駆動設計と照らしてしまっている気がする。ビジネスがそもそも複雑。システム化すると複雑になる。核心にある複雑さを解くと周辺が自然に明確になる。マイクロサービスでもドメイン駆動設計の言葉が出てきた。開発者がビジネスの活動を継続的に学び続けることが大切。ビジネスを多少学んでビジネス用語をある程度使えるようになった時は要注意。1つのテーブルだけで答えが出るようなものはコアドメインではない。ドメイン駆動のモデルと実装は、どろどろした切り離せないもの実装したら微妙だったからモデルを見直すこともある。技術的に無理やりシステム間を連携させることもできるかもしれないが、シンプルでスマートな方法を常に検討する。料金計算については画面もDBも関係ない。モデルを仮に作成し、コーディングする。来なかったらモデルを回収する。コアはスコープ次第で変わる。シーズンか特別室か一般室かなど軸は色々試してみる。主軸の選び方を絵だけではなくコーディングまでして確認する。歯抜けの仕様書をもらった時に埋められるほどのビジネス知識になったらベスト。ドメイン駆動言語に最適なのはJava。Pythonも良いが、Javaが良い。結局現場に導入するには、DDDの体験的な習得が必要。エヴァンス本は即効性はないがジワジワ効いてくる。着目点など、設計の質が変わってくる。2003年ごろのオブジェクト指向モデリングの本は読まない方が良い。顧客クラスや商品クラスといったモデリングはDDD的に意味がない。ビジネスルールを引き出すにはどうしたら良いか。間違えていても仮のビジネスルールを持っていって訂正してもらう。営業はわかっていない。あと、興味ない分野には手を出さない方が良い。-ドメインマスターが捕まらない場合はどうしたら良いか。DDDにより変更要件を仮実装するハードルが低くなる。-なぜビジネスルールは複雑なのか。ビジネスの活動を継続的に学ぶことは避けられないんだろうなと。例題として上がった宿泊予約システムの料金計算は大変勉強になった。モデルと実装を往復する。試しに実装してみるという考えが大切という考えに至らなかった。エヴァンス本は読みにくいと思っていたがやはり読みにくいらしい笑。エヴァンス本は紙で買うべきだった。自らの著書「現場で役立つシステム設計の原則」を推していたが、仰る通りエヴァンス本と比較して日本人にわかりやすくて余計なことを書いていない。エヴァンス本より前に読むべき。オブジェクト指向設計の書籍はハードルが高そうだが読まないと。宿泊システムのモデルになった宿の裏設定もあってリアルさに笑った笑。いった背景を理解すると複雑なビジネスロジックになる理由がよくわかる(背景をわかっていないとストレスになるんだなと)。こちらで紹介されています。今までJavaの開発が多く、Javaは静的型付言語であった。最近Railsの開発に携わっており、静的型付言語と動的型付言語の違いを実感することがあったため雑ですが今思うことを以下に備忘メモとして残しました。Rubyは動的型付言語であり、開発時にカルチャーショックを受けることが多い。簡単な書き方であれば困ることはあまりないが、メタプログラミング要素を含む書き方になると調査難易度が格段に上がる。現場で感じた動的型付言語のメリット・デメリットは以下の通り。大規模になればなるほどメリデメは顕著に現れるように思える。現在参画している案件は大規模のため、以下の特徴を強く感じている。影響範囲調査に時間がかかる(対応箇所の検討は付くが、裏取りに時間がかかる。(雑な言い方だが)頭が良くないときつい。RubyはDDDと相性が良いように思える。ドメインを明確に決めることで役割が明確化し、可読性、メンテナンス性が高まる。Rubyの設計スキルを上げるためにDDDを学ぶ必要がある。大規模のプロジェクトでRails(動的型付言語)を使っている場合は序盤は全体構成の理解に徹するべき。SOAによるサービス単位での分割など、大規模になりすぎないようにシステムを分割することを検討した方が良い。2019Rubyのよく使う定義メソッド確認コードよく使うメソッドの確認方法をまとめました。クラスメソッドとインスタンスメソッドを両方出力するメソッドは見当たらないです。IPA試験があったためそれに費やす時間が多かった。AtCorderが面白い。Rubyで遊びつつデータ構造やアルゴリズムの勉強ができるので楽しい。通勤中は英語勉強がベスト。オーディオブックは他に注意を向けると文脈がわからなくなるため単発の英語が良い。勉強時間は多めに確保し続けることができている。(長期課題)デザインセンスが乏しい。システム設計の原則本が読み途中。Bitnami+WordpressのHTTPS化をしてみました。以下コマンドで証明書発行ました。このコマンドを見つけるまでに時間がかかった。Railsが動作する前提で探すと(PHPと比較して)どうしても高くなってしまい、遊び程度のシステムを作成するにはどうも気が引けます。簡単なWebサービスであればAWSのサーバレスアーキテクチャがかなり安く運用できそうなので、簡単な運用費計算と簡単な動作確認までを記事にまとめました。王道ですが以下3つの構成から成る簡単なWebアプリを作成するとします。大まかな料金表は以下の通り。(日割りされるみたい。超ざっくりですが、皮算用は0.5USD/月程度です。安すぎるけど計算間違えてないかな・・・。計算している人を見ると、やや違うけど、とんでもない金額にはならなそうなのでとりあえず進みます。ME温泉ソムリエエンジニア。サーバ構築からアプリケーションの開発まで手広く対応。