Rails
初心者
Rails5

1ヶ月かけてrailsアプリを製作した話

はじめに

 Webアプリ開発の初心者がRuby on Railsを使ってアプリを作成した話です。Railsをちゃんと触り始めてから丁度一ヶ月で、なんとか形にすることができました。一応スクレイピングとかはしたことがあるので、HTTPの仕組みとかについてはある程度知っていはいました。
 webアプリの製作は初めてでしたが、ある程度やりたかったことができて一区切りついたので、一応まとめておきたいと思います。コードに関してではなく、全体的な所感です。完成した日の記録として残しておきます。railsに関するインプットをどうしたか、大変だったところなどなど。

作ったアプリ

 まず作ったアプリを載せておきます。名前はQAboxです。
 アプリ内容としてはTwitterのアンケート機能を、画像付きでも行えるようにしたイメージです。
Twitterはテキストでのアンケートしかできないと思うのですが、画像を貼り付けることでアンケートの幅が拡がるんじゃないかと思って作成しました。単純ではありますが、一通りの事は実装できたと思います。

QAbox:
https://qabox.net/
スクリーンショット 2018-01-29 14.50.04.png
 スクリーンショット

開発環境

Ruby on Rails 5.1.2
HTML/CSS/Javascript(JQuery)
Heroku、aws S3
git, gitbucket

インプットした教材

 初心者なら誰もが通るrails tutorialと、Ruby on Rails 5アプリケーションプログラミングという書籍が今回の開発の主な情報元です。一週間ひたすらこの2つでインプットして、残りの三週間くらいが開発期間です。

 基本はrails tutorialでインプットして、書籍の方はリファレンス代わりのような使い方でした。どういうことができるのかをさっと眺める程度に本を読み、あとは必要に応じて本を開くといった使い方でした。

 あとは分からないことが出てきた時に検索した各ブログやQiitaなどです。逐一見たものを保存して置けばよかったと思うのですが、数え切れない位検索はしたと思います。主にDevise関連は調べまくりました...

最終的に使ったgem

 railsアプリを制作する上で重要なgemですが、私が導入したのは以下のgemです。どれもrails tutorialで使われてたり、有名なgemだと思います。

・ユーザ認証
Devise
omni-auth
omni-auth-twitter

・画像アップロード
carrierwave
mini_magick
fog-aws

・デザイン
bootstrap-sass
font-awesome-rails
chartkick

どれも日本語での情報が多く、初心者でも問題なく使用できました。

辛かった所

設計が難しい

 やはり作りたいものを明確に設計することが一番難しかったです。開発前から何となく「画像をベースにしたアンケートSNSできないかなー」とイメージはしていましたが、実際にサービスとして落とし込もうとすると手が止まることが日常茶飯事でした。

 私の場合、最初に画面遷移図やER図なんかを見よう見まねで書いてみましたが、その殆どが開発中に撤廃されました... 大雑把なイメージだけでは、なかなか最後まで持つ設計とは難しいです。でも最初から全てを設計するのも難しいだろうな〜と思うと、やっぱり経験を積んで良いところに落とし込む能力を付けないと行けないんですかね。

 でも、ちゃんと作りたいものを明確にすることができれば、その実装方法は大体ネット上に落ちていることが多かったです。初心者にとってのrailsの旨味はこの辺だと思います。railsはwebアプリを作成するには広く使われてますから、ホントたくさんのgemや情報がネットに落ちています。もちろん広く使割れるような機能に限りますが、最初の内は殆どいけるのではないでしょうか。 先人達にホント感謝です。

フロントエンドが難しい

 正直一番時間を使ったのがフロントエンド側の実装でした。railsによるサーバ側の実装は、さすがrailsということで、殆ど悩むことなく実装できました(もちろん、簡単なアプリである+パフォーマンスまで考えられてないからですが)。とりあえず単に動くということを意識した時、railsはホントに便利です。

 フロントエンド側はパフォーマンスどうこうという話もありますが、最低限の処理や見た目を作るだけでも大変でした。jsも初めてちゃんと触った感じでしたので、その独特さにやられた感じです。どの様なUIが良いのかを考えるのも大変でしたし、それを実装するのも大変でした。それにフロント側は目に見える分、粗がとても目立つんですよね... 結局完璧に満足する形にはできませんでした。

使われるようにするのが難しい

 これは実装とは無関係ですが、仮に開発できたとしても使われなければ何の価値もありません。 特に私が開発したのはCtoC系のサービスなので、使われない内の価値はゼロです。なのでイマイチ作りきった感じが出ません(どなたか使ってやって下さい)

 CtoC系のサービスではなく、他に利用者がいなくても価値のあるようなサービスのほうが、最終的にサービス価値は出やすいかもです。メディアとかツール系とかエンタメ系とか。自分で利用できるようなアプリだったら最高ですね。次はそういったモノを作ってみたいと思います。

今後

 とりあえず作ってみたかったアプリを作ることはできましたが、また何か作りたいと思います。今度はユーザがいなくても価値のあるアプリが良いですね。 また今松尾豊さんのdl4usも受講しているので、ディープラーニングでなくても何かしらAIを取り入れたアプリにできたら良いなぁと思っています。