C言語のことを「永遠に古くならない言語」という人がいます。もちろん誇張した表現ですが、1973年に開発された(1972年説もあり)C言語は50年近く経ったいまでも現役どころかトップランナーにいます。
プログラミング初学者のなかには、C言語に興味を持てない人もいるかもしれません。例えば、スマホアプリ開発ならJava(Android用)やSwift(iPhone用)がよく知られていますし、WEBサイト関連の仕事(案件)ならPHPがよく使われています。
このような言語と並べると、確かにC言語は「華」がないかもしれません。
しかしC言語は一般の人があまり知らない場所で使われていて、そういった場所では「C言語でなければならない」地位を築いています。
その場所とは「産業分野」です。自動車、家電、通信、ロボット、IoT(ネットとモノ)では、C言語の存在感が際立っています。
そしてなんといってもAI(人工知能)分野です。AI開発で使われる3大言語は、C言語、C++、Pythonです。もちろんJavaやScalaでもAIのプログラムを書くことはできますが、C言語の大量のデータを高速で処理する能力は、ビッグデータを扱うAIにうってつけなのです。
歴史と伝統と実績、そのうえ将来性も備えたC言語のスキルを持ったフリーランスのエンジニアは、業界で重用されています。
フリーランス向けC言語案件のトレンドなどについて解説します。
C言語の特徴を、C言語の歴史を追いながら解説していきます。
C言語のルーツをたどると、1960年代にマーティン・リチャーズ氏が開発したBCPL言語に行きつきます。
その後1970年代に入って、ケン・トンプソン氏がBCPL言語をベースにしてB言語を開発しました。このB言語をベースにしてつくられたのがC言語です。
C言語の生みの親は、デニス・マカリスター・リッチー氏といいます。
ではなぜ、BCPL言語やB言語ではなく、C言語が世界を席巻したのでしょうか。もしくは、なぜC言語の次の言語ではなく、C言語が世界中のエンジニアの支持を集めることができたのでしょうか。
それは、やはりリッチー氏がつくったオペレーティングシステム「UNIX」がC言語で書かれていたからです。UNIXは現役で活躍しているOSのなかで最古のOSです。UNIXは安全性が高く機能がシンプルで、何より安価だったため、いまでもUNIXを使う企業は少なくありません。
UNIXの価格については「現在はそれほど安くない」という声もありますが。
無料OSのLinuxもUNIXをベースにしてつくられています。
リッチー氏は当初、別の言語でUNIXをつくっていましたが、途中からC言語に変更しました。
これがC言語を確固たる地位に押し上げました。UNIXが広まることでC言語が広まり、C言語が広まることでUNIXが広まりました。
そして大型コンピュータからパソコンまで「C言語=UNIX」色に染まると、IT関係者やWeb関係者はもう「C言語=UNIX」圏から逃れられなくなったのです。
では、C言語は呪縛によって仕方なく使われているかというと、もちろんそのようなことはありません。C言語にはさまざまな強みがあるので、C言語でシステムやソフトを構築してほしいというニーズが途絶えないのです。
つまりC言語は、使わない理由がなく、使う理由がある言語なのです。
C言語の強みは産業界を「牛耳っている」点です。
家電、自動車、航空、基幹システム、携帯・スマホ、IoT、AI
これらは何らかの形で必ずC言語と関わっています。基幹システム、IoT、AIは、すべての産業の基礎技術にもなっているので、C言語とまったく関係しない業界は存在しないといえます。
極論すれば、フリーランスのC言語エンジニアは、どこからでも仕事(案件)を獲得することができるわけです。
<いまだに世界2位>
その証拠に人気言語ランキングを集計すれば、C言語は必ずトップ10には入りますし、調査によってはいまだにトップ3に入ります。
例えばオランダのTIOBE Softwareが2018年12月に行った言語別世界シェアランキング(*)では、
1位Java、シェア16%
2位C言語、シェア14%
3位Python、シェア8%
4位C++、シェア7.5%
となっています。
*:https://www.tiobe.com/tiobe-index/
このランキングでは、C言語は2016年も2017年も2位でした。C言語は数々の「後輩言語」を寄せ付けない圧倒的な強さと魅力を持っているのです。
<「AIに強いC言語」はフリーランス・エンジニアの強力な武器>
自動車や家電はいわば伝統的な工業製品なので、これらがコンピュータ化されるときに伝統的な言語であるC言語が使われ、それが現代に受け継がれているのは理解できます。
しかしAIは、最近ようやく日の目を見るようになった最新技術です。それにも関わらずC言語でAIを開発することが多いのは、C言語が高速処理を得意とするからです。
AIはある意味単純で、「無限に情報を与えれば解けない問題はない」という仕組みです。例えば囲碁のAIが世界チャンピオンを倒すことができたのは、人間が一生をかけても読み込むことができない量の棋譜を読み込み、世界最高の一手を打つことができたからです。
その他、画像認識AIも音声認識AIも客の好みを言い当てるAIも、AIに大量の情報を与えることで法則性を探させているのです。
つまりAIの生命線は大量のデータや情報であり、それらを総称してビッグデータといいます。AI開発はビッグデータを短時間で処理しなければならないので、シンプルで高速処理が可能なC言語が選ばれているのです。
フリーランスのエンジニアが高額案件を獲得するには、AIに関する知見とスキルが必要です。
ということはフリーのエンジニアこそC言語をマスターしておくべきなのです。
C言語は強力なプログラミング言語ですが、古さゆえの課題もあります。例えばC言語は、GUI(グラフィック・ユーザー・インターフェース)をつくることが苦手です。
ただC言語から派生したC++はGUIが得意です。そしてC言語を習得しておけばC++スキルを獲得することは比較的難しくないので、「C言語はGUIと完全に無縁」とまではいえません。
またC言語はコンピュータ言語の基本をしっかり学ばないと身につきません。そのため学習コストは小さくありません。学習コストとは、言語を習得するために必要な費用や時間や労力のことです。
例えばHTMLやCSSは簡単に習得でき、Webサイトをつくることができます。それで「そこそこ稼ぐ」こともできます。
しかし仕事の幅、個々の案件の単価、将来性、安定性、経済性のどれをとっても、HTMLコーダーよりC言語エンジニアのほうが格段に有利です。
C言語を獲得するために支払った学習コストは、確実に回収できます。
C言語エンジニアは、どのようなポジションで働くことが求められているのでしょうか。案件票の募集要項などを参考に、C言語エンジニアの働き方のトレンドを探っていきます。
結論からいうと、C言語エンジニアにはどのポジションも用意されています。
簡単なプログラミングしかしなくてよい年収300万円ほどのプログラマーの職も用意されています。このポジションは年収は低いのですが、その代わり自由があります。例えば家賃や新鮮な魚や野菜が安い地方なら、年収300万円でも十分豊かに生活できます。
地方には空き家がたくさんあり、格安で借りることができます。パソコンとネット環境さえあればどこでも「開業」できるフリーランスのC言語エンジニアは、地方移住ができます。
例えば日中、サーフィンや山登りや陶芸などをして過ごし、夕方から深夜にかけて東京の開発企業から受注したアプリ開発を手掛け、翌朝10時ごろに起きてまた遊びに行く、といった生活も不可能ではありません。
またC言語エンジニアには、年収500万円をゆうに超えるシステムエンジニアのポジションも用意されています。
それ以上のポジションを目指すなら、プログラム・マネージャーというポジションもあります。PMになれば年収1,000万円越えも可能です。実際、PMに年収1,500万円を提示している案件票もあります。
IBMはPMの業務として次の6つを想定しています(*)。
・基幹システムやWebサービスの構築などのプロジェクトの企画案を評価して承認する
・見積書を作成してプロジェクトに必要な資金を調達する
・資金を確保して予算をつくる
・コスト計算、スケジュールづくり、スタッフ確保
・コスト管理、スケジュール管理、スタッフ管理
・プロジェクトの全般について経営陣と協議する
PMはまさにプロジェクトの総監督です。そして基幹システムやWebサービスなどの構築は企業の経営に直結するので、PMの仕事の成否は経営に大きな影響を与えます。そのためPMのポジションは社内でも上位に位置します。
大企業では営業部長や総務部長や経理部長などが年収1,000万円プレイヤーになることは珍しくありませんが、それらと同じポジションをPMに用意している企業もあります。
C言語エンジニアはその位置に就くことができるのです。
C言語エンジニアは「どの業界、分野でも活躍できます」が、その説明では活躍のイメージをつかむことができないでしょう。
そこであえて対象を絞って、C言語エンジニアが活躍しているシーンを紹介してみます。
ロボットには、人型ロボットや動物型ロボットなどのコミュニケーション型ロボットと、工場の危険作業などを行う産業ロボットがあります。
ロボットを動かすために組み込まれるコンピュータプログラムはC言語で書かれることが多い傾向にあります。
インターネット環境を構築したり、ルーターやモデムなどの通信機器を開発・製造したり、テレビ会議やIP電話などのシステムを構築したりするときもC言語が使われます。ただこの分野ではC++やJavaの存在感も増しています。
IoTは「ネットとモノ」と訳されます。数年前からものすごい勢いでさまざまなモノがインターネットにつながっています。
自動運転車はネットに接続することを前提につくられています。また、スマホを使って遠隔地から動かすことができる家電や住宅設備が登場していますが、いずれもネットを介しています。
自動車や家電や住宅のIoT化の分野では、C言語エンジニアが活躍しています。
C言語はフレームワークが少ない言語といわれています。実際ベテランC言語エンジニアは、あまりフレームワークを多用しません。
それは、C言語開発はライブラリに依存することが多いので、フレームワークをつくろうとするとカバーする範囲が大きくなってしまい、利便性が低下してしまうからです。それでC言語向けのフレームワークをつくろうとする企業や個人が少ないのです。
またそもそもフレームワークは小規模なプロジェクトを短期間に効率よく進めるために使われるものなので、C言語案件によくある大規模プロジェクトにはフレームワークは向いていないのです。
小規模のスマホアプリ開発ならPHPやPythonで、PHPやPython向けのフレームワークを使って進めたほうがはるかに効率的です。
こうした事情を承知していただいたうえで、C言語のフレームワークを紹介します。
TreefrogはWebアプリ製作向けのフルスタック型のフレームワークです。ただTreefrogはC++向けのフレームワークです。したがって「C言語の習得→C++の習得→Treefrogの習得」という順にスキルアップしていく必要があります。
Treefrogスキルを習得しておけば、小規模案件を獲得するチャンスが広がります。
フリーランスのC言語エンジニアは単価が高い大型案件を獲得できますが、大型案件は相対的に発注数が少なく、またライバルフリーランスと争奪戦を繰り広げることもあります。
フリーランスのC言語エンジニアが収入を安定させるには、C++やTreefrogを習得して小規模案件に対応できるようにしておいたほうがいいのです。
CSpecはDSLを志向しているBDDフレームワークです。仕様を書くようにユニットテストを記述できるメリットがあります。分析技法のTDDとの親和性の高さもCSpecの強みです。
Cmockeryは、グーグル製品向けのユニットテスト用のフレームワークです。サポート機能が充実し、簡素なつくりになっています。契約による設計との親和性が高いメリットがあります。
フリーランスのC言語エンジニアにはどのような業務が発注されるのでしょうか。案件の単価などを紹介します。
この案件は既存の航空システムに機能を追加する仕事で、報酬は月58万円です。新規案件ではないため超高額ではありませんが、こうした案件を積み重ねて「稼げる」のもフリーランスのC言語エンジニアの特権といえます。
具体的な業務は、C言語を使ってクライアントサーバーシステム(C/Sシステム)の詳細設計から、製造、結合テストまでを行います。
必須スキルは同類の業務経験とSQLの読解力、エンジニア経験3年以上となっています。案件票には「航空分野の知識は特に必要としない」と記されています。
ガソリンスタンドのセルフ給油には、かなり大がかりなシステムが搭載されています。現金の受け払いからクレジット決済、レギュラーやハイオクなどの油種の選択、給油量を計測するセンサーなど、コンピュータで制御しなければならないものばかりです。
この案件では、そのセルフ給油機に組み込むコンピュータの開発を手掛けます。
報酬は月55万円です。
担当するのは詳細設計からテストまでです。OSはウィンドウズです。
必須スキルは類似業務の経験とウィンドウズ上でのC言語を使った製造経験です。
歓迎スキルはVisual Studioの使用経験やプロセス間通信の経験です。
フリーランスのエンジニアになるなら、大規模プロジェクトの案件が多いC言語は有利です。なぜならフリーランス・エンジニアにとって最も頭が痛い問題は、営業だからです。つまりフリーランス・エンジニアの最大の課題は、仕事の確保です。
大規模プロジェクトなら業務が長期化するので、その間は営業活動をしなくて済みます。
大規模プロジェクトでは、フリーランスといえども企業に常駐することになるでしょう。したがって朝9時に出勤して残業して帰宅するという、サラリーマンのような生活に逆戻りすることになります。
フリーランスのC言語エンジニアは、毎日を忙しく過ごしていると思います。そのため、つい勉強を怠りがちです。
会社員エンジニアであれば、上司や先輩からいい意味での「無茶ぶり」があるので、その試練に耐えれば一気にスキルアップ、キャリアアップできます。
しかしフリーランスは、これまで培ってきたスキルを切り売りしていくことになります。そしてスキルが陳腐化したら、途端に仕事を確保できなくなってしまいます。
「去年あんなに忙しかったのに、今年は低単価案件しか獲得できない」と悩んでいるフリーランスのC言語エンジニアは少なくないはずです。
フリーランスのC言語エンジニアにおすすめしたい勉強は、AIです。
AIを開発している企業は、プログラムを書いたり実装したりするだけでなく、アルゴリズムをつくることができる人材を求めています。
またAIエンジニアには、サーバーについての知識や数学の知識も必要になります。数学では、微分積分、線形代数、確率統計の分野を習得しておく必要があります。
AIはいままさに開発が進んでいる領域なので、実務レベルで使えるフレームワークやライブラリは多くはありません。そのため、勉強の差が大きく出ます。
AIは、インターネットの波、スマホの波に続く、第3の波になるでしょう。いまここで苦労して勉強をすることは、最も効率がよい投資といえます。
フリーランスのエンジニアも、企業の正社員エンジニアの働き方や待遇、福利厚生などを知っておくことは大切です。フリーランスがクライアントと報酬交渉をするときの材料になるからです。
そこでC言語エンジニアを正社員で採用する企業の案件をみてみましょう。
どの業界も分野も、ITとネットを使ってビジネスを展開しています。そのうちネット通販やスマホゲーム産業やWebサイトサービスなどはとても華やかで、新業態が現れると経済系マスコミが報道するので認知度も高まっています。
その分野では比較的新しいプログラミング言語が使われていて、注目が集まっています。
しかしそれでもなお日本経済の基礎部分をつくっているのはインフラなどの基幹産業で、その領域ではC言語がいまだに健在です。
質実剛健な仕事をするフリーランス・エンジニアになりたい人は、まだしばらく優位性が続くであろうC言語の習得をおすすめします。
3つの質問に答えるだけで、フリーランスエンジニアとしての単価相場を算出します。 スキルやご経験にマッチする案件もあわせてご紹介いたしますので、気軽にご活用ください! ※単価相場の算出に個人情報の回答は必要ございません。