アプリケーションのコード規模に対する雑感

  • 主観です
  • 規模はコード行数 (LOC) で考えています
  • あくまでアプリケーションについての話です
    • ライブラリについてはまた事情が変わってくる
  • コードについての話しかしません

LOC 〜 102

  • アプリケーションというより, ちょっとしたスクリプト程度
  • すぐに全貌を把握できる
  • 困ったことがあったら作り直せば良いので, 正直何でも良いと思う

LOC 〜 103

  • おそらく単機能のアプリケーション
  • 全貌を完全に把握していられる
  • 一人で開発しているなら何でも良いと思う
    • 規模が小さいので, 型検査や lint のような静的解析は目視でもなんとかなる
    • 機能が少ないので, テストは手動でもなんとかなる
    • もちろん便利だと思うならコスト次第で使えば良い
  • 複数人 (あるいは一人でも時間が離れている) で開発するのであれば, CI にある程度コストを払ったほうが良いかもしれない
    • 機械的に型検査や lint がされていた方が安心だが, 全員が同程度の練度かつ規約を共有していれば必須とも限らない
    • 自動でテストが行われていると安心だが, 全員が十分にコミュニケーションをとれていれば必須とも限らない
    • コストの具合によっては一人で開発するよりも大変なこともありそう
  • まだ困ったことがあったらなんとか作り直せる規模なので, 設計は最低限でも絶対に悪いわけではないと思う
    • 複数人でわけがわからなくならない程度になんとかなっていればよいはず

LOC 〜 104

  • 複数の機能があるアプリケーション
  • 全貌を完全には把握できなくなってくる
  • ふつう複数人で開発することにはなっていそうで, そのために CI にはコストが払われていてほしい
    • 機械的に型検査や lint はされていてほしい
    • 自動でテストが行われていてほしい
  • 何か破綻したときにすぐに一から作り直せるような規模ではないので, 設計は重要になってくるはず
    • LOC 〜 103 から成長してきたときは, 大きく改修は必要だとしても, 規模的になんとかはなりそう

LOC 〜 105

  • おそらく多数の機能があるアプリケーション
  • 全く把握できていない部分も出てくる
  • CI はないと成り立たないと思う
  • モノリシックな設計には限界が来る規模だと思われる
    • 全部把握すべき設計で把握できていない部分があるのではなく, 把握すべきところを絞った設計になっていて, そうでないところは全く気にしなくても良くなっていてほしい
    • LOC 〜 104 から成長してきたときに大きく改修が必要だと, 規模が規模なのでつらいことになりそう
      • なので成長が見込める場合はある程度は予期して設計おくべきなのであろう
    • つらい

LOC 〜 106

  • この規模のアプリケーションの開発経験がないのでよくわからないし, 想像もほとんどできない
  • みなさんはどのくらいの規模まで行けますか