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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

6回答

5230閲覧

フレームワークばかり活用していると、WEBの基礎知識は付きにくいですよね?

spellbound

総合スコア190

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2017/09/12 02:19

編集2017/09/12 02:43

質問文に含まれている WEBの基礎知識 というのは、どの開発言語でも共通なことに対する知識です。

自分を例にして説明すると、現在はWordPressとLaravelのみ経験があり、PHPやSQLはフレームワークで必要な時にググりながら知識を付けています。一度も言語単体で勉強したことはありません。要は経験したフレームワークで何かすることに関しては半年ほどの経験で知識が多少付きました。しかし、PHP単体の知識は乏しいかと思います。

この状態で、急に会社の都合で、PythonのFlaskで開発しなければならないとなった場合、半年前の初心者の頃と同じような状態でスタートすることになるのが、不安です。もちろん、転職という選択肢はありますが、今は考えていません。

そして、その状態はエンジニアとしては良くないだろうとも思っています。

これで伝わるでしょうか...。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/09/12 02:24

質問者様においてのそもそもの「基礎力」という定義が曖昧に思います。
spellbound

2017/09/12 02:25

なるほど。わかりやすいように書きなおします。
m.ts10806

2017/09/12 02:27

Pythonについても初めてだから時間がかかるのか、どの辺りを想定しているか不明です。あわせて追記願います。
guest

回答6

0

ベストアンサー

PHPやSQLはフレームワークで必要な時にググりながら知識を付けています。

そもそもマニュアルを完全に暗記できている人はそうはいないと思います。
「こんなのあったはずだけど、実際どう書くんだっけ?引数とか省略可能だけど色々設定できたような・・・」みたいな感じでPHPマニュアルを確認して適切な使い方をするのが普通です(少なくとも私はそうです)

というか「Webの基礎知識」より「プログラミングの基礎知識」が不足しているのではないでしょうか?
つまり

WEBの基礎知識 というのは、どの開発言語でも共通なことに対する知識です。

からも何となく伺えるのが「Webに限ったことではない」ということですね。

フレームワークもなんとなく「結果できればOK」で組んでいませんか?
もしかしたらもっと簡潔で良い書き方、表現があるかもしれないとか、「普段から考えて組んでいる」かどうかにかかってきます。
組み方に正解というのはありませんし、お客さんにとっては結果が同じなので中身まで気にされることは殆どありません。(もっと言えば言語もお客さんにとっては関係のないものです)
しかし、いざ追加・改修・・・となったときに差が出てきます。
フレームワークも開発を効率的に進めるため(はては後々のメンテナンス性を高めるため)のツール・道具に過ぎないと思っています

今現在、LaravelなりWordpress(こちらはフレームワークではなくCMSですが)なりが持っている機能を最大限に活かせたサイトが出来上がっているでしょうか?
というところを突き詰めてみると、「フレームワークばかり活用していると、WEBの基礎知識は付きにくい」という考え方には至らないと思います。

言い方は厳しいかもしれませんが、現時点で最大限使えていないから他の環境に、となったときに不安があるのでしょう。
言語は違ってもロジックは変わりません。お作法さえきちんと抑えればおおよそ同様に組めるようになるものだと私は思っています。

PHP単体の知識は乏しい

これが自身の不安を物語っていると思います。
乏しい知識の中でフレームワークを使っていたら、それは最大限活用できるはずがないです。他の言語にいっても結果は変わりません。

考え方を前向きにすると、今現在でもPHPですらほぼ初心者のようなものなわけで、じゃあ、Pythonも初心者のような状態で迎えるわけです。覚えること・やることが沢山あって大変かもしれませんが、組みあがって、それが動く喜びを味わえると思いませんか?
会社側も経験半年そこらの開発者に最初からバリバリできるって期待は持っていないと思います。
ある程度の学習期間は設けられるでしょうし、会社がやるとなったからには一応ちゃんとできるPython技術者はいるんでしょう。

開発は1人で回していくものはほとんどないので、これを機会にロジックを考える、プログラミングをするというところからしっかりと身につけていってはどうでしょうか?

投稿2017/09/12 03:02

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spellbound

2017/09/12 06:06

自分がPythonを使うプロジェクトに今すぐ行くというわけではなかったんですが、将来的にあり得ると思い、質問に至りました。 おっしゃる通り、まだまだ言語もフレームワークも理解が乏しい状態です。 差し当たって、現在はPHPを会社で使っているので、プライベートな勉強時間もPHPを活用したいと思います。まずはPHPで即戦力と思ってもらえるようなスキルを付けます。他の方もおっしゃっていますが、言語もフレームワークも一つは深く勉強したいと思います。ご回答して下さり、ありがとうございます。
m.ts10806

2017/09/12 06:53

他の言語を覚えるにあたりPHPは適切な言語かというと△な部分がありますが不適切ではありません。しっかりとしたロジック(=組む際の考え方)を学ぶのに言語は関係ないと思っています。 半年程度とのことなのであせる必要はありません。まずは今できるPHPをしっかりと使いこなせるようになることですね。 「人を一人前にできてこそ一人前と言える」というような言葉があります。 今自分が組んでいるソースがどのような意図で組んでいてどのような効果があるのかを人が理解できるように説明できたときが「身についた」と言えるときだと思います。
spellbound

2017/09/12 09:47

他人にも各コードの意図や意味を伝えられるように努力します。 > フレームワークもなんとなく「結果できればOK」で組んでいませんか? これはおっしゃる通りかもしれません。エラーに躓いたらとにかくググって解決できたら良しと思っていました。もっと意識しでコードを書くべきだと振り返って思いました。まだ早い段階で初心に戻ることができ、良かったです。どうすれば賢いコードが書けるのかを意識してコードを書きます。 本当にありがとうございました。
guest

0

Web で必要な処理ってざっくりと言ってしまうと

・ルーティング処理
・リクエストの受付
・DB 操作
・データ加工
・画面出力

になるかと思いますが、teratail での質問を見る限り、フレームワークから入った人と素の言語を触っている人で、その処理に対しての理解度合いが大きく違うといったことは無いように感じます。どちらかと言うと、「根源的な挙動に興味があるかないか」で学習の進度が変わってくるのではないかと。

ただし、フレームワーク使用者が「根源的な挙動」に興味を持たないケースはワリと見受けるので、「フレームワークばかり活用していると、WEBの基礎知識は付きにくいですよね?」なんてことが言われてしまうんだと思います。

とりあえず動かすだけなら、「根源的な挙動」なんて知らなくてイイやって態度ですね。CMS 利用者にも同じような傾向は見受けられます。

私は素の言語から学習していて、フレームワークの使用の知見はあまりないのですが、フレームワークから入ったとしても、その挙動を確認しようとすると、やはり上記の処理に対しての理解が必要となるので、その理解進度に差は出ないように思います。

投稿2017/09/12 10:11

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spellbound

2017/09/12 10:24

なるほど、ベストアンサーを出した後でしたが、非常に分かりやすいご回答ありがとうございます。 根源的な挙動を知る努力が必要なのかもしれません。フレームワークを使用していても、深くコードリーディングを行えばそれを理解することはできるということですよね。正直にいうと、そこまで興味がある内容では無いんですが、必要だと感じたので、努力して学習したいと思います。ありがとうございます。
guest

0

新しいものに手を付けるというのも有用だと思いますが、一度なじみの深いフレームワークを掘り下げることでも、基礎力は身につくのではないでしょうか。

フレームワークで実現していることを、どのように実現しているかという視点で見直してみれば、なじみ深いだけに、新しいものに手を付けるより理解が早い部分があるのではないでしょうか。

(質問に加筆されたので)追記

不安を拭いさる一番の方法は、汗をかくことだと思います。
投げ出さず、諦めず、ひとつの事を全うする為に汗をかけば、それが自信となり多少の事では動じない耐性が身に付きます。

努力はあなたを裏切りませんから。

投稿2017/09/12 02:32

編集2017/09/12 03:22
sazi

総合スコア25186

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spellbound

2017/09/12 02:45

> フレームワークで実現していることを、どのように実現しているかという視点で見直してみれば、なじみ深いだけに、新しいものに手を付けるより理解が早い部分があるのではないでしょうか。 なるほど。Laravelを使ってアプリケーション開発をしたとしても、適宜、その裏側の仕組みもコードリーディングすることで、基礎力は付くということでしょうか。
sazi

2017/09/12 03:03

メジャーなものであれば、解説の類も多いでしょうし、そもそもアーキテクチャ的な説明はそのフレームワークのリファレンスにあるものだと思っています。
spellbound

2017/09/12 09:44

言語だけでなく、各フレームワークの深いところまで学習しながらアウトプットをしていきます。 そうですね。「努力はあなたを裏切りませんから。」を見て、もっとコードを書く量を増やさなければならないと思いました。ありがとうございます!
guest

0

フレームワークばかり活用していると、WEBの基礎知識は付きにくいですよね?

いいえ。
そうとは限りません。

例えばLarabel等のよくあるMVCフレームワークは下記を楽するためのフレームワークです。

  • DataBaseとの連携 (Codeigniter等の非対応のフレームワークはある)
  • 認証周りとルーティングの切り離し (controller)
  • ビジネスロジックの切り離し (model)
  • 画面描画の切り離し (view)
  • つまらないセキュリティホールを作らないサービスの提供 (適切なエスケープ)

これ以外のWebアプリケーションとしての魅力や価値を引き出すのはビジネスロジックです。
魅力や価値のないWebアプリケーションをいくら作っても(エンジニアとして成長出来るかもしれませんが)エンジニアリングでお金をいただくことは出来ません。
ビジネスロジックを実現する能力は基礎に含まれると思うんですがいかが?

まぁ、その根っこになるフォルダ分けの構成をベストプラクティスに乗って横着したくらいで揺らぐ程じゃありません。
WebサイトをPHPフルスクラッチで書いてる人間を数人知っていますが、
その人の多くはその時点で疲れてしまってより良い書き方を探すことをせず成長が止まってしまっています。

Larabelなんかは筋の良いフレームワークだし、殆どのコードはPHPで書かれているので、
上記のメリットの部分が気になった時にソースコードを読めば簡単(ではないかも知れませんが)に習得できます。

急に会社の都合で、PythonのFlaskで開発しなければならないとなった場合

大部分のPHPエンジニアが抱える問題と同じです。
速度的な面でScalaやElixir、機械学習の面でPython、SPAを実現する為にJavaScript(Node.js)で開発せざるを得ない状況にいつかぶち当たるかもしれません。

MVCフレームワークは言語を超越したWebサイトを構築するノウハウなんで、
Larabelの深い知識があれば簡単に乗り換えられるでしょう。

ただまぁ、言語はPHPとは言わず、何か一つの言語しか出来ないってのは弱い状況なんで勉強することはおすすめします。

そして、その状態はエンジニアとしては良くないだろうとも思っています。

しばらくは別にいいんじゃないですか?

頑張ったからと言って急に倍の仕事がこなせるわけじゃないんだし…
ゆっくりしっかり力を付けていくのが確実です。

投稿2017/09/12 10:24

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spellbound

2017/09/12 10:42

元々マーケティングを専攻していたり、UI/UXデザイナーとして在学中に受託をしていたので、一般的な新卒エンジニアよりはビジネスロジックのスキルは高いかもしれません。しかし、誇れるほどの実績が無いため、その点も意識して伸ばしていこうと思います。 Laravelが筋の良いフレームワークだと教えてくれる方が多いため、安心してプライベートで学習を進めていこうと思います。 多くのPHPエンジニアが悩むポイントなんですね。仰る通り、レコメンドエンジンを作る案件もやるかどうかは別としてイシューとしてあったりするので、Pythonの重要性を感じています。いつか悩むということを考えながら仕事したいと思います。 差し当たって、HTML5, CSS3, JS(Vue.js), PHP(Laravel, WordPress, Slim)のスキルを伸ばしていこうと思います。ある程度、深い知識とスキルが付いた時、Pythonで統計解析を行ったり、Laravelの経験を活用して、DjangoでWebアプリケーションを構築したりして複数言語の取得を目指したいと思います。 ご助言ありがとうございます。
guest

0

極論を言ってしまうと、
「最後にはWiresharkでパケットを見て、捌くプログラム(アセンブラレベルからPyhtonレベルでも可」
というところになってしまいます。

でも、
「そこまでの知識が必要か?」
と問われたら、今日では多くのライブラリがセキュリティホールをつぶしているので、それを使ったほうが安全ということになりますでしょうか。

話はずれますが、関数型プログラミングをする際に圏論の知識は必要かという話にも似てるなと。

別にHaskellやElmやSchemeを使う分には、圏論を知らなくてもプログラミングできます。問題は、
「その考えを踏まえた言語を実装するとき」
です。


フレームワーク間での差異に戸惑うことがあると認識しますが、わりとその辺は言語を広く浅く触っていれば、何となくわかってくるものだと楽観的に考えております。

まずはいろんな言語をCLIアプリレベルで触ってみて、
「へぇ、こういうものなんだ」
程度にわかっておけば、他への応用がそのうちできると思いますよ。

肩肘張らず、
「俺の考えてるそれと違う」
を受け入れられれば、基礎力もおのずとついてくるのではないかと思います。


最後に、まったく励ましにならないと思いますが、自分の拙い質問とそれにまつわる記事へのリンクを貼って、私の回答とさせていただきます。

投稿2017/09/12 02:44

manzyun

総合スコア2244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそも普通は基礎を身に着けてからフレームワーク使うのでは…。

投稿2017/09/12 03:02

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spellbound

2017/09/12 03:58

そうですよね... TECH:CAMPというプログラミングスクールに通っていたので、そこではLaravelを学びました。 そのせいもあって、基礎力が足りていないと思うようになりました。 おっしゃる通りですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問