派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【イベントレポート】C言語を学ぶために、まずすべきこととは?

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年9月19日のイベントでは「プログラミング未経験でもOK!C言語開発環境の構築から、プログラミングの体験まで」と題して、C言語のハンズオンイベントを開催。

マイコンからサーバコンピュータまで、さまざまな環境で使われており、コンピュータのハードウェアを理解するのにも最適な言語といわれるC言語の魅力を、C言語の著書を多数執筆している種田元樹さんに解説していただきました。

f:id:itstaffing:20181022142907j:plain

■今回のイベントのポイント

・C言語の歴史
・C言語につまずかないコツ
・開発環境の構築
・プログラミング体験


【講 師】種田 元樹さん
▲【講 師】種田 元樹さん
2007年に日本シー・エー・ディー株式会社に入社以来、プログラマとして主にC言語での自社製品開発に携わる。著書として『Linuxネットワークプログラミングバイブル』『本当は怖いC言語』『C言語本格入門』(技術評論社)などがある。

C言語の歴史

今回のイベントはハンズオン形式ということで、参加者は自身のWindowsやMacのノートPC持参で参加しました。

f:id:itstaffing:20181022142912j:plain
▲今回はハンズオンイベントということで参加者は全員ノートPCを持参

プログラミング体験をする前に、種田さんは、まずC言語の基本について紹介してくださいました。

C言語は1973年に誕生したと言われているそうです。ずいぶん歴史のある言語だなと思ってしまいますが、1954年に誕生したFORTRANや、1959年に誕生したCOBOLに比べれば、新しい言語と言えます。

さすがに、VBやJavaScriptなどに比べると古いため、最新の言語に比べると人気はさほど高くないようです。ただし、システム記述言語として相変わらずさまざまな分野に使われており、Linuxを使っている人はC言語を覚えておくと役立つシーンもまだまだ多いといえます。また、近年ではIoT機器の基板に搭載されるような組み込み系のプログラムを書くのにも使われているそうです。

C言語につまずかないコツ

種田さんが自社内でリサーチした結果、エンジニアの人たちも「C言語は難しい」という声があったそうです。

代表的なのが「文字列が難しい」「includeが難しい」「構造体とクラスの違いが難しい」というもの。

C言語の文字列とはどのようなものでしょう。もちろんC言語においても、Aは文字でAAAAは文字列ということになりますが、最近のプログラミング言語では文字列用のデータ型(クラス)が用意されているのに対して、C言語にはありません。種田さんによれば「C言語は文字列という概念が薄いプログラミング言語」と言えるそうです。

f:id:itstaffing:20181022142915j:plain
▲C#では変数をString型(クラス)で宣言することで、変数同士を単純に比較することができるが、C言語には文字列のための型が無いため、同様の処理をするには一手間かかる

f:id:itstaffing:20181022142919j:plain
▲C言語では文字(char)型の配列、つまりメモリ上に連続して保存された数値(文字コード)の羅列であるため、後述するような文字列の操作(分割など)では、配列のデータを順に読み出し、操作するといった処理が必要になる。なお、上図の0xで始まるデータは16進数を表す

C言語のプログラムでは冒頭に「#include」という単語が記述されていますが、これも「よくわからない」と言われるそうです。

#include <stdio.h> //←この部分です
int main(){

printf(……);

}

これは、ファイルを外から読み込んでプログラムをその場所に貼り付ける命令で、上記の例で言えばstdio.hという外部ファイルをプログラムの冒頭に貼り付けていることになります。stdio.hは標準入出力に関する各種命令をあらかじめ定義してある膨大な量のプログラムが記述されています。上記のプログラムでprintf()という命令を使っていますが、この命令もstdio.hの中で定義されているため、stdio.hを読み込んで初めて使えるようになります。

Javaを始めとする最近のオブジェクト指向言語にはクラスという考え方があります。クラスはデータと手続きを一緒に扱える工夫がされているのに対して、C言語ではデータだけを扱うため、手続きの部分は自分で個別にプログラムします。

f:id:itstaffing:20181022142921j:plain
▲Stringクラスには、あらかじめ文字列分割のための.split()というメソッドが用意されているため、簡単に文字列を分割できる

f:id:itstaffing:20181022142924j:plain
▲C言語で文字列を分割するためには、自分でプログラムを書かなければならない

開発環境の構築

いよいよ、プログラミング環境の構築開始です。Windows上では、いくつか選択肢がありますが、今回はCygwinというソフトウェアを使います。gnupack_devel-13.06-2015.11.08.exeというプログラムをダウンロードして実行します。そしてC:\gnupack_devel-13.06-2015.11.08 の中にある、startup_cygwin.exe をダブルクリックすると、Linux上でよく利用されているGNUソフトウェアツールが使える環境が起動します。

▼こちらからダウンロードできます
https://ja.osdn.net/projects/gnupack/releases/p10360

Mac OSの場合は、AppStoreに接続して、Xcodeをダウンロードします。そしてターミナルを開き、次のコマンドを実行します。

xcode-select --install [return]


f:id:itstaffing:20181022142926j:plain
▲インストールからプログラミングまで、分からないところは種田さんや会場スタッフがその場でサポートしました

プログラミング体験

環境が整ったらプログラミングのスタートです。

限られた時間ということもあり、「hello, world」というメッセージを画面に表示する単純なプログラムに挑戦しました。

テキストエディタ(Windowsならばメモ帳)を起動して、新規にhello.cという名前のファイルを作成します。そして次のプログラムを記述して、保存します。

#include <stdio.h>
int main(int argc, char argv[])
{

printf("hello, world¥n");
return 0;

}

ここでプログラミング時の注意がいくつかありました。

最初は文について。C言語の文は、セミコロン(;)で終わります。上記のprintf()文は、次のように記述しても文法上は問題ありません。

printf
(
"hello, world¥n"
);

複数行にまたがって、ちょっと読みにくくなりますね。読みやすさという点で、次に注意するのがインデント(字下げ)です。インデントは、プログラムのかたまりを人間が把握しやすくするために使います。インデントを入れても入れなくても、プログラムの意味は変わりません。

どう字下げするかは言語としてのルールがあるわけではありません。1段のインデントに4つのスペースを使う人、8つのスペースを使う人、tabキーで入力されるタブを使う人など、人それぞれです。ただ、仕事でプログラミングを行う場合は、チームでのルールがあったりしますので守りましょう。

そして、最後の注意点はプログラムに注釈を入れるためのコメント文です。コメントは次の2種類の記述方法があります。

//コメント
/*コメント*/

両者の違いは、//のほうは、//から行末までは、すべてコメントとして扱われますが、/*と*/のほうは、2つに挟まれた部分だけがコメントとして扱われます。

コメントの中身は、コンパイル時に何も影響しないため、プログラムのコンパイルしたくない部分を一時的に/*と*/で囲んで、コンパイルされないようにするために使うこともあります。

さて、エディタでhello.cというCのソースファイルを記述し、保存したら、次にコマンドラインから、

gcc hello.c

というコマンドを実行します。すると、画面にたくさんのメッセージが表示されます。これは、C言語のプログラムを、コンピュータが実行できる形式に翻訳するコンパイルという作業です。

コンパイルが終わるとa.exeという実行ファイルが出来上がります(Windowsの場合。Mac OSではa.out)。これを実行すると、画面に「hello, World」というメッセージが表示されます。

f:id:itstaffing:20181022142931j:plain
▲何度か入力ミスのせいでコンパイルエラーが出ましたが、最後はちゃんと動くプログラムが完成しました

新しい言語を学ぼうとするときに、プログラミング環境を整えるところで気持ちが萎えてしまうことも多いのですが、今回のイベントでは、自身のPCに環境構築をつくるところを詳しく解説されたので、これから勉強される方は参考にしながら、C言語について、いろいろと試してみてください。