質問: プログラミングの勉強の件でアドバイス下さい! このはてなから皆様のアドバイスのおかけでPHP&mysqlを使ったウェブサイトをつくることができました!ありがとうございます! 今回質問したいのが次に何を勉強していけばいいか?ということ。 【自分の保持スキル】PHP&mysql(初心者レベル)(cakephpなどフレームワークなし)、html 【実現したいサイト例イメージ】 パズドラのそれぞれのユーザーにひもづくIDがありまして、他人のIDをもとにフレンドになっていくというものがあります。(どんなモンスターを使っているか等希望をのせれます) PHPでできると思いますが、画面遷移などさせずになど考えておりJAVAスクリプト(jQuery含含む)の知識を身につければ開発が可能ではと思っておりますがいかがでしょうか。 際限はないと思いますが、JAVAスクリプト以外にこれを勉強した方がいいなどありますでしょうか? ざっくりな質問で恐縮ですが、おおまかで結構ですのでこれとこれをやっとけみたいな感じでいただけると幸いです。
回答: 絶好調さん,初期のステップから見守っておりましたが,ここまでよく頑張りましたね。 今後も絶好調でいらっしゃってください。 さて,プログラミングの勉強法の件ですが,常に * 「初めに目的ありきで,それを達成するためには何を勉強したら良いか?」 という考え方をするのがよいです。 あのid:amachangも支持している,非常に適切な勉強法です。下記をお読みください。 遅延評価的勉強法 - IT戦記 今回の場合は,Webアプリにこんな機能を持たせたい,という夢や要望をたくさんリストアップして下さい。 それらが目的(ゴール)で,習得すべき技術を吸い寄せる,強力な磁石のような働きをしますよ。 それら作りたい機能の一つ一つの実現のために,習得すべき技術やライブラリ等が,そのつど見えてくる。というわけです。 たとえば,サイト例の一つ目のように 「パズドラに関連したニュースを自動的に収集してトップページに掲載したい」 という目的があれば,web上のクローラやボット,バッチ処理,XPATHを使ったページ解析,RSSの扱いなどを習得する必要に迫られます。 「サイトをしばらく運営したら全体が重くなってきたので速度を改善したい」 という要望があれば,その願いをかなえるために DBのインデックス,SQLのオプティマイズ,キャッシュ機構の導入,ブラウザ上でのパフォーマンスアナライザの使い方と読み方,Webアプリのベンチマークの取り方,サーバのレプリケーションやクラウドサービスの導入 などの先端Web技術を,否が応でもいっきに学ぶことになります。 実現したい機能という目的があれば,手段(習得したい技術)は吸いついてくるんです。 なので,夢を持ち続けてください。 その夢をWebアプリの機能レベルに分解して,機能の実現方法をその都度調べ, 一番いい方法がどれなのか迷ったら,複数の手法を試して比べてみたり, どの方法がお勧めかを他人に尋ねればいいんです。 自分が作りたいものを作るわけですから,モチベーションを常時保ち続けることが可能になりますよね。 逆をやってしまうと,あまりモチベーションが無いし,時間をかけた割に喜べる成果も出ないので,途中でプロジェクトが立ち消えになってしまいますよ。 以上が,ニーズとシーズに分けた場合の「ニーズありき」の考え方です。 次にシーズをベースにした勉強法という考え方ですが, まだ利用目的のわからないシーズを,一定量集めておくのは良いことです。思わぬアイデアが浮かぶので。 feedlyなどのRSSリーダか,またはGoogleアラートなどの通知サービスを使って,自分の関心のある技術領域をキャッチアップし続けましょう。 たとえば「Wordpress」というキーワードでアラートを作っておけば,それに関連した最新情報を自動的に入手してゆけます。 ただ漫然と本やサイトを眺めているだけでは,どれが自分に役立つのか判断しづらいので,キーワードを絞って情報収集をし続けるのです。 そして気になったものがあれば使ってみます。良いなと思ったら自分のサイトに導入します。 このサイクルを繰り返します。 ジェネラルなWebアプリのスキルで言うと,下記のものの基礎は順番に押さえておきましょう。 ・html5,CSS3,モダンなJavaScript,jQuery。jQueryは,今回の場合だと,特にAjaxとUIの充実の情報。およびそれらをブラウザ上でサクサク取り扱うための開発ツール(Firebugとかデバッガ類)に習熟しておく ・いまどきのマルチデバイスに対応するためのレスポンシブ関連の話題(Webアプリをスマホとかタブレットでも使いやすくしておく) ・GIMP等,画像加工やデザイン処理の取り扱い。デザインやUIなど見せ方全般の話題 ・SEO等,人気のあるWebサイトとして成立させるためのマーケティング技法,もしくはアクセス解析技法 ・Webアプリのパフォーマンス関連の話題 ・Webアプリのセキュリティや脆弱性関連の話題(これは知っていないと深刻です) ・MVCモデルやフレームワークでWebアプリを設計することのメリットと実現方法。つまり設計やアーキテクチャの話(そのうちメンテしきれなくなって必ず必要になります) ・だんだん進んできたら,ネットワークの勉強をしてから,クラウドへの移行が必要になってくるかもしれませんのでその辺の話題へステップアップ。ここまできたらLinuxや仮想化ソリューションも必然的に使えるようになっているでしょう。 以上のように,ニーズをベースにした勉強法と,シーズをベースにした勉強法のバランスを取るのがベストです。 これで,少し先が見通せるでしょうか。