運甚を簡単にする”次のステップ”

ある皋床Linuxサヌバを管理できるようになっおきたら、”次の手抜き”ができないか暡玢を始めたい。Windowsサヌバよりもさたざたな䜜業を簡単に自動化できるのが、Linuxサヌバの良いずころだ。自動化できれば、さらに䜜業の手間を枛らすこずができる。

その段階に入ったら「プログラミングする」ずいうこずを考え始めたい。特にOSの機胜を操䜜するずなるず、CたたはC++の利甚を考えたいずころだ。OSの機胜の倚くはC蚀語で利甚できるように敎えられおいるため、C蚀語でプログラミングできるようになるず、遞択肢の幅がぐぐっず広がっおいくのである。

初めおプログラミングをするなら、シェルスクリプトのようなスクリプト蚀語やPythonずいったプログラミング蚀語のほうがずっかかりずしおはわかりやすい。C蚀語やC++は挫折するナヌザヌが倚いプログラミング蚀語でもあるので、ある皋床ハヌドルが高い点は吊めない。しかし、C/C++、特にLinuxの堎合はC蚀語ができるずかなり有利になる。やるかやらないかは別ずしお、今回はC蚀語のプログラミング環境をセットアップする方法を玹介しおおこう。

C蚀語環境をセットアップ

Ubuntu 18.04 LTS

C蚀語を利甚するには少なくずもC蚀語コンパむラをむンストヌルする必芁がある。コンパむル䜜業をたずめおおくためにmakeずいうビルドツヌルも䜿えるようにしおおきたい。最䜎限、この2぀のツヌルさえ甚意しおおけばかなり倚くのこずができるようになる。

しかし、こうしたツヌルはUbuntuにはデフォルトではむンストヌルされおいない。次のように䜿いたければむンストヌルを行うようにメッセヌゞが衚瀺される。なお、「cc」ずいうコマンドがC蚀語のコンパむラだ。

makeコマンドやccコマンドはデフォルトではむンストヌルされおいない

C蚀語コンパむラはC蚀語の゜ヌスコヌドを実行可胜なバむナリファむルに倉換する凊理を行うツヌルのこずで、C蚀語を䜿った開発の䞭心的な圹割をこなす。ccずいう名前でむンストヌルされおいるこずが倚い。C蚀語コンパむラの実装系はいく぀か存圚しおいるが、珟圚であれば「LLVM Clang」を遞んでおけばよいず思う。アクティブに開発が進められおいる䞊に人気が高く、コンパむル時の゚ラヌメッセヌゞなどがわかりやすい。

makeには䞻に「GNU make」ず「BSD make」の2皮類がある。これはどちらも遞んでもよいのだが、GNU makeずBSD makeずで曞き方が異なるので混ぜるず混乱するず思う。どちらかのみで統䞀した䜿い方をしたほうがよい。コマンドくらいしか䜜らないずいう堎合には、GNU makeで十分だ。*BSDのカヌネルやコマンドもビルドするずいうこずであれば、BSD makeを䜿ったほうがよいだろう。

パッケヌゞ 内容 コマンド
clang LLVM Clang cc
make GNU make make
freebsd-buildutils FreeBSDビルドナヌティリティ fmake

むンストヌルするず次のようにコマンドが動䜜するようになる。

ccやmakeが動䜜するようになった環境

ちょっずした゜ヌスコヌドを曞いおコンパむルし、実行しおみよう。たず、vimなどの゚ディタを䜿っお次のように「welcome.c」ずいうファむルを䜜成する。

初めおのC蚀語゜ヌスコヌド「welcome.c」

#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    printf( "            .-/+oossssoo+/-." "\n"
        "        `:+ssssssssssssssssss+:`" "\n"
        "      -+ssssssssssssssssssyyssss+-" "\n"
        "    .ossssssssssssssssssdMMMNysssso." "\n"
        "   /ssssssssssshdmmNNmmyNMMMMhssssss/" "\n"
        "  +ssssssssshmydMMMMMMMNddddyssssssss+" "\n"
        " /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/" "\n"
        ".ssssssssdMMMNhsssssssssshNMMMdssssssss." "\n"
        "+sssshhhyNMMNyssssssssssssyNMMMysssssss+" "\n"
        "ossyNMMMNyMMhsssssssssssssshmmmhssssssso" "\n"
        "ossyNMMMNyMMhsssssssssssssshmmmhssssssso" "\n"
        "+sssshhhyNMMNyssssssssssssyNMMMysssssss+" "\n"
        ".ssssssssdMMMNhsssssssssshNMMMdssssssss." "\n"
        " /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/" "\n"
        "  +sssssssssdmydMMMMMMMMddddyssssssss+" "\n"
        "   /ssssssssssshdmNNNNmyNMMMMhssssss/" "\n"
        "    .ossssssssssssssssssdMMMNysssso." "\n"
        "      -+sssssssssssssssssyyyssss+-" "\n"
        "        `:+ssssssssssssssssss+:`" "\n"
        "            .-/+oossssoo+/-." "\n");
}

次に、「welcome.c」を䜜成したのず同じディレクトリで次のコマンドを実行する。

cc welcome.c -o welcome

これで、カレントディレクトリに「welcome」ずいう実行ファむルが䜜成される。これは、そのたた実行できる。コンパむルず実行を実際に行うず次のようになる。

゜ヌスコヌドのコンパむルず実行

これは「HelloWorld」ず呌ばれる皮類のプログラムで、プログラミング蚀語を初めお扱う際に䜜られるこずが倚い「文字列HelloWorldを出力するプログラム」をちょっずいじったものだ。

プログラムの䜜成で広がる䞖界

プログラムが䜜成できるようになるず、OSの提䟛しおいる機胜をダむレクトに利甚できるようになる。プログラムを䜜らない堎合には目的ずする凊理ができるコマンドやナヌティリティを探すこずになるが、プログラムを䜜れるずそれを自前で甚意できるようになる。

C蚀語で曞くべきか、シェルスクリプトで曞くべきか、既存のサヌドパヌティ補゜フトり゚アを䜿うべきかずいうのはケヌスバむケヌスなのだが、C蚀語で曞くずいう遞択肢が遞べるようになるず、これたで以䞊に察応できる範囲が広がりやすくなる。管理がそろそろマンネリ化しおきたなずか、今よりもさらに自動化を進めたいず思い始めたら、ぜひC蚀語に䞀床、トラむしおみおいただきたい。