konchanxxx / menta

MENTAのタスク管理用リポジトリ
0 stars 0 forks source link

delayed_jobについて #53

Closed hige-dev closed 5 years ago

hige-dev commented 5 years ago

概要

delayed_jobについて

実現したいこと

delayed_jobの理解を深めたい

困っていること

意味はなんとなくわかるが、delayed_jobはコードを見ても理解できない。(使い方がよくわからない) 現状の認識としては、 動作が重くて待ち時間が長いとユーザビリティが悪いので、裏側で動作させつつクルクル時間を短縮させる。

会社のrailsのversionが3.0と古いので、Active jobが使えないが、調べるとdelayed_jobとごっちゃになって混乱する。jobも今までの学習で見たことがないので、それも混乱する一因。全て理解がふわっとしてて線にならない。

困っていることがバグの場合は事象やログ、エラーメッセージをできるだけそのまま(抜粋などしない)下記に記載してください。

解決するために行ったこと

検索しまくったりgithubのdelayed_job読んだり。

問題となっている箇所の予想

問題となっているアプリケーションのGitHub URL

hige-dev commented 5 years ago

rubyの基本が足りてない、とアドバイスいただきましたが、どこらへんが関係してきそうでしょうか?今チェリー本の7章をやってます。

konchanxxx commented 5 years ago

あー非同期処理への理解ということならばRuby限定というよりはアプリケーションレイヤの理解ということになるかもしれません。ただチェリー本は引き続き進めて良いと思います:bow:

非同期処理の利用するケースですがおっしゃる通り時間がかかるような処理の実行で利用したりします。

裏側で動作させつつクルクル時間を短縮させる。

時間が短縮されるわけではないです。例えばAmazonでものを買うときをイメージしてもらうと

(1) Amazonで注文する (2) 注文を受け付けて配送処理をする (3) 受け取る

になると思うんですが、注文してから受け取るまでパソコンの前でじっと待ってたりしないですよね? じっと待っていて結果確認待ちの状態を同期処理といったりしますが、同期だと結果が返ってくるまで待っていないといけないのでその間ユーザーがずっと待っていないといけないんです。 なので(2)以降は非同期で処理してあげるとその間ユーザーは会社にいったり遊んだりと他のことができるわけです。 これがアプリケーションも同じで(2), (3)の部分に時間がかかる処理などに適用できたりします。 例えば送金処理とか非同期でも良さそうです。(2),(3)の部分は後から結果がわかれば十分なので同期処理する必要がないわけです。

(1) 送金手続きをする (2) 送金手続きを受け付けて送金相手に送金する (3) 送金が成功したことを受け取る

イメージできましたでしょうか?

https://wa3.i-3-i.info/word1623.html とかも参考になるかもです:bow:

hige-dev commented 5 years ago

時間を短縮させる これは書き方をミスりましたが、おっしゃってる通りの理解はできていると思います(ご丁寧に説明頂きありがとうございます)。 使い方のイメージができてないのですが、現状では必要だから知っといてぐらいなので、使うタイミングでもう少し深く考えようと思います。調べても納得いく情報が得られないのは、ちょっと難しく考えすぎなのかもしれません。

https://wa3.i-3-i.info/word1623.html とかも参考になるかもです🙇

そのサイト、とてもお世話になってます。笑

ご回答ありがとうございました。

konchanxxx commented 5 years ago

現場で使われている箇所があるならその機能がどういったことをしているのか読み込んで図に書き出してみるとかすると良いと思います! シーケンスを作成してみるとかもありです! http://www.itsenka.com/contents/development/uml/sequence.html

hige-dev commented 5 years ago

シーケンス、チェリー本にもありましたね!やってみます、ありがとうございます。