はじめに
Ruby on Railsを使って、空き家を貸し借りできるwebアプリを開発しました。ただし、正式に公開する前提で開発はしておらず、あくまでデモとして開発しました。
開発した目的としては、rails開発の訓練のためと、ポートフォリオを作成したかったためです。
この記事ではそのwebアプリの解説をしております。
線形回帰モデルによる価格予測の実装については中盤辺りに記載してます。
注意点
1.このwebアプリはRuby on Railsチュートリアルで公開されているソースコードをベースに開発しました。
2.サーバーサイドの実装の訓練が目的で開発をしたため、フロントエンド関連はほとんど手を入れておりません。
ソースコード
ソースコードはgithubで公開しております。
https://github.com/Ryota7101/null_house
参考にさせていただいた記事
Ruby on Railsチュートリアル
rails 予約機能をつける。(一回目)
Railsでコメント機能をつくってみよう
Railsで「投稿お気に入り追加機能」を実装する
railsで検索フォームを作ろう!!
大変お世話になりました。ありがとうございます。
HOME画面
届いたメールのURLをクリックし、アカウント有効化をすると自身のプロフィール画面にジャンプします。
空き家を貸し出す
作成すると、自身のプロフィールページにある「あなたが貸しに出してる空き家」の箇所に作成した空き家のタイトル名が表示されます。
空き家の詳細ページ
以下は作成された空き家の詳細ページになります。
1.空き家のタイトル
2.空き家の説明文
3.空き家の貸出者
4.お気に入り機能
5.空き家へのコメント
6.空き家の内覧予約
7.空き家の適正価格算出
8.空き家の借用に対してされたオファーの内容(後述)
様々な機能
- お気に入りボタンを押すと、その空き家がお気に入りに登録されます。
- コメント欄に文章を入力すると、コメントが表示されます。
- 内覧予約の開始時間と終了時間に日時を入力すると、予約が表示されます。
自身のプロフィールページにある「あなたがお気に入りに追加した空き家」の欄に、お気に入りに登録した空き家のタイトルが表示されます。
家賃適正価格予測機能
回帰分析を用いて、空き家作成時に入力したサイズなどの値を元に、家賃の適正価格を表示します。
import numpy as np
import pandas as pd
from sklearn import linear_model
##データセットはランダムに作成
data = {'layout' : [2, 1, 3, 4, 5],
'land_area' : [40, 20, 30, 55, 65],
'building_area' : [50, 20, 35, 60, 70],
'age_of_a_building' : [40, 50, 30,20,10],
'adoress' : [7, 3, 8, 4, 1],
'price' : [48000, 29000, 33000,55000,67000]}
df = pd.DataFrame(data)
Y_train = df['price']
X_train = df.drop("price", axis=1)
lm_model = linear_model.LinearRegression()
lm_model.fit(X_train,Y_train)
print("切片 =",lm_model.intercept_)
print("回帰係数 =",lm_model.coef_)
切片 = 27073.62274689006
回帰係数 = [ 4.82355928 -1097.43589744 1625.64102564 -48.23559279
-2076.92307692]
def lm(x1,x2,x3,x4,x5)
(27073 + 4.82355928*x1 - 1097.43589744*x2 + 1625.64102564*x3 - 48.23559279*x4 - 2076.92307692*x5).to_i
end
<% if current_user.id == @house.user_id %>
<h3>家賃予測価格</h3>
<p>この空き家の1ヶ月の適正価格は<%= lm(x1,x2,x3,x4,x5) %>円です</p>
<% end %>
プレミアム会員機能
<% if @user.premium? %>
<h4>あなたはプレミアム会員です!!</h4>
<% end %>
オファーを出す
オファーを出すと、出された側の空き家ページにオファーの内容が表示されます。
<h3>オファー一覧</h3>
<% if @offer %>
user id : <%= @offer.user_id%><%= @offer.use %>
<% end %>
管理画面
管理者のみがアクセスできる管理画面を作成しました。
def ensure_correct_user
if current_user.admin?
#何もしない
else
flash[:notice] = "アクセス権限がありません"
redirect_to root_url
end
end
ユーザー一覧
コメント一覧
内覧予約一覧
データ視覚化画面
## 運営からのお知らせ機能
管理画面と同じく、管理者のみがアクセスできるページで、お知らせを作成したりできます
。
作成
一覧
詳細
今後の課題
- テストがおざなりになってしまったので、テストを書く訓練を今後したい。
- 大規模な機械学習モデルを使用できるようにしたい(GCPにモデルをデプロイして予測を取得したり等)
最後に
webアプリ開発において、基本的な機能は実装できるようになったとは思います。
今後実践の機会を増やして、レベルアップしていきたいです。
※コメントやツッコミあればどんどんください!