ハンドメイド作家のアプリ開発①

※ご注意
※なんだか偉そうに語っていますがシステム開発は開発者ごとの流儀があります。
※AndroidやKotlinについての知識も殆どないので「素人がなんか言ってる」くらいでお願いします。

アプリ、と聞くとどのようなイメージでしょうか。
ゲームやカメラ、画像編集アプリなどを想像する方が多いかもしれません。
しかし私がこれから作るのは業務システム(もどき)です。


●業務システムって何?
簡単に言うと、在庫の管理や売上、経費などの業務を効率的に行うためのシステムです。
会社員の方は実際に使っていることが多いと思います。

●なんでそんなの作るの?
ハンドメイド作品、委託と手元で在庫いくつだっけ?
→売上の管理と在庫管理がまとまってると便利だな。
→それなら売上と経費の管理ができるといいな。
→可能ならイベント時にレジみたいに使えるといいな。
という考えです。
自分が欲しいから自分で作る、これハンドメイドの基本。多分。

●何を使って作るの?
使用ツール:AndroidStudio
→Androidユーザでいくつか趣味程度に開発した経験があるため。
開発言語:Kotlin
→Javaより簡単、わかりやすい。
データベース(以下、DB):Realm
→初めてAndroidでDBを使用するアプリを作ったときに使用したのがRealmだったため。
 (本当はSQL書けるからSQLiteのほうがやれること多いんだけど……)


というわけで早速作ってみようと思います。

と言ってもいきなりプログラミングをするわけではありません。
(たまにやっちゃうけど……)
まずはシステムの要件をはっきりさせる必要があります。

「●なんでそんなの作るの?」のところにあるように、本システムの要件は以下の3点。

・在庫管理(委託、手元(ネット販売、イベント出展、プレゼント企画等)、販売数、廃棄予定)
・収支管理(頑張れば確定申告できるくらい)
・レジ要素(できれば)

この3点を網羅していればクオリティが低くてもOK、としましょう。
完成させることが何よりも大事です。

なので、実際に操作する画面のイメージよりも先に「どんなデータを残したいか(どのような表でデータを残すか)」を考えたいと思います。

・在庫管理について
在庫管理とは作品の情報を管理することです。
なので、まず必要なのは「作品名」ではないでしょうか。
ネックレスなのか、指輪なのか、「ジャンル」も必要ですね。
「バリエーション」があるならそれも記録しなければなりません。
当然「値段」も必要ですよね。
などなどなど……。
というわけで、残したい情報は以下のとおり。

◆在庫情報◆
【作品名、ジャンル、バリエーション、値段、作成数、廃棄数、無償提供数(プレゼント企画や交換便など)、備考】
◆在庫内訳情報◆
【作品情報、販売方法(委託・ネット・イベント)、取扱先(委託先、販売サイト)、イベント名、出品数、販売数、取扱開始年月日、取扱終了年月日、備考】

これと同じようなことを収支管理も行います。
(売上額と支払額が必要だな、とか、いつ発生したのか日付を残さないとな、とかです)
このような情報の表をテーブルと言い、テーブルの集合体がDBです。
また、この作業をDB設計、なんて言ったり言わなかったりします。

レジについては在庫管理のおまけの機能なので専用のテーブルは不要かなと思っています。
逆にジャンルや販売先については自由に追加できるようにしたいのでテーブルで管理したほうがよいと考えています。
また、画面や出力するデータ(帳票)について考えているうちに必要なテーブルが増えたらそれも設計します。


さて、皆様置いてきぼりを食らっているでしょうか。
それとも興味を持って読んでくださっているでしょうか。
「これでは破綻している!」なんて呆れている方もいらっしゃるかもしれません。

今回はざっくり「要件定義」と「DB設計」を行いました。
次回は基本設計。
どんな画面・帳票がほしいか、をメインに機能についてもう少し深く考えていきます。

がんばるぞー