質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.95%

PHPでWebサービスを作るなら、フレームワークを利用した方がいいですか?

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 1,808
退会済みユーザー

退会済みユーザー

私の理解が乏しく、漠然とした質問なのかもしれませんが、アドバイスいただけると嬉しいです。

現在、Qiitaのようにユーザー登録して、それぞれが投稿して、ストックできるようなWebサービスを作りたいと思い、勉強しております。

静的なWebページを作ったことはありますが、Webサービスを作ったことはありません。

作れるようになるために、下記について調べて理解しました。

  • HTTPの仕組み(メッセージの内容など)
  • Cookieとセッションの仕組み
  • HTML / CSS
  • PHP(基本構文、関数の使い方、クラス・例外処理の基礎、PDOを使ったDB接続・操作)
  • MySQLの基礎
  • 脆弱性(XSS、CSRF、セッションハイジャック・フィクセーション)の概要
  • セキュリティ対策(徳丸本で勉強中です)
  • デザイン関連(Photoshp・Illustrator)

今の段階では、書籍やネットなどを参考すれば、ユーザー登録、投稿、ストックという機能だけ(動くだけ)なら作れるレベルですが、セキュリティなど作り方に問題ないか不安です。

作りたいWebサービスに近づくためには、次に何を勉強した方がよいか調べていたら、下記のように初心者にはフレームワークを推奨する記事がありました。

私のような初心者が先述したようなWebサービスを作りたいなら、フレームワークを利用した方がよろしいでしょうか?
また、利用した方がよい場合は、お勧めのフレームワークはありますでしょうか?

それとも、フレームワークなどは利用せずにPHPをもっと理解して、素のPHPでガシガシ作っていく方がよいのでしょうか?

次のステップとして、どのようなことを勉強すればよいか悩んでおります。

近くに詳しい方もいないので、皆様から見て次にどのようなことを勉強した方がよいか、アドバイスいただけると助かりますm(__)m

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+7

この手の質問はどんな意見が出るかいつも興味深いですね。
恐らく色々な見解が出るかと思いますが、個人的な意見で言うと、「使ったほうがいい」と思います。

フレームワークは基本的なセキュリティ対策(XSSやCSRF等)が想定されて設計されています。
ググった結果などをコピペで作っていくよりは確実に安全なものが作れると思います。

ただ、PHPやMySQLの勉強とは別にフレームワークを覚えるための学習コストがかかります。
インストールで躓く方も結構いて、teratailや質問サイトでも動かせないみたいな質問が度々出ています。

フレームワークなどは利用せずにPHPをもっと理解して、素のPHPでガシガシ作っていく

本当はここから初めて欲しいし、そこからフレームワークの世界を知った時の感動を味わってもらいたいという思いもありますが・・・
ただ、実はフレームワークを使いながらでもPHPはガシガシ書くことになりますので、フレームワークを勉強するポイントが変わるだけで、総合的な学習コストは変わらないんじゃないかなぁと思ったり・・・

ちなみに、フレームワークの選定については「自分の手に馴染むものであれば何でもいい」と思っています。
たとえ「堅牢さがウリだ」とか「爆速フレームワーク!」というようなウリ文句があっても、自分がまともに扱えていなければその恩恵に与ることができないからです。
FuelPHP、CakePHP、CodeIgniter、Laravelなどなど有名どころを抑えておけば情報に困ることはないですし、この「フレームワークじゃ出来ない」というようなことはまずありません。

なお

次のステップとして、どのようなことを勉強すればよいか悩んでおります。

こちらの回答としては「とにかく興味の向いている方向から作り始めてみる」といいと思います。
最適解で悩んでいるよりもトライ&エラーを重ねていく方が最終的には一番の近道になります。

長々書いてしまった上に読みにくくてすみません・・・

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/25 22:39

    非常に参考になる回答ありがとうございますm(__)m
    今までも、「データベース使いたい→PDOについて調べる」「セキュリティについて理解したい→Cookie・セッションについて調べる」ということを繰り返してやってきたにもかかわらず、ここにきて、突出して興味あるところがなくなり、最適解や学習コストを求めてしまいました。
    また、PHPが先か、フレームワークが先かについても、鶏が先か、卵が先かという話で、最終的には低レイヤーレベルで理解する必要があるという不変的なことも見失っていたと思います。
    PHPにしても、フレームワークにしても、興味あるとこから順にやっていこうと思います^^
    回答ありがとうございましたm(__)m

    キャンセル

  • 2016/08/26 10:55

    ベストアンサーありがとうございます。
    順序立てて勉強していくのが得意なんですね。ちょっと羨ましい・・・

    ちなみに、私もte2jiさんと同じくCodeIgniterをメインに使っています。
    他のFWよりもマニュアルが読みやすかったことと、PHPの手軽(というか雑)な部分をそのまま生かしているような部分が気に入ったのですが、よりFW的と言うか、MVCという考え方をしっかり学びたいということであれば、他の3つの方がFWらしい使い方はできるかと思います。

    とりあえず上に挙げたFWをひととおり動かして2,3ページくらい作ってみるといいかもしれません。
    Composerの練習にもなりますし、チュートリアルも充実していますよ。

    キャンセル

  • 2016/08/26 13:20

    bananacoffee さんもCodeIgniterを使ってるとのことで、ますますCodeIgniterについて興味がでてきました^^
    アドバイスの通り、いくつかFWを試してみます。
    また、Composerというのもよく目にしますが、使ったことはないので、これを機に試してみます^^
    お忙しい中、何度もアドバイスありがとうございますm(__)m

    キャンセル

+6

フレームワークはよく使う処理を体系だって整理し、その処理を間違いが少なく実装できるように工夫さてたものです。ですので、Webサービスを作りたいなら、先人の知恵が詰まったフレームワークを利用した方が良いと思います。特にセキュリティ的に考慮が必要となる、Web系の入力系やDB処理に関しては、ケアレスミスをしない様にする実装が簡単にできるよう工夫されています。

ただ、フレームワークを使用するにあたって、中身を確認したくなることは度々あるので、素の
PHPもそれなりに理解できるスキルが必要です。
正直、私も学習中の身なので、フレームワークの中身を理解するのはかなりハードルが高いです。
まず、適当なサイズのWebサービスを自身で作成できるようになってからフレームワークを使用するのがオススメです。お作法が、フレームワークごとに違うので、手に馴染むものを使用するのが良さそうですね。私は、お手軽(?)な CodeIgniter を使用しています。

ちなみにですが、この回答はあなたが一人親方である前提です。どこかの組織に属するのであれば、問答無用でその組織の【仕様】を守る必要がありますので^^;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/25 22:44 編集

    フレームワークについての知識が乏しいため、非常に参考になります^^
    セキュリティに関しても、やはりフレームワークを利用した方が、初心者が実装するよりも堅牢なものが作れるんですね。
    また、フレームワークを使うにしろ、最終的にはPHPレベルでの理解は必要になってくるということなんですね。
    コメントにある CodeIgniter についても調べてみたいと思います。
    個人的なもので仕様はないので、興味があるフレームを使ってみたいと思います。
    回答ありがとうございましたm(__)m

    キャンセル

  • 2016/08/25 23:04 編集

    > セキュリティに関しても、やはりフレームワークを利用した方が、初心者が実装するよりも堅牢なものが作れるんですね。

    これは間違いです。フレームワークで実装できるのは、ケアレスミスを防ぎ、手順を最小化/ルーチン化する機能なので、セキュリティに関して初心者が実装するより堅牢なものが作れるわけではないです。
    きちんと何を守る機能かを理解し、実装しないとセキュリティ的な穴を開けてしまう事態もありえます。
    そのためにも中身が読めるスキルが必要になります。まぁ、中身でなくドキュメントでもイイですけど。

    キャンセル

  • 2016/08/25 23:28 編集

    なるほど、フレームワークを使えば堅牢なものが作れるのかと思ってましたが、単純化しているだけで、何をしているか、きちんと理解しておく必要があるんですね。
    フレームワーク使うときは、ドキュメントも確認します。
    ありがとうございます^^

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.95%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る