アプリ開発をするようになってもう何年も経っている。
自分で作れる範囲のアプリはなるだけ作ってきたので、その感覚によってアプリを分類してみようと思う。
アプリは大まかに分けると以下のように分類できる。
- GET型
- POST型
さらにこれらの2つは以下のように細分化できる。
- 非会員GET型
- 会員GET型
- 非会員POST型
- 会員POST型
POST型については以下のように細分化できる。
- POST型(自由書式)
- POST型(限定書式)
つまり全ての分類を行うと以下のようになる。
- GET型
- 非会員GET型
- 会員GET型
- POST型
- 非会員POST型
- 非会員POST型(自由書式)
- 非会員POST型(限定書式)
- 会員POST型
- 会員POST型(自由書式)
- 会員POST型(限定書式)
- 非会員POST型
アプリの難易度
アプリは一般的に自由度が高いほど管理が難しくなる。
つまり難易度は GET型 < POST型であり、さらに 会員POST型 < 非会員POST型 であり、限定書式 < 自由書式 であると言える。
- 管理の難易度
- GET型 < POST型
- 会員POST型 < 非会員POST型
- 限定書式 < 自由書式
一番管理が楽なのは非会員GET型である。
一番管理が難しいのは非会員POST型(自由書式)であると言える。
GET型
GET型はHTTPメソッドにおけるGETによって駆動するアプリである。
つまりサーバーはデータの返却だけを行う。
具体例としてはメールフォームや掲示板などが付属していない個人サイトがあげられる。
つまりテキストだけコンテンツとして配信しているアプリである。
これはGET型である。
非会員GET型
GET型の内、非会員サイトがこの型になる。
先ほどの例で挙げた個人サイトが会員制サイトでなければGET型である。
この型のアプリはもっとも管理が楽であると言える。
配置するコンテンツにさえ気を付けて、FTPアカウントなどを適切に管理すれば「ほぼ」放置で管理できる。
もっとも改ざんチェックなどはたまに行わないといけないので、管理が0になるわけではない。
会員GET型
この型は会員制サイトでかつコンテンツがGET型であるアプリである。
ログインは必要だが、そのほかのコンテンツはすべてGETで取得できるものがこれに当たる。
会員型の特徴としてユーザーの会員情報を管理しなければいけないことが挙げられる。
よって、GET型といえど会員型は難易度がそれなりに高いと言える。
POST型
HTTPメソッドの内POSTを使うアプリがこの型になる。
つまりGETによるデータの取得だけでなく、データの投稿を行えるアプリがそうである。
データの投稿を行えるようにすると、XSSやCSRFなどのセキュリティに気を使う必要が出てくる。
そのためGET型に比べて開発と管理が難しくなると言える。
非会員POST型
この型はPOSTできるが非会員、つまり半分匿名で利用できるアプリである。
匿名掲示板などがこれに当たる。
匿名と言ってもサーバーのログにはIPアドレスが残るので完全に匿名になるわけではない。
もっともプロキシやVPNなどを使えば匿名性を高めることはできし、それらに対応する必要も出てくる。
データが匿名で投稿される特徴があるため、管理難易度は高いと言える。
非会員POST型(自由書式)
非会員POST型の内、投稿データが自由書式(フリーフォーマット)であるのがこの型である。
具体例を挙げると「2ちゃんねる」などがこれに当たる。
投稿データが自由書式になっていることから、データの合法性を確認することがほぼ不可能になる。
NGワードによる投稿データの拒絶なども万能ではなく、規約に違反する行為を事前に防ぐのはほぼ不可能と言っていいだろう。
また非会員制なので、データを投稿するユーザーが匿名ユーザーであることが多い。
プロキシやVPNなどを事前に弾いておかないと、匿名ユーザーによる投稿を許すことになるため、実装の難易度も高い。
管理コストが高く、個人的に「初心者には管理は無理」であると言える。
非会員POST型(限定書式)
非会員POST型の内、投稿データが限定書式になっているのがこの型である。
データの形が制限されており、自由書式と比べて自由度が少ないのが特徴である。
非会員POST型は管理が難しいのが特徴だが、投稿データを適切に制限すれば難易度が下がると言える。
たとえば入力を自由テキストではなく、ラジオボタン(真偽値)にするなどの工夫を行う。
データが無害であることが設計の段階で確保されるため、管理コストを下げることが可能。
会員POST型
POST型の内、会員制のアプリがこの型である。
会員情報と投稿データの両方の管理が必要であるため、難易度は高いと言える。
だが非会員型に比べると、ユーザーがメールアドレスと紐づくため、匿名性が低くなるのが特徴。
最近のWebアプリはたいていこの型である。
会員POST型(自由書式)
会員POST型の内、投稿データが自由書式であるアプリがこの型に当たる。
具体例を挙げるとQiitaなどがそうである。
投稿データが会員データと紐づくのが特徴であり、匿名性は低い設計であると言える。
規約に違反する投稿をするユーザーは会員データによって弾くことができるため、管理が比較的に楽になる。
会員POST型(限定書式)
会員POST型の内、投稿データが限定書式であるアプリがこの型に当たる。
あまりこの型のアプリは見かけたことがない。
たいていみんなフリーフォーマットである。
おわりに
今回はアプリの独自分類をしてみた。
初心者はアプリの設計をするときにこの記事を眺めるといいかもしれない。
おわり