個人開発をやっていくぞ
以前の記事で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/models
のuser.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はこちらです