批判ではなく議論の提起、なのかもしれませんが。みなさん言い方きついですねえ。小心者の自分なら萎縮してしまいそうです。私が大阪弁を怖く聞こえてしまう事象と同じで思い込みかな・・・ブログ書くの怖くなりそです。本題に戻りますが、本件の課題はおそらく一人、少人数で製品を作っている間は大して問題にならないのかもしれません。大人数のプロジェクトとみたときに発生するコミュニケーションロスとしては看過できないと思いますので、大いに同意する気持ちです。初心者が悪いとか、ベテランの初心者への理解不足の良し悪しとか、製品リリースという観点からは本質ではないのでおいておくとして、ベテランにとって当たり前のことが、初心者には当たり前じゃない。ここで生じる誤認がプロジェクト進行の後工程まで残留してしまう可能性を考えると「使うな」くらいが論調としてちょうどいい。製品やユーザの目的からすれば、新しいからいい、枯れているからいいとかじゃなく、技術はいつだって中立です。(もちろんメンテコストなんかもあります。統一できていなければ思わぬところで足をすくわれやすい、ということです。TABLE構文は割りと常識の域だと思いますので、問題になりにくい。十分ブラックボックスだという誤認から生じるロスが問題なのかもしれません。何熱くなってるんだろな。ちなみに私はRubyを使ったこともなければ、中身も良く知りません。AMcakephpのsession管理に関して理解を深めようと検索していてたどり着きました。「初心者」という意味でしたら同意致します。簡単なものならPHP+Smartyなんかで書く方が早いので、自前のなんちゃってフレームワークで書いたりします。いうより、2~3日で終わるような簡単なWEB系のものを一人で書くなら未だにこの方式ですね。案件によってはフレームワーク各種を使う事も稀じゃありませんので、相応の学習コストは掛けています。フレームワークに初めて触れたとき、それまでSQLを手書きで書いていたものが、ほんの数行で実行されてしまう事に大きな不安を感じました。SQLに限らず様々なものに不安を感じていましたねぇ・・(^-^;私のようにフレームワークが一般化する以前に手書きでコツコツ書いてた人間からすると、内部で何が実行され何を吐き出しているのかが見えないと、怖くなるんですよね。初心者であれフレームワークを覚えていく事は今の開発現場で必須条件だとは思います。それに伴う学習コストは会社/プロジェクト単位で担ってくれるかもしれませんが、根本的な理解を深めるって部分は、やはり自分で学習するしか無いのかもしれません。その時間を作れるかどうか、その意識が芽生えるかどうかって事じゃないでしょうかね。そもそもフレームワークにおいて、そういう知識の補完まで完璧に担えるように進化するなら、必要無いのかもしません。WEB屋の手書きHTML→CMSって流れに似てるなぁって思います。PM完全に同意はできないけどFrameworkを使うんじゃなくてFrameworkに依存するようになったらダメだよね。Frameworkに依存してる自称プログラマが多いのなんの。全てとは言わないけど一度ネイティブで実装してみるとFrameworkの恩恵がわかってFrameworkを「使える」ようになるんじゃないかなと。ネイティブって言うとアセンブラで~って言う人もいるけどそこまでいくとただの揚げ足取り合戦になるからそこまあくまでピュアPHPなりrubyなりってことで。Framework使って作ったものと同等のものをネイティブで書けるようになれれば一番だね。PM最終的には、どう学んでいくかは、各個人の経験や力量の問題だと思います。フレームワーク自体が仕事の場合は、初心者でもいきなりということがあります。必要なら、必要な部分を自分で補っていかなければという話で、それは各個人がプログラマとして成長するプロセスであり、やるかやらないかの問題だと思います。「なにごとも簡単に匙を投げるな。理解できるまでのプロセスのほうが大事だろうが。」そんな親父の声が聞こえてきました。必要なものが足らなければつまずくし、必要でなければうまくいくし。いう自分の経験からの感想でした。問題は、今から学ぼうという人に全否定のように見えるタイトルかも。PMRailsはだめ、CakePHPもだめ。AMだいぶ前の記事ですが拝見させていただきました。frameworkがどのような動作をするか、というのは知っておくべきだと思います。初心者がframeworkから勉強するなというのは、あなた個人の意見を押し付けているだけに感じました。別に初心者がframeworkから初めてもいいのではないでしょうか??cakeやrailsといったframeworkを使うにしても、phpやruby、データベースの知識は必要になると思うからです。確かに初心者がいきなりそれらの技術を習得するのは難しいことだと思います。あなたがプログラミングを学んできた時代とは違い、今はcakeやrailsといった便利な道具が出てきた。便利だから使う、そういった自然な流れでプログラミングに触れることができる時代になった。AM昔の記事ですがコメントなどが今も書き込まれているようなので意見を言わしてもらうとframeworkに依存しているとframeworkでは対応出来ない仕様などに対しての対応力などがないから二流プログラマーしかなれないのでおすすめ出来ないし現場じゃ役に立たないからね。PMフレームワークは使用したほうがいいでしょう。一から作るなんて時間と金と人生の無駄です。そのフレームがメンテナンスされなくなったら、別のフレームワークで作り直せばいいだけです。私を含めほとんどの人はどうせ大したもの作ってませんから。AM初心者ならフレームワークを使って作れる喜びを知ってもらうのもいいことだと思う。そこからじゃあフレームワークはどうやって動作してるんだろうと、発展させていくトップダウン型でも全然問題はない。PMとても興味深く読ませていただきました。railsを使っても、基本ができていないといけないのですね。フレームワークを使う前に、基本をしっかり学ぼうと思います。初心者がコードを書くのにおすすめのプログラミング言語はどの言語だとお考えですか?最近、rubyを使おうとしていたのですが、フレームワークについてのこの記事を読み、そもそもプログラミング言語はどれがいいのかと疑問に思いました。javaとかpythonとかですか?javaは一応入門書を読んだのですが。AMコメント、ご質問ありがとうございます。基礎を勉強すべきかどうかについては、しなければ作れない、と考えております。フレームワークの入門書等はそのフレームワークが簡単であるように書いてありますし、そう感じられますが、記載されていること以外のことをしようとすると、多くの人が躓いてしまいます。言語としておすすめなのがあるわけではない、どの言語もおすすめなのですが、ウェブサービスを作りたい、ということでしたら、PHPでサイトを作ってみるのはいかがでしょうか?フレームワーク等は使わず、自分が必要だと思う機能やデザインだけを実装していってみると楽しいと思います。PHPかといいますと、PHPではそういった用途の入門書が多く出ているためです。他言語ではフレームワークありきの物も多く、作りながら学ぶのに適切な本、サイトなどでは、PHPが恵まれているように感じています。その後は、使用用途に合わせて、フレームワークや言語を選んでいくのが良いかと思います。PM非常に賛同できる内容でした。私も知識のない新人がフレームワークから学び始めるのは非常に危険であると思います。フレームワークの内部で行われている根本的な動きを意識することができたとき、フレームワーク内部で行われている根本的な動きを意識しフレームワークを使いこなせるようになるのではないでしょうか。知識0の友人が某IT系会社に入社したのですが、はじめにならったのがCakePHPだと聞いて驚きました。戦力が欲しいのはわかりますが、多くの過程をすっ飛ばし過ぎではないかと思いました。AMうーん、プログラミングについて浅い知識で終わってほしくないというのはわかるけど、だからといってスタートダッシュ切ったばかりの初心者の人にFramework使うのやめろ、っていうのは無理でしょ。いうかいきなり挫けさせて一体何がしたいのか。この記事は経験者の賛同を得られはしても、初心者の助けになることは一切ないね。便利な道具を使って、とりあえず何かしらフィードバックの得られるものを作って、プログラミングの楽しさ・達成感を味わってから、その道具の仕組みを知ればいいだけの話であって。「俺はFrameworkなんか使わない、使うとしても理解してからにする。」......それは中級以上のプログラマなら当たり前のことでしょ。そんな当たり前のことを初心者相手に押し付けて、自分は同レベル者の賛同を得ていい気になって、これほど痛々しい奴はいない。それと、なんかフツーに二次萌え本推してるけど、そろそろそういうねじ曲がった観念押し付けるのやめたほうがいいんじゃないかな。可愛い云々が教えてくれるとか、普通に気持ち悪いし、例え萌えでなくても偏った信念を押し付けられるのって、押し付けられる人からすれば結構不快なものだというのを理解してほしい。AM批判ではなく代替案を示してくれると私含め皆さんのためになると思います。私はPHP言語は十分便利な道具、楽しさを得られる道具だと思いますよ。iOSやAndroidなどのよりリッチな体験をすぐに得られるタイプのプログラミングも楽しいと思います。Arduinoを触ったりするのも楽しいですね。RailsやCakePHPなどは「MVCとはなんぞや」や「attr_accessor」「db:migrate」など、Frameworkのために覚えることが多すぎて、プログラミングの楽しさ・達成感を味わうための障害になってしまうだろうと個人的には思います。AM私は「jQuery勉強してます」が、JavaScriptやDOMの理解が浅くて苦労したことがあります。RubyがわからないのにRailsを始めなくてよかった。ありがとうございます。PMおしなべて学習とは、トップダウン方式でもダウンアップ方式でも、”没頭”さえできれば、いずれはおのずと網羅的に学習してると思う。いう意味では反対もしないが賛成もしない。その形骸化した思考には強く反論したい。近い将来、Railsから始めて夢中になって(もちろん、全員とはいわないが)、必要に応じて様々な技術や知識を否が応でも身につける者がいるであろう。その夢中者にとっては、その他の技術や知識の習得はもはや努力ではなく、希望でしかない(努力なんて相対的だからね)。楽しい、便利だという信念や予感をrailsで一旦感じる者がいて、そっからRubyだのActiveRecordだのSQLだのCoffeeScriptだの必要に応じて徐々に学習する状態は、もはや本人にとって努力ではないだろう。このブログの作者の力量を超す若者も多く出てくるだろう。その時、あなたは(というか少なくともこの記事は)古い頭の持ち主といわれる。タイトルの頭に「(楽だろうと勘違いして)今すぐ辞めて欲しい」と添えるべきだ。最新の技術から入って、夢中になってプロになる一部の者もいれば、途中で脱落する多くの者もいる。ひとつ言えることは、いつの時代でもその次代の最新の技術に夢を抱いて没頭することからはじまる。ピッチャーになりたきゃジョギングとシャドーピッチングからはじめろ。それまでは決して決して投球するな?それに地道に従ってプロのピッチャーになれる者がいるだろうか?否、最初はめちゃくちゃでも、がむしゃらに実践しつつ都度学んだ者が結果、プロになっている。シャドーピッチングに夢中になって、いつの間にか140キロの投球ができるようになって、それでプロになるパターンも否定しない。繰り返すが、要は本人が何に没頭できるか、だ。保守的懐古主義は”自分以下”は育んでも、”現状を超すもの”は育成しないであろう。AMいいたとえするねぇ。わたし教習生Web開発は日進月歩が半端無い。勉強尽くしで仕事になるのかといいたい。ほにゃ、ふにゃふにゃ。PMはじめからある、世界地図を全て覚えてから旅をするのか。それとも、自分で世界地図を作っていくのか。前者は旅に出るまでが長くて、旅に出るまでに死ぬ重い腰の人。結局たいしたものを作れずに終わる。会社に言われたものなら作れるかも。後者は、予め設計書だけ作成して、自分で地図どおりに町や地形を作っていく。私は、10年以上もPHPを使っていますが、特にフレームワークに恩恵を感じたことはありません。ジェネレータは自分で作れますし、各種ライブラリも調達できます。監査に引っかからないようなセキュリティの仕組みも調達できます。作るプログラムの主要なパーツは全て同じです。普及したら新たなバージョンができるフレームワークベンダーの戦略にハマることがそんなに恩恵なのかと思います。大体のPHPコードは読めるので会社で作っているものにカオスさを感じません。設計に慣れていれば、どのコードなのかは見ればすぐわかります。規約は大切だと思いますが。各種設計書は必要です。ここ7年はZend、Symfony、Cakeをいじってきました・・・国内で良心的なのはCakeだと思います。資料も豊富で把握しやすいから。BAKEに恩恵を感じません。他のフレームワークに手を出すつもりはありません。良いフレームワークがあったらそれに絞るつもりです。PMちなみに、Cakeをマスターしたと思っている新人は多い様子です。彼らは部分的な作業しかしないので、ある新人はビューだけいじって、Cakeを経験した気になっている。有る新人は、モデルだけジェネレートして、Cakeを覚えた気になっている。それで、Cake・・なんだ簡単じゃんってなる。フレームワークを深く知りたいのであれば、セキュリティの仕組みやシステム管理、監査に耐えうる機能が何なのかを知るべきだ。ソフトウェア工学上どうして、そうつくっていくべきなのかどういう思想のもと作られたのか。表面上のシステムだけでなく、裏方の機能がどうして必要なのかを知ってから、その恩恵を知ればよいと思います。世界地図を全体を覚えないと旅ができないのは不便といえば不便だ。個人で作るようなイノベーティブプログラミングには向かない気がする。自分の例だと、最初平phpでひどいコードの2ちゃん風掲示板を2日で作り、きちんと動くものがこんな簡単に!という感動があったその後CakePHPで求人サイトを作り、学習期間含め簡単なシステムに2ヶ月かかった最初の作れた!という感動と、なぜわざわざフレームワークを使うのか?という明確な理由を認識できたから心が折れなかったと思う単純な話(MVC)フレームワークを使うためには、「動くものを作る」能力に加えて、オブジェクト指向の理解、MVCの概要理解、フレームワークのお作法の理解が必要。Railsは周辺知識もいろいろいるし知識0の状態から誰にも強制されずにサービスを作る経験を持ってるかどうかで記事へのリアクション変わると思うんだよね。PMだいぶ前の記事ですが、記事の内容も同意でき、今までの多くのコメントからすごく良い議論になっていると思います。私はRailsは触れたことはなく、主にJavaScript系を触っていますが、JavaScript界のフレームワーク(特にフロントエンド)は、派生や種類が多く、どれもオレオレ感が出ていて、今時点では本当に混沌としています。Express.jsで開発していたと思ったらいつの間にかAngularが出てきて、Angularを触り始めようと思ったらReactが出てきて、終いにはAngular2.xには期待できないなどの声も上がったりと、完全なフレームワーク地獄に陥っていると思います。フレームワークに依存し過ぎると、本当にそれが無いと何も出来なくなるのは、初級者にはよくあることです。JavaScriptフレームワークによっては、ES6、ES7に対応しているなど、JavaScript(EcmaScript)自体の仕様を深く理解していないと、それが何のメリットがあるのか、逆にそれが対応していないと何がマズいのかの判断すら出来ません。本記事は、フレームワークを使うなら言語自体を理解しておく、フレームワークが使えなかった場合のメリット、デメリットを綺麗にまとめてくれていると思います。AMフレームワークは、基礎をつけた上でデザインパターンを学ぶにも適切だと思う。PHPは動きがとても早いので(言語仕様やコード規格)、最新の動向をつかみ、キャッチアップする意味でも、フレームワークは有用だと思う。basicから始めましたが、その頃はcとかのポインタ分かっていないでプログラムをするのはけしからん!!という風潮がありました。それと同程度のような気がします。便利な物は使うべきだし、好奇心旺盛な人は勝手に勉強するので、ほっとけばいいです。我々は何の為にコードを書いて、システムを構築しているのでしょうか?技術の為の技術という技術者思考が強すぎるといい物は作れなくなるように思います。AMwebアプリケーションの勉強をしている者です。記事、とても参考になりました。「フレームワークでできること」を一度体験してみるのも悪くはないかなと思います。それで「この言語を学べば、こんなすごいことができるようになるんだ」と感じられれば、その後の学習意欲が高まるのではないでしょうか。AM自分の専門分野よりも少し根源的な部分まで知って余裕を持っていないと、その分野の専門家にはなれませんよね。自分の専門分野よりも、ずっと根源的な部分まで知る必要はそんなにないわけです。このことから、自分の専門分野より少し根源的な部分まで知る必要がないという結論に至るのはおかしいと思います。RailsやCakePHPを使うなら、それらより少し根源的であるPHP,Ruby,DB..を知っとけという記事で、納得でした。PMぼくはプログラミング歴2ヶ月の者です。貴サイトの当記事を2ヶ月前に読んでから、疑問に思いながらも某オンラインプログラミング塾でRailsを学んできました。今となっては、貴サイトに書いてあったとおり、プログラミング初心者にRailsは重すぎました。今後は基本に立ち返り、JavaScriptやRubyなどといった基礎の部分から、地に足のついたプログラミング学習をしていこうと思っています。示唆に富んだ記事、ありがとうございました。一応、プログラミング初心者が2ヶ月Railsを学んでみて感じたことをブログ記事にしましたので、興味があれば読んでみてください。AMほんと、あなたは偉いですね。ここで、必死になって、フレームワーク論とかコミュニケーション論とかの信者になってる人に対して、よいお薬になるでしょうね。フレームワークもコミュニケーションも単なるプロパガンダ、教祖の言葉でしかないことに早く気づいてほしいです。仮に、PHPの供給が10000として、フレームワークがこの世に7個あったとしましょう。PureなPHPerが3割、フレームワーカーが7割いたとすると、各フレームワークカー・グループは、平均で10%の供給しかできないですね。個々のフレームワーカーらは1000しか開発力を供給できない場合、どうやってその10000人中1000人を選別して、プロジェクトに参加させるかという話です。「CakePHPer募集」なんて書いたとしても、Phperのうち10%程度しかマッチしないわけですから、フレームワークが多くなったことで人材を集めづらくなたという難点があります。「PHPer募集」などと書く場合、その10000人を対象にすることになりますね。従来のPureなPHPだけでしたら、その10000人を対象とするわけですから、簡単に人が集まるという利点があるわけです。問題解決能力は供給力が10:1だからといって、10:1になりえません。ランチェスタ戦略によれば、数的圧倒有利ですから、100:1になります。フレームワークはスタンダードがありませんから、流行に流されやすく、できては消えるの繰り返しです。国で認定する国家試験でもフレームワークはほとんど触れられることはありません。目の上のたんこぶのように相手にされていません。ベンダーロックインの主な要因にフレームワークがあります。そのひとつの要因にデータ構造がフレームワークに依存するなんて問題もあります。ある自社サービスを行う企業では、Symfonyというフレームワークを導入していますが、このフレームワークもジェネレーションができるという利点だけで、むしろ煙たがられています。10年勤める担当さんも「修正が簡単にできない」といって毎晩終電までこの問題を解決することに費やされています。Symfonyベンダーが、指導者を派遣し大儲け。いった観点から見ても、実際には、フレームワークは効率化(コストダウン)をしていないだろうと考えられます。フレームワークで実装できる個々の機能も実は、PureなPHPの書き違いでしかないです。個々のフレームワークの学習コストという重要な問題点が出題されることがあります。フレームワーク・ビリーバーに多いのは、「学習コストなんてたいしたことがない」という文句ですが、それは、フレームワーク・ビリーバー達が実は、1つ2つのフレームワークしかいじったことがないための知識レベルに問題点があると考えられます。「こんなのたいしたことがない」という、シニアぶった楽観論は後工程で自分で自分の首を絞めるのみならず、その仲間の首まで絞めることになるでしょう。それは、仕事にしろ勉強にしろ「こんなのたいしたことがない」とか、「1週間でできる」などの見栄にあります。プロジェクトマネジメントの視点から言わせてもらえば、工数を営業が見誤るだけで大きく、システム会社の経営が傾くことがあります。営業が見誤ってしまうのはスキルが無いからですが、エンジニアが見誤ったら終わりですねwアーキテクトが、フレームワークの選定で予想工数を見誤った場合大変なことになります。希望的観測にて導入コストを算出しただろうってことです。彼らは、まともなITアーキテクトには一生なれないかも知れません。フレームワークは個々において学習コストがまったく異なります。新しくて資料の乏しい技術ほど、手探りになります。近くにフレームワーク・エバンジェリストでもいればよいですが、期待できません。天使様がいれば、信者も大喜びでしょう。wしかし、この世に神も仏もいませんからw自分で天国までいくしかありませんね。資料が無い場合は、5倍の学習コストではすまないでしょう。プロジェクトは確実にポシャります。フレームワーク論者とコミュニケーション論者に多いのは、風評に惑わされやすく、風評を流しやすいです。論理的な視点や統計的な視点で物事を見れない人です。それは、太平洋戦争時代のプロパガンダを偉い人が言うから、みんなが言うからといって簡単に信じた民衆と同じです。当時、分析家の言葉はことごとく、「間違っている」という風評を流され、口封じをされました。10年くらい前なら、初級シスアドは簡単などという言葉をよく聴きますね。それで、実際にガチで半年研修させてみて合格した人はほんの1割しかいなかった企業も見てきていますがそれと、同じで風評に惑わされて正確性を見誤った評価をしているという点です。あるフレームワークの利用者が1人しかいなかったら、フレームワークの意味はありませんね。名ばかりフレームワークです。効率化も糞もありませんw多様化してしまい、フレームワークの意味が無いって話を耳にしますが、まさにそういう意味を内在させているのです。パフォーマンスが云々を技術力の増強で補うことができると問題点を解決したつもりになっていますが、それだけが問題ではないのです。論理和ではないですから、個々の問題に言い返すのではなく、すべてひっくるめた条件式に言い返す必要を、あなた方は都合よく無視しているのです。フレームワークは格好いい、フレームワークを覚えればスキルがあるように見せることができるってのは、単なる見栄でしかありません。感覚的なものに惑わされすぎです。一から基礎的な学習をやり直すべきでしょう。識が甘いままエンジニアになってしまうと、エラーが起こった場合に、迅速な対処ができなくなってしまう恐れがあります。便利だから始めた」輩です。今自分で簡単なプログラムを少し作れる段階になって、それでこのサイトを見てみて、あなたの意見に共感できる部分と共感できない部分があると感じました。私が共感できる部分は「どう動いているか中身が分からないから危険」です。自分は先述した通りまだ少しプログラミングができるだけの段階なのですが、確かに、railsをつかってみても、中身がどう動いているか分からないと感じる時が多々あります。違うプログラミングの言語を触っていればもしかしたら「あぁ、この難しい記述がこんな風に簡単になっているのね!」となったところも、自分には正直ちんぷんかんぷんです。学習することも無駄ではないのではないでしょうか?とまぁ、まだまだ自分の考えが浅いことは否めませんが、私はそう感じました。PM感銘を受けました。私自身WebやDBのことはよく知らないままrailsの本を購読していました。何も分からないままフレームワークを使うというのは確かに不自然な話ですね。おっしゃる通りだと思います。知り合いにも’railsは技術が身につかずに達成感だけが得られるから良くない’と言われてました。railsから説明をし始めて、それ以前の基本的な構文についてはあまり教えない。教材が用意されてるので、その型通りに書けば済んでしまい、身につかないなんてことがあるらしいです。それはそれで問題なんじゃないでしょうか。PMRubyを習得したく、指南書を探していたところに出会いました。おっしゃる通りだと思います。javaを学ぶ際に初めての言語だったためよくわかっておらず、すべてメモ帳で行っていました。時間もかなり掛かり、eclipseなどの存在を知った時は絶望に近いものもありましたが(笑)その分深く習得出来たと感じております。初心に帰ることのできる記事をありがとうございます。AM今すぐ辞めてくれ、というのは無責任で極端な言い方だと思いますが、「じゃあ、君はRubyはできるの?」「PHPは理解しているの?」と前提の質問をしているならまだわかります。いずれも、基本的な文法なり、OOPとして組めるだけのことがわからないと、フレームワークを使ってもまともに作れないと思いますけどね。PM記事、各コメント、勉強させていただいています。私からもひとつ、言語学習におけるフレームワークの利用について感じたこと。初学者がフレームワークに触れる必要はあると考えます。OOPなどの理解の助けや、練習場としても良いのではないかなとも。他のフレームワークで役に立つ知識かどうかについても考える...っていうのが、ハマっちゃわないためのひとつの観点かもしれません...なんて。PM初心者という言葉の厳密な定義をした方が良い。それがもし全くプログラミングの概念を知らない者という定義であるならば、同意できる。Rubyという言語範囲内でも根本的な理解がないままフレームワークによる抽象的なプログラミングを学び進めようとすると、少なくともそのフレームワークの枠の中に縛られることは間違いない。