Konifar's ZATSU

私はのび太の味方じゃないわ、悪の敵よ

設計とアプリの規模の話

設計はアプリの規模が大きくならないかぎりは変に意識する必要がないのでは?という意見についてはその通りだと思う。面倒なのは、アプリの規模とはなんなのか、大きな規模とはどのレベルなのかという認識が人によって認識が違うところで、そこを合わせないかぎり議論は食い違ってしまうことが多い。

例えばHello WorldのアプリでModelを意識する必要はない。Hello Worldの文字を自由に変えられるようにするアプリだとしても同様である。では、一覧と詳細だけのあるアプリではどうなのか?自分の考えでは、特に必要ではない。たしかにAndroid独特のめんどくささはあるが、1つの一覧、詳細の表示だけであれば、ゴリゴリ書いてもさして問題にならないからだ。むしろ逆にその方が開発のスピードは上がる。

DroidKaigiの公式アプリはどうか。あれは逆に面倒な設計はない方がいいと思っている。ガッツリと癖のある設計を入れると、初見で理解するハードルは上がるからだ。

書いていて思ったが、たぶん設計という言葉自体に対するイメージが人によって異なるのが問題なのかもしれない。自分のイメージはたぶんただのクラスやパッケージ構造の話にすぎない。アプリ開発において3回以上発生しそうな実装をどう書くべきかというルールを決めることで、実装時に余計なことを考えなくて済む。そうして実装のスピードを上げていく。どこにロジックを書くべきか、命名はどうするべきかといったことに頭を使うのはなるべく避けたい。

アプリ開発では、正直そこまで複雑なことをすることはない。複雑だと感じるとすれば、それはフレームワークの独特さに対する学習コストが高すぎるというだけだと思う。アプリの規模がサンプルアプリレベルの小ささであれば設計など意識しない方が早い。

規模というとエンジニアの人数を思い浮かべることもあると思うが、1人で開発していれば設計は要らないというのは違うと思う。あくまで自分の指針はアプリ開発独特のめんどくささを考えなくて済むためにはどうすればいいかという話なので、1人で開発していてもアプリが複雑なのであれば必要だ。そして大概の場合アプリは自分にとって複雑になる。

設計はアプリの規模が小さければ要らないとは言っても、規模や複雑さはほとんどの場合において閾値を超えてくるので最初から設計を意識しておいた方がいいと思う。