質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

1314閲覧

Ruby on RailsでのWebアプリ作成に関して

motio0912

総合スコア15

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2018/01/18 05:21

Rubyの勉強をしています。RubyとRuby on Railsで少しプログラムがかけるようになってきました。

自分が作りたいものにどうつなげていくか、まったく想像がつかないのですが、経験者の方や今勉強している方はどうでしょうか?

例えば画像に文字を入れて、スライドショーが作れるアプリを作りたいと思ったときそれを形にするためにどういった感じで調べていますか?

インスタグラムのようなサービスを作りたいと考えたときにどのように考えているのでしょうか?

作りたいものから逆算して勉強すると挫折しにくいと聞きますが…作りたいものまでたどり着くための道筋が全く見えません。

既存のサイトやアプリ(例えばツイッターやインスタグラムなど)と全く同じものを作って学んでいこうと思うのですが、とっかかりがつかめません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

例えば画像に文字を入れて、スライドショーが作れるアプリを作りたいと思ったときそれを形にするためにどういった感じで調べていますか?

画像に文字を入れる技術とスライドショーを実現する技術は独立性が高いので,分割して考えますよね。

とりあえず Rails のことは忘れて,画像に文字を入れるだけの実験プログラムを作ります。
使うライブラリーは ImageMagick を扱う gem(MiniMagick か RMagick)か,Cairo を扱う gem(その名も cairo)が候補に挙がりますね。

この実験でも,画像ファイルを読み込んでそこに文字をのせて保存するのがちょっと難しければ,まずは何もないところに文字を入れて保存する,というところから始めます。
大きな課題を小さな課題に分割していくのです(ルネ・デカルトもそんなことを言っていたような)。

スライドショーのほうは,JavaScript でほとんどをやっちゃうのか,それともボタンを押すごとに Rails のアクションが起動してスライドをめくった画面が表示されるのかによって,実装方法がまるで違ってきますね。
前者ならスライドショー向けの JavaScript ライブラリーがいろいろ出回っているでしょうから(私はよく知りません),どれがよさそうか調べてみたり。
前者の場合でも,Rails 側から JavaScript へ画像をどのように供給するかは考えないとですよね。

Rails アプリを設計する一つのコツは,ルーティングで考える,ということかな,と思っています。
やらせたい動作があったときに,それがどんなルーティングに落とし込めるか,と考えるんです。
そのとき,できるだけ「リソースに対する操作」として考えてみる。
そういう思考ができるためには経験が必要だし,Rails チュートリアルなんかで,考え方をしっかり学ぶといいんじゃないかと思います。
ルーティングが設計できれば,アクション(が何をすべきか)もビュー(に何を表示すべきか)も決まっているわけですから,実は設計の骨格は出来上がっていることになります。

スライドショーの話に戻すと,スライドショーアプリっていったい何をやるものだろうって考えると,画像をアップロードしたりスライドの形で見たりするものですよね。

ここでも,機能を分割して考えることができて,一つは画像をアップしたり(一つの画像を)表示したりする機能。もう一つは複数の画像をスライドショーの形で表示する機能。
最初からスライドショーアプリを作ろうとしないで,まずは前者だけのアプリを作ってみては。

遠回りのようですが,いまは学習して要素技術を蓄える段階なので,できるだけ簡単なアプリを作ってスキルを磨くんです。

画像のアップロードだって,ゆくゆくはドラッグ&ドロップでやるにしても,最初は地味に file_field でファイルをアップすることにしましょう。

Paperclip や CarrierWave などのライブラリーを使うのか,自前で書くのかは難しいですね。
この手のライブラリーはそこそこ学習コストがあるうえに,トレンドが次々変わっていくので。
それにブラックボックスとして扱っていても,そのライブラリーを使う技術しか身につきません。
画像ファイルをアップロードしてリサイズして保存するくらいなら自分で書いたほうが身になるかもしれませんね。(が,Rails での画像アップロードについては私はよく知らないので,どなたか・・・)

作りたいものから逆算して勉強すると挫折しにくいと聞きますが…

一般論として,確かにそういう面はあるかと思いますが,ウェブアプリって非常に広い技術の集成なので,作りたいものから逆算していくにはちょっと大きすぎるのではないか,という気がします。

今の段階では,それより,もっと小さな幸せ(「画像に文字が入れられた!」「わ,アップロードに成功した!」「ToDo アプリができた!」みたいな)を積み上げていくといいかもしれません。

既存のサイトやアプリ(例えばツイッターやインスタグラムなど)と全く同じものを作って学んでいこうと思うのですが、

ツイッターやインスタグラムと同じものが一人で作れたらあなたはスーパープログラマーですよ!

(追記)

「ルーティングで考える」の例を挙げます。routes.rb を考える,と言い換えてもいいですね。

たとえば書籍の情報を扱うんだったら,

rb

1resources :books

ですよね。
でも一般ユーザーと管理者とで操作体系を分けるんだったら

rb

1resources :books 2 3namespace :admin 4 resources :books 5end

かな,とか。(この場合,BooksControllerAdmin::BooksController のようにコントローラーも別になります)
おっとまて,一般ユーザーは閲覧だけができることにしよう。じゃあ

rb

1resources :books, only: %i[index show] 2 3namespace :admin 4 resources :books 5end

だな。
ええと,表紙画像を books/123/cover_image みたいな URL で見せたい(これは books/123 のビューから利用します)ので

rb

1resources :books, only: %i[index show] do 2 member do 3 get :cover_image 4 end 5end 6 7namespace :admin 8 resources :books 9end

にするか。

てな感じで考えていくんです。

なお,私は達人ではないので,こういう持っていき方がベストかどうか分かりませんが。

投稿2018/01/20 03:01

編集2018/01/20 11:59
scivola

総合スコア2108

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

motio0912

2018/01/20 05:23

かなり詳細な回答をいただいて、噛み砕いて理解していきたいので、詳細なコメントは後程いたします。 本当にありがとうございます。
motio0912

2018/01/20 10:07

回答に関する質問なのです。 Rails アプリを設計する一つのコツは,ルーティングで考える,ということかな,と思っています。 ルーティングっていうのはブラウザとコントローラーを繋ぐ役割だけをしているのではないのですか? ブラウザとコントローラーを繋ぐ対応表で、大切なのはその先のコントローラー、ビューとビューだと思っていたのですが違うのでしょうか?
scivola

2018/01/20 10:33

「ルーティングで考える」というのは,抽象的でちょっと不親切でしたね。 うまい例が思いつくかわかりませんが,あとで追記します。
motio0912

2018/01/20 12:07

まだ理解できない部分がかなりあります>< 自営業でパソコンに向かっている時間が長く勉強する時間はあるのでRuby on Railsチュートリアルなどを読んでコードを沢山書いて、少しでも理解できるように努めます。 今回の回答本当にためになりました、大きな課題を小さな課題に分割していくというのが凄くためになりました。 考え方の参考にさせていただきます。 今後ともよろしくお願いします。
guest

0

まずは なんでもよいので web サイトをつくるチュートリアルを最後までやってみてください。
お勧めなのは Ruby on Rails チュートリアル
https://railstutorial.jp/
です。

投稿2018/01/18 21:55

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

motio0912

2018/01/18 23:39

回答ありがとうございます。 非常に参考になりました!! Ruby on Railsチュートリアルはまだちょっと難しかったので、ProgateのRuby講座を何周かしたあとRuby on Rails講座1週目終了させて、今2週目に突入しております!! このあとドットインストールかRuby on Railsチュートリアルに挑戦しようと思っています。 作っているうちに今の自分のレベルでできるWebアプリを思いつきまして、そのアプリを作るにはどうしたら良いのか考えながら勉強しています。 自営業で中々外に出る時間が取れないのですが、時間が合ったら勉強会にも参加してみたいと考えています!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問