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

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

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

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

Q&A

解決済

7回答

51013閲覧

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

SatoshiAizawa

総合スコア46

GitHub

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

6グッド

14クリップ

投稿2016/04/12 13:09

編集2016/04/13 02:00

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

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

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

追記

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

sutonea, afroscript, yodel, unirou2, ikuwow, apm.2358👍を押しています

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

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

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

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

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

guest

回答7

0

ベストアンサー

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

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

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

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

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

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

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

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

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

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

がんばってください!

投稿2016/04/12 13:23

ItoTomonori

総合スコア1283

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

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

ikuwow

2016/04/14 06:29

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

0

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

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

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

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

投稿2016/04/12 13:53

maisumakun

総合スコア145183

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

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

0

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

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

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

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

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

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

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

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

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

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

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

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

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

投稿2016/04/12 13:48

編集2016/04/12 14:08
root_jp

総合スコア4666

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

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

0

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

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

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

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

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

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

投稿2016/04/12 15:24

編集2016/04/12 15:37
sutonea

総合スコア207

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

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

0

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

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

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

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

投稿2016/04/12 16:08

daive

総合スコア2028

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

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

0

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

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

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

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

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

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

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

投稿2016/04/12 14:08

ps13zier

総合スコア433

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

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

0

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

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

投稿2016/04/12 13:32

takasima20

総合スコア7458

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

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

maisumakun

2016/04/12 13:43

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問