このページではC言語で開発できることと実際ににどこに使われてどういったものが作れるか、
ということについて解説していきます。
実は我々の生活において、身の回りにはC言語で開発されたものだらけです。
もはや切っても切れないほど重要な役割を果たしているC言語。
では実際にどこで使われているのでしょうか?
調べてみました。
Contents
C言語は歴史が古い
C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語です。
英語圏ではシンプルに「C」と呼ぶことが多い。
日本では「C」と言ってしまうと一般人には伝わりにくいかもしれません。
そのためわかりやすくC言語、という事が多いです。
(開発の現場では単にC呼ばれることも多いです)
C言語は上述したように1970年代に開発されたので、大分古い歴史を持ちます。
デニス・リッチーはUNIXの開発でも有名でもあります。
彼やケン・トンプソが中心となってUNIXは爆発的に普及していったわけですが、
その過程で他のプログラミング言語がC言語に書き換えられました。
これにより世界中でC言語の認知度があがり今日に至るわけです。
なんと50年近い歴史があります。
今でも使い続けられるC言語
TIOBE Indexというプログラミング言語シェアのランキングでは、2021年7月現在で、C言語はJavaを押さえて1位となっています。
歴史が古い言語ですが、今でも使い続けられていることが分かります。
なんと、Microsoft Windows 10のカーネル(ファイルシステム、ネットワーク、ドライバ)までC言語で作られているというのですから、その息の長さが伺えます(Windows 10のカーネルはVistaとあまり変わっていないという話もありますが)。
ちなみに、Microsoftと同様にGAFAに位置づけられるGoogleの社内標準言語は、C/C++、Java、JavaScript、Python、Go、TypeScriptです。Googleというと真っ先にWebサービスというイメージですが、C言語が使われていることが分かります。
C言語なぜこのように長く使い続けられているのか。以下、その理由を見ていきましょう。
C言語の特徴とは?
C言語の特徴は以下の通りです。
- 世界的な認知度が非常に高い
- 少ないリソースでプログラム開発が出来る
- コンパイラやC向けのエディタが豊富で開発環境を整えやすい
- 使用可能なプラットホームが多い
- C言語から影響を受けた言語が多いため他の言語の習得もしやすい
概ねはこのような理由ですが、C言語は直接的にOSに最適化された実行形式のバイナリが作れますから、Microsoft WindowsをはじめとするOS上で最もスピーディーに動作するというのも特徴として挙げられるでしょう。
やはり、Javaや.NETなどのVM上で動作する言語よりは圧倒的に高速です(一方で、メモリの制御に失敗するとプログラムを容易にクラッシュさせますが・・)。
ですから、動作スピード(フレームレート)が要求されるゲームの開発言語としてはC言語は外せませんし、そもそもシビアな性能が要求されるOSや組み込み系ソフトウェアでも外せない言語になります。
やはり一番の特徴は誰でも知っている、という点かな?。
C言語で実際何ができる?
では実際にC言語で何ができる?という点を紹介していきましょう。
ご説明しましたようにC言語は50年以上の歴史を持ちますから
我々の生活のあらゆるものにC言語が影響しているといっても過言ではないのですが、
具体例を挙げてみましょう。
- ロボット
- ゲーム
- iPHONE開発
- 家電や電気製品
- 車やスマホなどの制御システム
- 金融系システム、医療系システム、製造業向けシステムetc
では説明していきます。
参考にしてみてください。
ロボット
たまにTVなどで放映されているロボット競技大会をご覧になったことはありますか?
ロボットの体の部分は機械でできていますが、当然それだけでは動きません。
「どの部分をどういった操作をしたときに、どういう動きをさせるか」というのを開発者がプログラミングし、実行しなければい思うように動きません。
その際に必要なのがC言語となってくるわけです。マシンを制御する訳ですね。
もう少し詳しく説明します。
ロボットが移動をするためには車輪や足が必要になりますよね?
「どこからどこまで移動するか」を認識させるために、車輪の状態や足の状態を知るためのセンサが必要になります。
さらに、そのセンサからのデータをどう利用して車輪や足を動かすのか決めるプログラムを決めていくわけです。
このように書くと非常に何度が高いようですが、
実際にロボットを動かしつつプログラミングを行うと「なるほど」と結構すぐにイメージがつかめます。
以前何かのTVで放映していたのですが、プログラミングスクールで実際のロボットを動かしながら勉強させているクラスもあるようです。
難易度的には小学生でも理解できますので、理系の大学生であれば全く問題なく理解できると思います。
ロボットを作りたい、という人は多い。将来性もあるよね。
ゲーム
ご存じのようにゲームはC/C++で開発されるケースが多いです。
C言語を学ぶ目的としてゲームを作りたいから、という人は結構多いと思います。
ゲームを作る前にまずは「C言語の基礎」のような本を買って一通り勉強しましょう。
基礎的なことを理解せずどんどんスタートすると、結局「これってどういうことだっけ?」という手戻りが多くなり学習効率が落ちてしまいます。
C言語の仕様と概要をばんやりでもいいので抑えましょう。
(基礎を抑えればシューティングゲームやテトリスのような簡単なゲームであれば、あっさり作れるます)
現在大手のゲーム会社でもC言語での開発でゲームを行っています。
ただし、最近では他の言語での開発も頻繁に行われていますので、C言語オンリーだとちょっと厳しくなってくるかもしれません。
ゲーム系エンジニアは目指すのであればUnityやRuby、PythonやJava、PHPあたりも並行して学習していきたいところです。
ゲーム好きであればバッチリ。業界の将来性もある。
iPHONE開発
iPHONE開発はObjective-Cという言語で行われております。
いうまでもなくiPHONEの需要は世界中に広がっております。
案件数とエンジニアニーズの高まりは目を見張るものがあります。
「いやC言語の話をしているんだけど」
というあなた。わかってます(笑)
Objective-CはC言語をベースにしたいわば上位互換の言語です。
もしこれからC言語を勉強するのであれば並行して、あるいはObjective-Cをメインにして勉強するのもおススメ。
フリーランスエンジニア案件におけるObjective-C案件は、その単価とエンジニア需要度は多言語と比較し群を抜いております。
勉強しておいて絶対に損はありません。
絶対におさえておきたい。
家電や電気製品
これはC言語を利用した組み込み系開発というジャンルです。
家電や電気製品は何らかの制御システムによって稼働しております。
例えば給湯器であれば90度になったら過熱をやめて、保温するように。とかですね。
こういったコンピュータプログラムによって家電製品を制御し機能するようにしている訳です。
そう考えると身の回りのものがC言語だらけ、というのも納得がいくのではないでしょうか?
絶対になるなることがない。
車やスマホなどの制御システム
これも同じような原理です。
車では走行を安定させ、スムーズな運転を可能にするために様々な制御システムが組み込まれています。
例を出すと横滑り防止システムです。
我々が運転する車はドライブする環境によって路面状況は常に変化しますよね?
オーバーステアやアンダーステアなどの車両が不安定な状態を検知するとエンジンやブレーキ出力を制御して車がスリップしないように保ちます。
(これがないと遠心力でカーブを曲がるときとかに大変なことになってしまいます)
上に同じ。
金融系システム、医療系システム、製造業向けシステムetc
組み込みではなくソフトウェア開発のほうですね。
大規模システムの多くはC言語が使われています。
それは歴史が古いことや認知度が高いなどが理由で過去のシステムはこぞってC言語で作られたという背景があります。
金融機関始め、2018年現在でもそういった以前作られたシステムがまだ稼働していたりします。
もちろん刷新や追加開発などは常に行われておりますが、案件数はめちゃくちゃ多いですね。
フリーランスエンジニア向けの案件でもこういった案件の募集は常にみかけます。
安定して仕事があります。
C言語の勉強は難しい?C言語学習のメリットは?
このように様々な領域で活用されているC言語ですが、学習の難易度としては高いのでしょうか低いのでしょうか。
総合的に考えると、難易度は「中」だと言えます。理由としては以下の通りです。
- ・WindowsでもLinuxでも開発環境(コンパイラ)が用意しやすいので、直ぐに勉強に取り掛かれる。
- ・関連書籍が多い。
- ・オブジェクト指向以前の言語であるため、より直感的に作りやすい(逆にソースコードが汚くなりますが)。
- ・ネット上でフリーのソースコードが入手しやすく、参考にしやすい。
一方で、学習の難易度を高めいてる要因があります。
- ポインタがやや難しい。
- ゲームのような大規模なプログラムとなるとヘッダーのインクルードやライブラリの読み込みが難しく、初心者にはコンパイルすらできない。
- (Javaなどと比較すると)ライブラリを探すのも一苦労。
- Visual Studio、Mingwなどコンパイラが色々あり、インターネット上のソースコードをコンパイルしようとしても、できないことがある。
このような理由から難易度は「中」ですが、ポインタの概念や静的・動的ライブラリの読み込みなどは、理解しているとJavaなどより新しい言語を学習する際に腹落ちがしやすくなるのがメリットとして挙げられます。C言語を理解しているとある意味、技術者としての幅は確実に広がります。
一方、開発効率を考えるのであれば、他の言語を使ってしまえばいいというのも現実にはあります。Javaの標準ライブラリ(クラス)もかなり洗練されていますので、C言語より開発の効率は高いでしょう。作りたいプログラムがあるなら、本当にC言語を使う必要があるのかを一度見極める必要があります。
まとめ
いかがでしょうか?
C言語で開発できることについてまとめてみました。
C言語は需要も高く、色々なことができるため将来性もあります。
これから勉強するかたは是非頑張ってみてください!
C言語の転職ならこちら!
C言語の仕事につきたい皆さんにぴったりの転職エージェントを紹介しておきます。
ご説明したようにC言語と一口でいっても、仕事の内容は千差万別です。
「本当に自分のやりたいこと」がきまったら転職エージェントにいき、企業を紹介してもらいましょう。
もちろん自己学習とスキルアップは必須です。
幸運を祈る!
まずは登録して相談。頑張って自分の希望の求人を見つけよう。