CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
12月3日にRails3.2.16及び4.0.2がリリースされました(*1)。DoS攻撃やXSSの脆弱性に対する緊急度の高いセキュリティフィックスのようですので、できるだけ早くアップデートすることをお勧めいたします。
さて今回はいつものRubyやRailsに関するトピックス的な話題から離れまして、「プログラミングと教育」について書いてみたいと思います。筆者がこれまで行ってきた社内教育の経験を基にしており、教育のターゲットはプログラミング未経験の新入社員を想定しています。学生やある程度の経験者をターゲットとする場合とでは力点の置き方が変わってくることでしょうが、共通する部分もあるかと思いますので、何かの参考になれば幸いです。
本来は発明と入るところでしょうが、発明に限った話ではなく必要性は何かをする上での大きなモチベーションとなることがあります。テストがあるから勉強する、海外旅行に行くので英会話を覚える、家に人が来るので掃除をするなど、みなさんも必要性を感じて何かを行動に移した経験があることでしょう。
教育を行う上で大切なことの一つに、「必要性を感じさせる」ことがあると思います。
例えば、新たに配列を教えるシチュエーションを考えてみましょう。ありがちな教え方は以下のようなものでしょうか。
勿論すべて教えなければならないことですが、この構成では配列というものの存在や扱い方を何となく理解しただけで終わってしまうケースがあるように感じています。そのため、教育後に配列を使う簡単なプログラムが書けなかったり、或いは読めなかったりといったことが起きる、そんな悲劇(*2)の一因になっているのではないかなと思います。
# ---------------------------------------- # 配列を使用しない場合 # ---------------------------------------- my_skill1 = "Ruby" my_skill2 = "Java" my_skill3 = "PHP"
skill = gets.chomp my_skill = false
if my_skill1 == skill my_skill_flag = true elsif my_skill2 == skill my_skill_flag = true elsif my_skill3 == skill my_skill_flag = true end
if my_skill_flag puts "私は#{skill}を使用できます。" else puts "私は#{skill}を使用できません。" end
# ---------------------------------------- # 配列を使用する場合 # ---------------------------------------- my_skills = ["Ruby", "Java", "PHP"]
skill = gets.chomp my_skill_flag = false
my_skills.each do |my_skill| if my_skill == skill my_skill_flag = true end end
if my_skill_flag puts "私は#{skill}を使用できます。" else puts "私は#{skill}を使用できません。" end
上記は入力値をチェックして出力を変えるプログラムで、配列を使用しない場合とする場合それぞれのソースコードです。チェック内容はソースコード中の値と合致するかどうかで、対象の値は複数存在します。
進め方としては配列そのものの説明に入る前に、前述の仕様を満たすプログラムの作成演習をさせ配列を使わないソースコードの解説を行います。この仕様では対象の値は3つしか挙げていませんが、これが増えていくとif文の量も比例して増えていくことを提示するとよりいいかと思います。その後、配列というものを使うとスマートにプログラミングできるということを説明して、配列の概念論や操作方法を教えていきます。
教え方の流れを整理すると、以下のようになるでしょうか。
ここでのポイントは、配列を使うことによるメリットや有益さを配列の説明の前にきちんと実感できる形で提示してあげることです。「配列を使うことでこんなにもスマートにプログラミングできる」と感じていれば、その後の配列の説明が同じものだとしても理解度は格段に上がるのではないかなあと思います。
配列の他にもオブジェクト指向などプログラミングには初心者には理解しにくいものがたくさんあります。ですがそれらはいきなりできたわけでなく、先人たちの経験や知恵を基に必要だと考えられ生み出されてきています。その部分を一つ一つきちんと実感させてあげることが大切だと感じています。
「好きこそ物の上手なれ」ということわざもあるように、物事に取り組むモチベーションに最も影響するのはそれが好きかどうか、或いはそこに楽しみややりがい、達成感を見いだせるかどうかです。寝食を忘れて没頭できる程好きな事であれば、講師や教育カリキュラムなどなくとも能力はおのずと向上していきます。
逆に言うと嫌いなもの、楽しさを見いだせないものであればどんなに優れた講師や教育カリキュラムがあったとしても、能力はなかなか向上していかないでしょう。
特にプログラミングは初心者にとってはハードルが高いものだと感じがちなので、苦手意識を取り除き、達成感ややりがいを感じさせ、少しでも楽しいと思ってもらうことが重要だと感じています。
ここまで「プログラミングと教育」と題して筆者が大切だなと感じていることを2つ書いてきました。次回はもう少し具体的に教育の際心がけていることや、教育用言語としてのRubyについて書いてみたいと思います。
最後に教育つながりということで、弊社の運営している教育サービス「Xlabo(*3)」をご紹介させていただきます。
感情に左右されて行動し、その後とても後悔する。このような経験をしたことがだれしも一度はあると思います。EQ(心の知能指数)の考えでは、人が最高のパフォーマンスを発揮するにはその感情を知りコントロールすることが大切であるといいます。XlaboではEQをベースとした学習プログラムを提供しています。
教育を行う際にも必ず役に立つものですので、興味のある方は是非Xlaboサイト、もしくはFacebookページ(*4)へお越しください。
それでは、Enjoy Ruby!
*1:http://weblog.rubyonrails.org/
*2:教えたことが全くできなくて悲しい思いをしたのは筆者だけではないはず...。
*4:https://www.facebook.com/Xlabo
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes