実は数年前と比べて「エンジニア」や「システムエンジニア(SE)」の概念が少しだけ変わってきています。

先に結論からいえば、SEとして転職する際に習得しておきたい言語はコンパイルが不要な「Web系の言語」です。Web系の言語と言っても何を指すか解らないと思いますので以下で詳しくご説明させていただきます。その前にまずはエンジニアについての認識などプログラマーの現状についてからまとめさせていただきますのでぜひご覧くださいませ。

この記事は以下の人におすすめです。それ以外の人は別の記事を一読ください。

・SEとして転職をしたいがプログラマー経験がほとんどない人
・業務系のエンジニアとして働いてきたがWeb系に転職したい人
・元Webデザイナーで今からアプリ開発ができるようになりたい人

上記の方へ向けて記事を書きました。

エンジニアとは?

数年前までエンジニアは一般的にプログラマーを意味していました。しかし、スマホを中心としたWebの発展で様々な言語が増え、今はプログラマーより「クリエイター」を指す言葉となっています。またエンジニアリングという言葉は「分解と組み立て」を表します。何かを作り上げる人を「エンジニア」と呼び、最近ではWebクリエイターを総称して「ITエンジニア」とも呼ばれます。

エンジニアが扱う言語

昔はエンジニアといえばC言語やJava言語やPHP言語やMysql(データベース言語)を扱う人を指していました。そして、html言語、CSS言語、Javascript言語などWebに親和性の高い言語を扱う人はWebデザイナーと呼ばれていました。しかし、最近ではすべてを一括りでWebクリエイターと呼び、総称して「エンジニア」と呼ばれる場面が多くなってきました。流動的に価値観が動く時代では名称も徐々に変わってきます。

今はWebと言ってもホームページ、アプリケーション開発、システム開発などあらゆる業種の会社が増えてきたので線引きが難しくなってきた背景も関係しています。そのためエンジニアを募集している求人でも実質「Webデザイナー」を募集していたりと状況は会社によって多岐に渡ります。

元エンジニアが代表を務めている会社は言語を厳密に判断しますが、営業上がりの人が代表をしているなどでは言語についてはかなり曖昧です。また、最近では「エンジニア希望」で面談をしたら「エクセル」もろくに使えない人が面談に来てしまったりもあるようで「エンジニア」という線引きは今後も益々判断が難しくなってくることが予想されます。

システムエンジニアとは?

システムエンジニアはプログラムを組む際の設計書を書く人を指します。会社によっては詳細設計と呼ばれています。設計書はプログラマーが機能追加する際に参考にする書類です。コーディングを進める際のネーミング規則やメソッドと呼ばれる1つ1つの機能をコード化する際に使う「仕様設計書」です。

仕様設計書は大企業など大人数でプログラミングを進める際にスタッフが共通認識するための説明書のような存在です。しかし、最近では小さな会社も増えてきているので詳細設計書を作らずに簡単なルールだけ用意する場合も多いです。

古いプログラマーがよく言う言葉で「詳細設計書がないとできない」という台詞があります。これは設計書がないとコーディングできない人がよく言います。

しかし、最近ではアジャイル型(仕様や設計の変更は当然という前提で初めから厳密な仕様書を作らない)での開発も多く、設計書を求めるプログラマーは頭が固すぎて開発が遅れる傾向にあります。

ちなみに詳細設計がある方は「ウォーターフォール型」と呼ぶのですが、大人数で取り組む大手企業でしか採用されないです。もちろん小規模なプロジェクトでも、現場の裁量や、依頼者(または会社の代表)によっては採用されることもありますが実際かなり非効率な開発手段です。エンジニアは職人気質で頑固な人が多いので採用時は特に注意しましょう。

Web系の開発会社が得意な言語について

基本的にWebと相性が良い言語はPHPです。またPHPには多くのフレームワーク(LaravelPHP/CakePHP/FuelPHP)があります。PHPがWebと相性が良い理由は「サーバーサイドでプログラムを実行するという特徴」を持っているからです。なお、Javascript言語、html言語、CSS言語はPHPと併用されることが多く、ユーザーサイドで実行されます。

サーバーサイドで実行される言語と、ユーザーサイドで実行される言語の違いはソースが見えるかどうかです。PHPはサーバー上でプログラムが実行されてから結果を返すので閲覧者側はどういったPHPプログラムが書かれているか一切わかりません。一方ユーザーサイド系の言語はソースがすべて丸見えで閲覧者側の環境に委ねられるという仕組みです。

ちなみにC言語は「工場などで在庫管理をする業務系のシステム(非オンライン)」などで使われていたり、Java言語(Javascriptとは全く別)は「高いセキュリティ性が求められる銀行系のシステム」で使われていることが多いです。また、最近ではGoogleが提供するAIを開発するためのPython(パイソン)言語なども人気がありますがWebではPHP言語がもっとも需要の高い言語です。

さらに、PHP言語はすごくルールが緩い言語なのでC言語やJava言語ができるプログラマーであればすぐに使えてしまいます。例えばJava言語では型の明記(文字なのか数字なのかによって型を宣言しなければエラーが出る)が必須ですが、PHP言語では型の指定がなくても使えてしまいます。また、Java言語では最終的にプログラムを動かす時にコンパイルという書き出し作業が必要になったりしますが、PHPでは特に不要だったりかなり自由度の高い言語です。この点はC言語やJava言語の経験者から見れば驚かれるほどPHPは柔軟な仕組みです。

ただし、自由な反面、初心者プログラマーでも簡単にロジックを組めるので、割とひどいコードでも動いてしまったり、厳密な答えが曖昧な分プログラマー泣かせとも言える側面を持っています。

習得するべきWeb言語

まずWeb系では、スマホで使うアプリを開発するか、ブラウザ上で動くWebアプリケーションを開発するかで会得するべき言語が180度異なってきます。

スマートフォンで使うアプリ開発もiOSかAndroidなのかで言語は異なります。最近では両方(iOS/Android)で動くフレームワーク(Flutter:Google製)も出てきました。簡単な機能・設計であればそういった開発もありかもしれませんが、使い手の希望に応えて機能追加を繰り返すとどこかで限界がやってきます。そのためスマホアプリ開発は言語を分けておく方が結果的には楽だと思います。

iOSはObjective-C、AndroidはJava言語で開発されています。スマホアプリを開発したいなら作りたい方のOSを考えてどちらかを習得すると良いでしょう。ただし、ブラウザ上で動かすようなWebアプリケーションを開発したいなら「html言語/CSS言語/Javascript言語/PHP言語/Mysql言語」を押さえておく必要があります。

人によっては「Webアプリケーションの開発では多くの言語が必要だ」と感じるかもしれませんが、開発時に使うロジックは意外に少なかったりします。最近ではhtmlやCSSといったサイトの見た目に関する部分は外部パートナーさんへ依頼する会社が多いですし、JavascriptもJqueryと呼ばれるWebに特化したライブラリなら初級者でも導入できます。

また、PHP言語も、基本的なプログラム言語(C言語やJava言語)を一通り覚えてしまえば割といけてしまったり、Mysql言語もPHPのフレームワークではよく使うロジックがすでに組み込まれていたりするので難しく考える必要もありません。個人的な感覚ではJava言語ができる方ならPHP+Mysql+Javascriptを覚えるのは問題ないという感覚です。

先述した通り、Java言語ではコンパイルが必須ですが、PHPはプログラムを書いてサーバー上にアップするだけで動いてしまうので、動作チェックもサクッと行えます。またPHPは使っているユーザーが多いので参考になる記事やソースが大量にあったりするので、万が一突っかかった時にも解決するためのナレッジも想像以上に多く、解決も早いはずです。

まとめ

今回の記事では色々な言語を紹介させていただきましたが、すべてを覚える必要はありません。それぞれの言語の特徴や処理方法などの向き不向きを知っておく程度でOKです。基本的に取得したデータを変数として値を回すのはどんな言語でも共通の考え方なので、やってみれば意外といけてしまうもんです。どんな言語が好みかぜひ検討してみてください!

賢い“SE転職サイト”の選び方

SE業界は情報量が多すぎて表に出てこない非公開求人がほとんどです。そのため、SEなどWebエンジニアへの転職では転職サイトの活用が必須となります。

お勧め転職サイトの
特徴と違いを見る