AdventCalendar 超Ruby入門

はじめに

本記事は、超Ruby入門 { 大学を作ろう} Advent Calendar 2018のガイダンスだ。

各記事にコメントをしてくれる優しい方は、該当箇所まで飛んで下さい。

対象者

Ruby入門は、地方国立大学の1、2年生を対象としたものである。

なお、大学以前からコンピュータサイエンスに関心があり手を動かし既に一定の評価を受けている者ではなく

大学入学後に初めてプログラミングに触れた学生を対象としている。

周囲との意欲差に悩み不安の中、懸命に踠いている学生に進むべき大雑把な地図を示せれば幸いだ。

何をするのか

Ruby入門は、その名の通りRubyを学ぶ。

学部1回生で履修するプログラミング入門の再構築だ。

モチベーションがRubyソースコードを読みたいから発生しているので、復習のためC言語も扱っている。

入門と言っておきながら、C言語Rubyの基本的な構文は一切説明しない。

基本的なレベルが心配な人は以下のリンクを見ておくとよいかもしれない

プログラミング言語C 第2版 ANSI規格準拠

ミニツク - Rubyのe-ラーニング研修システム

なぜ、行うのか

私が高校生の頃、Moocの代表であるedxやcourseraが徐々に認知されていく時期にあった。

哲学に興味のあった私はedxでマイケル・サンデルの正義の講義の受講した。

毎週繰り広げられるレベルの高いディスカッション、考えさせられる講義。

世界最高峰の大学による講義を受けてしまった高校生が大学教育に対し、多大な期待するのは必然だろう。

肥大化した私の期待が幻想であると気がつくのに時間は、かからなかった。

穴埋め問題のような実験、議論のない講義、単位取得の有無を教授のせいにする学生。

大学のレベルが低いと言われれば、それまでかも知れないが話を聞く限り大抵の大学で同じようなことが起こっているように思われる。

勿論、優秀な学生は一定数いる。しかし、それらの学生の大半が弊大学で学ぶ内容程度を入学以前から理解しているのだ。

私に必要なものは、同レベルのモチベーションを持つ同級生か良質な講義であった。

前者に関しては勉強会を開催するなどしたが、そもそもconnpassなどを閲覧する人がいないのと私のブランド力が足りないせいもあり個人の力でやるのは難しいものがあった。

では、講義はどうかというと学生が立ち入れるには難しいであろうが不可能な領域ではないと感じる。

東京大学オペレーティングシステム大規模ソフトウェアを手探る京都大学実験を改善できるわけはないが

弊大学のプログラミング入門レベルならば改善可能ではないかと思った。

私と同じような苦労を味わっている地方の学生がいるならば少しでも貢献したいと思いと能力的な側面からプログラミング入門の再構築を行う。

なぜ、Ruby

ハッカーの方々には、申し訳ないが技術に大して興味がない。それなりに関心はあるのだろうが、自発的に論文やカーネルを眺めるほどではないのだ。

そもそも情報工学を専攻したのもBig History Projectのようなものを作りたいと思ったからだ。

教育のために技術を学んでいる。

そんな私だ。Python神、推しはRust、Matz可愛いなどというものがない。

本題に戻ろう。なぜ、Rubyなのか

教育的な面から考えると大学が目指すべき姿は、一次情報から知識を体得し、時にはその前提すら疑いながら問題の解決方法を考察できる人物を育てることにあるのではないかと考える。

であるならば、一次情報を元に講義を構築するべきであろう。

さて、一次情報の定義は曖昧だ。何を持って一次情報とするのだろうか?

極端に考えると全ての情報は、人類誕生やビックバンまで辿ることが可能であろう。

それでは、何の意味もない。

ことプログラミング言語においては公式ドキュメントが一次情報と言えるだろう。

ここでの一時情報を疑うとは、プログラミング言語自体を疑うことに他ならない。

プログラミング言語ソースコードを追う必要があるのだ。

残念なことに私には技術力がない。

RubyRHCRubyソースコード完全解説などの良質な情報がある。

教育的条件を満たし、私の利害と一致するものがRubyだった。これが理由だ。

目指すべきもの

地方では、どれくらいの技術力が求められているかすら測ることが困難である。

私が、目標にすべき対象を定めることが出来たのは運よくYahooさんのインターンに参加出来たからだ。

目標を捕捉するためには、一定の努力が必要である。

地方の学生が記事を通して、目標を見つけるための基礎力を養い興味のある分野に突き進むきっかけを与えたい。

imaharu-blog.hatenadiary.jp

謝辞

ここまで、大層なことを述べたが記事そのものの質は大学の講義レベルに現時点で到底及ばないと認識している。

原因は複数考えれるが、一番は技術力のなさだ。技術について書くというのは真の意味で理解して初めて成せる匠の技である。

他にも、文章が下手とか、カリキュラム構成が悪いとかだ。

しかし、各記事で出題している課題や情報は中々良いのではないかと思っているので気になったものを余裕のある時期にやってみるのを勧める。

各記事にコメントしてくれる方へ

若輩者の記事にコメントをしてやろうと思ってくれた方々、ありがとうございます。

近年、Qiitaでマサカリを投げるのはやめようぜ。優しくなろうぜ!という意見がありますがどんどんマサカリを投げて下さい。

本プロジェクトに関しては、教育的側面や燻っている学生を全力で励ましたいという思いを遂行する必要があり、可能な限り正確な情報を伝えたいと考えています。

とは言っても、コメントの真偽を確かめていては完遂するための時間が足りなくなってしまいます。

そこで、間違ってる場合は該当箇所のソース(Rubyのドキュメントリンクなど)を明示してくれると大変助かります。

レベル的に対応できないのでC言語は緩くRubyは、がっつり指摘してもらいたいです。

卒論の関係で修正するのに時間がかかると思いますが、それでもいいよという方はコメント頂けると幸いです。

それでは、imaharu育成ゲーム楽しんで下さい

乞食

Rubyによるデザインパターン

リファクタリング:Rubyエディション

Rubyソースコード完全解説

を読みたいがインターンを辞めて金がないので優しい人いれば‥

ほしいものリスト