見出し画像

WEBシステム道 ep.11 とりあえず機能の検討

なかなか諸事情で進まない、WEBシステムをpythonで構築しようとしている企画。そろそろ、どういうシステムを作るのか、という設計の部分に取り掛かりたいと思います。

その前に・・

前々回でFirestoreの環境をGCP上で用意して、そこにデータを保存しようとしていたのですが、どうもdjangoのほうが対応していないらしいようです。
なので、Firestoreは諦めて、標準のsqliteの方にデータを保存していきたいと思います。

※右のFirestoneは諦めて、VMの中にSQLiteを準備する

テーマから機能を考える

だいぶ前に考えたテーマはこちら。(もう1年以上も前でした。。)

この記事中で手がかりとなるものは、下の図です。

この図を手がかりに、大雑把でいいので機能を抜き出したいと思います。

まずは、1つ目の箱から。下記の機能があればいいのかなと思います。
①自分の今の気分を投稿する

次に、2つ目の箱から。これは難しいのですが、いったん下記の2つの機能を抜き出したいと思います。
②仲間の状態を調べる
③仲間にあいさつをおくる

3つ目の箱は①と同じでは?、ということで、いったんは①と同じにしておきます。

図からわかるのはこれだけですが、それ以外に必要そうな機能を考えてみます。
パッと思いつくのは、過去の自分の気分を調べて、思い出すような機能があってもいいのかなと思いました。ので、下記を追加したいと思います。
④過去の自分の気分を調べる

それと、やり取りした過去のあいさつも調べられるといいので、
⑤過去のやり取りを調べる
も追加したいと思います。

これまでに①から⑤までの機能らしきものが抜き出せました。これでいいかどうかはわからないですが、今の段階ではこれで進めたいと思います。

制約を考えてみる

とりあえず抜き出した①から⑤までの機能らしきものですが、これにプラスして、これらの機能を使う上でどういった制約があったほうがいいのか、ざっくり考えてみたいと思います。

まずは基本的なところから。
1つ目は、別の人になりすませないようにすること。
これは最も重要ですね。もしこれが崩れると、システム上での「人」というのが特定できなくなります。一貫性が保てない、多重人格のような形になってしまうので、それは防ぎたいですね。
(あえて、一貫性をなくしてキャラに自由に発言させる、という仕組みも面白そうだとは思っているのですが、今回はこの路線は無しということで。)
この制約を実現する方法として、パスワード等による認証機能をつける、ということになります。

それからもう1つ、「仲間」というのをどう考えるか、です。見ず知らずの人に自分の情報を見せたくない、というのが基本ですが、自分が属しているグループも1つではなく複数あるので、どこまで情報公開していいのか考え始めると複雑化します。
今の段階ではここをあまり深く考えても難しくなるだけのような気がするので、この件はいったん、知り合いか見ず知らずの人か、という2段階で情報開示するかどうかを決めることにしたいと思います。

整理すると、制約から2つの機能が出てきました。
⑥システム内で別人がなりすましできないようにする
⑦自分の知り合いである人を設定する

こんな感じで(邪道かもしれないですが)機能らしきものを挙げていくことが、システムをデザインする上での第一歩かな、と思います。

次回は、、

次回は、今回上げたざっくり機能をもとに、なんとなくの画面イメージを作ってみようとおもいます。