こんにちは、WPホームページ研究所の運営サポートチーム(@WP_LABO)です。
数年前と比べると「エンジニア」や「SE(システムエンジニア)」の概念が少し変わってきています。
もしあなたがSEとして転職を考えているなら習得しておきたい言語は「Web系言語」です。Web系と言っても「コンパイル不要」の言語に限ります。詳細については以下で解説していきます。その前にまずはエンジニアについての認識やプログラマーの現状について詳しくまとめさせていただきますのでぜひご覧ください。
この記事は以下の人におすすめです。それ以外の人は別の記事をご一読ください。
・SEとして転職をしたいがプログラマー経験がほとんどない人
・業務系のエンジニアとして働いてきたがWeb系に転職したい人
・元Webデザイナーで今からアプリ開発ができるようになりたい人
これからSE(システムエンジニア)を目指す方へ向けて詳しく記事を書きました。
目次
【必読】SE転職する際にぜひ習得しておきたいおすすめのWeb技術
ひと昔前と比べると「SE(システムエンジニア)」の仕事内容が変わりつつあります。正確には変わっていない人もいるけど、業界全体が多種多様になってきているという状況です。SEのハードルは下がっています。
エンジニアとは?
数年前まで「エンジニア=プログラマー」を意味することが多かったです。しかし、スマホを中心としたWebの発展でさまざまな言語が増え、今はプログラマーより「クリエイター」を指す言葉となっています。またエンジニアリングという言葉は「分解と組み立て」を表します。何かしら商品を作り上げる人を「エンジニア」と呼び、最近ではWebクリエイター全体を総称して「ITエンジニア」とも呼ばれます。
エンジニアが扱う言語
昔はエンジニアといえばC、Java、PHP、Mysql(DB言語)を扱う人を指していました。そして、html、CSS、JavascriptなどWebと親和性の高い言語を扱う人はWebデザイナーと呼ばれていました。しかし最近ではすべてを一括りで“Webクリエイター”と呼び、総称して「エンジニア」と呼ばれる場面が多くなってきました。
流動的に価値観が動く情報化社会の時代では名称も時間とともに少しずつ変わってきます。
今はWebと言ってもホームページ、アプリケーション開発、システム開発などあらゆる業種の会社が増えてきたので線引きが難しくなってきた背景も関係しています。そのためエンジニアを募集している求人でも実質「Webデザイナー」を募集していたりと状況は会社によって多岐に渡ります。
元エンジニアが代表を務めている会社は言語を厳密に判断しますが、営業上がりの代表では言語が曖昧です。IT業界で「エンジニア希望」で面談をしたら「エクセル」も使ったことがない人が面談に来てしまったりと想像している以上に「エンジニア」という線引きが複雑になってきています。最近はエンジニア=クリエイターです。
システムエンジニアとは?
システムエンジニアは本来「プログラムを組む際の設計書を書く人」を指します。会社によっては「詳細設計」と呼ばれています。詳細設計はプログラマーが機能追加する際に参考にする資料です。コーディングを進める際のネーミング規則やメソッドと呼ばれる1つ1つの機能をコード化する際に使う「仕様設計書」です。
仕様設計書は大人数でプログラミングを進める際に全員が共通認識するための説明書のような存在です。しかし最近は小さな会社も増えてきているので詳細設計書を作らず簡単なルールだけで作る会社も多いです。
古いプログラマーがよく言う言葉で「詳細設計書がないと作業をできない」という台詞(セリフ)があります。
しかし、最近はアジャイル型(仕様や設計の変更は当然という前提で初めから厳密な仕様書を作らない)での開発も多いので「設計書を求めるプログラマー」と仕事をすると開発が遅れる傾向にあります。
ちなみに詳細設計がある方は「ウォーターフォール型」と呼ばれます。大人数で取り組む大手企業で採用されやすい方法です。ウォーターフォール型は小規模プロジェクトでも『現場の裁量・依頼者(または会社の代表)』によっては採用されることもあります。現実的にはかなり非効率な開発手段です。
Web系の開発会社が得意な言語について
Webと相性が良い言語に「PHP」があります。PHPにはフレームワーク(LaravelPHP/CakePHP/FuelPHP)がたくさん準備されています。PHPがWebと相性が良い理由は「サーバー側でプログラムを実行するという特徴」があるからです。Javascript、html、CSS言語はPHPと併用されることが多く同じ特徴を持ちます。
サーバー側で実行される言語と、ユーザー側で実行される言語のカンタンな違いは「処理が見えるかどうか」。PHPはサーバー上でプログラムが処理されてから結果を返すので閲覧者側はどういったPHPプログラムが書かれているか一切わかりません。一方でユーザーサイド系の言語はソースがすべて丸見えです。
ちなみにC言語は「工場などで在庫管理をする業務系のシステム(非オンライン)」、Java言語(Javascriptとは別)は「高いセキュリティ性が求められる銀行系のシステム」で使われていることが多いです。Googleが提供するAIを開発するためのPython(パイソン)も人気少しずつ人気が出てきました。
PHP言語はルールが緩いがゆえに人気がある?
PHPはルールが緩い言語です。C、Javaができるプログラマーなら大半がすぐに使えます。少しむずかしい話ですがJavaでは型の明記(文字なのか数字なのかによって型を宣言しなければエラーが出る)が必須ですがPHPでは型の指定をしなくてもエラーが出ずにそのままプログラムが動いてしまいます。
さらにJavaはプログラムを動かす最終段かでコンパイルという書き出し作業が必要です。しかし、PHPはコンパイルも不要で自由度の高さが特徴となっています。プログラマーのなかでは「厳密な言語が正義なのか?」という不毛な争いもありますが、結局のところは正しく動けば特に問題ありません。
ただし代償としては、自由な反面で、初心者プログラマーでも簡単に処理を組めるので割と適当なコードでも動いてしまったりと“厳密な答えが曖昧”な分プログラマー泣かせとも言える一面を持っています。
習得するべきWeb言語とは?
Web系では以下のどちらかで会得するべき言語が180度異なります。
・スマホやタブレットで動かす専用アプリを開発するか
・ブラウザ上で動くWebアプリケーションを開発するか
さらに「スマホで使うアプリ開発」もiOSかAndroidなのかで言語も異なります。
最近では両方(iOS/Android)で動くフレームワーク(Flutter:Google製)も出てきました。ちょっとしたWebサービスであればそういった開発もありかもしれませんが、使い手の希望に応えて機能追加を繰り返すとどこかで限界はやってきます。そのためスマホアプリ開発は言語を分けておく方が結果的には楽です。
最終判断は作るアプリの規模や機能のボリュームによってて変わってきます。
参考までにiOSはObjective-C、AndroidはJavaで開発されています。スマホアプリを開発したいなら興味のあるOSを思い浮かべてどちらかを習得すると良いでしょう。ただし、ブラウザ上で動かすようなWebアプリケーションを開発したいなら「html/CSS/Javascript/PHP/Mysql」を押さえておく必要があります。
人によっては「想像してるよりたくさん言語が必要だな…」と感じるかもしれません。しかし、Webサービスの開発で使う処理は意外と少ないです。htmlやCSSといったサイトの見た目については外部パートナーさんへ依頼する会社が多いですし、JavascriptもjQueryと呼ばれるライブラリを使えば初級者でも導入できます。
どんな言語も共通性があるので無駄にはならない
プログラムは1つの言語(CやJava)を覚えてしまえば他の言語でも活かせます。
基本的な構造やロジックの作成とロジックの呼び出しで成り立っているからです。よく使うロジックは共通文として作られていることもあります。たとえばMysqlもPHPのフレームワークではよく使う機能がすでに実装されていたり覚える必要もないです。Javaのような厳密な言語を覚えていれば大体はこなせます。
ただ、先述した通り、Java言語ではコンパイルという最終作業が必須です。一方でPHPは「プログラムを書いてサーバー上に1枚のファイルをアップするだけで動く」のでチェック作業もサクッと行えます。
さらにPHPは使っているユーザー数が多いので参考になる記事や、ソースが大量に公開されていたりもするので万が一行き詰まった場合も解決するための情報は想像以上に多く解決も早いはずです。
まとめ
今回の記事では色々な言語を紹介させていただきましたが、すべてを覚える必要はありません。
それぞれの言語の特徴や処理方法などの向き不向きを知っておけばOKです。基本的にどんな言語でも「作成した処理で取得したデータを使い回す」という共通の考え方があるのでやってみれば意外とできてしまいます。
どんな言語が好みなのかは将来的に作りたいサービスによって異なります。ぜひ検討してみてください。
最新式の無料プラグインを事前公開
WordPressは公式サイトに登録済みのプラグインだけで全機能を補足しきれません。当サイトでは使いやすさを追求した魅惑的なプラグインを無料でダウンロードいただけます。運営ホームページのマーケティング力をさらに高めるチャンスです。まずは無料でDLしてお試しくださいませ。
→ 改良されたプラグインを確認する