IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Ruby & Rails

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート 

第11回 プログラミングと教育 その2 (松永紘) 2014年2月

 昨年のクリスマスに当初の予定通り、Ruby2.1.0がリリースされました(*1)。このリリースではいくつかの機能拡張やパフォーマンスの改善が行われています。2.0との深刻な非互換もないそうですので、積極的に使っていきたいですね。
 また、Ruby1.9.3系のサポート期限についてもアナウンスされています(*2)。2014年2月24日以降はセキュリティフィックスのみ、それから1年後の2015年2月23日をもって全てのサポートが終了するそうです。1.9.3から2.0及び2.1への移行は比較的スムーズに行えると思いますので、この機会にRuby2系へのアップグレードをお勧めします。

 さて前回は「プログラミングと教育」と題して、筆者が初心者にプログラミング教育を行う上で大切だなと感じていることをお伝えいたしました。今回はその続きとしてもう少し具体的に心がけていることや、教育用言語としてのRubyについて書いていきます。

座学より演習

 筆者が教育カリキュラムを計画したり、実際に教えたりする際に最も心がけていることは
 「座学より演習」を重視することです。

 外国語を学習するとき文法や単語を覚えても上手く読み書きや会話ができないように、プログラミングも概念やAPIの使い方を覚えても、それだけで即座に組めるようになるものではありません。プログラミング能力を伸ばすには、より多くのプログラムを書くことが大切だと思います。
 筆者が教育カリキュラムを検討するときには、以下のような方法で座学よりも演習の機会を増やすように心がけています。

  • 言語の特徴や歴史などの話は最小限にする、もしくは思い切って割愛する。
  • 単元ごとに演習を入れる。できれば複数題、最低限解いてほしい演習と発展的な演習とを用意する。
  • 単元の頭に演習をさせる。(演習 → 講義 → 復習 or 発展的な演習の構成)
  • 座学の時間もハンズオンみたいな要素を取り入れる。

 勿論、時間やその他の制約で十分な演習の機会を確保するのが難しいケースも多々あると思います。ですが、いかに手を動かし頭を使う機会を増やしていくかで教育効果は変わってきます。その部分が教える側の創意工夫のしどころではないかなと思います(*3)。

教育用言語としてのRuby

 申し訳程度のRuby話で恐縮ですが、教育用言語としての側面を考えてみます。特徴として、3点挙げてみました。

 1点目は「おまじないが少ない」ことです。

// Java
class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World");
  }
}

# Ruby puts "Hello World"

 上のソースコードはJavaとRubyとで、それぞれHello Worldを出力させる例です。一度は見たことがある方も多いことでしょう。Javaは出力部分のコード以外にクラス定義とmainメソッド定義を書く必要がありますが、Rubyは出力部分のコードのみで動作します。
 やりたいことではないではないが、それでも書かないといけないコードのことを「おまじない」と言ったりしますが、その「おまじない」が少ないという点はプログラミング教育の導入において非常に大きなポイントだと思います。上のソースコードであれば、1行のRubyコードの方がとっつきやすいですよね。

 2点目は「直感的」だということです。

5.times do
  puts "Hello World"
end

 上のソースコードはHello Worldを5回出力させるプログラムです。初めてRubyを触った時、forもwhileも使わずに5.timesという自然言語のような書き方で繰り返しを表現できるんだと衝撃を受けたのを覚えています。
 このようにRubyは名前の付け方(*4)や文法などで直感的にプログラミングを行えるようになっています。「直感的である」ということと前述の「おまじないが少ない」ということは、その分やりたいこと(本質)に集中をさせてくれます(*5)。本質に集中できるということは教育上非常に大切なことかなと思います。

 3点目は「Enjoy Programming」です。
 Rubyと教育を考える上での一番のポイントは、Rubyの設計思想に「プログラミングを楽しむ(Enjoy Programming)」があることでないかなと思います。
 前回も書きましたが上達するために最も大切なことは、好きになるかどうかです。そして「プログラミングが楽しい」「プログラミングが好きだ」と思わせる点において、Rubyは他の言語に負けないと思います。

まとめ

 ここまで2回にわたって「プログラミングと教育」について書いてまいりました。教える側の立場からすると、ついついあれもこれも講義したくなる気持ちも分かります。ですが受け身だけの教育ほどつまらないものものないですし、また受け身だけの教育ではプログラミング能力は伸びません。いかにして受け身の教育を変えていくかというのはなかなか難しいですが、そこを変えていければ教育の効果は劇的に良くなるのではないかなと思います。
 また何度も繰り返していますが、一番はプログラミングを好きになってもらえるかどうかです。そしてRubyはそのための強力なツールになるのではないかと思います。

 それでは、Enjoy Ruby!

注釈

*1http://www.ruby-lang.org/ja/news/2013/12/25/ruby-2-1-0-is-released/

*2https://www.ruby-lang.org/ja/news/2014/01/10/ruby-1-9-3-will-end-on-2015/

*3:「仮想化の歴史と機能」のコラムを担当されている志茂吉建さんが、「第26回 勉強するには講師が一番」の中で講師をすることでスキルの向上につながると書かれていました。「教える」という演習もまた教育効果が期待できるのではないかと思います。

*4:まつもとゆきひろさん、笹田耕一さん、yuguiさんのインタビュー記事(http://www.atmarkit.co.jp/news/200907/24/ruby2.html)より。ちなみにこの中ででているArrayにshuffleというメソッドがなかったのはRubyのバグだという部分は、Rubyの直感的な面を表している例かなと思います。

*5:裏を返すと本質ではないけどやらないといけない部分は隠されているということにもなります。将来的には勿論理解しないといけない部分ですが、隠されているためその部分では逆にとっつきにくいと感じることもあるでしょう。ここら辺はある種のトレードオフを抱えている気もします。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート