文 : ぁゃ、編集 : かずひこ
2004 年 8 月 20 日に、島根大学で「電気学会産業応用部門島根大会記念行事 Linux 体験講座」が行われました。 「Linux 体験講座」とありますが、実は副題が「オブジェクト指向スクリプト言語 Ruby で始めるプログラミング入門」でした。 そんなわけで私達 NaCl Ruby 班 (?) も参加してきましたので、その様子をお届けします。
初級ということで、ログインや認証から丁寧に説明されました。ちなみに OS は、Vine Linux を使っていました。
続いて、GNOME についての簡単な説明がありました。余談ですが、GNOME の足跡のマークが実は G の文字となっていると初めて知りました。
Mozilla と Netscape の二つがインストールされていて、今回は Mozilla を使いました。これも立ち上げから丁寧に説明されていました。
ウィンドウマネージャの操作からマウスによるコピーペーストまで、丁寧に説明されました。
今回の講座では、S@pphire という簡易 IDE を使うということで、ツールの使い方が説明されました。 まだ開発途中なので、バグが出るかもしれないということでした (実際、NaCl Ruby 班の面々は講義中にせっせとデバッグしていたようです)。
この S@pphire では、スクリプトと結果とエラーメッセージが、一つのウィンドウに出ていたので、とても見やすかったです。
ここからやっとプログラミング入門らしくなり、参加者が S@pphire 上で実際にプログラムを動かして、「Hello, world! 」の出力をしました。
色々なパターン文字列の出力について説明されました。 ここでは、puts、print、p とバックスラッシュ () の説明でした。 printf についても Web 上の資料に書いてありました、のちほど説明するとのことでした。
簡単な計算プログラム (1 〜 100 までの和を求める) が例題として取り上げられました。 Ruby は C 言語と違って型宣言が不必要であることや、「=」は数学と違って代入という意味であることなどが説明されました。
まず四則演算記号の説明があり、簡単な演算例題をスクリプトに入力して、出力しました。 演算と型の説明に、「整数 / 整数」と「整数 / 実数」を例に挙げられていました。 次に文字列の演算、自己代入の演算スクリプトの説明があり、それぞれ S@pphire で参加者が実行していました。
ここから若干複雑になってきました。 条件分岐の例が、フローチャートを使って説明されました。 条件を判断するために、値が「真」か「偽」のどちらかを判断しますが、Ruby では false や nil (値が無い) でなければ「真」になるという説明がありました。 さらに、複数の if 文の組み合わせや、論理演算子についても説明されました。
くり返しの方法として、for 文と、for 文の入れ子 (何重ものループ) を説明されました。 入れ子の例題では、結果を見ながら、スクリプトの流れを理解するようになっていました。
別のくり返しの方法として、while 文が説明されました。 ここでの例題は、0 〜 9 までの乱数を使い、発生した乱数を足していき、 合計が 100 を越えるとループの終るスクリプトでした。 乱数を使っているため、実行するたびに繰り返しの回数が異ることを実際に確認しました。
ここで、間違えてループから脱けられず、S@pphire が固まってしまった人もいたようでした。
配列について、序数が 0 から始まることや、序数がマイナスの場合は、配列の最後尾 (一番右側) から -1 として数えることなどを説明されました。
ここでは問題が三つほど出され、自分でスクリプトを書きました。 ノーヒントで問題だけ引用しておきます。
- サイコロの目を出すスクリプト
乱数発生のメソッド rand を利用して 10 回サイコロを振って、順に出た目を表示するスクリプトを作成しましょう。
- Loto6
Loto6 のような 1 から 48 までの数を 6 個作るスクリプトを考えましょう。
- 配列の要素の並び替え
次に示す配列の要素を小さい順に並べ直しましょう。
array = [21, 5, 3, 15, 7, 9, 33, 2]
今までに習ったことの復習ですので、もちろん今日出てこなかったメソッドを使っては駄目 (break すら使えません) なので、結構苦労しました (特に 2 番の Loto6 問題)。 逆にまっさらな状態で考えたほうが簡単なのかもしれませんが、他の参加者も苦労していたようです。
最後に、Ruby のオブジェクト指向な面について、少しだけ紹介されました。
今日の講習内容は Web で公開されています。 ご参考までどうぞ。 URL: http://ecs.riko.shimane-u.ac.jp/~nawate/2004_linux/
多くの人が Linux や Ruby に接することのできる機会が増えてよかったと思います。 独学もよいのですが、講座に参加することで他の考え方を学べますし、その場で指摘もいただけるので良い刺激になると思います。 最後の問題はとてもよかったと思います。 講座で習った中でプログラムを組むことで、基礎が固まります。 私達は変に知識があるため、すぐに範囲外のことばっかりで考えてしまって手間取ってしまいましたが、使える知識を限定することにより、基礎を固めるのに良いと思いました。
全体的に Ruby を使ったプログラムに入るまでの説明が長かったのですが、 ある程度の使い方は、テキスト (web でも公開されている) で説明されているので、 軽く流す程度にして、Ruby の方をもっと使っていただいたほうが良かったと思います。 例題を出して、それに沿った簡単な問題を出し、プログラムを組み立てる方が、 プログラムに接する回数が増えてよいと思います。
また Ruby のプログラミング講座に行きたいです。 あと Ruby で作るシンプルスクリプトとか、基本的なネットワーク構築とか、 ネットワーク管理者の心得みたいな講座があれば、行ってみたいです。
今回の参加者は年輩の方が多かったと思います。 もっと若い人にも広まってほしいので、 若い人に限定した講座があってもよいと思います。