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

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

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

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

Q&A

解決済

8回答

5021閲覧

teratailランキング上位の方の思考が知りたいです。

ryu01212008

総合スコア26

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

4グッド

15クリップ

投稿2018/08/02 02:27

編集2018/08/03 14:11
独学で勉強しながら、仕事をしており、JavaScriptやjQueryなども 既存のコードであれば、ネット上に使用方法があるので扱えるようになってきたのですが、 壁にぶち当たりそうになってきているので、どのような思考をすればランキング上位の方達 のようにどんな質問でも答えられるようになるのでしょうか?・・・と疑問が湧いています。 そこで、以下の質問に答えていただけますと幸いです。

###Q1.JavaScriptで既存のコードを使わずに自分で開発するまでにどれくらいの制作期間を要するのでしょうか?
※プロジェクトによって全然変わると思うのですが、例えば、最近WEBサイトでよく見る
トップページで独自の画面ロードアニメーションの後に、サイトが表示されるもの
参考:https://www.m-hand.co.jp/

###Q2.ランキング上位者の方達はコードの引き出しが非常に多いように感じるのですが、全て暗記しているのですか?
※私はコードを覚えきれないので、自分の雑記ブログにメモ用に保存して、忘れた都度開いて使用しています。
※パソコンのテキストの暗記機能も使っているのですが、どのように登録したのか忘れてしまうときもあるので不便に感じています。

###Q3.暗記以外で効率よくコードを引き出す方法などがあれば教えてください。

###Q4.JavaScriptやjQueryをマスターする上で参考になる書籍や学習コンテンツがあれば教えてください。
※ドットインストールとプロゲートで基礎学習は一通り学習したため、時間はかかりますが既存のコードを読むことはできます。
必要箇所のみの編集はできますが、応用して編集することができません。

###Q5.上位者の方達は複数言語をマスターしているように見受けられるのですが、初学者の私でも広く浅く理解しておくべきでしょうか?それともJavaScriptやjQueryをまずマスターすべきでしょうか?

お忙しいところ恐れ入りますがご回答いただけましたら幸いです。
よろしくお願いいたします。

ForestSeo, aaaaaaaa, fa11enprince, naomina121👍を押しています

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

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

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

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

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

kei344

2018/08/02 02:55

質問タグをteratailのみにされることをお勧めします。
papinianus

2018/08/02 04:13

上位の定義が欲しかったです
ryu01212008

2018/08/02 04:42

すみませんでした、特に定義はなくトップページのユーザー上位ランキングによく入られている方をイメージしておりました。独学でやっているため、この方達がすごいなと思って尊敬している意味で、私のような初学者からしたら多くの方の成功失敗事例が大きな道しるべになると思っております。
bwz61366

2018/08/02 06:04 編集

JavaScriptのタグはともかく、PHPやWordPressはまったく質問文に出てきておらず、関連のないタグ付けといえます。PHP, WordPressタグを外してください。
ryu01212008

2018/08/02 07:19

大変失礼いたしました。タグを削除いたしました。
m.ts10806

2018/08/02 23:22

最初に指摘されていますが「teratail」タグのみにしてください。JavaScriptやjQueryといった具体的なタグをつけてしまうと、質問内容にコードが出てきませんし、単なるアンケート(=非推奨)になってしまっています。
ryu01212008

2018/08/03 14:12

対応遅くなり申し訳ありません。タグをteratailのみに変更いたしました。
guest

回答8

0

ベストアンサー

上位という自覚はないのですが、回答依頼いただきましたし、折角ですので回答してみます。

の前に

どのような思考をすればランキング上位の方達

のようにどんな質問でも答えられるようになるのでしょうか?

いずれも「今持ちうる知識技術で即答えられそうなもの」「ちょっと調べれば分かりそうなもの」
に対してのみ回答しているパターンが殆どかと思います。
わざわざしっかり調べてしっかり組んで・・というところまでのものは中々見ません。
特に夏休みに入ったからか丸投げ質問が一気に増えた気がするので、指摘コメントだけして、ということもあります。
(私は社会人なので夏休みらしい夏休みはあまりとれるわけじゃないですけど)

1. 逆質問になってしまいますが「既存の定義」って何でしょう?
お仕事で作る場合って必ず「納期」がありますよね。1分でも1秒でも早く納品できればそれに越したことはないわけです。

であれば、ネットで拾ってきたコピペコードであろうとプラグイン・ライブラリであろうと過去に自分や別のプロジェクトが作ったものであろうと流用できるものは流用すべきです。
もちろん要件をきちんと満たせるか、何かあったときに自分で責任をもってメンテナンスができるか は必須です。

この質問への回答にはなってないですが、「0から作る」ということはお仕事ではまずありません。使える部品を集めて組み立てる作業と思ったら良いです。もちろん「部品の集め方」はそれなりの経験や知識が必要ですが。

2. 既に回答にも出ていますが、暗記しているものなんてほぼありません。ある程度整理された知識はあると思いますが、「こうすればこうできる」というロジック・思考部分ですね。この思考がしっかりしているのだと思います。

「想像力」あるいは「創造力」と置き換えても良いかもしれません。
質問には(一部を除いて)「要件」が必ずあります。その要件に対して「こうすればその要件を達成できる」という過程を考え、仮説を立てて実証していきます。

図書館に勤務している人が何千、何万冊とある本のタイトルと置き場所を全て覚えているとは限りません。
「大体この本ならこのコーナーにあったはず」と、その場所に行き着くまでの「情報」を点で持っていて、つなげていって線にする作業を頭の中で、または実際に赴いて行っています。
それに近いものがあるのではないでしょうか。

「こうすればできそう」という仮説を立てて、あとは組んでみて、足りないところを検索して調べて補って解決につながる回答(またはそのコード)を作っていっています。

3. 2.で答えたとおりですかね。元々マニュアルやリファレンスを1字1句間違わず覚えているわけではなく「こんな感じだった」くらいの記憶なので、まずは何よりも先に公式の資料を確認します。
そこでは簡単なサンプルコードも載っていますし、関連する機能へのリンクもあります。
あと回答してみたいのでしたらある程度組みあがっているコードが提示されている質問を見てみると良いです。

そこで自身の環境で再現確認してみて、要件・問題の解決につながりそうな方法を模索してみる感じですね。単体のプログラムであれば即実行できるサービス(Paiza.ioなど)もあるので、ものによってはわざわざ自身で準備しなくても良いといえば良いです。

4. あまり書籍派ではないので具体的に紹介できるコンテンツはないのですが、公式リファレンス・公式マニュアルの場所と見方を知っておくことは非常に大事です。
あと、おおよそ基礎的なところはできているとのことなので、「まず手を動かす」「作る」ことですね。
理論だけ知っていても実際に作ったという経験がないと、散らばった点と点を線にする作業に時間がかかってしまい、中々進みません。

まずは自分が作りたいものを作るのでも良いですし、真似したいものを実際に動かしたりしてみて構造を想像して再現してみるというのもありです。私は良く「既存のサービスでも事足りるけどあえて自分で作ってみる」というのを合間を見てやっています。

そうすることで得られる経験は必ず問題解決の場で役に立ちます。

5. 自身が目指したいものによって決めれば良いと思います。経験しておいて損になることはありません。
つまみ食いしすぎるのは良くありません。ロジック・思考部分を鍛えるのは1つの言語だけでも充分できます。
初学者とのことなので、まずは今自分がやっていることをせめて中級者と言えるくらい(作りたいものは調べながらでも自分で作れる)まで頑張ってみましょう。
そのうち「この言語でやっていることを今自分がやっている言語ではどう再現できるか」ということが考えられるようになります。

投稿2018/08/02 03:59

m.ts10806

総合スコア80875

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

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

ryu01212008

2018/08/16 08:38

とてもわかりやすい回答ありがとうございます。確かに図書館の人も人間ですから全部覚えているわけないですよね。自分の経験を増やして、ロジックを理解しながらコードにたくさん触れて何を表現できるのか想像して行きたいと思います!
m.ts10806

2018/08/16 08:52

勘違いしてはいけないのは「ロジック」は「考えること」そのものです。 「理解する」のではなく、「自身で活路を見出す」ことだと置き換えてください。 コードに触れるのも勿論勉強にはなりますが、既に動いているものを動かしながら 「これはどのようにしたら実現できるだろう」と考えることが一番の経験となります。 長々と回答を書いてしまったので分かりづらい部分はあるとは思いますが、最も大事なのは下記です。 > 「想像力」あるいは「創造力」と置き換えても良いかもしれません。 質問には(一部を除いて)「要件」が必ずあります。その要件に対して「こうすればその要件を達成できる」という過程を考え、仮説を立てて実証していきます
guest

0

Q2,Q3についてのみ。

長くやっていれば暗記できている部分が自然と多くなっていくことは確かです。しかし、それでも世の中のすべてを暗記できるほど人間の脳は高性能ではありません。特に年を取ってくるとだんだん暗記は難しくなっていきます。

大半は「確か前に似たような問題に出会ったよなあ」で、手持ちの本を見るなりメモを見るなりググるなりです。ググるにしてもキーワードの策定が適切にできるようになれば、ほとんど瞬時にドンピシャリな回答に行きつけることは珍しくなくなります。

あるいは自分が過去に書いたコードを見返してみるということもあります。私はpythonやRを勉強中ですが、文字列置換関数を使うときオブジェクト名と正規表現のどっちを先に書くんだっけ? となんど忘れたことか。そういうときはドキュメントを探しなおすより自分が以前に(何日か前に)書いた自分のコードに教えてもらった方が早かったりします。こういう時に役に立つのはgrepという検索ツールです。

ある程度複雑な問題や自分にとってひときわ大事な問題に悩んで解決したときは、これを自分で文章化しておくことが非常に有効です。qiitaにあるあれです。これで自分が曖昧にしか理解できていなかった部分に気づくことができるし、記憶の定着率が明らかに違います。

記憶の定着率という点では、「自分で設計したプログラムを自分で手を動かして書いてみる」ということが大切ですね。初心者に向かって、「まずひたすら写経」とか「まずは入門書を一冊完読して」などと勧めている人がたまにいますが、記憶の定着率という点ではお世辞にも効率的とは言えないので、私はあまり積極的には賛同しないです。まあ、ある程度の本の読み込みや丸写しはしないわけにはいかないですけどね。

結論としては、暗記できる部分は従事する年月が伸びるとともに確かに多くなっていくけど、けっしてそれに頼っているわけではないので「丸暗記しよう」などと拘るべきではないということになります。

投稿2018/08/02 04:27

KojiDoi

総合スコア13692

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

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

pepperleaf

2018/08/02 11:52

全く、上位じゃないけど、 > 「まずは入門書を一冊完読して」 入門書はほとんど失敗。 C言語は、メーカーのマニュアルと実際の動作。 某マイナー言語は、マニュアルも無かったので、既存ソースと、コンパイル結果。 結構、なんとかなるものと。
ryu01212008

2018/08/16 08:35

回答ありがとうございます。自分の過去のコードを見た方が記憶の呼び起こしも早そうですね。自分で設計する経験が増えれば、その分過去のコードも増えていくので、まず入門書というより手を動かして見たいと思います!
guest

0

  • Q1

プロトとして動かすだけなら1時間もあれば大抵のものはできそうですよね
ぎゃくにそれで動かないようなものはきっちり仕様書を書かないとまずいでしょう
デザインとの調整も必要なので公開版までに2人日ってとこでしょうか

  • Q2

よく使うものは忘れる前にまた使うので覚えてます
あまりつかわないものは忘れちゃいますが、それっぽいキーワードをつけて備忘録をとってあるので
似たようなケースの際は検索します
もちろんgoogleはよく使います
(今日日学校のテストでもググっていいらしいので、検索しない選択肢はない)

  • Q3

効率化については、すでに確立されている理論があるのでロジックはあらかじめ抑えておく
それをプログラムに落とし込むのは言語の特性を理解する必要があります
あとはパターンなので環境がゆるすならライブラリ化することです

  • Q4

本は体系だてておぼえるためにはなんでもいいので2~3冊手元においておくと便利
トラブルの際は実質ネットでしらべます
ただし、本は古くなるし、ネットの情報は間違っているものが多いので注意
トレンドはネットの掲示板などの生きた質問をみてウォッチしてます

  • Q5

とりあえず浅くで大丈夫でしょう。わからないものはネットで聞くのも恥ではない
他人のソースをコピペして自分の要件に合わせるスキルさえあれば
むやみに技術を追いかけるのは目的に合わないと思います。

投稿2018/08/02 03:59

編集2018/08/02 04:02
yambejp

総合スコア116466

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

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

ryu01212008

2018/08/16 08:40

回答ありがとうございます。確かによく使うものは忘れる前に使うのでしっかり覚えています。ただ、ロジックをしっかり覚えていることを前提にしているようですので、正しく理解できるように体系的な本をいくつか用意しておこうと思います。
guest

0

1 よくプログラミング初心者が陥る部分ですが、言語を覚えたからと言ってプログラムを書けるわけではありません。プログラムを構築するのに必要なのは、やることを順序だてて並べること、すなわち「手順を作ること」です。手順さえ作れれば、それをプログラミング言語を用いて表現するのです。
日本語が読み書きできるからといって、誰もが物語を書けるわけではないですよね? それと同じです。
※まあ、手順が分かってても料理ができない(包丁が使えない)とかはあるでしょうが

2 そんなことはありません。ただ、経験が長いということはそれだけ過去の蓄積が多いのであって、そこから引き出す部分は多くはなりますが。(その場合でもコードそのものを覚えているわけではない)

3 ググる(w あとはその過程で見つけた、よくまとめられているサイトをブックマーク登録しておくくらいですかね。上でも書いたように、引き出すのは「手順=考え方」であって、コードそのものではありません。

4 JavaScript なら MDN とか jQuery 公式とかを読んだうえで、ですかね。JavaScript ならば古くからある とほほのWeb入門 もいいです。

5 言語をマスターする以前に、プログラミングの考え方を理解するほうが、最終的には伸びしろが大きくなります。ただ、複数言語を使う必要がないのであれば、ある言語に特化して覚えるほうが、早く使えるようにはなります。

投稿2018/08/02 02:50

編集2018/08/02 02:52
tacsheaven

総合スコア13703

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

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

ryu01212008

2018/08/16 08:42

回答ありがとうございます。覚えただけで書けない・・・その通りです。どのようにして動くのか手順を考えるように意識したいと思います。あとはググることで知識と経験をつけて行きたいと思います。
guest

0

パズル

プログラミングは「パズルのようなもの」です。
たくさんのピース(欠片)から有効な組み合わせを考え、構築するのがプログラミングです。
ここで、理解の深度はピースの大きさに反比例しています。

アルゴリズムから考える

ある要件のコードを書くにあたって、次の2つの事例を比較します。

(事例A)

  1. Aさんはサンプルコードを探す為に、Google検索した
  2. jquery.foo.js を使ったサンプルコードを発見した
  3. Aさんはサンプルコード通りにコードを書き、要件を達成した

(事例B)

  1. Bさんはその要件を達成する為のアルゴリズムを考案した
  2. アルゴリズムを達成する為に必要な機能を一つずつ、Google検索した
  3. 見つけた機能を一つずつ検証用コードを書き、単体テストした
  4. Bさんは単体テスト済の機能を組み合わせて結合テストし、要件を達成した

Aさんはサンプルコードが持つ意味を理解しません。
「こういうコートもを書けば、こういう結果が出る」の対応関係たけは覚え、コードを1行ずつ説明出来るレベルにはありません。

Bさんは、一つ一つの機能(プロパティ/関数/構文など)を理解しながら、一歩ずつ進んでいきます。
時間はかかりますが、一つ一つの機能は基礎的な内容なので、覚えた知識の再利用頻度はAさんよりも高くなります。
パズルのピースは小さい方が再利用性に優れるのです。

基本知識を習得する

アルゴリズムを組み立てるには、基本知識が必須です。
組み合わせるべきピースが一定以上存在しなければ、足りないピースを想像で補完することも出来ません。
JavaScriptでは、最低でも次の知識が必要です。

  • ECMAScript (if文等の構文、Array等のビルトインオブジェクト)
  • DOM (Node, Element, getElementById等)

これは下記URLにまとめています。

Re: ryu01212008 さん

投稿2018/08/03 03:37

編集2018/08/04 00:46
think49

総合スコア18189

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

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

ryu01212008

2018/08/16 07:47

回答ありがとうございます!私はAさんの状態ですので、Bさんの様に一歩ずつ着実に進みながら基礎を固めて行きたいと思います。
guest

0

上位ランク者や引き出しの多い方は、おそらく10~30年、更には40年くらいコンピューターに関わっている方たちではないでしょうか。
それこそマイコンと呼ばれていた時代や8ビットPCくらいの時代からの経験者が多いんじゃないかと思います。
つまりそれだけ経験が豊富というわけです。
(もちろん若くして知識豊富な方も多数いらっしゃいます)
それと全てを暗記しているわけではなく、なんとなく過去に同じ経験があったのを覚えていて、ググったりして記憶を呼び覚まして回答しているのが多いと思います。
あとは質問そのものに関する経験がなくても、こんな感じでできるんじゃないの?と調べてみてチョチョイと書いてみたり。
キャリアが長い人はまだ色々な技術が少ない時代から少しずつ新しい技術を学んで蓄積してきましたが、今の時代から始める人は何から手をつけたらいいのかわからないほど技術が溢れかえっていて大変だろうなあと思います。
回答になっていなくてすみません。

投稿2018/08/02 02:46

ttyp03

総合スコア17000

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

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

ryu01212008

2018/08/16 08:44

回答ありがとうございます。経験が多いことに越したことはないですよね。情報がありすぎて困りますが、自分の進みたい言語で表現できることを考えて、その技術と経験を蓄積して行きたいと思います。
guest

0

Javascriptは門外漢なので、Q2,Q3,Q5のみ。

Q2.ランキング上位者の方達はコードの引き出しが非常に多いように感じるのですが、全て暗記しているのですか?

たいていその場で適当にでっちあげています。ライブラリが絡むときは、(よほど覚え込んでいるもの以外は)ドキュメントも確認しながら書いています。

暗記するというのは、「このン十文を覚えれば英語は話せる!」という英語教材みたいなイメージでしょうか。そういうアプローチも慣れないうちは有効かと思いますが、いずれはもうちょっとナチュラルに使いこなせるようにならないといけません。

Q3.暗記以外で効率よくコードを引き出す方法などがあれば教えてください。

プログラミング言語は人間のために作られたものなので、普通は人間にわかりやすい法則やパターンがあるので、ある程度やっていれば覚える。

考えても出てこないときはさっさとググって、ネットの記事やドキュメントを参考にすると効率が良いです。

Q5.上位者の方達は複数言語をマスターしているように見受けられるのですが、初学者の私でも広く浅く理解しておくべきでしょうか?それともJavaScriptやjQueryをまずマスターすべきでしょうか?

まっさらな状態から始めるのであれば、最初は広く浅くで行くのが無難です。星の数ほどある言語やライブラリをすべてマスターする必要は当然まったくなく、いろいろなものが「なんとなくわかる」程度の理解を養います。「でも『なんとなくわかる』だと動くものが作れなくて面白くないね」となってきたタイミングで、行きたい方向に切り替えていきます。

すでにJavaScriptやjQueryで「なんとなくわかる」に達していて、でも応用が効かないというような壁にぶち当たっているのなら、遠回りして経験や知識を広げると破れる可能性があります。ただし、そのままJavaScriptやjQueryを極めて行っても突破はできます(おそらくは)。

どっちでもいいといえばどっちでもいいのですが、長い目で見ればいろいろ知っておくことは損にならないので、視野を広げるための勉強をしてみるのもいいと思います。

投稿2018/08/16 08:25

hayataka2049

総合スコア30935

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

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

ryu01212008

2018/08/16 08:32

回答ありがとうございます。何事も経験がものを言う感じですね。複数言語を進めながら、JavaScriptを極めて行きたいと思います!
guest

0

  • Q2, 暗記の有無

→暗記はしてないです。

  • Q3, 効率よくコードを引き出す方法

機能を追加したいのか、バグ修正をしたいのかで作業フローが分かれると思います。
経験上、人は同じような問題を抱える事が多いので、グーグル検索で先人の知恵を借りるのが一番です。

  1. githubのissue、teratail、stackoverflowで英語で検索する。

 その後かならず公式ドキュメントを確認してください。
気になったポイントをクリッピングしておく。

  1. grep機能付きのソフトをタスクバーに登録して、クリップしたコードを検索
  • Q4,コンテンツ

js-primer JavaScriptの入門書
JavaScript初級者から中級者になろう

  • Q5,複数言語

他言語を覚えるのとマスターを目指す前に
百考は一行にしかずとも言いますし、JavaScriptjQueryでまずは何かプログラムを作成するのがお勧めです。
作成後にプログラム内でjQuery使用部分をcssアニメーションで代用できる処理がないかどうかを考えてみるなど。

◇その他
プログラマ向けのエディタやgit(バージョン管理ツール)も開発効率に関わるので、
導入していないのなら導入してみてはどうでしょうか。

以下からは個人的なお勧めです。
・エディタはVScodeと拡張機能のBracket Pair Colorizer
・GitはGithubGitHub Desktop

あとこういう質問で回答してもスルーされる事が多いのですが
科学的なデバッグ手法についてザッと目を通される事をお勧めします。

投稿2018/08/02 13:07

umyu

総合スコア5846

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

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

ryu01212008

2018/08/16 08:28

回答ありがとうございます。暗記力より検索力やコードの検索をする方が効率的ということですね。まずは、自分でコードを書いてデバックをしながら一歩ずつ進めて行きたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問