あるエンジニアリング上の奥義の話をしよう。


何か(システムなのかサービスなのかアプリなのかツールなのか等は一旦置いておく)をデザインする時、
意識したほうがよい事がある。


その何かを使うことになるユーザー群のある性質なのだが

  • 不特定多数(拙い英語だが many and unspecified people としておく)
  • 特定少数(拙い英語だが specific few people としておく)

この二つに大別できる。


もっと分類していけば特定少数は比較的固定的な特定少数と比較的流動的な特定少数に分けられたりして、
そこでいろいろ考える事もできると思うがここでは一旦最初の大別だけで話を進めよう。


不特定多数はとにかくあらゆる方向性で玉石混淆で特徴づけられないのが特徴である。
善い奴も悪い奴もいる。
頭の良い奴奴も頭の悪い奴もいる。
もし分類したときこちらに分類される場合、このままじゃつらいから別の視点で/別の観点から、もっと絞り込んだほうがいいと思う
(それは何かを得る為に何かを失う判断になるかもしれないが、その判断をしなければ全てを受け入れる覚悟を暗黙的にしているのと同じだ)。


特定少数は相対的に、何らかの特徴を捉えられる可能性があるのが特徴である。
職場でローカルに使われるツールであればある程度までは性善説寄りに寄ってもよい
(悪意をもって行動した奴は例え法人対個人でもちゃんと責任を問われるだろう。それでももちろん過信妄信盲信はしないのがセキュリティである)。
使うのに一定の情報が必要でもよい。
知らない人は部外者で使ってほしくない可能性があるから、その情報がわずかな量なら望ましいくらいだ。
どんな人たちなのかもっと詳細に限定していく事で無駄なくよりよい形にする方法が見えてくると思う。


自分が最初にこの観点に気づいたのは多分、ポート番号について考えていた時だったと思う。
不特定多数向けには well-known port そのままが向くし、それ以外という選択肢をとろうとするなら明確に理解できる理由、利点が必要だろう。
特定少数向けにはむしろ well-known port を避けてどこか別の番号を割り当てる事にも利点があると思う
(もちろん欠点もあると思うので何を取って何を切り捨てるかの話の中で上手いやり方の可能性が高そうだという話だが)。


それにしても最近、何を考えるにしても何を捨てて何を取るかだとか明確な分類はこうではないかとかそういう観点がすごく多い自分がいる。