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

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

ただいまの
回答率

90.47%

  • GitHub

    811questions

    GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

「コードを読め」という勉強について

解決済

回答 7

投稿 編集

  • 評価
  • クリップ 7
  • VIEW 11K+

SatoshiAizawa

score 38

よくプログラミングの勉強法として「とにかくコードを読め」と言われますが、GitHubを見てみると
.gitignoreとかconfigとかLICENSEなど見慣れないものがたくさん出てきます。
今の自分のコードといえばindex.htmlを書いてcssやjs,phpなどを入れていくだけのもので手元の本や勉強のサイトを見てもGithub上のプロダクトのようなよくわからないものが出てくる気配がありません。

そこで皆さんに質問なのですが、このようなものを理解し自分で使えるようになるにはどのようなことをしていけばよいのでしょうか

今の自分の勉強といえばいろんなサイトなどにあるサンプルを写経したりそれをいじったりしている程度なのですが、何か体系的な勉強や有名な本などがあるのか、または目にするたびに検索して調べていくしかないのかなどみなさんの意見を聞かせてください。
経験談などを聞かせていただけたら嬉しいです。

追記

多くの回答ありがとうございました。最初の回答をベストアンサーとしました。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 7

checkベストアンサー

+13

きちんと、勉強するなら、書籍を購入して、まずは1冊きちんと、読破およりソースを書き読み、することだと思います。ソースを読んで勉強は、かなりレベルの高いエンジニアのやることです。

昨今は、Google先生で、いろいろな情報がでていますが、

・非常に断片的な情報が多い
・残念だが、間違っているコードも多数
・環境について詳しく記載されていないので、同じコードを書いても動かない
・そもそも体系的に学ぶには、不向き(スポット的な調査では有効かもですが)

っと、ネットの情報で学習しようという自体にも、正直無理があります。
しかも、GitHubの他人様のコードを読むなどというのは、相当なスキルが必要です。

「コードを読んで勉強せよ」というのは、自分が書いたコードと、同じような事ができる、エキスパートのコードを、比較してみると、、、というレベルで理解されるとよいかもしれません。
目的もなくソースを読むことは、苦痛なだけです。

それに、厳しい意見ですが、
「.gitignoreとかconfigとかLICENSEなど見慣れない・・・」
と思われる段階では、ネット上のソースコードを読み下すのは、正直無理です。

プロのエンジニアであっても、他人のソースコードを読むことは非常に、疲れる作業です。
でも、ある程度の経験がでてくれば、他人のコードをみて、

・このコードいいなとか
・このコード美しい!

といった、
ところがでてくるようになります。
そこまで成長するには、それなりに時間がかかるかと。

でも、そこまで成長するまでは、地道に、書籍で勉強して、地道に、いくつもの、バグだらけのプログラムをつくって、地道に、納期に追われて死ぬ思いをすることが、最も近道かと。

がんばってください!

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/14 15:29

    本を読むというのはやはり大事ですよね。日常的に検索でわからないことを解決してしまうことが多いですが、定期的に体系的な知識をインプットするよう心がけていきたいものです。

    キャンセル

+6

今の自分の勉強といえばいろんなサイトなどにあるサンプルを写経したりそれをいじったりしている程度なのですが

いいんじゃないですか?
写して自分なりにいじって動かして、色々な結果を得る。
というプログラミングの勉強法はすごくいいと思います。

ただ、Itoさんもおっしゃってますが、自分のレベルが入門レベルなのであれば、本は1冊読むべきですね。
基本をおさえなくては、どの道いずれ必ず行き詰まって基本に戻ってくるからです。

その言語の文法や用語、概念などが分かってくれば、今のその勉強法はすごくいいと思います。

そして、大体分かってきて、もうこの言語は分かった!ってなった時に、
天狗にならずに、もう1冊ぐらい本を読んだ方がいいかもしれないです。
独学では中々行き着かない書き方やテクニック、考え方というものがあります。

どの言語にも大体、入門書とは違う難しいことを書いている、やたらぶ厚い本があります。
そっち系の本ですね。
しかし、読んだところで中々使い所とかが分からなかったりします。
言ってる事は分かるけど、これって使うの?必要なの?のように思ったりします。

優秀なプログラマーのコードには、それらのテクニックがやはり使われているんです。
だから、コードを読めと言うわけです。

ここまでくると、あとは飽くなき「探究心」だけです。
これどうやってんだ?どこでやってんだ?からの解析の繰り返し。

他人のコードや、オープンソースを読み漁るのはもうちょっと後でもいいかもしれないですね。

「.gitignoreとかconfigとかLICENSEなど見慣れない・・・」

この辺は、プログラミングと関係のないところなので、
別に今の勉強法に疑問を持つ必要はないと思いますよ。

システム開発には様々なテクノロジーが集約しています。
プロジェクト管理、設計、テスト、デプロイ、データベースやサーバーなどのミドルウェア
ネットワーク、それらに伴うセキュリティ・・・などなど

必要な時に必要なものを必死で勉強すればいいです。
今、勉強したところで、実務でやってみなければ忘れるだけですしね。
「そういえば、これって本かネットで見たなぁ・・・なんだったっけ」程度の知識は、けっこう重要ですけど。
今は、プログラミングの勉強なのであれば、今のままでさほど問題ないと思います。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+6

ただ漫然と読むのではなく、「目的意識を持って」読むこと、そして「今の自分より、少しだけレベルの高い」ものを読むことが役に立つと思います。

たとえば何かしらのライブラリを使っていて、「この処理はどうなっているんだろう?」とか、「なんだかうまく動かない」というようなときにコードを読み進めてみると、見えてくるものがあります。取っ掛かりとしては、そういう「自分が使っているライブラリ」がいいでしょう。

時に「黒魔術」と呼ばれてしまうほどに、エレガントすぎて慣れなければ読みづらいコードもありますし、逆に「泥臭い」処理で読む気力が失せるようなものもあります。

最後に一言ですが、一度「世界観」を理解すると、それまで暗号にしか見えなかったコードが嘘のように読みやすくなる、ということがあります。どのような狙いを持って書かれたコードなのかをつかむのが、遠回りなように見えて近道かもしれません。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+4

書籍での学習をお勧めします

いきなり Github に公開されているコードを読むのはハードルが高いと思います。
プログラミングのテクニックに関する書籍を読むことをお勧めします。
良書には優れたコードと優れた解説文が記載されているからです

システムを作るときに、オブジェクト指向、デザインパターンなどのテクニックを使うことによって
プログラムの「可読性」や「保守性」を高めることができます。
これらを高めることで、あとからプログラムを修正するときの時間を短縮できます。

テクニックを学ぶための書籍について

個人的なおすすめは
増補改訂版Java言語で学ぶデザインパターン入門
ですが、
SatoshiAizawaさんは PHP を使っているそうなので、合わないかもしれませんね。
一度書店で立ち読みした後で、ご自分に合った本を探すといいと思います。

追記:
リーダブルコード
もおすすめ書籍の一つです

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+3

このようなものを理解し自分で使えるようになるにはどのようなことをしていけばよいのでしょうか

最初は解らない事だらけだと思います。とりあえず目標としているゴールはどこでしょう?何らかの技術を『使える』事が当面のゴールとかであれば、それに関連してそうな疑問点をただひたすらに調べ、手を動かして実践し続ける事が一つの方法です。コードを読むことは、そういった方法の内の一つでしかありません。既に腕を持った人が周りに居れば、教わるなんてのも手です。

個人で調べる方法は、書籍や技術情報の公開されているサイトを参考にすればよいでしょうが、最初は自身のレベル相応の入門書なり専門書を大型の書店で探してみる事をオススメします。個別のトピックに関してウェブは最新の情報もありますが、個人ブログなどの公開情報は間違った情報が放置されている事も多く見受けられ、それらが適切に判断できないであろう初学者にとっては、鵜呑みにすべきではありません。解らなければ参考程度に使うべきです。

相応の経験者や余程の素養や才能のある人であれば、書籍や技術の公開情報を読むだけでも、それらを使えるようになるかもしれませんが、基礎もできていない人には無理な話です。些細なものであっても良いので、コードを書いたり何らかの結果を出す形での実践をし続けなければ身につかないでしょう。もし、手を動かして実践する事が楽しめるなら、この分野にとても向いていると思いますよ。

そういった実践の際に、参考になりそうな既存のコードを探して、読んでみたり、自分なりにアレンジして組み込んでみたり、というのは学ぶ点が多く非常に有用です。是非チャレンジしてみましょう。逆に目的も無くコードを読むのは初学者にとっては難しいでしょうし、モチベーション的な意味でも向かない人の方が多いのではないでしょうか?

あと言えることは、そうですね。当事者意識や危機感なりを持って何年もコツコツと続けていれば、まず間違いなく身につきます。短期間に腕を劇的に伸ばす方法は・・・有ったら私に教えてください。

以上、ご参考になれば幸いです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

「百聞は一見に如かず」という意味において、
他人が書いたコードを見るのは勉強になることもあるよ
くらいに考えていいんじゃないかなあ。

「一見は一行に如かず」という意味において、
自分で考え、自分で手を動かし、自分で結果を
出せるように「勉強する」のが上達の近道かと。
ちなみに、上記のような格言はありません。(^_^;

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/12 22:43

    本題ではないですが、「百見は一労作に如かず」という言葉があるようです。

    キャンセル

-1

これって、該当する事柄に基礎知識があるかどうかやら、
情報系の学校を出ていて、基礎知識と、実務の知識があって、
ウォークスルーして、、、:ホストコンピュータ時代は、全てが高価でしたので、人件費の方が安かった。

出来るだけ、実行環境に近いものを用意して、
動作を確認しながら、コードの動きを理解して、、、:っていうのが可能になった現在。

大学の先生方が作ったクソコードを、
清書するバイトもしましたっけ。(学生の方が全うなコードを書いていましたねぇ。)

私は、為にする学習は辛くて続かないので、
金、利益、快楽、快感、何れかに絡む工夫をします。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

関連した質問

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

  • GitHub

    811questions

    GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。