Upgrade to Pro — share decks privately, control downloads, hide ads and more …

チームで高品質なコードを追求するための「設計標準」の育て方 / loglass coding standard

9996a9b734086ac06ed5e5d2ef6dac7f?s=47 shogo-ma
June 17, 2022
5.9k

チームで高品質なコードを追求するための「設計標準」の育て方 / loglass coding standard

ログラスでは、チームとして高品質なコードを追求するために「設計標準」というものを定め、チームで育てています。
この資料ではそのような取り組みについてご紹介します。

株式会社ログラス会社紹介資料
https://speakerdeck.com/loglass2019/whats-loglass

ウラ凸 - シリーズA 17億円調達のログラスのウラ側へ、カジュアル面談で突撃しよう
https://meety.net/articles/t2--zrl4ohf4gx6

外部公開している設計標準の資料
https://little-hands.hatenablog.com/entry/2022/01/28/programming-principle
https://little-hands.hatenablog.com/entry/2022/01/24/domain-object-design

9996a9b734086ac06ed5e5d2ef6dac7f?s=128

shogo-ma

June 17, 2022
Tweet

Transcript

  1. 1 ©2022 Loglass Inc. チームで高品質なコードを追求するための 「設計標準」の育て方 2022.06.17 株式会社ログラス 松田

  2. 2 ©2022 Loglass Inc. 会社紹介

  3. 3 ©2022 Loglass Inc. 会社紹介 Loglassは経営データを正確かつ迅速に可視化 /分析す ることで、柔軟/高精度な事業推進を実現する経営管理 クラウドサービス です。

    企業価値を向上する経営管理クラウド
  4. 4 4 ©2022 Loglass Inc. データドリブンな経営の意思決定を行うための、経営データ基盤です。

  5. 5 ©2022 Loglass Inc. 5 ログラスの「設計標準」の育て方

  6. 6 ©2022 Loglass Inc. 6 Kotlin自体のお話は薄めです

  7. 7 ©2022 Loglass Inc. なぜ「設計標準」?

  8. 8 ©2022 Loglass Inc. 8 チームでの設計の考え方など、みなさんどうやって共有されていますか?

  9. 9 ©2022 Loglass Inc. 9 ログラスでは設計の考え方を揃えるために「サーバーサイド設計標準」が定められています 「設計標準」 画像のものだけじゃないよ!

  10. 10 ©2022 Loglass Inc. 10 改めてなぜ「設計標準」?

  11. 11 ©2022 Loglass Inc. 11 ・あくまで守られるべき「規約」として強制するのではなく、軸として考えるための「標準」 ・チーム全体で考えて意思決定の結果と根拠を残していくことが目的 なので変更頻度も多い なぜ「設計標準」?

  12. 12 ©2022 Loglass Inc. 12 「設計標準」の重要なポイント 一人のアーキテクトみたいな人が考えるということはない 出典 イラストや ・一人が全てを考えて設計基準を作っている

    わけではない ・改善したいという要望からみんなで話して 決められていく
  13. 13 ©2022 Loglass Inc. 13 「設計標準」の重要なポイント 現時点での解 出典 イラストや ・結論だけがあっても行動に

    移せない ・検討した選択肢や根拠を残 すことで、新たな良い解決策を 検討できる
  14. 14 ©2022 Loglass Inc. 14 https://little-hands.hatenablog.com/entry/2022/01/28/programming-principle 一部外部公開されてるよ! https://little-hands.hatenablog.com/entry/2022/01/24/domain-object-design 弊社松岡がブログとして公開しておりますので、ご興味ある方はご確認ください

  15. 15 ©2022 Loglass Inc. 「設計標準」はどうやってできる?

  16. 16 ©2022 Loglass Inc. 16 こんな感じでslackで誰かが相談を投げかけます

  17. 17 ©2022 Loglass Inc. 17 data class の constructor を

    private にしたい ・data class の constructor をprivate にしたい ・そのまま定義しても `copy` メソッドがあるため不整合 なデータの作成を防げない ・sealed interface + private constructorにすることで data class の `copy` メソッドの使用を禁止できる 参考 https://bouzuya.hatenablog.com/entry/2020/10/07/232516 https://qiita.com/wrongwrong/items/0c6795a4c4bc497b8d20
  18. 18 ©2022 Loglass Inc. 18 リファクタもちょこちょこ

  19. 19 ©2022 Loglass Inc. 19 雑ですが、以下のようなコードでなにか不安になることはありますか?

  20. 20 ©2022 Loglass Inc. 20 ・引数にemptyのSetを渡してよいの か? ・実際渡した時にどういった挙動に なるのか? ・Kotlinで書いているのでいい感じ

    に型で表現したい
  21. 21 ©2022 Loglass Inc. 21 空ではないCollectionをクラスとして定義してあげる

  22. 22 ©2022 Loglass Inc. まとめ

  23. 23 ©2022 Loglass Inc. 23 まとめ ・設計標準をアップデートしながらログラスはより良いプロダクトを探求しています ・誰か一人ではなく全員で良い設計とコードを目指しています

  24. 24 ©2022 Loglass Inc. 24 We are hiring! meetyでカジュアル面談申し込んでください •

    CTO候補 • EM候補 • バックエンドエンジニア • データエンジニア • プロダクトデザイナー • ブランディングデザイナー
  25. 25