2022/08/04 『ソフトウェアアーキテクチャの基礎』 - Techmee vol.2 感想

timeedev.connpass.com

参加してきました。 タイトルの「ソフトウェアアーキテクチャの基礎」自体は未読で参加したのですが、学びが多かったので感想をメモしておきたいと思います。

アーキテクチャ決定は「最善」ではなく「最悪ではない」アーキテクチャを目指す

  • 自分としては最善を目指しがちで作業が止まる、というのが癖としてあるので、もしアーキテクチャ選定に関わるのであれば気をつけないとなと思いました
  • 同時に、「最悪ではない」を実現するには(発表にもあった)判断を遅らせることや、また判断を遅らせてもよいポイントを見抜くための「後で変えられるもの/変えられないもの」を見極めるスキルや経験、意識が必要だよなとも思いました

アーキテクチャ特性は全ての特性を高い水準で満たすことはできないので、トレードオフを意識して取捨選択をしたり、程度を決める必要がある

  • こういったトレードオフの判断をするために、アーキテクチャ特性にどんなものがあるか理解が必要になるんだな、ということを思いました
  • また「どういう状況で、どういう選択を、なぜとったのか」というのをしっかり把握しておく、ないしは記録しておくことが、アーキテクチャの継続的な成長にも必要そうだと思いました
    • この話に関連してADRも話題に上がっていたかなと思いますが、お話を聞く限りまだここら辺のベストプラクティスはないような気もしています

機能が増えるに従って設計の重要性が増し始める

  • 具体的にはPMFあたりから設計の重要性を意識し始めるよね、という話もあった気がします(間違ってたらすみません)
  • 個人的な所感ですが、だいたい最初のローンチから2-3年くらいという感覚もしており、ここら辺は皆何となくの感覚があるのかもしれません
  • いずれにせよ、「アーキテクチャが今の環境に対応できているか?今後対応していけるか?」というのは、何かしら時期(四半期とか)や企業活動(調達とか)の折に触れて検討すべきことなのかもしれません(何かしら内外の変化が生じているはずなので)

DevOps・組織構造・ビジネスおけるコアな価値など、さまざまな要因が アーキテクチャ決定に影響する

  • この要因を把握するだけでもしんどそう...と思いました
    • だからこそ発表の中でも「アーキテクチャの決定は難しい」とされていた気がします
  • どこまで検討に時間をかけるか、というのも現実の問題として現れてきそうとも思いました

参考になった書籍

感想として大きなものはこんなところだったかなと思います また、「dependency-cruiser で依存関係を把握して境界作りに役立てる」というのは良いアイデアだと思ったのと、以前別の勉強会でもありましたがやはり実戦で学ぶところが多いので、身近なところから考えてみるというのは大事だなと感じました。

駄文ですが、感想でした。 参加させていただき、ありがとうございました!

2022/07/22 NestJS meetup Online #3 感想

nest-jp.connpass.com

こちらのイベントに参加したので、まなびになった部分をメモとして残しておきたいと思います。

参加したモチベ

  • 参加しているプロジェクトでNestJSを採用している
  • 技術選定をどう考えるか、ということ自体に興味があった

まなび

技術選定

  • 技術選定においては技術的なチャレンジ・ワクワク感というのも軸としてありうる
    • 枯れている技術は安定しているが、チャレンジ要素は少ない 
    • 一方で新しい技術はチャレンジングで面白いが、技術的な解決が難しくなるシーンもあり
    • 両者のトレードオフを意識する必要がある
  • 検索ボリュームで情報の流通量を調べて技術選定に活かす
  • 継続的な発展が期待できそうかを判断するにあたり、スポンサーの多さ・内容をチェックするのも良さそう

NestJSのよさ

  • 技術的なキャッチアップがしやすく、始めやすい
    • JSを触っていれば、基本文法でつまづくというのはないハードルの低さ
    • 思想の癖が薄めで軌道修正がしやすいフレームワーク なので正解を知っており、周囲をリードするような人さえいれば導入がしやすい
  • スイッチングコストの低さ
    • フロント・サーバサイドをTypeScriptで一本化できる
    • ここは発表いただいた3社全てに共通する採用理由だったかと思います Nest JSのもつ良さの中でも主要なポイントだと思いました
    • (エンジニア採用という面でもメリットが大きそう)
  • DIが標準でサポートされている
    • (自分は正直ありがたみがよくわかっていないが)前回のNest JS Meetupでもこの部分に良さを感じている方が多かった印象です

NestJSのつらさ

  • これというベストプラクティスがまだない部分がある
  • ドキュメントの充実度が低い
    • (ここは人による部分もありそうで、「充実している」という意見もありました)
  • NestJSというよりORMにツラみがありそう
  • 「この機能はNestJSでもあるだろ」というような機能でも意外となく、解決するのにExpressの知識が必要な場合もある
    • (ここは逆にいうとExpressの知識がきちんとあれば解決に至ることができる、とも言えるのかなとも思った)

Nest JSの運用テクニック

  • 肥大化にはまずモジュールの分割で対応するのが良さそう
  • 依存関係が複雑になり始めたらdependency-cruiserを使うのも一つの手

編集後記

  • トータルでNestJSは「いま始めるのにちょうどいい技術」という印象を受けました
    • 始めやすさ・変更のしやすさ、技術の成熟度(枯すぎず・新しすぎず)というのがいいバランスの状態なのかなと思いました
    • 逆にいうとこれは今現在の状態なので、今後どうなっていくかという意味でもウォッチしていきたいフレームワーク だなと思いました
  • 技術選定については、技術的なチャレンジの要素も選定の軸になりうるというのが気づきでした
    • ワクワク感や楽しさというのも加味して考えるのも一つポイントだなと思いました
  • NestJS MeetUp #3 - YouTubeので興味のある方はぜひご覧いただければと思います
  • 登壇者・運営の方々、貴重な機会をいただきありがとうございました!🙏

2022/07/20 ビットキー × Voicy × バニッシュ・スタンダード 3社合同開催「DDD勉強会」感想

bitkey.connpass.com

こちらの勉強会に参加させていただきました。自分のTwitterのメモを頼りに感想を書いておこうと思います。

※ 投稿者は「DDDってよくわからないけど、なんかいいらしいぞ!」くらいの知識しかないので、 不正確な理解・適切でない表現についてはご容赦いただけると幸いです 🙏

メモ

他のアジャイルスクラムの勉強会でも似たような話(「スクラムは方法論じゃないので”スクラムではこうすべきですか?”はやめましょう!」)を聞いたので、心に残ったフレーズでした。

教条主義というか、考え方やツールに固執して振り回されるのではなく、直面する現実にきちんと向き合ってその考え方やツールが適応できるか・課題を解決できるか考えないといけないよなあと思いました。

ここら辺は勉強不足で「そういう言葉どこかで聞いたことあるなあ」くらいでしたが、今回のお話がまさに現場においてこれらを実践したらどうなったか、という話だったと理解しています。

他の発表もそうでしたが、今回はリファクタリング・リプレースの文脈でDDDの採用となったケースが多いのかな?と思いました。

一方で別の勉強会ではクライアントワークにおいて、初期段階で速くドメイン知識を吸収するために採用しているケースもあるという話を聞いているので、DDDの利用シーンは特に限定されておらず、直面する課題と、DDDが解決してくれるものが適合しているかで考えないといけないなという先の話にもつながる結論に落ち着きました。

そして、そのDDDが解決してくれるものとして仕組み化による堅牢性や知識の集約、ということが話されていました

また、DDDの実践においてはチーム・システム両面において段階的に適応するのがやはり王道なんだなと感じました。

特にDDDは人によって理解がまちまちだと思うので、チームに関しては共通認識をしっかり作っていかないと難しそうに感じ、 その段階的な適応を推進するために、知識や立場の面で周囲をリードする存在はやはり必要そうに思いました。

同時に、課題に直面しているとどうしても一足飛びに解決策に飛びつき、全て適応したくなるところを抑える問いとして、 「〇〇を始められる開発組織なんだっけ?」という発表スライドのタイトルにもなっていたフレーズは冷静さを取り戻させてくれる良いフレーズだなと思いました。

感想

まだまだDDDの理解のスタートラインに立ったばかりの自分でも色々な発見があり、楽しい勉強会でした。 主催してくださった3社の方ありがとうございました🙏

また、第二回目も予定されているようなので、関心のある方はぜひ参加されると良いと思います。

bitkey.connpass.com

エンジニアとしてブログを始めてみる

重すぎる腰を上げて、エンジニアとしてのブログをやっと作成した。

前々からアウトプット大事だなーとは思っていたものの、ブログやるならドメインとかとったほうがいいのかな、どこでどうやるのがいいのかな、なーんてことを考えていて全く進捗していなかったので、結局一番手間が掛からず始められそうな、はてなブログで始めることにした。

そもそも続くかどうかも、読む価値のあるコンテンツを投稿できるかもわからんのに色々と考えすぎたと反省しつつ、読んだ本とか参加した勉強会の感想なんかをゆるく書いていければいいなーと思っている。