はじめに
4月にRailsチュートリアルを始めて、6月の初めに1周しました
まだ理解があいまいなところもあったので、何か作りたいと思いました
そこで、会社では本の貸出を紙で管理していたので、Railsチュートリアルを真似して本の貸出情報を管理するサービスを作ってみることにしました
- GitHubのリポジトリ
- Webサイト
会社で実際に使うサイトと自分用のサイトを2つ作りました
ここで公開しているのは自分用のサイトです
「図書館サービスを作りました!」と会社のSlackに書いたら、初日から3人の方に使ってもらえました!
デザイン
Bootstrapを使いました
ほとんどRailsチュートリアルの真似です
- ホームページ
返却日(Checkout date)にはデフォルトで今日の日付を入れてあります
環境
- Mac OS Mojave 10.14.5
- Ruby 2.6.1
- Rails 5.1.6.2
- herokuにデプロイ
コード
メインとなるcontrollerのファイルだけ載せます
Railsチュートリアルにある
- index
- show
- new
- create
- edit
- update
- destroy
に加えて、returnアクションを追加しました
これは、返却リンクを押すと返却日に今日の日付が入る機能です
class CirculationsController < ApplicationController
def index
@circulations = Circulation.order(:checkout_date, :id)
end
def show
@circulation = Circulation.find(params[:id])
end
def new
@circulation = Circulation.new
@circulation.checkout_date = Date.today
end
def create
@circulation = Circulation.new(circulation_params)
if @circulation.save
flash[:success] = "図書館サービスへようこそ!"
redirect_to @circulation
else
render 'new'
end
end
def edit
@circulation = Circulation.find(params[:id])
end
def update
@circulation = Circulation.find(params[:id])
if @circulation.update_attributes(circulation_params)
flash[:success] = "貸出情報が更新されました!"
redirect_to @circulation
else
render 'edit'
end
end
def return
@circulation = Circulation.find(params[:id])
if @circulation.update(return_date: Date.today)
flash[:success] = "本を返却しました!"
redirect_to circulations_url
else
render 'edit'
end
end
def destroy
Circulation.find(params[:id]).destroy
flash[:success] = "貸出情報を削除しました"
redirect_to circulations_url
end
private
def circulation_params
params.require(:circulation).permit(
:user_name,
:book_name,
:checkout_date,
:return_date
)
end
end
かかった時間
- リポジトリを作ってherokuにHello Worldを表示させるのに2時間
- newとcreateで5時間
- 残りの機能で5時間
かかった日数は3日で、実際の時間は10数時間でした
慣れてる人なら数時間で作れると思います
サービスのプロトタイプを素早く作れるのはRailsの素晴らしいところですね!
意識した点
初めは
- ユーザの管理機能
- 本の管理機能
- 貸出情報の管理機能
を土日で全部作ろうと思っていました
しかし、実際にやっているうちに「全部作ってたら土日に終わんねえ...」状態になってしまいました笑
そこで、とりあえず貸出情報の管理機能だけ作って少しずつ改良していくことにしました
FacebookのCEOのマーク・ザッカーバーグも『完璧を目指すよりまず終わらせろ』と言っていました
完璧を最初から目指していたらいつまで経っても完成せず、結局中途半端で辞めてしまうことも多いと思います
だから、とりあえず動くものを作ってから少しずつ良くする方が速く公開できますし、意見も聞けるのでいいかなと思います
今後追加したい機能
とりあえず紙での管理の代わりになるものを作っただけなので、今後少しずつ機能を追加していきます
- AWSにデプロイ
- 会社のネットワークからのみアクセスを許可する
- 蔵書管理
- Slackと連携させて、本の返却を促す
- ログイン機能
など
RSpecでテストも書くつもりです
おわりに
最後まで読んでいただきありがとうございました。
QiitaやTwitterなどにコメントをしてもらったり、SNSでシェアしてもらえるとうれしいです!
Railsで作った図書館サービスの内容をQiitaに投稿しました!
— ITのんびり@V字回復エンジニア (@it31415) 2019年7月13日
自分で作ってみると楽しいし理解が深まりますね!
GitHubhttps://t.co/x512lph9LV
Webサイトhttps://t.co/zaOGDyTyGJ
Railsチュートリアルを1周した後に、図書館サービスを作ってみた https://t.co/JL7X4ezYRI #Qiita pic.twitter.com/BBtvCbtwGL