システムの運用の仕事をしています。
業務効率の改善のためにbatやpowershellでスクリプトを
書くことがよくあります。
ただ、都度必要な情報を場当たり的に調べて書いているので
あまり知識として習得できていない面があります。
そこで一つ位、スクリプトを覚えておきたいと考えております。
個人的にはPowerShellが気になっています。
環境はWindows環境を想定しています。
皆さんのおすすめの言語は何でしょうか。
理由や学習のしやすさ、おすすめの学習方法等も
教えていただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答7件
0
スクリプト言語は作られた経緯や目的が異なるため、場面によって使いやすさ、使いにくさがあります。例えば、シェルに使うために作られたスクリプト言語はコマンドを並べて実行などシェルとしては使いやすいですが、データを分析・加工したい、Webアプリケーションを作成したい、などの使い方になると、汎用的に作られたスクリプト言語の方が使いやすくなります。また、標準で使用できるかどうかも重要です。PowerShellは7以降のWindowsでは標準で使用できますが、MacやLinuxでは別途インストールする必要があります。主なスクリプト言語について下記にまとめてみました。(バッチファイルはスクリプト言語では無いという考えもありますが、他と比較のために含めています。)
|スクリプト言語|目的|Windows|Mac|Linux|ブラウザ|備考|
|---|---|---|---|---|
|バッチファイル|シェル|○|×|×|×||
|PowerShell|シェル|○|△|△|×||
|Bash|シェル|△|○|○|×||
|VBScript|汎用|○|×|×|×||
|ECMAScript|ブラウザ|○|△|○|○|実装によってAPIが異なる|
|Perl|汎用|△|○|○|△||
|Python|汎用|△|○|○|△||
|PHP|Web|△|○|○|△||
|Ruby|汎用|△|○|○|△||
|Lua|組込|△|△|△|?||
|Tcl|GUI|△|△|○|×|Tkと組み合わせて使用|
|Scheme|教育|△|△|△|△||
凡例…○:標準(Linuxではディストリビューションのパッケージとして)で使用可能。△:インストールが必要など制限有り。×:使用不可。
用途…Windows:7以降のみ対象、Vistaは無視。Mac:10.11以降のみ対象。Linux:Ubuntu16.04とCentOS7を想定。ブラウザ:最新の四大ブラウザ(Edge,Safari,Firefox,Chrome)を対象、IEは除外。「△」はJavaScriptへの変換等が必要。
ECMAScript…JavaScriptの言語規格名。かつてWindows上の実装はJScriptと呼ばれていました。
「汎用」では無いからと言って汎用的に使えないと言うわけではありません。ただ、主な使用目的にあわせて作られているため、それ以外の目的では使いづらい場合があると言うことだけです。逆に「汎用」の言語をある特定の目的に使用する場合は、その目的に作られた言語よりも冗長になってしまいます。どちらが良いとは簡単に決めつけられる物ではありません。
各言語は、それぞれ年々バージョンアップを繰り返しており、最新バージョンでは使えるけど古いバージョンでは使えない機能がある、しかし古いバージョンしかインストールされていない、と言ったこともあります。バージョンの違いも、Pythonの2->3のように少し互換性が無い物から、Perlの5->6のように大きく変わっているもの、ECMAScriptのように互換性をほぼ維持している物まで様々です。
さて、以上を踏まえてお勧めの言語は何か…となると、難しいですね。今後廃れるであろう「バッチファイル」と「VBScript」は除外して、また、「Tcl」も用途が特殊すぎる(Tk用ぐらいしか使えないし、別にTk使うのにTclである必要も無い)のでこれも除外して、残った、「PowerShell」「Bash」「ECMAScript(JavaScript)」「Perl」「Python」「PHP」「Ruby」「Lua」はWindowsだけではなくLinuxにも触れるようになるのであれば覚えておいて損は無いと思います。最後の「Scheme」ですが、プログラミング言語とは何かを学ぶには最適だと言われています。実際に使うことはほとんど無いかも知れませんが、LISP系を一つは学んでおくという意味でも、SICPと一緒に教養として覚えておいても損は無いでしょう。
なお、私はWindows上も含めてほとんどRubyだけで済ましています。
投稿2016/09/03 00:52
総合スコア21741
0
ベストアンサー
個人的にはPowerShellが気になっています。
Windows環境ならPowerShellは間違いなくお勧めです。というか、システム運用・管理においては必須です。豊富なコマンドやプログラミング言語と呼んでも差し支えないような制御構文、さらに.NET Frameworkのクラスライブラリも使えるので、スクリプトを組む上で困ることはないと思います。しかもPowerShell ISE
と呼ばれるスクリプトの開発環境も標準で提供されているので、デバッグもはかどります。
PowerShellを選択肢から外すことなど、あり得ませんし許しません。
先日、そのPowerShellをマイクロソフトがオープンソース化して、LinuxやOS X向けに提供されました。そのうち各ディストリビューターがパッケージ化してくれるでしょう。そうなれば、Windowsで覚えたことがLinuxでも役に立つことになります。
投稿2016/09/03 00:11
総合スコア5944
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
PowerShellはDorプロンプトを発展的
させたものですが、便利なスクリプトが
作りやすくお奨めの言語の一つだと
思います。
今後、WindowsAzureなどの各種
クラウドサービスやシステムの仮想化が
進む中、システム自動化のニーズは
高まるのでそういう意味でも有望だと
思います。
環境によってはVBAなども良いかと
思いますが、ご自身が現在も使う
機会があってPowerShellを使われて
いるのであれば継続して
色々と応用編する方法を身につければ
将来は有望だと思います‼
投稿2016/09/02 18:49
編集2016/09/02 18:50総合スコア1630
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Windows専門で1言語しか選べないならPowerShell一択でしょう。
そこからbat、JScriptですかね。
そもそも「俺はPerl・Ruby・Python・Nodeが超得意だぜ~」な人なら兎も角、
最初からbatやPowerShellで、今からあえて他の言語を使いはじめるメリットはあまりないでしょう。
※完全に無駄ではなく、これらの言語はライブラリが豊富だったり文字列操作が強かったりするので、長所がハマればWindows環境下でもそれなりには役に立ちますが…
さて、実際の勉強に関してですが、実際に必要となるモノを作る事が一番伸びます。
直近で特に役に立つモノが思いつかない場合、本を眺めていても中々覚えられません。
四則演算やループ、関数の書き方をざっと写経した上で、下記のような汎用的に使える技術を練習していくのも良いかと思います。
普段からPowerShellのターミナルで操作しているなら十分ではないでしょうか。
エディタとしてPowerShell ISEと共に、香り屋 Vimを覚えると良いかと思います。
Vimは:r !コマンド
でエディターにコマンドの実行結果を持ってこれますし、
コマンドをぱぱぱっと書いて、ビジュアルモードで選択して:w !powershell
で実行させられます。
優先順位はISE>Vimでしょうけど、本業がエディターなのでちょっとしたファイルを開いて編集するのにも役立ちます。
更なる力を付けるとすれば、タイピング速度とLisp(Scheme)をオススメします。
タイピング速度は一度練習して速くなれば遅くなることは滅多にありませんし、
IDEやショートカットに頼った開発はエディタでは辛いので、なんだかんだで速くなればなるほど得です。
typing.ioを何度かプレイして、WPM30~40くらいまではわりと簡単に伸びるので一つの区切りにしてはどうでしょうか。
Lisp(Scheme)自体は大昔の言語ですが、関数型プログラミングがもてはやされるに従って、「筋がよくなるプログラミング言語」として再度注目され始めてきました。
小さく関数やライブラリを区切って、素早く組み合わせて使えるようにするノウハウはPowerShellに持ち帰っても大いに役に立つでしょう。
投稿2016/09/03 03:22
総合スコア21393
0
少し補足します
他の方も書かれている通りスクリプト言語は実に多彩である一方、お仕事で実感されていると思いますが勉強の時間はなかなか取れないとなると、習得する対象は絞り込みたいところだと思います。
業務上必要という観点で言うと、大抵の場合以下のような縛りがあると思います。
・別途費用のかかるものは導入しづらい。
・無償のものであっても、環境によっては簡単にインストールできない。
・過去のしがらみがあるかもしれない。自分が好きな言語でゼロからスクリプトを作成できるとは限らない。
・Windows環境と言ってもサーバばかりとは限らない。Windows XPかもしれない。
今後を見通すとPowerShellは必須だと思いますが、上記のような縛りを考えると、バッチファイルとVBScriptを捨てるわけにも行かないと思います。
実運用に際してはVBScriptからバッチファイルを呼び出す、もしくはその逆というケースが多いというのが私の実感です。
両方の言語の足りないところを補いあう必要があると思っています。
もちろん、既に業務上導入されている言語があるならそちらの習得が優先だと思います。
投稿2016/09/02 23:19
編集2016/09/03 03:09総合スコア1894
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
「Windowsでのシステム運用」という前提でしたら、
PowerShellが一番オススメです。現在ほぼ一択の状況です。
昔ならコマンドプロンプトとかVBScript(かJScript)でしたし、
今でも古いWin環境であれば、妥協せざるをえない場面があるかもしれません。
しかし、PowerShellはモダンなシェルスクリプトなので、
とくに制限がないなら、今ではPSを使うのが一番快適です。
まあ最初からPSを使っていると、違いが分からないかもしれませんが、
バッチと両方使っていれば、だんだんPSの良さが分かってくると思います。
そんなにPSがいいの? 何がいいの? と思うかもしれません。
まず、オブジェクト指向パイプライン。これはPSの専売特許ですが、
ワンライナーが書きやすいです。いろんな言語で一番書きやすいと感じます。
またプロバイダという仕組みがあって、レジストリや環境変数にもアクセスしやすいです。
そこら辺はゴチャゴチャ複雑で扱いにくかったので、それも利点です。
ほかにも普通にIDEが使えたり、.NETFrameworkが使えたり、
C#と互いに呼び出せたり、最近ではクラス構文までサポートしたりと、
MSDOS時代を引きずるレガシーなコマンドプロンプトとは天と地の違いです。
ただ、もし開発まで視野に入れれば、たくさんあります。何がしたいかで違います。
ビジネスのちょっとしたツールなら、エクセルとVBAが定番。
HTML5アプリならJavaScript、機械学習ならPython、みたいな感じです。
投稿2016/09/03 06:29
総合スコア5592
0
perl、python、ruby等では外部コマンドの呼び出しは文字列で定義してシステム実行APIをコールするといったスクリプトになるため、外部コマンド呼び出しはおまけみたいな位置づけになります。
システム運用で使用する場合、外部コマンドの呼び出しを自動化する用途に使用することが多いと思いますが、Windows環境でこういった用途のスクリプト言語はPowerShell以外は知らないです。(BATは除外)
とりあえずPowerShellを使いこなせるようになるのが良いと思います。
学習に関してですが、必要になってから調べるのが一番だと思います。
自分の場合、いずれ使うかもしれないと本を読んだりサンプルスクリプトを作成して勉強したりしていますが、数週間かけて覚えた内容は数か月後にはほとんど記憶に残らず、必要になってから数日で調べた内容は数年経っても覚えているといった感じです。
投稿2016/09/03 00:16
総合スコア1800
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/03 10:59