フリーエンジニアにとって、専門とするプログラミング言語の選択は非常に重要です。新たなプログラミング言語を学び直すことは、世間で言われているほど簡単なことではありません。つまり、フリーエンジニアにとってプログラミング言語の習得は大きな投資。短期的な視点のみならず、中長期的な視点の両方で、状況をよく見極めることが大切です。
今回は数あるプログラミング言語の中でも、ここ根強い人気を誇るシェルエンジニアの需要状況を、フリーエンジニアやこれからフリーエンジニアを目指す方にお届けします。
目次
Shellとは
シェルはOSとユーザのやり取りを仲立ちするためのものです。ユーザーが直接OSを操作して、システム全体におよぼすような致命的なエラーを発生させるといったことを回避するために、OSの外殻(貝殻・シェル)として存在。つまりOSをユーザから守るための殻という意味です。シェルにはCLIベースのものとGUIベースのものが存在し、前者の例としてはBourne Shell(sh)やBourne-Again shell (bash)などのUnixシェルが挙げられ、後者の例としてはWindowsのファイル操作などを行うExplorerやUnix系OSで使用されているX Window Systemがそれです。
シェルはコマンドが利用できる変数や関数といった機能や,コマンドを繰り返し実行したり条件に応じて実行させたりする制御構造を持ちます。そしてシェルスクリプトとはこのシェルが持つ機能を利用した言語です。シェルスクリプトというプログラムを用意しておけば、複数のコマンドをバッチ処理することも可能となります。
シェルスクリプトとは
シェルスクリプトとは、シェルの動作をまとめて記述したシェル・プログラム上で実行できるスクリプト言語の1つです。複数のコマンド・条件分岐・ループ処理等を使用して、一連の処理を実現したり、複雑な作業を自動化できたりします。スクリプト(script)は「台本」という意味で、コンピュータに実行させたい処理を記述してその台本通りに動かすことが可能となります。定期的にデータをまとめてデータベースに登録するなど、手作業でもできる定型的な操作を何回も利用したいというときによく使います。C/C++でプログラムを書くとちょっと面倒でもコマンドなら一発、手軽で簡単なロジックで十分という場合に使うことが多いでしょう。対象としては、ディレクトリを作る、ファイル名を変えて移動するなどファイル単位の操作が多くなります。
整理をすると、OSとやりとりするためのものを総称としてシェルと呼びます。コマンドラインでOSとやり取りするシェルのコマンドを並べて実行できるようにしたテキストファイルがシェルスクリプトです。そしてシェルスクリプトはあらかじめ用意されているコマンドやプログラムを組み合わせれば出来る場合に使用します。少し複雑な処理で組み合わせだけでは実現できない場合にスクリプト言語を含むプログラミング言語を使用します。
Shellの役割とは
コマンドを使ってLinuxを操作しているとき、我々はシェルのお世話になっています。シェル(shell)は,ユーザーからのコマンド入力を受け付けて処理を実行するプログラムです。そのため,コマンド・インタープリタとも呼ばれます。例えば、業務系アプリでは1日の終わりなどにその日の取引の集計などを行いますが、通常は夜間に行われるので「夜間バッチ」などと呼ばれます。夜間バッチでは、各支店などから吸い上げた営業データなどをデータベースに入力し、集計したり解析したりします。これらの制御にはよく「シェル言語」が使われます。
大まかなシェルの仕事の流れは,次の通りです。
(1) プロンプトを表示してコマンド入力を受け付ける
(2) ユーザーから入力されたコマンドラインを受け取る
(3) コマンドラインを「コマンド」「引数」などに分解する
(4) ワイルドカードなどがあれば展開する
(5) コマンド・プログラムを検索し,引数を渡して実行する
(6) 実行したプログラムが終了するまで待機する
(7) プログラムが終了したら(1)に戻る
サーバ運用にしろ業務システム運用にしろ、LinuxやFreeBSDといったUNIX系OSを活用する場合、ツールとしてのシェルスクリプトは欠かせない存在です。いかにして建設的に手を抜きつつ、処理を自動化して効率化を達成できるかどうかは、シェルスクリプトの活用いかんにかかっていると言ってもいいでしょう。もちろんそれはシェルスクリプトに限らず、ほかのプログラミング言語でも問題ありません。シェルスクリプトと他のプログラミング言語を比べた場合、シェルで使っているコマンドをそのまま使えることが、シェルスクリプトの最大の特徴であり利点です。
Shellの特徴
ユーザインタフェース機能
UNIXのターミナルエミュレータから入力されたコマンドはシェルが解釈(interpret)をしてOSのカーネルに伝達し, その結果をターミナルエミュレータにレスポンスとして出力するということをしています。このことから、シェルはコマンドインタプリタと呼ばれることもあります。シェルがあるからこそユーザはリダイレクト(標準入出力, エラー出力の切替)やパイプ(コマンドの出力結果を別のコマンドの入力として渡す)、エイリアス(コマンドの別名定義)などが可能になるわけです。プログラミング機能
また、シェルのもう1つの機能としてプログラミング機能があります。先ほど御伝えした通り、シェルで記述されたプログラムコードをシェルスクリプトと呼びます。シェルスクリプトによってコマンドのバッチ処理(コマンドの連続処理)が可能になります。シェルスクリプトも汎用プログラミング言語のように変数や関数(シェル変数やシェル関数)を定義することができ、また分岐処理やループ処理を利用して構造化プログラミングが可能なので、単なるコマンドの連続実行だけでなく、より複雑な処理も実現できます。Shellの求人現状とは
金融系管理システムや官公庁向けインフラ運用ツール作成など、案件は様々です。シェル言語だけできればいいというものではなく、Unix コマンドや Awk, Perl と言ったものが同時に使用されるので、それらの知識も必要となります。Windowsサーバではこれらの代わりにPowerShellやBatch、Wshが使われていますので、Windows サーバもカバーするならそれらも学んでおいた方が良いです。プログラマ人口はPHPやJavaと比べると少なくはありますが、その分プログラマーの能力に左右されずに安定した開発案件を手掛けることができるといった面を考えると、これからシェルを学ぶ時間は決して無駄なものではないと言えます。Shell求人案件の単価相場は?
フリーのエンジニアが受け取る報酬の相場は一般的にプログラマで「40~60万」、システムエンジニアで「60~80万」と言われています。もちろんスキルや時間によりますが、一般的にはシェルですと一人前のエンジニアでだいたいの相場は月50万円~高い方で80万円程で、平均的な単価感ですが、比較的に長期で参画できる案件が豊富です。インフラ系企業を中心に重宝される傾向にあります。まとめ
シェル、そしてシェルスクリプトについてご紹介してきました。本サイトを運営しているポテパンフリーランスは、独立したてのフリーエンジニアを対象にした案件紹介サービスです。業過のプロに案件探しを手伝ってもらいたい方は下記からぜひお申し込みくださいませ。無料登録はこちら