Railsはプログラミングでは無いのか
201511.04

はじめに

Ruby on Rails はプログラミングではない!

佐藤です。こちらを拝見して、思うことを少し書いてみようと思います。

WEB サービス開発初学者が知るべき事と Rails の提供するモノの差

まず上記の記事を読んで「それはあなたが Rails についてよく知らないからだよ」と思ったとしたら、それはとてもプログラマー的な思考で記事を読まれたのではないでしょうか。きっとこの件で大事なことはそういう事では無いと私は思います。

初学者さんには大きく分けると幾つかのタイプがいらっしゃると思うのですが、その一つに「仕組みについて理解して、それを行使したい」というタイプがあります。ブログの記事を書かれた方はきっとそういう方だろうと感じました。

例えば以下のような事が WEB サービスを作成する上での基本的な内容だと思います。

  • ロジックを書くということを知る
    • 条件分岐/繰り返し/メソッド etc...
  • そもそも WEB とはどんなものなのかを知る
    • リクエスト/レスポンス、HTTP メソッド、ブラウザの役割 etc...
  • DB の基本的操作を知る
    • いわゆる CRUD について知る

さて「このようなことを知る目的において、Rails というフレームワークが有効だろうか」と考えると私は必ずしもそうではないと考えています。

Rails は MVC や REST の概念、DB の操作等をひとまとまりに提供してくれている素晴らしいフレームワークです。その為にブラックボックス化しているとも言えるかもしれません。本当に理解したければこれらの概念を知り、更に上記のような WEB サービス開発の基礎的な概念をも吸収しなければなりません。

基礎的な部分がフレームワークの効果によりあまり意識せずに行われていることから、本来学ぶべき概念が初学者からは見えづらくなっていると感じます。

今回起こっていたと想像されること

恐らく受講されたスクールでは Rails の操作について教えたけれども、先に挙げたような WEB の基本的な内容について、受講者がハラオチするレベルで提供できていなかったのだろうと想像しています。

また、Rails についても「scaffold で作られたものについて、何をどう直せば自分の思ったように変更していけるか」という大事なところが伝わっていなかったと想像されます。

(2015/11/5 20:17 訂正)内部の事情に詳しい方からご指摘が有りまして、元記事の方が受講されたスクールのカリキュラムには、scaffold するところ自体が含まれていないということでした。訂正させて下さい。関係者の方々、記事を読まれた皆様、誤った内容をお伝えしてしまい失礼致しました。また、他に誤りと思われる箇所がございましたらなんなりとご指摘下さいませ。

引用:
でもね、「物作りしてるなあ」という実感は、正直言ってありません。市販キットを組み立ててる感じ。「なぜ動いてるのかわからないシステムを、先生に言われるとおりに操作したらうまく動いた」っていうだけの話です。

なぜ動いてるのかわからないシステムを、先生に言われるとおりにというところからもこの雰囲気がわかります。大事なことは、どうやるかを即答してあげることではなくて、その人が自分で考えて実現できるようにサポートする事ではないでしょうか。

二ヶ月という限られた期間の中で、様々な理解を促すのは難しいことです。私のところでも「Rails がちゃんと使えるようになる」というラインを考える際はもっと長い期間を必要とします。当然個人の素養で前後もします。

トレーナーとしての私が思うこと

弊社のトレーニングでは受講生の方全員と事前に面接をジックリ行いますが、「1 ヶ月でプロに」などとは絶対に口にできません。一人一人違う性質を持った方を相手にして、これから初めてのことをやると言うのに、その目標を皆が達成できるかのように見せるのは私の考え方ではできません。

2、3 ヶ月で私がコミットできるのは

「あなたが目指すのがプロであれば『これを続けていけばプロになれる』と私が思う道筋を提案して、それを達成出来るだけの初期スキルを与えること」

程度です。この話を理解した上でトレーニングを受講していただきます。

初期のスキルを組み合わせるだけで自学で登って行けるのもプログラミングなのです。私たちはそれを短期間にする手伝いをするだけです(実際私は誰に教わることもなく自学だけでプロになり、今はプロを育てている自信があります)。

引用:
で、そんなこともあって、ぼくはいま Rails に対して熱が冷めてきてます。ぼくはもともと、理解できないものを使うことがあまり好きではないのです。

この言葉にとても悲しい気持ちを持っています。元々やる気があったはずの人に、もっとやる気を伸ばしてあげられるチャンスがあったのに、それを潰してしまったのではないかと感じています。

救いなのは Rails に対する熱が冷めているだけであって、プログラミングそのものに対する熱はまだ残っていらっしゃるのではないかと感じられる事です。是非違う形でも良いのでトライして欲しいと願っています。

ではどうしたら良いのか、というところで Sinatra のススメ

長々書いてきましたが、初期に大切なのは「WEB サービスを作成する上での基本的な内容」に対する理解を深めることだと思っています。もちろんそれを Rails から始めて良いと思いますが、万人にとってそうでは無さそう(個性や環境、良い師の存在等に関係しそう)というのがここまでの話でした。

対案として「将来 Rails での開発を目指している初学者の方には、Sinatra を薦めると良いのではないか」と最近は考えています。Sinatra は WEB の動作についてとても直感的に理解できるような仕様になっています。Heroku で公開もできます。

弊社ではこれを確かめる目的もあって、今年の夏に WEB プログラミングに詳しくない女子大生をインターンにお願いして、12 日間のトレーニングをさせていただきました。下記はその記録です。教本のように全てが書かれているわけではありませんが、学ぶ上での一助となると考えています。※余談ですが、記事の妹の方は WEB 開発が楽しくなったらしく、しばらく弊社のインターンとして活動してくれることになりました。

ぽんこつ姉妹の Ruby 女子会 〜基礎から Web はじめました〜

Sinatra を使ってまずは WEB の仕組みがどんなものかの概念を持った上で、Rails にトライすると良いのでは無いでしょうか。

おしまいに

それでも次に Sinatra から Rails に移行する際には多くの事を学ばなければならないのは前述した通りです。Rails にはまだ「すんなり辿り着ける入り口」が存在しないと感じています。この課題も弊社で解決したい問題の一つです。

もしも迷っていることやシックリこない何かを抱えている方がいらっしゃったら(コードの話でもいいですし、概念やはじめ方でも大丈夫です)、だいたい毎週末に弊社で開いているプログラミング相談所に是非お越しください。私やスタッフで悩み相談からレクチャまでさせていただきますよ。

という形で最後は商売な感じでまとめさせていただきました。ごめんなさい。そして長々お読みいただきありがとうございました。

続きっぽいもの