6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsでワクワク個人開発  第一回:仕様書とDB設計をしてみる

Posted at

個人開発をやっていくぞ

 以前の記事でRubyをつかってひととおりのロジックを組むことはできるようになった。そういうわけで、こんどはRailsでなにかをつくってみることにした。何かしらのウェブサービスをつくろう。

ざっくりとした仕様書を書く

 なにはともあれ、仕様書チックなものが必要だった。自分のやりたいことを明確にしておきたい。わたしが作りたいのは 「わいわい観察日記」 である。観葉植物の成長記録をみんなでシェアできるようにしたい。そのうち、IoTプロダクトとデータを連携していろいろやりとりできるようにしたい。

# ワイワイ観察日記

## これはなにか
 植物を観察する日記をシェアするウェブサービス
 (室内の植物限定)

## ベネフィットはなにか
 栽培記録をシェアすることで、栽培するモチベーションを保つことができる

## ユーザーの想定
- さいきん植物を家で育て始めた人
- 観葉植物がすきなひと

## マネタイズ
- 広告配置(植物のタネとか?)
- 部品販売

## どうやってコンテンツを増やしておくか
- 初期ユーザーはコンテンツ0のサービスに粛々と投稿してくれるのか?→否
- 開発者自らちょっとずつ投稿しておく

## つける予定の機能
### ベータ版(最低限)
- ログイン機能
- 植物の登録
- 温度・湿度の記録

### ver 1.1
- 写真投稿(スマホ/PCから)
- バッジ機能 
 毎日投稿などでバッジがもらえる

- 自分の記録へコメント投稿

### ver 1.2
- 他のユーザーの記録へコメント投稿

### ver 2.0
- IoTデバイスからのデータ送信
 soracom GPSマルチユニット

 https://soracom.jp/products/kit/gps_multiunit/

 まずは小さく始めるのが大事だ。最低限の機能ができたらリリースしてしまって、あとから大きくやっていこう。

DB設計をする

 今度はDBというものを設計する必要が出てきた。データの種類や関連性をまとめないといけない。詳しくはよくわからないけど、はじめのうちにやっておくといいらしい。

 まだ実装する予定のないデータも一応書くことにした。そうするとしっくりくる。重要なのはUserとPlantの関係だ。一人のユーザーが複数のPlantを持てる。ユーザー同士でPlantを共有することはできない。(それしたら面倒臭そう)

 こんなときは一対多の関連付けを行うらしい。モデルを作ったら、app/modelsuser.rb plant.rbへ追記する。

plant.rb

class Plant < ApplicationRecord
  belongs_to :user
end

user.rb

class User < ApplicationRecord
  has_many :plants
end

ちょっとずつ機能を実装するぞ

 個人開発をはじめてみると、モチベーション管理が非常に難しそうだなと気づいた。これをやりぬくには、目標を細切れにしてステップアップしていくしかない。githubのissue機能を使うことにした。「ここを変更したい!」「これだけやりたい!」という感情をissueに記録し、issueを1個ずつつぶしていく。

 私は忘れっぽい生き物なので、なるべくQiitaへもこまめに投稿して、個人開発の思い出を残していきたい。

 つぎはユーザーのログイン機能の実装、ネストされたリソースの作成でつまったことを書くぞ。

githubはこちらです

 

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?