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

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

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

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

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

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

Q&A

解決済

6回答

5055閲覧

コードリーディングについて

d-gate

総合スコア25

Ruby

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

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

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

2グッド

6クリップ

投稿2017/07/07 02:28

編集2017/07/07 02:57

要点:超初心者にコードリーディングは有効なのか、そして初心者がコードリーディングをするコツおよびちょうど良いレベルのソースコードを手に入れる場所とは

閲覧ありがとうございます。
当方プログラムは初心者なのですが他分野の経験から「他人(先人)の成果をじっくり観察して真似して自分のものにする」のが最初のうちは最も効果的だと考えていて、プログラムの学び始めて最初の入門書一冊を読み終えたあとまっさきにオープンソースのソフトウェアを漁ろうと画策したのですがあまりに複雑で愕然としました。
コードリーディングについて検索したらすごくよいものとして扱われているので自分のしていることは大きくは間違ってないのだと感じましたが、プログラマのみなさんの実際の意見を頂戴したくこれを投稿しました。

まったくの筋違いだと笑われるかもしれませんが私は効率的に学ぶ方法を考えること自体にも楽しさを覚えるたちなので、生温かい目で見てください。

率直なご意見をお待ちしております。どうぞよろしくおねがいします。

m.ts10806, LouiS0616👍を押しています

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

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

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

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

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

m.ts10806

2017/07/07 02:45

質問内容からして何かの言語に特化した内容ではないようなので、タグは「コードレビュー」のようなものの方が適切に思います。(それかもっとたくさんプログラミング言語を並べるか)
d-gate

2017/07/07 02:49

修正しました。そういった的確なタグの存在を知りませんでした。ありがとうございます。
mattn

2017/07/07 02:50

レビューはまた違う気がします。
m.ts10806

2017/07/07 02:58 編集

似た種類の質問がないか調べてみたら割といいタグが出てくるのでタグ付けの際にはキーワード検索オススメです。一通り言語を並べている質問も結構ありますね。 例:https://teratail.com/questions/66951
d-gate

2017/07/07 03:00

複数言語を並べてみました。ありがとうございます。ほかにも色々タグ探してみます。
guest

回答6

0

ベストアンサー

超初心者に対してはコードリーディングよりコーディングのほうがいいと思います。

ソースコード読んで5割以上理解できる(例えば、日本語で設計書が起せる)くらいであれば
コードリーディングは有意義なものになるかと思いますが、
3割しか分からないのにソースコード読んでどうするの??って感じます。

論理的思考を構築させることも考えると、自身でコーディングしたほうがいいです。
そのほうが覚えるのも理解も早くなります。

無作為にコードリーディングするのであれば、
7割は日本語で説明できるコードを選ばれるといいかと思います。

他分野の経験がどのような分野か分からないですが、
ソフトウェアは初期コストがかかりません。(PC代くらい)
わざわざ人の成果を見て真似るより、自分でやるほうが手っ取り早いです。

投稿2017/07/07 03:02

szk.

総合スコア1400

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

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

d-gate

2017/07/07 03:19

回答ありがとうございます。 より客観的に考えさせられる内容です。やはりリーディングにも弱点がありそうですね。。 他の回答者様含めてですが、質問に回答をいただけることに感謝ばかりです。
guest

0

Javaに偏ってますが(一応Javaタグ付いてたので)。他の方の回答にあまり具体的なプロダクト名がでてなかったのでとりあえず。
1.JUnit(XUnit系テストツール)
元祖のJUnitはデザインパターンで知られるガンマとか有名人たちのプロダクトです。
細かいところでいろいろケチがつけられているものの、基本的には設計のお手本としておすすめできます。
eclipseプラグインなのでこれ自体で完結しないのが難点ですが、これを機会にeclipseプラグイン開発をかじるのも良い。
まあJUnitレベルならそんなに難しくはない。
2.Eclipse-Collections(旧GS-Collections)(コレクションライブラリ)
これのコードリーディングで設計手法を勉強しよう、みたいな内容のセッションが昔勉強会であったような記憶がある。
私自身はそんなに読んではいないが、開発チームはソースに相当自身があるような感じだし、実際評判は良い。
他の言語でもコレクションライブラリは依存関係が少ないから扱いやすいかもしれない。
個人的な感想だがGS系のライブラリは概してセンスがいいと思う。
3.Struts(WEBフレームワーク)
まあDIの仕組みだったり、JDKが新しいもの対応だったりで普通にSpringMVCとかSpring系はおすすめなのですが、
分かりやすさでいえばStrutsかもしれない。いまさらStrutsかよ、なんですが単純なので読みやすい。
黒魔術的バイトコード操作もない。
WEBやるなら有名WEBフレームワークは読んでおいた方が良い。意外と"自分で書けばいいじゃん?"という感想を持つのでは?
Java以外ならRoR系は苦労してでも読んでおく価値はあると思う(Play FrameWork1.xはおすすめしない)。
4.log4j、logback/ログライブラリ
複数スレッドからの単一リソース更新は難しい。そういう問題意識をもって見ると面白いかもしれない。
5.hibernate(ORマッパー)
品質悪いんです。なので中知っておくと障害調査で知見が役に立つ。

最後に。ショートコードを読むのも良いが、ある程度規模のあるものを読むのも重要な技術(まずは構成を把握するところからはじめましょう)。

投稿2017/07/07 05:21

編集2017/07/07 05:30
kurokoba

総合スコア276

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

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

d-gate

2017/07/07 05:25

回答ありがとうございます! こういった具体的なことも知りたかったことでした。 わかりやすい解説までありがとうございます
guest

0

こんにちは。

一例ですが、「普段利用しているアプリケーションのソースコードを読む」「使い慣れたライブラリのソースコードを読む」というのはどうでしょう。
既に使い方を知っている、既に実現されている機能から、その実装を辿る方向で学習することになるため、書いてあるものが「(最終的に)何をするためのものなのか」を知った状態でコードを読むことができ、コーディングに関するノウハウやテクニックを吸収する効率が良いです。

入門書レベルというとどの程度なのかが分かりませんが、自分は愛用していたツール系アプリの不具合を自前で解消することを目的に、いきなりコードリーディングからプログラミングデビューしたので、できないということはないと思います。

投稿2017/07/07 02:56

tamoto

総合スコア4103

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

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

d-gate

2017/07/07 03:09

実際にいきなりリーディングからデビューしたという話を聞いて勇気づけられます。 もっと親しい、挙動をよく把握しているアプリケーションやツールの周辺から探っていこうと思います。 ありがとうございました。
guest

0

超初心者にコードリーディングは有効なのか

個人的な見解としては「人によっては有効」だと思います.

私も質問者さんと同様に『「他人(先人)の成果をじっくり観察して真似して自分のものにする」』に近いことが得意な方なので,そういう人間にとっては有効かと.
ただし,もちろん基本的な文法や制御構文の意味は理解している必要があるとは思います.(英単語・英文法がわからないのに英語の本読んでも身につかないよねって話と同じで)

初心者がコードリーディングをするコツおよびちょうど良いレベルのソースコードを手に入れる場所

コツとしては,まずは本当に簡単なものから読むとかでしょうか…
場所については,teratail や stackoverflow なども割といい場所だと思っています.
時々ですが,質問者が書いたコードがあって,回答者が修正したコードが上がっていたりすると,両者の違いから良い書き方などを学べる場合もあります.

同様に Qiita も結構いいかと思います.
情報共有が主な目的のサイトなので,小さな要求に対して簡単なコードを示すような記事も時々アップされます.

こちらも,もちろん「基本的な文法や制御構文の意味は理解している必要がある」し,稀に質問者の要求・投稿者の意図が全くわからず,なぜそのコードになるのかが理解できない場合があるというデメリットもありますが…

オープンソースのソフトウェアを漁ろうと画策したのですがあまりに複雑で愕然としました

特に規模の大きなものとかだと,入門には向かないですね.
上にも書きましたが,最初のうちは「小さな要求に対する簡単なコード」を探すところから始めた方がいいと思います.

投稿2017/07/07 02:51

tamy

総合スコア442

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

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

d-gate

2017/07/07 03:05

早速の回答に感動しております。 具体的な例が多くて非常にありがたい限りです。 >>小さな要求に対する簡単なコード これは今からでも意識していく所存です。 ありがとうございました。
guest

0

インターネットのない時代からプログラマやってますが、その頃はコードに「飢えて」ました(笑)。
専門書や雑誌などで人のプログラムを眺めては、こういう風に書くのかとか、これはどうなんだろうとか、あれこれ考えながら。

余談ですが、パソコンでゲームしながらでも、この多重スクロールはどうやって処理してるんだろうとか考えながらやってましたね。当時は、専用のグラフィックチップは単純なものしか無くてほとんどがソフトウェア処理でしたからね。

なので、人のプログラムを読むのはそんな苦にはならない方で、今の自分もそのころ貪るようにプログラムを読んだ経験が少しは役に立っていると思っています。

なので、私の経験上から言えば役には経つと思います。

コツは、データの流れを頭のなかでイメージするようにすることかな。(分岐が多いと大変なことになるんですが^^;)。ただ、これは私のやり方であって人それぞれ意識の仕方や考え方や頭の使い方が違うので、自分にあった方法を見つけるのが良いと思います。

投稿2017/07/07 08:16

PineMatsu

総合スコア3579

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

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

0

コードの良し悪しが、解るのは、自身の書いたコードを忘れた頃見返して
これダメじゃん、いけてるじゃん、って思える様になってからでしょうか。

C#であれば、

10 行でズバリ

でググってください。
マイクロソフトの、質の良いコード、悪いコード取り交ぜて
検索の糸口がみつかります。

hey scripting guy

では、結構いけているWindows用 Scriptを見つけることができます。

投稿2017/07/07 04:35

daive

総合スコア2028

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

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

d-gate

2017/07/07 06:30

回答ありがとうございます。 hey scripting guyが特に面白くて回答頂いてからさっきまで読んでました(笑) 参考になります。。
daive

2017/07/07 06:40

(^◇^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問