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

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

ただいまの
回答率

90.52%

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

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 229

motio0912

score 9

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

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(追記)

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

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

resources :books

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

resources :books

namespace :admin
  resources :books
end

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

resources :books, only: %i[index show]

namespace :admin
  resources :books
end

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

resources :books, only: %i[index show] do
  member do
    get :cover_image
  end
end

namespace :admin
  resources :books
end

にするか。

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/20 14:23

    かなり詳細な回答をいただいて、噛み砕いて理解していきたいので、詳細なコメントは後程いたします。

    本当にありがとうございます。

    キャンセル

  • 2018/01/20 19:07

    回答に関する質問なのです。
    Rails アプリを設計する一つのコツは,ルーティングで考える,ということかな,と思っています。

    ルーティングっていうのはブラウザとコントローラーを繋ぐ役割だけをしているのではないのですか?

    ブラウザとコントローラーを繋ぐ対応表で、大切なのはその先のコントローラー、ビューとビューだと思っていたのですが違うのでしょうか?

    キャンセル

  • 2018/01/20 19:33

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

    キャンセル

  • 2018/01/20 21:07

    まだ理解できない部分がかなりあります><

    自営業でパソコンに向かっている時間が長く勉強する時間はあるのでRuby on Railsチュートリアルなどを読んでコードを沢山書いて、少しでも理解できるように努めます。

    今回の回答本当にためになりました、大きな課題を小さな課題に分割していくというのが凄くためになりました。
    考え方の参考にさせていただきます。

    今後ともよろしくお願いします。

    キャンセル

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/19 08:39

    回答ありがとうございます。
    非常に参考になりました!!

    Ruby on Railsチュートリアルはまだちょっと難しかったので、ProgateのRuby講座を何周かしたあとRuby on Rails講座1週目終了させて、今2週目に突入しております!!

    このあとドットインストールかRuby on Railsチュートリアルに挑戦しようと思っています。

    作っているうちに今の自分のレベルでできるWebアプリを思いつきまして、そのアプリを作るにはどうしたら良いのか考えながら勉強しています。

    自営業で中々外に出る時間が取れないのですが、時間が合ったら勉強会にも参加してみたいと考えています!!

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る