プログラミング初心者の落とし穴「Ruby on Rails勉強してます」「CakePHP勉強してます」

最近、といってもここ2年ぐらいからだけど、iOSの勉強してます」とか「Railsの勉強してます」とか、そういう人からのプログラミングの修得の相談とかを頂いたりする機会が多い。

それらの中で、非常に口をすっぱくして言っているんだけど、なかなか理解して頂けないのが、『「Ruby on Rails」や「CakePHP」を使うな』という個人的なアドバイスだ。これは個人的には本当に守ってほしい、絶対に手を出してほしくない、Framework達である。

プログラミング初心者レベルとしては,確かに同感.

なんというか、例えるなら、教習場で免許を取ろうとしている人が、教習車に、F1用のばりばりのレースカーを毎週専門家にチューンさせながら使う、ようなもののように感じる。基本のスキル、教養なしに、パワフルすぎるものを扱っている感じ。ちょっとこの喩えもあまり適切ではないが。。。

正直、「背伸びのしすぎ」としか言い様がない。要らない知識を取得するために必要な知識を修得するための時間を捨てているようにしか思えない。GETとPOSTの違いもわからない人が、ルーティングやらフォームの自動生成やら使えるわけがない。自動化は「既にルーチン化できるようになったもの」に対して行うべきだ。未知のものを自動化するのは狂気だ。

激しく同意.


野球初心者でキャッチボールもできないくせに,いきなりプロ選手との練習試合から始めようとするかのようなチグハグさがある.或いはバスケでパスやドリブルもできないくせに,ダンクシュートのやりかた教えろとか.

この記事にぐさっときた人、プログラミング初心者にとっておすすめしたいのはこの書籍だ。

※あぁ、こんな先輩社員が会社にいてくれたらなんてハッピーな事だろう。。。

「知らないコマンドを打つな」「コピペするな」そういうアタリマエのことを、ライトノベルで、可愛い女性(2次元)から教われる素晴らしい書籍である。

「やりなおし」
……え?


「ま,待って下さい」「ど、どういうことですか.全部間違ってるとでも言うんですか,これ」
「ううん」
「じゃあ,なんで!」
「あんた……それ,どっかから写したでしょ」
……!


「元コンフィグにsysylogサーバなんて指定されてた?SNMPコミュニティなんて設定してた?そんなズラズラと余計なACLかけてた?」
「……」
工兵は口ごもる.どこを消して良いか分からなかったので意味の掴めない部分はサンプルコンフィグを流用していた.つまりはそれが余分な機能だというのだろう.
室見は語気を強めた
「私言ったわよね.一からコンフィグを作れって.誰がサンプルを持ってきてそれを編集しろなんて言ったの?」
「で,でも……」
そんなことできるわけないじゃないか.室見の言ってることはつまりこうだ.新旧の設定規則を理解した上で過不足無く,必要最小限の設定を作り上げろと.どう考えても素人に出来る作業じゃない.
「でもも何もない.ていうか,三時間かけてやったことがサンプルのコピペだけ?あんたやる気あるの?ないならもう帰っていいわよ.目障りだし.」


「不満そうね.」「言いたいことがあるなら言ったら?なんで設定例があるのに,わざわざ一から作らなきゃいけないんだとか.余分な箇所があるなら,そこだけ削除させればいいだろとか.」
「……」


「確かにそれでも納品用の設定はできあがるわよ.でもね,そうやって作ったコンフィグがもし現場で動かなかったらどうするの?」
「?どういうことですか」
「仕様の伝達ミス,接続機器との相性,急な要件変更.想定外のトラブルなんていくらでも起きるわ.その時,現場で急遽コンフィグを変更しなきゃいけなくなったとして,あんたはどうするの?どこを変更したらいいか分かるの?」
「それは……」
「それとも」「サンプルをコピーしただけだから分かりません,とでもお客に言うつもり?」

http://d.hatena.ne.jp/JavaBlack/20130421/p1
http://d.hatena.ne.jp/JavaBlack/20120815/p1


要はプログラミング初心者がRailsに手を出せば分からないことだらけになるので,先にRubyでプログラミングだけを切り取って勉強したほうが結局は近道ってことだろう.分割統治はITの世界での鉄則だし.

http://b.hatena.ne.jp/entry/blog.sumyapp.com/2013/07/no-recommend-rails/

  • id:dev0000_1 cakephpを提案してきた人に、訳あって素のphpで頼んだら、セキュリティホールバリバリのコードでギャフンとなったことがあるから、ちと同感。…いつでも導入できるわけじゃないので。
  • id:umisama 自動生成が悪いのではなくて、初学者がベースが出来てないのが悪いという主張だと思うんだけれど。 実際、Railsできます!って人で話が通じないこと多々あるし。
  • id:lait_9baka まあ現状そうだよね。細かい調整できないのに納得いくモノが作れるほど簡単じゃない。ノンプログラマが10日で覚えるのは無理。

自称「フレームワーク(だけ)使えます」は,「フレームワークに使われてます」な人が多いと思う.フレームワークを使いこなす人は,フレームワークがなくてもコードが書ける.

  • id:rryu むしろRailsを使う上で分からないことを勉強するようにすればいいので、何を勉強すれば良いのか分からないということが無くなって逆に良いのではないか。
  • id:shimooka 分かるんだけど、最初は目的ドリブンで良いんじゃないかな?そのうち基礎体力が必要と思えば勉強すると思う。逆に中級者でもテーブル名やカラム名がクオートされてる意味知ってる人どれぐらいいるんだろかと思う。
  • id:k_operafan 下のレイヤーは必要になったら知る、ぐらいの感じで良いと思うのです。

そういう人は分からないことがあっても勉強しないと思う.というより知識が少なすぎて,自分が分かってないことに自分では気付かない.

そもそも

  • id:tyoro1210 ブコメが2分されてて面白いけど、フレームワークが再利用可能な機能・構造を纏めたものであって、『上層』ではない という所が飲み込めてない人の反論(というか揶揄)が多いのかな。
  • id:tzt ブコメで批判してるヤツらはアタマ大丈夫か?RailsにしろCakeにしろ、下層を知らずに使えるほどには成熟してないし、そもそもフレームワークというのが下層の完全な隠蔽を提供するものではないってはなしだろ。

だと思うし.

たしかにフレームワークは「上層」ではないわな.その下層を完全に隠蔽してくれるわけではない.

で,フレームワークブラックボックスとしてしか捉えてない人は,その事実に気付かない.気付かないから勉強しようとさえしない.

  • id:asuka0801 ORマッピングやらspringやらJboss seamみたいに勝手に内部でごちゃごちゃやってくれるFramework使ってるといざ問題が起きた時に原因探るの面倒なのは分かる
  • id:rarere ORマッパーで同じようなこと思ったな
  • id:teramako 僕は jQuery にこれを感じたりする
  • id:Ni-nja ”GETとPOSTの違いもわからない人が、ルーティングやらフォームの自動生成やら使えるわけがない。” まあそうだ。
  • id:sigC おおむね同意したいところなのだけど、今の世の中が「根っこを理解してから?」というのを許してくれない程度には加速してしまっている感がある。
  • id:superrush4x 担当者が絶滅したオレオレFrameworkの後任メンテは地獄だけどね。

オレオレでなくても,マイナーフレームワークやライブラリだとたまにそういうことも.

そうなった時のメンテは地獄.しかしそれができるのは,まだしもコードを書ける人の話であって,素のPHPRubyでコードが書けない人にはできない相談だ.


極論すぎるし,的外れでしょ.勉強嫌いな人が勉強したくない言い訳をしてるだけじゃね?

RubyPHPも単独で動くプログラミング言語だ.特にPHPは,良くも悪くもそれ単体でWebアプリが書ける.プログラミングの初心者ならそれでも十分過ぎるほどに複雑だ.

  • id:y_matsuwitter 個人的には逆の意見。Railsやりつつ、段々と各種コマンドのやってることを学べばいいんじゃないのかと。ものを動かすまでの距離を短くしたほうが学習意欲が続くだろうしさ。

にしても,むしろPHPRuby単体の方が動かすまでの距離は短いはず.*1

それにこのくらいで距離が短くないと感じてそのせいで学習意欲のわかないような人は,いずれにせよプログラマーに向かないと思うな.

  • id:golden_eggg とりあえず使い方覚えてとっととモノ作りたいって人と、利用者人口増やして裾野を広げて多様なフィードバックを得たいコミッター、である程度win-winになれてるんだから別にいいんでないの?

win-winにはなってないと思う.

そういう人は,得てしてバグを量産する以外に能の無いゴミクズプログラマにしかなりませんので.

  • id:charismanbou ルール無茶苦茶なキャプテン翼にあこがれて最終的に一流のサッカー選手になった例もあるので、入り口は何でもいいよ。フレームワークの奥を知りたいと思うかどうかは結局は本人次第。Railsが悪いわけではない

じゃあその人達が最初に練習したのはドライブシュートとオーバーヘッドキックなのかというと違うでしょ.

やはり最初は走り込みや筋トレ,リフティングやパス,ドリブルとかだろうなあ.

  • id:kensuu とっかかりはわかりやすいほうがいい派ではあるんですよねえ・・・。オートマから慣れて、マニュアル車にいってもいいじゃない。
  • id:hhungry マニュアル車に乗らないならAT限定でもいいじゃん的な。
  • id:b4takashi 普段はAT車しか乗らないだろうけど、クルマの原理を分かるために免許はMTで取っておけ、的な?

むしろ零細自動車メーカーが,仮に最終目標が「ハイブリッドカーの製造」でも,まず最初に作るのは従来と同じガソリン自動車にしろ的なものでは.ハイブリッド化するのはその後でも遅くはない.ガソリン自動車も作れんくせに,ハイブリッドカーが作れるのかと.仮に作れたとしても問題を特定しにくくなる分だけ,かえって工数は増えるだろう.

プログラマーというのはユーザではないわけだし.F1とかもあくまで比喩.*2

硬派というか,開発現場をリアルに描きすぎで,リアルSE/プログラマには涙無しには読めない作品です.
http://book.akahoshitakuya.com/b/4048868535

  • id:temtex なれるSEはいい本だがそういう教訓を語る本というよりIT版女工?哀歌みたいな奴なので。というのは置いといて、初学者に嘗てのBASIC並みの手軽さと結果を出させる上でrails有用かと。初期は何学習しても記事中懸念はある
  • id:f-miyaji なれる!SEは胃が痛くなるので、初学者にはお勧めできない

蟹工船

蟹工船

*1:Railsを使う時は必ずRuby言語を使うし,Cake PHPを使う時は必ずPHP言語を使うよね?

*2:MTとATのたとえばあまり良くないと思う.というのもAT車でもMT車と同程度の,変速機やガソリンエンジンに関する知識が求められるからだ.中身を知らないままで走ってエンストしたり,ブレーキが効かなくなって事故を起こしたりするドライバーも,いるかもしれないけどね.