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

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

新規登録して質問してみよう
ただいま回答率
85.51%
sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

5回答

2686閲覧

どこまでシェルスクリプトでやるか

退会済みユーザー

退会済みユーザー

総合スコア0

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

1クリップ

投稿2015/10/26 10:50

cronでシェルスクリプトを起動してrubyスクリプトを呼ぶシステムを組んでいるのですが
どこまでシェルスクリプトにやらせればよいのか悩んでます。
ケースバイケースとは思いますが
ルールとかあれば教えてください

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

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

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

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

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

guest

回答5

0

ケースバイケースとしか言いようが無いですが、例えば、

ケース1:Rubyスクリプトを単体でコマンドラインからも使うことがあり得る場合
コマンドラインから使うのに便利なようにRubyプログラムを書いて、それをcronから起動するためのラッパーをシェルスクリプトで書く

ケース2:コマンドラインからも使うことがあり得ないような場合
全部Rubyで書く

ケース3:一番外側の処理がRubyだと面倒だけど、シェルスクリプトだと楽な場合
そこで分ける

投稿2015/10/26 12:55

otn

総合スコア84380

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

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

0

日時処理や月次処理など決まった業務ですねってことになると思います。あと、人がやると間違いやすく、でも毎回やらないといけない処理にはcronがよいです。

例:webゲームやなんらかの会員への月毎のポイント加算、新規会員データの読み込みなど

どんどん自動化する方向でよいと思いますが、実運用ではコストの面であったりいろいろ問題はあるかと思いますが、がんばってください。

投稿2015/10/26 12:16

tixure55

総合スコア400

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

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

0

文字通り、ケースバイケースだと思いますが、基本的には全てシェルスクリプトで書いちゃいます。

もちろん、オブジェクト指向的な設計にした方が分かりやすく、メンテナンス性が良ければRubyを使用します。
しかし、シェルスクリプトの真の特徴を活かせるように 適切なコーディングスタイル をきちんと守れば、並列プログラミングも容易に実現できますし、メンテナンス性もそれなりに高く保てます。

コーディング上のポイントについては、ユニケージ開発手法 が非常に参考になります!

また、サーバ上のどんな作業でも、基本的には 2回実行する 作業はシェルスクリプト化します。
これはもちろん、時間を掛けてシェルスクリプトのプログラムを書く、という意味ではなく、1コマンドでは済まない作業は数分時間を掛けて ワンライナー化 するようにします。
そうすれば、同じ作業を何度でもワンタッチで実施できるようになりますし、類似の作業は既存のワンライナーをマイナーチェンジすることで使いまわせる様になります。

ある程度まとまった定形作業をスクリプト化する場合は、個々のワンライナーを順にならべ、間にエラーハンドリングの処理を入れることで、ひとまとまりの処理を自動実行可能な ツール になります。

投稿2015/10/26 22:17

pi-chan

総合スコア5936

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

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

0

自動化できる作業は片っ端からシェル化していいと思います。
ただ、そうは言っても人的リソースは限られていることが多いので、
・使用頻度が高い
・長く使えそう
・単純な処理
なものから順番にシェル化するのがセオリーだと思います。

また、処理自体は単純であっても、人の判断が入る部分は
自動化が困難だと思うので、最初に切り分けが必要だと思います。

投稿2015/10/26 11:53

SKYYFISH

総合スコア654

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

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

0

質問があいまいで、答えにくいですが、シェル化する場合は
・人の判断が必要ない場合
・定期運用が可能な場合
・使用頻度が多い場合
・複雑な処理
普段、サーバ設計をしておりますが、よほどのレアケース以外はシェル化を行い、エラーハンドリングをすることにより、運用しやすいようにしております。

投稿2015/10/26 11:11

編集2015/10/26 11:13
hide0527

総合スコア144

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問