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

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

ただいまの
回答率

90.50%

  • Linux

    3779questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • bash

    648questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • sh

    283questions

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

  • シェル

    248questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

シェルしか使えない開発環境の例を挙げてほしいです

解決済

回答 9

投稿 編集

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

fullmated

score 13

シェルを使わざるを得ないシチュエーションの例をいくらか挙げてほしいです。

というのも経緯として、curlというコマンドについて調べていたのですが、Google Chromeにはcurlコマンドを簡単に叩いてくれるDHCやPostmanなどの拡張機能があります。この拡張機能を使えば、わざわざcurlのコマンドを叩かなくてもいいのではと思っていました。しかしシェルしか使えないような環境で開発せざるを得ない場合は、curlコマンドを理解する必要があることを知りました。このようにbashやzshなどのシェルしか使えない環境で開発する事例はどんなものがあるのでしょうか。

また、実際に製品を作る段階でCUIの特長がどのように利いてくるのかを知りたいです。GUIよりCUIの方が優れている理由ならググれば出てくるので理解はできるのですが、実際の利用例が想像できません・・・。

例えばcurlだったらわざわざ慣れないCUIを使わないで、GUIベースの別のPCを使ってChrome拡張機能から叩いた方が楽でいいんじゃないかと思ってしまいます。しかし、curlを使っている人々はネット界隈で多く見ます。curlをシェルから使うエンジニアの方々は、どういう動機でcurlコマンドを叩くようになったのでしょうか。当方Linuxを勉強しているのですがまだあまり慣れておらず、CUIを使うモチベーションがもう少し欲しいです。

以上まとめると

  • GUIではなくCUIしか使えない環境で開発した事例
  • 回答者様がGUIからCUIに移行しようと思った動機(できればこちらも回答願えたらと思います)

の回答をお願いしたいです。

teratailで質問するにふさわしい内容であるか微妙なラインかもしれませんが、教えていただきたいです。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 9

checkベストアンサー

+2

下記の場合シェル前提で作ります。

1)セキュリティ対策が施された環境に対して作業を行う場合
2)相手にしている環境の数が多い場合
3)テキストを検索・整形・集計する場合

セキュリティ対策が施された環境では、GUIサービス(GNOMEやKDE)がほぼ間違いなく停止されています。runlevelが5ではなく3になっている感じです。コマンドでGUIを起動させることもできるのですが、そもそもセキュリティ対策で停止しているのに、便利だからということを理由に起動することはできません。なのでシェルで設定変更等を行うようにします。

環境の数が多いとホスト名やIPアドレスなど環境によって差が出る部分を手作業で直していては大変です。間違う事も多いですし、間違えると調べて対応する分時間もかかってしまいます。なので、環境が複数存在する場合には、環境の違いを吸収するようにシェルを活用します。

ログの調査やテキストベースのデータの加工・集計の時にはシェルを使っています。GUIだとテキストエディタで検索・加工をかけたり、スプレッドシートで加工・集計をすることになりますが、CUIのシェルだと、sed,awk,grep(egrep),sort,wc,find,xargs + 各ミドルウェア固有のコマンド に パイプ(|)が使えればGUIよりも簡単で素早くかつ柔軟に作業が行えます。多少複雑&大データ量でもユニケージを活用することで解決できます。

1)がシェルを使わざるを得ないシチュエーション
2)がGUIでもでききるけどシェルを使ったほうが良いシチュエーション
3)がGUIよりもCUIを使う理由

という感じです。

ちょっと脱線しますが、滅多にない機会だと思うので
AP開発者だと自身が使っているクライアントPCとサーバ1環境程度なのでCUIのメリットは感じないことと思いますが、1)~3)いずれも実は意識しておく必要はある要素ですね。
・本番環境ではGUIは使えないのでCUIによる設定方法は求められる要素。
・本番環境ではホスト名やIPは変わるのでどこにそうした環境依存が存在するかは聞かれる要素
・障害調査における対応のスピードと原因・対応・解消証明の単純・簡潔・明瞭さは感謝される要素
と思います。
こうした部分はインフラや運用保守の仕事と線が引かれることもままありますが、
対応するための仕込みを行えるのはAP開発者のみという部分でもあります。
GUIの代表格のWindowsにもBashが搭載され標準的コマンドは網羅される方向のようです。
AP開発者もCUIも活用して効率・品質・速度を上げていきたいですね。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 19:07 編集

    Hiroshi-Aokiさんのご回答を読んで、だいぶCUIのメリットが分かってきました。
    セキュリティの観点があったとは知らなかったです。
    「相手にする環境の数が多い場合」や「テキスト処理が得意」というのは他の方々のご回答とも合わせて理解が進みました。
    普段からGUIばかり使っていた者としてはかなり納得がいきました。
    それぞれの疑問に対して丁寧に説明してくださって、本当にありがとうございます!

    キャンセル

+2

MacbookProを購入して徐々にCLIの領域を増やして、
最終的にほぼ全ての作業をターミナルで行うようになりました。


その理由は速さです。
GUIはどんなに洗練されたインタフェースでも、マウスを操ってあっちでポチリ、こっちでポチリという操作になります。
知識あまりなくても簡単に使えて楽でいいじゃんは確かにその通り、じゃあ作業に慣れたから次からは1/3の時間でやろうか、自動化して1/100の時間でやろうか…値をちょちょっと変えて再送するだけでしょ?えっむり?

そうなのです。
マウスをあっちこっちにふりふりして操作するGUIは作業速度がボトルネックになります。
ショートカットキーを沢山覚える事でCLI操作に肉薄は出来ますが、GUIはそもそもマウス操作するためのもので、全てキーボードで完結する環境は整っていません。

結局いくら慣れても作業速度は一定以上上がらない、これがGUIの弱点です。
逆に言えば不慣れな人でも一定の速度が出せるのがGUIの強みですが、私としては効率化出来るならしたいものです。


逆にcurlですがこれ自体はコマンドなので、
コマンドの文字列をそのまま持っていってエビデンスとして使う事が出来ます。

大量のファイルから動的にcurlコマンドを作って一斉に飛ばすこともできますし、
コマンド文字列をまるっと保存しておいて結合テストなんかにも使えます。
Vimでcurl込みのコマンドを大量に作って、Shift+Vで選択して:w !bashで発行するなんて手段もあります。

発想次第でいくらでも速度を稼ぐ事が出来るのがCLIの強みです。
最初に時間はかかるけど、慣れればコマンドを組み合わせて自動化させて、次からほぼ0の時間で実行出来る事が強みになります。
また、コマンドなのでタイピング速度を上げるために練習すればするほど効率がよくなります。


そして最後に、GUIとは違いCLIは成長しないとは考えていませんか?
逆です、CLIはちょっとした発想ですぐにコマンドやスクリプトを付け足して新しいTOOLが作れるので、
便利アプリで溢れかえっています。
GUIでアプリを作るのは辛いので、こまめにメンテされている良いアプリは少ないです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 20:15

    >結局いくら慣れても作業速度は一定以上上がらない、これがGUIの弱点です。
    この言葉にしっくりきました。
    GUIは効率化を高望みできないけどCLIは発想次第で高みを目指すことができるのですね!そう考えるとCLIで効率化を図ることはエンジニアの力量を問われているかのようにも捉えられますね。とてもクリエイティブな営みであると実感しました。
    BA後にもかかわらず教えていただき、ありがとうございます!

    キャンセル

0

ローカルで開発している場合だと、GUIを扱う場合が多いので不思議かもしれませんね!

CUIしか扱えないケースは基本的にはサーバー上で作業をする場合です。
Linuxで動作する多くのサーバーではGUIを搭載しないことが一般的です。
そのため、サーバー上で何か作業を行う場合ではCUIで作業をする必要が発生します。

インフラを扱う方が特に得意とするところだと思いますが、
昨今ではアプリ開発者がインフラを整備する機会も増えました。
VagrantやDockerを始めとして、自分自身のローカルマシン上に仮想マシンで
サーバーで動作させるのと同等のソフトウェアを実際に動かす機会が増えたからです。

これらの環境だとGUIを入れませんので、CUIを扱う必要がでてきます。

また、日頃CUIを扱う環境に慣れている方がChromeの拡張機能などを使わず、
どのOSでも基本的には扱えるコマンドを使うのかもしれません。(Windows On Bashも登場しました!)
シェルスクリプトにして保存しておけば、何度でも再利用できますし、
それらを束ねたファイルを作っておけば、正常なレスポンスが返ってくるかどうかのテストも可能というメリットもありますね

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 19:12

    確かに最近vagrantやdockerなどの単語をよく耳にします。
    そのような環境下ではGUIは確かに使えませんね!
    シェルが色々なOS環境などで使えて、汎用性が高いということを理解しました。
    教えていただきありがとうございます。

    キャンセル

0

「GUIが使えない開発環境」というのは今時は無いと思います。

CUI(CLI)を使うのはGUIより楽だからです。マウスに持ち替えずキーボードだけですべて出来るし、違うボタンをクリックしてしまわないように注意する必要も無いし(ブラインドタッチできない人は逆に思うかも)。
特に、同じような作業を繰り返しするのはGUIにくらべると段違いに楽ですね。

「コマンドラインで出来る物を何故わざわざGUIで?」とか思っちゃいます。

あ、もちろんプログラム開発の時のIDEのようなものはまた別ですね。
あと、パフォーマンスグラフを書くような本質的にグラフィックなものとかも。

とにかく、楽な方を使います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 19:17

    なるほど、繰り返し操作はCUIの方が得意なんですね。
    GUIがまだ楽なインターフェイスだと思ってしまっているので、早くCUIに慣れて楽ができるようになりたいです…。
    ご教示いただきありがとうございます。

    キャンセル

0

CUIからGUIに移行する必要がないのに、チョットした出来心でGUIに手を出して見たけど、やはり手が疲れるので古巣に戻った?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 19:21

    私のことでしょうか。
    もともとVSやUnityなどを使っていたので、ちょっとした出来心でCUIに手を出して見たけど、まだ慣れないという感じが現状です。。

    キャンセル

0

cloud9 では、GUI はつかえません。
Cloud9(クラウド9)とはアプリケーションの開発やデータベースなどをクラウド環境で利用できるサービスです

参考 Cloud9を使ってみよう http://dotinstall.com/lessons/basic_c9/37001

細かな操作は コマンドラインでおこなわなければなりません。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 19:29

    cloud9ですか、聞いたことはありましたが使ったことがなかったです。。
    操作はCUIベースなんですね。
    CUIが使われる例を示していただいてありがとうございます。

    キャンセル

0

既に他の方も書かれていますが、実際に運用する本番環境では GUI が使えないなんてのはざらにあります。
さらには本番機が複数存在するなどの場合、環境を更新するためのコマンド群をシェルスクリプトで記述して配布して叩く、なんてこともあります。
手順から可能な限り手入力を省いて自動化するのが、ミスを防ぐための重要なポイントだからです。その点でいえば GUI でのリリース作業なんてのは危険(ボタン一発くらいまえ自動化してあればともかく)なんですね。

また、トラブルシュートでログを見たりする場合、ログから必要な部分を抜き出したり検索をかけるのに、CUI なら簡単なことを、GUI だといったんファイルをローカルに持ってきてから、なんてことになる場合もあるので、CUI(というかコマンド群)は一通り使えないと困ることもあります。

昔と比べて個人で UNIX コマンドを使うハードルは大幅に下がりました。仮想マシンで Linux を立てて使ってもよし、Windows であれば cygwin を入れて使うのもよし、Bash on Windows もあります。Mac は完全に UNIX ですしね。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 19:33

    なるほど、自動化という面でもCUIが便利なんですね。
    otnさんの「繰り返し処理が便利」という話とつながります。
    GUIで仮にやったとして、手入力だらけでマウスで何をされるか分からないことを考えると、確かにミスが起きやすそうですね…。
    CUIの必要性を再確認できました!ありがとうございます。

    キャンセル

0

「開発環境」に絞るなら、CUIシェルしか使えないというのは今時ないと思います。なぜならGUIの方が生産性が桁違いに高いからです。
UNIX/Linux向けの開発は何度か経験しましたが、CUIシェルのみということはありませんでした。ターゲットがサーバーや組み込み製品などCUIシェルのみの場合は、通常クロス開発を行います。

ただし、CUIシェルを使う必要性は依然としてあります。というか、UNIX/Linux向けの開発においてCUIシェルの使用は必須です。本番環境はGUIなしというのはよくあるので、CUIシェルが使えないとテストができません。また、シェルスクリプト等による作業の自動化やバッチ処理など、CUIシェルでなければできないこともあります。スクリプトを使いこなせるかどうかは生産性にも関わってきます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/04 20:06

    なるほど、GUIとCUIのいいとこ取りをするというのも合理的で良いのですね。
    他の方のご回答含めて全体的な意見を通して見ると自動化やバッチ処理というのが強みであるな〜と感じました。
    ご教示いただきありがとうございます。

    キャンセル

0

他の方があげていない点で、どんな操作をしたかログが残せることがあります。

他の人に引き継ぐ際にも、問題があったとき調査するにもGUIの操作は残らないことが多い上に、意図しない操作をした際に発見しずらいことがあります。また、再利用がしやすい点があります。

サーバ設定などで”ちゃんとやりました”ではすまないことが多いですし、画面のスナップショットを取るより、CUIのログの方が残すのも調査するのも圧倒的に楽です。

CUIは不親切なUIですが、差し引いても余りある利点があります。CUIの経験を積めば必ず理解できるはずです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/02/06 19:20

    確かに…ログという観点でもCUIが優れてるのはうなずけます。
    historyコマンドなどでも、過去に実行したコマンドが一意的に分かるというのはCUIならではの特権ですね。
    数日経ったにも関わらず、補足の回答をしていただきありがとうございます!

    キャンセル

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

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

関連した質問

  • 解決済

    HttpのPUTやDELETEメソッドをテストしたい。

    GETメソッドはURLをブラウザに入力すれば確認できます。 POSTメソッドはテストhtmlを作成してformのmethodをpostにすれば確認できます。 PUTやDELETEメ

  • 受付中

    unixとかlinuxとかubuntuとかってなに?

    unixとかlinuxとかubuntuとかってなんですか? 最近黒い画面を触るようになってよくみかけます。 unixコマンドとか、linuxコマンドとか、、、 ubuntuは

  • 解決済

    (powershell)デフォルトでロードされるアセンブリ

    以下2つの実行画面より同じスクリプトを実行すると、②だけエラーになります。 ①Windows PowerShell ISE(開発ツール)のコマンドペインウインドウ ②PowerS

  • 解決済

    シェルスクリプトのことをシェルと呼びますか?

    UNIXの部屋 コマンド検索: シェルスクリプト 当ページ管理人のネット上・実社会での観測結果によると、「シェルスクリプト」を「シェル」と呼ぶ人のスキルは著しく低

  • 解決済

    POSTでのcurlコマンドの使い方

    curlコマンドからjsonを使用してhttpをPOSTしようと思っています。pythonのbottleを使おうと思っているのですが初心者のため、使い方が全くわかりません。

  • 解決済

    GUIのSSHクライアント教えて[Mac]

    プログラムについての質問ではないのですが ここであればSSHクライアントを使っている人も多いのではないかと思っての質問です。 私がGUIで使いたいわけ Macにはデフォル

  • 解決済

    GUIのライブラリについて

    以前、よくwin32 APIを使用してGUIを作っていたんですが、このライブラリはwindows に依存しています。 GUIなどのシェルは、OSに依存しているものなのでしょうか

  • 受付中

    ロリポップサーバへのcronの設定ファイルの作成または、設定の仕方について

    前提・実現したいこと ロリポップサーバへのcronの設定ファイルの作成または、設定の仕方について。 発生している問題・エラーメッセージ ロリポップでは、WEBからしかcron設

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

  • Linux

    3779questions

    Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

  • bash

    648questions

    bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

  • sh

    283questions

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

  • シェル

    248questions

    シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。