UNIXやLinuxなどのOSを用いて開発を行う際、インターフェイスとして用いられるShell。エンジニアはカーネルに対しShellを通して命令を実行するため、Shellを理解していなければ開発はおろかシステム検証を手掛けることすらできません。 そこで今回はShellとはどんな機能を持つプログラムなのか、そしてShellを必須とする案件の単価などについて解説いたします。
Shellとは?
ShellとはLinux系のOS上で使用できるコマンドを、まとめて記述して実行できるものです。コマンドを記述した処理のことをシェルスクリプトと呼ぶこともあります。OSに対してさまざまな処理を命令するためのものであり、例えるならwindowsユーザーにおけるコマンドプロンプトみたいなものだといえばわかりやすいと思います。 エンジニアはOSに対して直接命令するのではなく、Shellを介して命令を送ります。直接命令するとOSを破壊してしまう可能性があるからです。Shellというのはそもそも貝を意味する単語ですが、OSを保護する貝殻のような役割を担っていることから名づけられたとする説が一般的です。
Shellの特徴
Shellにはいくつかの種類があります。最も知られているのはbashであり、現在ではShellと言えばbashとされるほど浸透しています。他にもash、csh、ksh、zshなどの種類がありますが、初心者はbashを習得することを目指してください。 さて、そのShellですが、最も大きな特徴としてプログラミング機能を持っているという点が挙げられます。シェルスクリプトを用いることによってコマンドのバッチ処理(連続処理)が可能となり、自動的にシェルを実行する設定を行っておけば各種設定やデータ処理を自動化することが可能となります。 また、あらかじめecho、 set、 unsetなどのコマンドが組み込まれているため、これらのコマンドを覚えることで開発を素早く行うことが出来るようになります。
Shellが活躍できる業界
Shellのスキルがあれば活躍できる業界として挙げられるのは、大規模なインフラ開発や官公庁向けシステム開発など、比較的大型案件が多いSIerです。 ただし、Shellに関するスキルだけではなく、Unix コマンドやPerl といった他プログラムスキルが同時に求められるため、Lunux系OSに関する深い知識が必要となります。 また、大手SIerからの委託を受けてシステム運用保守を行う現場でもShellスキルを必要とすることがあります。初心者エンジニアの場合、こういった現場で経験を積んで開発へ回るというキャリアステップを踏むこともあります。
Shellの作業内容
Shellを使った案件の多くは、Shellスキルだけで活躍できるというものではありません。前述の通りUnix コマンドやPerl、インフラ構築で多く使われているC/C++、Javaでの開発経験、COBOLの経験など、案件内容によってプラスアルファのスキルが求められることが多くあります。 つまり、Shellはあくまでも基本スキルの一つであり、エンジニアとして活躍していくためにはそれ以外の得意な分野が少なからず一つは必要ということです。 ただし、保守運用においてはShellだけで作業するという現場も少なからずあります。
Shellの勉強法
Shellの勉強方法ですが、最も効果的なのがpaizaラーニングやドットインストールといったオンライン学習サイトを活用することです。ローカルに環境構築を行うことなく、ブラウザ上で演習問題を解くことが出来るため初心者に優しい学習方法といえます。プログラミングスキルチェックなどの機能も充実しているため、これらのサイトで基本を学ぶのが良いでしょう。 また、ShellはLinuxエンジニア必須のスキルでもあるため、関連書籍や参考サイトなども充実しています。オンライン学習サイトと並行して書籍などで理解を深めると良いでしょう。
Shell案件の月単価の目安
では、フリーランスエンジニアになりShellのスキルを活かしてとして働く場合、どのような案件があるのか、そして単価はいくらなのかを見ていきましょう。 検索結果のフリーランス案件・求人情報なら【SEプランナー】|優良案件のご紹介で紹介されている案件の中で、Shellが必須要件になっている求人を見てみると、月額~70万円となっているものが多いようです。 気になる案件内容ですが、公的機関向けデータの移行業務や人材採用事業向けデータ分析システムの開発業務などであり、ほとんどがShellを使用した経験があるエンジニアを対象としています。 案件数自体は非常に多いため、スキルを積めば案件の選択肢が増えることもShellの魅力の一つになります。
まとめ:Shellスキルはエンジニアにとって基本中の基本
Linux系OSを使った開発案件では、Shellを扱えることが必須条件であることが非常に多いといえます。逆にShellを知らなければ肩身の狭い思いをすることは間違いありません。 キーボードがなければパソコンを操作できないように、ShellがなければOSに命令を送ることができません。つまり、Shellを扱えるということはローマ字入力ができるということくらい基本的なことです。 大規模開発案件を中心にShellを必須とする案件も非常に多く、常に求人がある状態です。エンジニアにとって必須ともいえるShellをぜひこの機会にマスターしてみてはいかがでしょうか。