世界初?   "アイテムで繋がるSNS" を作ってみた。



<b>"アイテムで繋がるSNS"</b>を初心者が2ヶ月で作って見ました<br>
個人間で互いに<b>レンタルができる匿名CtoCサービス（無料）</b>があったら面白そうだと思い作りました。将来、企業への広告媒体としてのモデル（下ネタ以外でも）の可能性があるのかなと。作ってきた経緯等を此方の記事に書きたいと思います。ありそうでなかった？（~~無知でしたらすいません↓~~）
 
個人的に"<b>SSS(ソーシャル-シェアリング-システム)"</b>と名付けました。
<b>Ruby on Rails</b>で作り、後ろでどんな技術が使ったのか簡単に解説します。
そして、少しエロいです(笑)

- メッセージ機能
<img width="300" alt="メッセージ機能" 2019-04-03 20.58.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/353275/e31be616-e5c7-fb58-4055-ac91888bc7e6.png">

- ユーザー・検索機能

<img width="300" alt="スクリーンショット 2019-04-03 21.20.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/353275/e9f0b008-5f68-36f8-b9c3-d30c164d5410.png">

- Add-Item 機能

<img width="300" alt="スクリーンショット 2019-04-03 21.28.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/353275/3061746e-00ae-6240-942f-42ac3e1535fd.png">

- 武器を買う <br>
<b>商品購入ページ or ECサイトへ</b>

...等をGoogle先生を調べながら実装しました。

URL
<b>[Den-app](https://www.den-app.com)　</b>





##スペック
- 使用言語等など
 - Ruby  2.5.1
 - Rails 5.2.1
 - Vagrant CentOS7

- 著者プロフィール
  - プログラミング歴 約1年<br>（去年の 5月13日〜14日位から）
  - Rubyのチェリー本 => Rails チュートリアル => クローンアプリ制作後,実際に自分の考えたアプリを作ろうと思い, "Den-app"を制作しました。
  - PG,転職探し中
  - 祝 初サイト:sunny:

## - メッセージ機能(リアルタイム). ~ Action Cable ~
- ここからは実際に使用した技術を２種類紹介いたします。<br>
どちらも, Rails5.2系で標準なので詳しい素晴らしい記事は他に多くあります。
- "den-app"にどのような効果をもたらしたかを書きたいと思います。

1つ目は、個人間でのメッセージ機能をページ推移なしで行えるように,<b>"ActionCable"</b>を使用しました。これを使えば、非同期でサーバーと通信が出来ます。

![messaging.gif](https://qiita-image-store.s3.amazonaws.com/0/353275/712b97f1-71c1-7e6d-9f20-a222fc749687.gif)

 ActionCableは日本語のページ等も多く、技術自体は簡単に実装できたのですが、理想の挙動にするのが私の力不足で時間が掛かり、1ヶ月程掛かりました。
QItaは勿論の事、意外と英語用のプログラミング質問サイト等にサラッと金言が載ってたりして血眼で探した記憶があります。<br>
こういう非同期で通信することを"Ajax化"と呼ぶそうで、ActionCableではないですがden-appではもう一箇所この技術を利用している箇所があります。

- <b>借りたい申請</b>

![items.gif](https://qiita-image-store.s3.amazonaws.com/0/353275/0ea1cd5e-7c88-f34b-470c-b57b60cf254c.gif)

皆さんの持ち物に"借りたい”という申請をするページですが、"Ajax化"で、更新せずとも Create & Destroyアクションを送信できます。素晴らしいですね:eyes:
## - 画像アップロード. ~ Active storoge ~
Railsで画像アップロードと聞くと、現在でもやはり,CarrierWaveが人気のようです。探して見ても圧倒的に情報が載って居ました。
Den-appではrails標準の最近追加された,<b>"Active storoge"</b> とストレージにAWSの<b>S3</b>を用いています。採用理由としては、

- 新しい技術好き
- gem追加が要らない
- 最近の紹介ページが意外と多い（2018年頃~）
- ~~名前が格好良い(笑)~~

からです。Modelに

```ruby:user.rb
class User < ApplicationRecord
  has_one_attached :image
  ....
end
```

とてもシンプルで使いやすいです。
S3との相性？も良いらしく、バケットを追加後アップデート出来るようになりました。CarrierWaveを使っている人も一度使って見ては如何でしょうか？
画像リサイズやデフォルトイメージ（初期画像）も調べればできます。

- プロフィール編集機能

![edit.gif](https://qiita-image-store.s3.amazonaws.com/0/353275/9b97de8d-c85d-3eef-b89d-da749ff08d1c.gif)
や
- Add-Item 機能で"Active Stroge"は使用されています。クローンアプリを練習した時、CarrierWaveを使用したのですが、現代の段階では標準装備がActive Storageよりも多く便利です。私としても使い分けて使用していきたいと思います。

##本番へのデプロイ
Railsから繋げる本番環境としては<b>Heroku</b>を使用しています。Pushコマンド１つで更新できるのはとても魅力がありますね。<br>
ただ、現在直面している問題がネイキッドドメイン(www無し)から<b>[Den-app](https://www.den-app.com)</b>(www有り)へのリダイレクトが出来ない。。。Railsの機能として,

```ruby:config/production.rb
Rails.application.configure do
  ...
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
  config.force_ssl = true
  ....
end
```

でSSHへのリダイレクトや,○○○..herokuapp.comから独自ドメインへのリダイレクトは設定できたが、ネイキッドドメインからのアクセスが未だに出来ない↓
今後とも勉強していきます。優しい人、教えて下さい。

##総括
纏めて見ましたが、一言で言うと,<b>"Ruby on Railsは凄まじい"</b>に尽きます。
私のような初心者でも、完璧ではなくともアイデアをサービスとして開発できました。<br>


今後とも、Den-appの研磨は勿論のこと、色々作りたいサービスがあるので影でひっそりと一人で作っていきたいと思います。都内で週末などに、一緒にプログラミングをできる方がいればな〜と思っています。（気軽にコメントやTwitterのDM等で連絡くれると嬉しいです。）

Den-appに少しでも興味を持った方は是非登録して見て下さいね。
詳しい使い方は["HowToUse"](https://www.den-app.com/how_to_use)に載っています。素敵な事があるかもしれません。

記事を読んで頂き、大変感謝いたします。
<b>[Den-app](https://www.den-app.com)　</b>