【学習記録】アーキテクチャ改善

今日はバックエンドのアーキテクチャを整えるために、いろいろ手を動かしました。
現場ではクリーンアーキテクチャを基にしたディレクトリ構成で開発していてなんとなく雰囲気掴めているので、それを参考にしてます。
知見が浅い分野なので文字にまとめるのも難しいですが、アウトプットすることも理解を深めるきっかけになるかと思うので書いていきます。

しばらくアプリを急いで実装することを優先していてアーキテクチャはそこまで気にしていなかったのですが、APIが増えてくるとだんだんアーキテクチャの粗が目立ってきたので、少しずつアーキテクチャを勉強してを整えていきたいと思います。

まだまだクリーンアーキテクチャを深く理解はできていないので「クリーンアーキテクチャ golang」で検索して、下記の記事を読んでみました。

qiita.com

nakawatch.hatenablog.com

eng-blog.iij.ad.jp

うーん、何回読んでもクリーンアーキテクチャ関係の記事は難しいです。

しかし難しいものを放置していても難しいままなので、なんとか現時点での自分の理解を自分の言葉で書くと以下になります。

  • コードを疎結合にして変更を加えやすい状態を保つ。(いわゆるスパゲッティコードにならないようにする感じ?)

  • フレームワークやDBなどのリソースに依存しないようにする。DBがMySQLでもPostgreSQLでもコードは影響を受けないようにする。そうすることで技術要素の変化に対応できるようにする。

  • 依存する方向を一つにする。
    DB->ビジネスロジック->リクエストを受けるけるハンドラーみたいな感じ。 これに関しては「単一責任の原則」とか「SOLIDの原則」という概念を理解する必要がありそう。どちらもまだよく理解できていないが、とりあえずそういう概念があるということを意識する。

そんな感じでいろいろ記事読みながら自分のアプリのアーキテクチャ改善に着手しました。

github.com

現場ではアーキテクチャ設計などの重要なタスクは自分よりもっと技術力高い人がやってくれて自分が触る機会はないので、個人開発などで自分からアーキテクチャ設計しないといけない状況を用意して手を動かす機会を作っていきたいと思います。

現場である程度アーキテクチャが確立された後は同じ手順でAPIを増やしていけば良いのであんまりアーキテクチャに悩むこととかないけど、やはり自分でゼロから設計していくと自分がまだまだ理解できていないところが明らかになって良い感じです。

少しずつ勉強してスキル高めていきます。