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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

5回答

2062閲覧

プログラミングはスポーツ?

johnbeetz

総合スコア31

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

PHP

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2016/10/22 01:25

編集2016/10/22 05:49

前回の質問で、サーバーサイドの勉強は自分で小さなシステムを作る事が一番の勉強になる!っと教えて頂いたので、スクレイピングで情報収集、csv出力、データーベースに登録、っといった小さな所から作成し、とても勉強になりました。

その反面、動くけど、自分の知っている範囲内のオブジェクトしか使わないので長くて汚いコードになるという問題に直面しました。

そこで質問なのですが、なんとなくいじって動くものを作ってから基礎を学習するのと、基礎をガッツリやってから動くものを作るのとでは、何かしらの違いがあるのですか?

私は、基礎を重んじるタイプなので後者の方法で勉強してきましたが、プログラミングはスポーツと一緒で、まずは身体で感じ、その次に頭脳を使うというスタイルがあってるのではと思い質問させて頂きました。

よろしくお願いします!

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

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

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

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

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

guest

回答5

0

ベストアンサー

(職業的)プログラミングはエンジニアリングだと、私は捉えています。

エンジニアリングは日本語だと「工学」になります。
じっさい、「情報工学」という言葉を聞いたことがあると思います。


それで、工学だとしたら何なのかですが、工学の特徴に合目的性があります。

経済学者と違って、投資家は投資(金融工学)で利益を上げる必要があるのと同じで、
数学者と違ってITエンジニアや組織は、プログラムを動かすだけでなく、
プログラムによって問題を解決し、最終的に利益を上げる必要があります。

(ただ、だから数学が不要というわけでもなく、分野によってはよく使います)


スポーツなどの競技でも、勝負に勝つという目的はあります。
しかし、エンジニアリングの目的は多目的であることが多いです。

陸上競技やカーレースなら、タイムの短縮が目的ですが、
プログラミングでは実行速度の早さは多くの目的のひとつです。

開発コストとかセキュリティとかデザインとか、
数多くの要素を総合的に判断する必要があります。


ご質問に戻りますと、動かしながら学んでいく、というスタイルは良いと思います。
しかし、動かせるようになった後で、さらに向上させるのが難しいんだと思います。

その「向上」と言っても、少しでも実行速度を早くするコードと、
保守しやすいキレイなコードを書くのでは、向上の方向性が違います。

また、最新の技術を学ばないと置いて行かれる場合もあれば、
「枯れた技術の水平思考」の方が有効な場合もあります。

ですから、プログラミングでは、自分がどういう方向を目指すのか、
目的意識を持って情報収集したり、アーキテクチャーやプラットフォームを
市場予測的に選択したり、計画的に設計したりする要素が大きいです。

それも広義のプログラミング、エンジニアリングのうちです。


それでけっきょく「具体的には何をするの?」といえば、
汚いコードが問題だと考えれば、「リファクタリング」のやり方を調べますし、
さらに機能を拡張したいと思えば、既存のクローラーの仕組みを調べたりします。

だから、まず適切に問題を立て、分析することから始めます。

投稿2016/10/22 12:19

LLman

総合スコア5592

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

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

johnbeetz

2016/10/23 01:36

おはようございます。 抽象的な質問にお答えくださり有り難うございました! ≫≫動かしながら学んでいく、というスタイルは良いと思います。 しかし、動かせるようになった後で、さらに向上させるのが難しいんだと思います。 そうなんです!独学で3か月間やってきましたが、情報収集が7割ぐらい占めてしまいました。一度、自分のすべき事が決まれば早いのですが、すべき事を初心者が達成できるように段階を分ける情報収集に多くの時間をさいているのが現状です。 情報収集も大切ですが、それに多くの時間を取られることに疑問を感じ、まずは動ける物を作って、その後に基礎を勉強したほうがいいのでは?っと思い質問あせていただいきました。
LLman

2016/10/23 07:19 編集

>情報収集が7割ぐらい占めてしまいました >それに多くの時間を取られることに疑問を感じ そのお気持ちはよく分かります。 しかし、調べ物の時間が多くなるのは普通です。 エンジニアとは違いますが、記者や学者は多くの時間を調査に割くはずです。 その調査をたんに省くと、たんに成果物のクオリティが下がってしまいます。 だから、調査や学習の時間を短縮したいなら、目的に特化する必要があります。 具体的にはたとえば、本文でも述べた「枯れた技術の水平思考」で、 技術が習得できたら、その技術の使い回しで何ができるか考えます。 やるかどうかともかく例としては、たとえばスクレイピングで 株価を取得すれば、株式などのシステムトレードへ発展できます。 ですから、エンジニアリングには創意工夫も有効です。 創意工夫によって、技術的資産を運用して増やせます。
guest

0

ここでの基礎って何だろうな?と考えてしまいました。

テキストサーバーサイドの勉強は自分で小さなシステムを作る事が一番の勉強になる!

これって基礎が詰まっているからこそだと思うんですよ。

その反面、動くけど、自分の知っている範囲内のオブジェクトしか使わないので長くて汚いコードになるという問題に直面しました。

基礎って色んなオブジェクトを知っているってことだけですかね?
オブジェクトがどう動くかとか、コードを汚く感じるとか、ここが改修できそうだと感じるのも基礎だと思います。つまり、システムを作るのは感性という基礎を作る場でもあるわけです。

感性なんか基礎でないと感じるかもしれませんが、日本語の基礎ができてる人って日本語の美しさを感じられる人じゃないですか。コードの美しさを感じられる人もコードの基礎ができてるってことだと思います。

投稿2016/10/22 11:51

matsu

総合スコア702

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

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

johnbeetz

2016/10/23 01:22

おはようございます。 抽象的な質問にお答えくださり有り難うございました! ≫≫システムを作るのは感性という基礎を作る場でもあるわけです。 なるほど!結局、プログラムは様々なオブジェクトの集合体なので、オブジェクトの知識量が増えれば上手く作れるのかな?っと思っていましたが、考え方が間違っていたようです。
guest

0

理想は両方を並行してやることだと思いますよ。
ひたすらコードばかり書いていても、きれいなコードをかけるようになるわけでないし、
ひたすら本ばかり読んでも、知識ばかり増えて、実際に作りたいものが書けるようになるわけでないので。
まぁ、手を動かすことを優先して、空いた時間に本を読んで基礎を学ぶのオススメです。
書いたコードをレビューしてくれる人がいるといいと思いますが。
また、きれいなコードを書くためには、他人のコードを読むことも大事だと思います。

サーバーサイドの勉強は自分で小さなシステムを作る事が一番の勉強になる!

これはそのとおりだと思います。いきなりやり方がわからない技術をたくさん使ったシステムを作るより、初めて使うものは一つに絞って徐々に機能を追加していくような勉強(開発)がいいと思います。

プログラミングはスポーツ?

自分はスポーツに似ているとは感じたことがないですが...まぁどんなものも考え方や学び方が似ていることはあるかもしれませんね。自分的にはプログラミングは、自分が書いたコードの通りにしか動かないという意味で、偶然性(運)がほとんどなく、すべては自分のやった結果である点が独特だと思いますね。(だいぶ脱線)

投稿2016/10/22 08:36

popobot

総合スコア6586

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

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

johnbeetz

2016/10/23 01:04

おはようございます。 抽象的な質問にお答えくださり有り難うございました! ≫≫自分が書いたコードの通りにしか動かない。 ここが面白いと感じはまりました!
guest

0

スポーツでも学習でも芸術のようなクリエイティブなものでも、上達するにはサイクルを継続して回す必要があると思います。

つまり実技と学習を交互に学習しつづけないと成長しないのではないでしょうか。
1サイクルで終ってしまうと、1サイクルで成長が止ってしまいます。

学習 -> 実技 -> 学習 -> 実技 -> 学習 -> 実技 -> 学習 -> 実技

学習からの方が入りやすい人は学習から入ればいいし、まずはやってみないとピンとこない人は実技から入ればいいと思います。

サイクルを回すのが重要です。

投稿2016/10/22 16:31

hana-da

総合スコア1728

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

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

johnbeetz

2016/10/25 11:57

返信遅くなって申し訳ございません! 抽象的な質問にお答えくださり有り難うございました! 実技からが私の場合は、良いです。 ありがとうございます!
guest

0

基本の詰まっているサンプルコードを見つけ出して、それを元に学習していくのが楽といえば楽ですね。
プログラミング言語なんて、モノにもよりますけど、そんな大差ないですし。

投稿2016/10/22 08:42

mugicya

総合スコア1046

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

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

johnbeetz

2016/10/23 01:04

おはようございます。 抽象的な質問にお答えくださり有り難うございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問