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

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

shogo-ma
June 17, 2022
7.2k

チームで高品質なコードを追求するための「設計標準」の育て方 / 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

shogo-ma

June 17, 2022
Tweet

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. 4
    4
    ©2022 Loglass Inc.
    データドリブンな経営の意思決定を行うための、経営データ基盤です。

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  12. 12
    ©2022 Loglass Inc. 12
    「設計標準」の重要なポイント
    一人のアーキテクトみたいな人が考えるということはない
    出典 イラストや
    ・一人が全てを考えて設計基準を作っている
    わけではない
    ・改善したいという要望からみんなで話して
    決められていく

    View full-size slide

  13. 13
    ©2022 Loglass Inc. 13
    「設計標準」の重要なポイント
    現時点での解
    出典 イラストや
    ・結論だけがあっても行動に
    移せない
    ・検討した選択肢や根拠を残
    すことで、新たな良い解決策を
    検討できる

    View full-size slide

  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
    弊社松岡がブログとして公開しておりますので、ご興味ある方はご確認ください

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  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

    View full-size slide

  18. 18
    ©2022 Loglass Inc. 18
    リファクタもちょこちょこ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. 22
    ©2022 Loglass Inc.
    まとめ

    View full-size slide

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

    View full-size slide

  24. 24
    ©2022 Loglass Inc. 24
    We are hiring!
    meetyでカジュアル面談申し込んでください
    ● CTO候補
    ● EM候補
    ● バックエンドエンジニア
    ● データエンジニア
    ● プロダクトデザイナー
    ● ブランディングデザイナー

    View full-size slide