プログラミングの勉強の件でアドバイス下さい!


このはてなから皆様のアドバイスのおかけでPHP&mysqlを使ったウェブサイトをつくることができました!ありがとうございます!

今回質問したいのが次に何を勉強していけばいいか?ということ。
【自分の保持スキル】PHP&mysql(初心者レベル)(cakephpなどフレームワークなし)、html

【実現したいサイト例イメージ】
http://pazudora-friend.com/
http://luidas.com/pazudora/
http://sdsm.biz/pzdr_bbs/
http://tak1.info/

パズドラのそれぞれのユーザーにひもづくIDがありまして、他人のIDをもとにフレンドになっていくというものがあります。(どんなモンスターを使っているか等希望をのせれます)

PHPでできると思いますが、画面遷移などさせずになど考えておりJAVAスクリプト(jQuery含含む)の知識を身につければ開発が可能ではと思っておりますがいかがでしょうか。

際限はないと思いますが、JAVAスクリプト以外にこれを勉強した方がいいなどありますでしょうか?
ざっくりな質問で恐縮ですが、おおまかで結構ですのでこれとこれをやっとけみたいな感じでいただけると幸いです。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2013/12/13 13:20:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:language_and_engineering No.1

回答回数170ベストアンサー獲得回数63

ポイント100pt

絶好調さん,初期のステップから見守っておりましたが,ここまでよく頑張りましたね。

今後も絶好調でいらっしゃってください。


さて,プログラミングの勉強法の件ですが,常に

  • 「初めに目的ありきで,それを達成するためには何を勉強したら良いか?」

という考え方をするのがよいです。

あのid:amachangも支持している,非常に適切な勉強法です。下記をお読みください。

遅延評価的勉強法 - IT戦記
http://d.hatena.ne.jp/amachang/20080204/1202104260


今回の場合は,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や仮想化ソリューションも必然的に使えるようになっているでしょう。


以上のように,ニーズをベースにした勉強法と,シーズをベースにした勉強法のバランスを取るのがベストです。
これで,少し先が見通せるでしょうか。

他1件のコメントを見る
id:language_and_engineering

末尾の部分の習得すべきスキルに追加:

・肝心なテスト工程の話が抜けていました。自分が作ったプログラムとWebアプリのテスト方法,できれば自動テストの方法。テストコードを書くかどうかで,ちゃんとしたプログラマかどうかの境目になります。

・スマホアプリやタブレットアプリとの連携方法。さいきんはHTML5がそのままアプリになるのに加えて,Webアプリのままだとモバイルユーザを引き込みづらいという時代なので,Webアプリを「スマホアプリ化する」という工程も視野に入れて下さい(iOS + Android対応)。あまり難しくないし,そういう時代なんですよね。

・WebサイトをSNSと連携させる方法。TwitterやFacebookやmixiなど。どのSNSを選んだらベストなのかは,サイトごとの性質による。例えば,特定のゲームのプレーヤがよく使っているSNSはどれか。これも,時代の流れで必然的に必要になってきます。要はマッシュアップ,またはWeb APIの活用です。

・いろいろ試しているうちに,クラスやオブジェクトという言葉が出てきたら,ある時点でオブジェクト指向に手を付けましょう。で,PHPでオブジェクト指向は厳しいので,一時的に別のプログラミング言語(RubyやJava)をかじって,デザインパターンやUMLダイアグラムに触れておきましょう。そうすれば,ネット上に載っている技術的な話題を理解しやすくなるし,良いコードを素早く書けるようになるし,ダウンロードした各種ライブラリを適切に利用する助けにもなります。プログラミングの勉強で避けて通れない部分です。

・時代もどんどん移り変わっていきますから,ここまで書いてきた項目をやっているうちに,習得すべき項目もその時点で新しいものが出現しているはずです。まずは,この分野なら任せろという得意分野を2~3個持って置いて,困ったら自分の得意分野でとりあえず解決できるので心配なし,という状態に持っていきましょう。広く浅くしておいて,なおかつ少数の分野ではエキスパートを目指すというわけです。そして現在言えるのは,jQueryのエキスパートになっておけばリターンがでかい,という状況が今後とうぶん続くという事です。jQueryワールドを押さえておけば,HTMLやCSS,デザインの話やサーバ側の話も一挙に解決できたりするので・・・。

2013/12/06 22:42:50
id:akakak

lang_and_engineさんこんなにも詳しく書いていだたいたにも関わらず返信遅れたことお詫び申し上げます。
またいつも適切な解答誠にありがとうございます。
ご指導いただいた内容の半分も今は理解できてなかったので、早速この画面を印刷して何度も読み返し勉強したいと思います。
私技術力はまだまだなのですが、今年ネットビジネスで成長することができました。その中で、例えば飲食では心地よいサービスを提供する。それとネットサービスも同じで、顧客の課題やニーズを解決するものというのだというのを確信することができました。
そのような事もあり、もっと世の中をよくするためにfacebookやlineといったサービスに負けないようなサービスがつくれないだろうか?世代毎にネットをつかえなくて困っている人はたくさんいるだろう?などなど勉強やウェブサービスを運営していくなかで学ぶことができました。
これもはてなを通して様々な人が指導してくれたことが多きかったと思います。
また、プログラミングも気合があればある程度まではできるという自信がつきました。最初友人の優秀なエンジニアに頼もうか悩みましたが自分でやって得る物が大きかったです。
来年は本格的に事業を拡大する下地ができました。
その拡大に向けて、学び続けることが大事だと思いますので何が目的かをきっちりと見据えてがんばりたいと思います。
ほんとうにありがとうございます。

2013/12/24 21:46:10
  • id:language_and_engineering
    コメントをお読みしました。

    私以外の回答が付かなかったのが少し意外かつ残念ですが,今後に多少なりともお役立てれば幸いです。
    (印刷するほどかな…。)

    また別の機会にも,ちょっと角度を変えてご質問されれば,どなたか秀逸なアンサーを付けてくれるでしょう。



    ネットビジネスでの成功から,Webサービスの立ち上げへ回帰なさったお方だったんですね。

    ITの世界では,あなたのような人が,起業家になります。

    学生が始めたFacebookも,ネット黎明期に単なる電話帳だったYahooも,
    その他シリコンバレーにいる皆も,自分のまいた種が一大Webビジネスになって
    自分たちが後から起業家と呼ばれるとは思いもよらなかったかもしれません。

    だけど,あなたの場合はドリームラインがありますね。
    そのガッツを失わないでください。
    勉強の意欲や方法論のこまごました事は,ガッツ(情熱)についてきます。

    そのガッツを失ったらオシマイです。
    残業してキーボード打つだけのプログラマーになり下がってしまいますよ。

    書籍の「情熱プログラマー」を読むといいです。
    そして,ご自分のゴール到達までの間に困った事があったら,いつもその本を原点として出発し直すんです。
    http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06793-8

    これは,「達人プログラマー」「アジャイルプラクティス」「プロダクティブ・プログラマ」などのバイブルに並ぶ名著です。



    ご自分でバリバリ書いてみて,いろいろサービスを立ち上げてみる時期を経るのは,すごい貴重な経験ですね。
    あとでマネージャになるとしても,その数年間の経験は必ず後から生きますよ。

    なぜかというと,自分でバリバリコードを書いてた経験を持ってれば
    「技術者の素質を見抜く目」を養う事ができるので,
    仲間になってくれる優秀な友人達を得やすい・雇いやすいんです。

    逆に,世の中では,コーディングをした事のない人がプログラマーを雇って
    指揮を振るってるので,うまくいかないで破綻するプロジェクトも多数です。

    自分自身の技術的な個性がはっきりしていれば,その個性が光りますから,
    同じような考え方を持つ仲間も見つけやすいんですよ。



    大企業の歯車として動く場合は,アドバイスの申し上げ方もまた異なってくるんですが,
    今回はベンチャースピリッツを持った方へのアドバイスですよね。
    しかもはじめからビジネスを十分意識なさっていて成功経験もあると。

    そうすると,Web/ITビジネスのはじめ方としては,
    「はてな」取締役の id:jkondo 氏の経験がひじょうに参考になると思います。
    もしかしたら,部分的には似たようなルートをたどるんじゃないでしょうかね?

    彼もWebに対して社会的使命感を感じていて,その後サービスを立ち上げ,
    自分でエンジニアとマネジメントの両方をしました。

    株式会社はてな 代表取締役社長 近藤淳也さん | 就職ジャーナル
    http://journal.rikunabi.com/p/special/entrepreneur/6812.html



    あとは,私が書いた記事の中から,ここで役に立てそうなものを見つくろったのですが
    下記3つをここに残そうと思います。

    起業家ではなく主にプログラマ・SE向けの内容ですけど,
    基本理念は共通して役立つはず。


    ---

    エンジニアとして,成功するための5つの秘訣 (3つのIN,2つのOUT) - 主に言語とシステム開発に関して
    http://d.hatena.ne.jp/language_and_engineering/20101113/p1
    -どうやって勉強のバランスを取ったらよいか。やりすぎたり,やらなさすぎたらどうなるか。毎日,どういうルーチンを積み重ねたらよいか。


    仕事がストレスなら,知識を増やせ。 SEの視点での書評:「勝ち残りSEへの分岐点」 - 主に言語とシステム開発に関して
    http://d.hatena.ne.jp/language_and_engineering/20110411/p1
    -技術に関わる仕事をするにあたり,スランプに陥るような時がかりにあるとしても,「知識」はどう助けになるか。


    私が尊敬するプログラマー,5人 (「好みを持つこと」の重要性について) - 主に言語とシステム開発に関して
    http://d.hatena.ne.jp/language_and_engineering/20130927/FiveBestFavoriteProgrammersIRespect
    -技術者として成熟した段階なのであれば,どういうタイプの質問に即答できるはずか。そうなるためには,どういう思考法をすれば良いか。

    ---
  • id:akakak
    コメントありがとうございます。

    名前も顔も存知あげない、lang_and_engineさんとつながりアドバイスをいただくことができるはてなというサービス、そして、ウェブの魅力にあらためて気持ちが高ぶっております。

    早速、情熱プログラマーを購入しました!アマゾンから届くのが楽しみです!

    書かれている記事なども拝見し、勉強になりました。
    ありがとうございます。

    今後は、市場が何を求めているか?これはウェブ会社などのリサーチ会社などを通さず、街に出ていろんな人にアンケートを取って必要な物を実感したり、どんな目的でサービスを作り上げるかを具体的に考えたいと思います。
    *個人的にはネット社会だからこそ人に直接聞いていく、そのあたりが非常に大事なのではと今は思っております。

    その上で、自分の技術力のインプット。

    同時に、仲間をつくっていきながら開発と改善を繰り返していくみたいなことを考えております。

    また、質問をすることなどもあるかもしれませんが、今後ともよろしくお願い申し上げます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません