驚くほど簡単にプログラミングを始められるLinux
Armadillo-IoT G3Lでは初めてのプログラミングです。
前回のスクリプト(.sh)もプログラミングの一種ですが、もう一つ、Rubyというスクリプト言語に触れてから、C言語での本格的なプログラミングに参りましょう。
準備は…特に無し。
簡単なプログラミングなら、開発環境すら必要としません。
それがLinuxのうれしいところですね。
なぜプログラミング環境はLinuxが多いのだろうか?
そういえば、プログラミングの世界に入っていくと、Linuxで開発環境が用意されている、というシーンにたびたび遭遇します。
私も、Windowsしか使っていなかった頃は不思議に思っていたものです。
見回せばPCのOSはWindowsばかりなのに、なぜLinuxなのだろう?と。
しかし、一度Linuxの敷居をまたいだ後は、「ああ。そうか」と遅れて気づくのです。
とにかく、楽。
触れれば触れるほど、「アレもコレも、こっち(Linux)が楽」と思わされます。
そんなウワサは以前から耳にしていましたが、「そりゃ、慣れればそっちの方が楽でしょうよ」くらいに思ってました。
でも違いました。
もちろん、慣れれば一層楽だし、いろんな意味で楽なことを実感するのですが…
驚いたことに、慣れる前から、楽なんです。
慣れるまでの過程で、既に「こりゃ楽だわ」と思っている自分がいました。
Linuxでプログラミングを始めるための準備はとても簡単
Linuxでのプログラミング例を説明する前に、そこまでの準備について、触れておきましょう。
例1:PCにLinuxをインストールして、プログラミングしたい。
PCを購入、または使っていないPCを用意。
Linuxで有名なUbuntuというLinuxを使う場合、サイトからインストールデータをUSBメモリに移して、PCを再起動。
メッセージに従ってインストール。
インストールが終わったら、「端末」というアプリを起動。
Rubyを使う場合はインターネットにつないでRubyもインストール( sudo apt-get install ruby と入力)
例2:安くて入手しやすいLinuxボード「Rasbberry Pi(ラズパイ)」でプログラミングしたい。
ボードを購入。
PCでサイトにアクセスし、SDカードにインストールデータを移す。
ボードにSDカードを挿入し、ボードにモニタとキーボード、マウスを接続して、電源を接続。
メッセージに従ってインストール。
起動したら「LXTerminal」という端末アプリを起動。
例3:GUIの無いLinuxボード「Armadillo-IoT」でプログラミングしたい。
ボードを購入。
USBケーブルでPCを接続し、TeraTerm等の端末アプリを起動し、ボードに電源を接続。
端末からログイン。
以上の3つの例、どれをとっても、たったこれだけの準備で以下のプログラミングが開始できます。
まず、スクリプト言語「Ruby」を試してみましょう。
はじめてのRubyプログラミング
Rubyは、プログラムのソースを*.rbというファイル名で作成し、「 ruby *.rb 」と入力すると、そのプログラムが実行される、というお手軽なプログラミング言語です。
とてもお手軽です。
エディタやメモのアプリでソースファイルを作成(+ボードに転送)して…と進めても良いのですが、もっと楽に行きましょう。
catコマンドで直接ファイルに落としてしまいます。
つまり、以下の様にソースファイル(test.rb)にプログラムを書きます。
root@armadillo:~# cat > test.rb
print "hello world ! \n"
(ここでCtrl+D)
後は、「ruby test.rb」と打って実行するだけ。
すると、「hello world !」と出るはず。
root@armadillo:~# ruby test.rb
hello world !
でた!
実は、初めて使った言語でした。Ruby。
次はC言語プログラミング
次は、C言語です。
やっぱり、ドライバ設計や色々とやりたいことが多い欲張りな人は、C言語は必要になるでしょう。
C言語もソース(test.c)を書いて、
root@armadillo:~# cat > test.c
#include
main()
{
printf("hello world !! \n");
}
(ここでCtrl+D)
コンパイルして、
root@armadillo:~# gcc test.c
実行するだけ!
root@armadillo:~# ./a.out
hello world !!
よし出た!
コンパイルによって、ソースファイル(test.c)から実行ファイル(a.out)を生成します。
実行ファイルのファイル名は、オプション(-o)やmakefile等で指定できますが、何も指定しないと、a.outというファイル名になります。
./a.out の ./ は、「このディレクトリにある」ファイルという意味です。
これを書かないと、他のところにある同名のファイルと区別できない場合があるので、必要になります。
難しいこともライブラリにおまかせ
できてしまいましたね。プログラミング。
私も今日からRuby経験者です。
まだやったことない人も、初めてみたくなりませんか?
さて、次は、前回の課題をプログラミングで解決したいと思います。
USB接続のWEBカメラで画像を撮影してサーバに転送するプログラムを作ります。
- WEBカメラを制御して画像を撮影させる。
- 画像をJPEGファイルに圧縮する。
- サーバにファイルを転送する。
色々とやらなければならないので、それなりのプログラム量になりますが、Linuxの場合、ほとんどの処理がフリーのライブラリでできてしまうので、思ったよりも簡単です。
(つづき → WEBカメラで撮影してJPEGファイルにするプログラム(前編))