「開発者」と言えば、Kinstaでは「ソフトウェア開発者」が真っ先に想起されます(中には「都市開発」の方が身近だという人もいるかもしれませんが…)。今回はコンピュータやプログラミングに焦点を当てて話を進めますが、それでも、まだ定義としては曖昧です。もう少し細分化することができるかもしれません。
JavaScript開発者やPython開発者のように、使用するプログラミング言語によって分類することもできますが、それでは開発者が何を作っているのか、その過程でどのような役割を担っているのかを明らかにすることはできません。加えて、開発者が複数の言語に精通しているのは、よくあるパターンです。
そこで今回は、開発者のタイプとして広く採用されている(そして、理解を深めるのに便利な)分類をいくつか使って、実際の仕事や役割を考えてみましょう。
開発者とは
ソフトウェアは、開発者を語る上で欠かせない要素です。実際には、以下のようにさまざまな形式を考えることができます。
マイクロソフトのデータベースソフトウェア「SQL Server」を支えるプログラミングチームの構成員は、開発者です。また、構造化問い合わせ言語(SQL=Structured Query Language)を使って、そのようなデータベースに格納された情報を扱う人も、開発者になり得ます。
ある開発者は、回路基板に組み込むかたちでコンピュータのオペレーティングシステムを構築します。また、ある人は、複数のソフトウェア間のやりとりを自動化するためのbashシェルスクリプトを記述します。
これらのタイプの開発者はすべて、コードを使って何かを作り上げています。
開発者の種類
開発者の仕事内容を一つ一つ規定する明確な定義は存在しません。そこで、一般的な用語を使って開発者の仕事を考察してみましょう。ちなみに「ウェブ開発者」という幅広いくくりは、3つの明確な役割に分類することにしました(どうしても、仕事柄、ウェブサイトを作る人たちについての記述が多くなる点にはご了承ください)。
それでは、全部で11種類の開発者をご紹介します。
1. フロントエンドウェブ開発者
フロントエンド開発者は、ウェブサイトのユーザーインターフェースに焦点を当てた仕事を担当します。HTMLとCSSのスキルを駆使しサイトの外観や風合いをコントロールします。モバイルやデスクトップのブラウザにあった画面サイズに対応するのも大事な仕事の一つです。
フロントエンド開発者は通常、JavaScriptを使用することで、レスポンシブなユーザーエクスペリエンスを実現します。動的なクライアント向けアプリケーションの作成を高速化するJavaScriptライブラリやフレームワークに精通していることが多いです。
フロントエンド開発者は、サイトのパフォーマンス向上、ブラウザでの読み込み時間短縮を考え、画像、JavaScript、マークアップを最適化するものです。また、ほとんどのフロントエンド開発者が、検索エンジン最適化(SEO)やウェブサイトのアクセシビリティにも精通しています。
この全てをこなすためには多くのスキルが必要となります。フロントエンド開発者の一般的な給与には、その事実が反映されていると言えるでしょう。
フロントエンド開発者はウェブデザイナーなのか
フロントエンド開発者の多くはデザイナーでもありますが、それは「フロントエンド」という肩書きに求められる絶対的要件ではありません。同様に、多くのウェブデザイナーがHTMLとCSSに精通しており、モックアップでそれらを駆使することはありますが、自らを開発者だとは見なしていないでしょう。
多くの企業にとって、デザインはウェブ以外のメディア全てを包括するブランディングの一部として位置付けられています。
誰がデザインしたものであれ、それをウェブページ上で実現し、実際に機能するアプリケーションに変えるのは、フロントエンド開発者の仕事です。
2. バックエンドウェブ開発者
バックエンド開発者は、サーバーサイドのアプリケーションを構築します。通常、ウェブサーバーソフトウェア、データベース、オペレーティングシステムに関する専門知識が必要です。全てをオープンソースでまかなう例としては、Linux OS、NginxまたはApacheウェブサーバー、MariaDBまたはPostgreSQLデータベースが挙げられます。
バックエンドとフロントエンドの開発の境界線は、PHP(ブラウザにHTMLを送信する、サーバーサイドのスクリプト言語)のような技術によって曖昧になっているのが現状です。
ちなみにPHPは、WordPressなどの人気のCMSやLaravelなどの開発フレームワークを動かす、ウェブ上で最も普及したサーバーサイドスクリプト言語です。しかし、バックエンドの開発には、C#やMicrosoftの.NET Framework、Python、Java、Ruby on Rails、Node.jsといった技術が使われることも多々あります。
バックエンド開発者はまた、ウェブサイトのクライアントエンドを担当するチームメンバーと協力しながら仕事を進めることも。とは言え、サーバーサイドの開発には、フロントエンドのサービスをサポートするアプリケーションプログラミングインターフェース(API)の作成も含まれ、これを利用することにより、両者の緊密な連携はあまり必要ではなくなります。
バックエンド開発者の給与はこちらの記事でご紹介しています。上記の仕事内容に興味のある方は、一見の価値ありです。
3. フルスタックウェブ開発者
フルスタック開発者が、フロントエンドとバックエンドの開発の仕事を「どちらも」こなす、ということはご想像の通りです。しかし、だからといって、フルスタック開発者の給料が先の2つのパターンと比べて単純に2倍というわけではありません。
とは言え、ウェブ開発の全体像をマスターすることには、それなりの見返りがあるかもしれません。2022年にStackOverflowが開発者を対象に行った調査では、自らの役割を説明するならという質問に対して、「フルスタック開発者」という回答がトップ(約47%)になったそうです。
WordPress開発者はフルスタック開発者なのか
PHPに精通している人であれば、KinstaのマネージドWordPressホスティングのようなサービスを使うことで、サーバーサイドの知識を深く掘り下げなくとも本格的な開発を行うことができます。
圧倒的な普及率を誇るWordPressは、開発者に優しいのが特徴です。サーバーサイドのタスクを担うPHP関数/メソッドも豊富です。例えば、WordPressを利用した開発では、SQLを記述することなく、リレーショナルデータベースのレコードを保存したり取得したりできます。また、PHPの根幹にある機能を理解せずとも、サーバーのファイルシステムにアップロードしたメディアを保存することが可能です。
「WordPress開発者」として一つの分類をつくることもできますが、これを始めると、Drupal、Joomla、DNNなどのCMSや、Laravel、.NET、Djangoなどのフレームワークを扱う開発者にも同じことをしなければならなくなるので、やめておきます。
WordPressの開発者の多く、特にWordPressのテーマやプラグインを開発する人は、フルスタックとしての能力を体得している傾向にあります。とは言え、ここまでを考慮すると、「WordPressの開発者=フルスタック開発者なのか?」という質問に対する答えは「人それぞれ」となります。
4. モバイルアプリ開発者
「アプリケーション」という言葉は、ソフトウェア開発において多くの領域を網羅する概念です。デスクトップからウェブまで、アプリケーションとは言うなれば、エンドユーザーのために特定の物事を成し遂げるツールです。
しかし、「それなら、このアプリがおすすめだよ!」のような会話の文脈では(「アプリ」と短縮されがち)、スマートフォンやタブレット端末で動作するアプリケーションをまず思い浮かべるはずです。そして、モバイルアプリを作るには、それに精通した専門的な開発者が必要になります。
モバイルアプリ開発者は通常、AppleのiOSやGoogleのAndroidなど、デバイスのオペレーティングシステム用のアプリケーション構築ソフトウェア開発キット(SDK)と関連ツールに精通しているものです。
iOSではSwiftが、AndroidではJavaとKotlinが最もよく使われるネイティブプログラミング言語です。さらに、Apache CordovaやNativeScriptなどのアプリケーション構築フレームワークを使い、本来であればウェブ用のJavaScript、HTML、CSSをベースにしたコードをネイティブのモバイルソフトウェアに利用することも可能です。
アプリ開発者の平均給与を見てみると、モバイルプラットフォーム向けの開発者では、デスクトップやウェブ向けの場合よりも数字がわずかに高いことがわかります。
5. デスクトップソフトウェア開発者
パソコンやワークステーション上で動作するソフトウェアアプリケーションを開発するのが、デスクトップソフトウェア開発者の仕事です。
一般的に、特定のオペレーティングシステム向けにデスクトップアプリケーションを構築するため、この分野のビジネスは、MicrosoftのWindows、AppleのmacOS、GoogleのChrome OS、オープンソースのオペレーティングシステムLinuxなどのプラットフォームの相対的な市場占有率を反映しています。
Statcounterは、世界中のウェブサイト訪問者から収集したデータを用いて、2022年8月にパソコンOSの中でWindowsが74%の市場シェアを持つものと推定しています。
ソースコードの編集、デバッグ、コンパイルを高速化してくれる統合開発環境(IDE)を使用してプログラミングを行うのが一般的です。
デスクトップアプリケーションのプログラミングで人気のある言語は、C#、C++、Swift、Javaなどとなっています。
デスクトップソフトウェアはローカルで機能しますが、最近のアプリケーションでは、製品のアップデートからクラウドストレージ経由のデータ共有に至るまで、インターネット接続を使用するケースも見られます。
6. データサイエンティスト(ビッグデータ開発者)
スーパーでの買い物、ネットサーフィン、道路のライブカメラ、携帯電話の使用、投票など、私たちは日常生活で多くのデータを生成しています。また、気象、地震、宇宙からの電磁波など、自然現象から得られるデータを記録するシステムもあります。
データサイエンティストは、言うなれば、コンピュータを操る数字の魔術師。膨大な情報の中からパターンを発見することに長けています。
業務にはPythonが使われることが多く、その他にも、R、Scala、Juliaといったより専門的なプログラミング言語が利用されることもあります。
「ビッグデータ」は通常、リレーショナルデータベースに格納されるため、データサイエンティストは、SQLに精通している可能性が高いと言えるでしょう。
7. 人工知能/機械学習開発者
人工知能(AI)ソフトウェア開発者の業務では主に、意思決定などの人間の行動を模倣することが目的とされています。さらに機械学習(ML)を取り入れることで、アプリケーションが自ら学習し、「徐々に賢く」なっていくことができます。
AI/MLアプリケーションは通常、複雑なアルゴリズムを用いて多くのデータを処理するため、しばしば、データサイエンティストがこの分野の開発者になり得ます。
市場調査会社IDCは、AI関連のアプリケーション、ハードウェア、サービスの世界規模での売上が2021年に3,830億ドルを超え、2020年比で約21%増加したことを明らかにしました。
AIを活用したアプリケーションの収益のうち、顧客関係管理ソフトウェアと企業内リソース(※注釈:人財、タスク、予算等)管理ソフトウェアが約65%を占めました。
8.ゲーム開発者
PCゲーム開発者は、幅広いスキルが求められる職の代表格です。
そのソフトウェアは、パソコン、モバイル機器、コンソール、ウェブブラウザでプレイされます。ジャンルには、ミリタリーやスポーツ、シューティング、ストラテジー、ロールプレイングなど、さまざまなものがあります。さらに、3Dグラフィックス、音楽、効果音なども作らなければなりません。
オンラインの多人数参加型ゲームの開発者ともなると、超大規模ECサイトと同じくらいに慌ただしくバックエンドサーバーやデータベース関連の業務に追われることになるでしょう。
ゲーム開発者には通常、3Dレンダリングツールやその他アニメーション関連ソフトウェアの専門知識が求められます。
また、最先端技術に注目し、SlashDataの運営するDeveloper Nationが開発者向けに最近行った調査では、拡張現実(AR)または仮想現実(VR)アプリケーションの37%強がAR/VRゲームであることがわかりました。さらに27.9%のプロジェクトは仮想世界の構築に関わるもので、一部はゲーム用となっています。
9. オペレーティングシステム開発者
Linuxに貢献したり、Microsoft、Apple、Googleに務めたりと、膨大な数の開発者が大手OSに携わっていますが、それでもある意味で排他的な分野です。SlashDataの調査によると、全世界の開発者人口は2,400万人以上とのこと。
冷蔵庫に一種のOSが搭載されている可能性は高いですが、人気のコンピュータOSには大規模な開発チームが必要となります。さらに、ほとんどの場合、プロジェクト全体が複数のコンポーネントに細分化され、それぞれで業務が展開するものです。
ほとんどのOSの中核にあるのがカーネルです。これが、CPU、メモリ、ファイルシステム、I/Oデバイスへのアクセスを管理します。Microsoft Windows、AppleのmacOS、Linuxのカーネルでは、C言語が主要なプログラミング言語となっています。また、アセンブリ言語で書かれた低水準のコードも使用されます。
ちなみに、AndroidカーネルはLinuxカーネルから派生したものです。
OSにはドライバがあり、これが、システムのハウスキーピング用の様々なアプリやハードウェアデバイスを管理しています。そして、システムのグラフィカルユーザーインターフェースがあります。これらのコンポーネントには、C、C++、Objective C(macOS)、さらにはPython(Linux)を使うことができます。
10. DevOpsエンジニア
DevOpsエンジニアは、ソフトウェアの開発段階から公開までの手順を素早く確実に遂行する役割を担います。具体的には、ツールやワークフローの管理などです。
「DevOps」とは、「開発」と「運用」を組み合わせた造語で、コードの管理からテスト、デプロイ、監視、保守、トラブルシューティングまで、ソフトウェア開発の反復的なタスクを自動化することから、実践的な技術者だと言えます。
ソフトウェアのリリースサイクルを短縮し、プロジェクトのコードベースのさまざまなバージョンを管理し、最終製品が期待どおりに機能するよう、一連のDevOpsツールが使用されます。
ウェブ開発の文脈では、DevOpsが、アプリケーションに必要となるリソースのウェブサーバー上での確保、適切な設定の維持を担うこともできます。
DevOpsには高度なスキルが必要とされ、DevOpsエンジニアの給与には通常、それが如実に反映されています。
11. セキュリティ開発者(SecDevOps)
セキュリティ開発者は通常、ソフトウェアやコンピュータシステムのセキュリティをテストするためのツールを構築し、同時にプロセスの管理も行います。
ソフトウェア開発においてセキュリティは多くの場合、DevOpsの仕事の一部です。そのような環境で、セキュリティに特に焦点を当てた役職の人が、SecDevOpsエンジニアと呼ばれることがあります。
セキュリティ開発者は、サイバー攻撃や脅威からソフトウェアやコンピュータシステムを保護する役割を担います。Python、Bash、Rubyなどのスクリプト言語を含むさまざまなツールを用いて、繰り返し行われる作業を自動化するのも大事な役割です。
セキュリティ開発者は、保護対象のソフトウェアやシステムについて、深い見識を持つ必要があります。
どの開発者になるべきか
ここまでの分類に目を通して「開発者になりたい!」と考えた方もいらっしゃるかもしれません。次のステップに進む上で大事な情報を簡単にご紹介します。今学習するのにぴったりのプログラミング言語はこちらで解説しています。PHPの学習やJavaScriptの知識を深めるのに便利なリソースもあわせてご覧ください。
または、Laravelの開発者になるために必要なことを調べたり、世界で最も人気のあるCMSであるWordPressの学習に的を絞ったりするのもいいかもしれません。
そしていつの日か、Kinstaで一緒にお仕事ができる日が来ることを楽しみにしています。
まとめ
以上、11種類の開発者について、その仕事や役割の中身をご紹介しました。
それぞれの特徴を見てきましたが、実際には、開発者が複数の役割を担うことはよくあり、ほとんどの開発者が様々なプログラミング言語やスクリプト言語に精通しています。そのため、絶対的な開発者の「棲み分け」はありませんのでご了承ください。
もし、これからウェブベースのプロジェクトを立ち上げる予定でしたら、Kinstaのアプリケーションホスティング、データベースホスティングソリューションをぜひともご活用ください。
コメントを残す