Rubyの勉強をしています。RubyとRuby on Railsで少しプログラムがかけるようになってきました。
自分が作りたいものにどうつなげていくか、まったく想像がつかないのですが、経験者の方や今勉強している方はどうでしょうか?
例えば画像に文字を入れて、スライドショーが作れるアプリを作りたいと思ったときそれを形にするためにどういった感じで調べていますか?
インスタグラムのようなサービスを作りたいと考えたときにどのように考えているのでしょうか?
作りたいものから逆算して勉強すると挫折しにくいと聞きますが…作りたいものまでたどり着くための道筋が全く見えません。
既存のサイトやアプリ(例えばツイッターやインスタグラムなど)と全く同じものを作って学んでいこうと思うのですが、とっかかりがつかめません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
かな,とか。(この場合,BooksController
と Admin::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総合スコア2108
0
まずは なんでもよいので web サイトをつくるチュートリアルを最後までやってみてください。
お勧めなのは Ruby on Rails チュートリアル
https://railstutorial.jp/
です。
投稿2018/01/18 21:55
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/20 05:23
2018/01/20 10:07
2018/01/20 10:33
2018/01/20 12:07