質問するログイン新規登録
C#

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

学習法

プログラミングやITエンジニアの学習法に関する質問を投稿する際にご使用ください。

Q&A

解決済

3回答

594閲覧

c#でまとまった機能を持つソフトのソースコードを読めるサイト、またはgithubでそのような物を探す方法を知りたい

tada_tadaa

総合スコア115

C#

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

学習法

プログラミングやITエンジニアの学習法に関する質問を投稿する際にご使用ください。

1グッド

3クリップ

投稿2025/08/14 08:31

1

3

実現したいこと

ハーバート・シルト というプログラミングの大御所のような方がプログラミングを上達する方法は他人の書いたコードを読むことだみたいな事をいっていたので、ある程度まとまった機能を持つソフトのソースコードを読んで、他の人たちがどのような手法でソフトのコードを書いているのか参考にしてみたいので、そのようなソースコードを確認できるサイトか、githubでそのような物を探す方法を知りたいです。

発生している問題・分からないこと

書籍で短いプログラムを読む事はできるが、まだ自分にはまとまった量のソースコードを読むのは早いとは思うが、これから参考にしたくなるかもしれないし、現時点でも参考になるものを得られるかもしれないので、そのようなソースコードを眺められるサイト等を知りたい。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

chatGPTに聞いたが、少ない検索結果を提示するだけだった。その提示されたgithubのコードを見たが、少ないプログラム量だったりして何か違う気がした。

補足

特になし

TN8001👍を押しています

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

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

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

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

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

guest

回答3

0

こんにちは。

まとまった機能を持つソフトウェアのソースコードを読むは間違いなく最速の上達方法の一つと言えます。
とはいえ、いきなりまとまったソースコードを読んでもどこから手を付けてよいか分からなくなるはずなので、

  • よく使っている C# で書かれたソフトウェアのソースコードを読む
  • よく使っている C# のライブラリのソースコードを読む

ところから手を付ける感じになります。(もちろんソースコードが GitHub やその他で公開されていることが前提ですが)
ライブラリの方が圧倒的に数が多く、コンパクトにまとまっているものも多いので、知っているツールなどがあればそこから辿っていくと良いのではないでしょうか。
例えば、現時点で NuGet で何らかのパッケージをインストールして使っているなら、それらのソースコードは公開されている可能性がそこそこ高いです。

以下、明らかに初心者向けではないですが、
実は .NET の標準ライブラリのソースコードは GitHubWeb サイト でごっそり公開されていたりします。例えば Linq のソースコード などは気になる人が多そうに思います。
さらに上級者向けですが、Cysharp, Inc. は有名どころのライブラリを色々作っているところで、高度で高品質なソースコードを見ることができます。

他の手段としては、ILSpydotPeek と言った、.NET のアセンブリを逆コンパイルしてソースコードを得るツールがあります。
自動生成のソースコードとなるので綺麗でなかったりそもそも破綻していることもありますが、今触っている部分のコードを即座に見ることができるので、学習の際にはかなり役に立ちます。
ただし、第三者のアセンブリを覗き見る場合は規約に注意してください。

投稿2025/08/14 09:25

tamoto

総合スコア4347

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

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

tada_tadaa

2025/08/16 10:51

回答ありがとうございます。 理想としてはvectorというサイトで配布されているようなwindowsで動くc#と.net frameworkで作成されたフォームアプリケーションのソースコードを見れれば良いのですが、あんまり公開されてないようなのでteratailやqiitaやit系のブログで信頼出来そうな人が公開しているgithubのページで、ソースコードを参考にしようかと思います。
tamoto

2025/08/18 02:47

vector の .NET Framework 製アプリだったら大抵は ILSpy で中身は覗けると思います。 各アプリの利用規約で逆アセンブルを明示的に禁止されていなければ、私的に覗き見ることは可能なはずです。 ただし出てきたコードをコピーするとかなり危ないので、あくまで参考までに留めるのが良いでしょう。
tada_tadaa

2025/08/18 05:58

vectorで配布しているようなある程度、機能がまとまったソフトのソースコードを閲覧するという事では、逆アセンブルを用いるソフトも良い選択だと思います。参考になるアドバイスをありがとうございます。
guest

0

ベストアンサー

c#でまとまった機能を持つソフトのソースコードを読めるサイト、またはgithubでそのような物を探す方法を知りたい

ターゲット(デスクトップアプリ・ウェブアプリ・モバイルアプリ・ゲーム等)は特に決まっていない感じですか?
できれば気になっているFramework(WinForms・Blazor・MAUI・Unity等)まで絞っていただけると、より適切な回答を得られると思います。


公式のサンプルはここで調べられます。
Microsoft 開発者ツールのサンプル コード | Microsoft Learn

「他人のアプリのコードが見たい」となるとどうでしょうねぇ。
GitHubの検索は出すぎちゃうし、ピンキリだったりと難しいですね...
Repository search results

C#製で名の通ったOSSのアプリもかなりあると思いますが、(わたしは)大規模すぎて読む気はしないです^^;
ちょっとしたツール程度がいいですが、コードを見てゾッとすることもありますねw


個人的に面白かったサンプル

3段階でMVVM化してるMAUIアプリ

  1. コードビハインド
  2. Model-View(データバインド)
  3. MVVM

MVVM の概念を使用してアプリをアップグレードする - .NET MAUI | Microsoft Learn

maui-samples/10.0/Tutorials/ConvertToMvvm at main · dotnet/maui-samples

WPF Prism作者本人がサンプルを作るライブ動画

Prism自体は好きではないがリアルな開発感を感じられた。
ほんとに考えながら作ってるので、手戻りがあったりとにかく長い^^;

Prism for WPF - Building Outlook - YouTube

brianlagunas/PrismOutlook: The Prism for WpF app that we are building live on Twitch/YouTube

有料のコントロールを使いまくっているので雑に省いたフォークw
TN8001/PrismOutlook: noig

投稿2025/08/14 10:39

編集2025/08/14 10:47
TN8001

総合スコア10176

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

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

tada_tadaa

2025/08/16 10:36 編集

回答ありがとうございます。 特に希望するソフトのジャンルはc#と.Net frameworkを用いて作成されたWindowsで動作する Windowsフォームのアプリケーションです。例としてはソフトを配布しているサイト「vector」に掲載されているソフトのような感じです。 https://www.vector.co.jp/vpack/filearea/winnt/art/graphics/loader https://www.vector.co.jp/soft/screen/winnt/art/se462430.html 他の人たちが上記のWindowsで動作するフォームアプリケーションをどのように開発されているのか、参考にソースコードを拝見できれば勉強になると思いました。 想像では、ネット上でそういったソフトのソースコードを見れるような場所がまあまああるかと思いましたが、いざ探すとなるとなかなか見つからないです。ネット上ではあまりそういうのは、ないのでしょうか? 追記:とりあえず、teratailやqiitaなどで割と技術的に信頼出来そうな人のプロフィールにgithubのアドレスが載っていれば、そのgithubで公開されているソースコードを読んでいくような手法が、実際に出来そうな事かもしれません。TN8001様のプロフィールに記載されているgithubのページに良さそうな感じのソフトのソースコードが掲載されてましたので、teratailなどで信頼出来そうな人のgithubを閲覧する事を思いつきました。
TN8001

2025/08/16 11:40 編集

> 特に希望するソフトのジャンルはc#と.Net frameworkを用いて作成されたWindowsで動作する Windowsフォームのアプリケーションです。例としてはソフトを配布しているサイト「vector」に掲載されているソフトのような感じです。 なるほど。 VectorはGitHubなんかができるよりずっと前からあるので、ソースまで公開している人はそんなに多くはないですね。 仕組み上バイナリに同梱するか、別のことろにあげるしかないんじゃないかと思います。 GitHubにも置いている人も居ないわけでもなさそうです。 [github site:vector.co.jp - Google 検索](https://www.google.com/search?q=github+site:vector.co.jp) > 想像では、ネット上でそういったソフトのソースコードを見れるような場所がまあまああるかと思いましたが、いざ探すとなるとなかなか見つからないです。ネット上ではあまりそういうのは、ないのでしょうか? GitHubはそういう場だと思いますが、見つからないですか? [Repository search results](https://github.com/search?q=image+viewer+language%3AC%23&type=repositories) > 追記:とりあえず、teratailやqiitaなどで割と技術的に信頼出来そうな人のプロフィールにgithubのアドレスが載っていれば、そのgithubで公開されているソースコードを読んでいくような手法が、実際に出来そうな事かもしれません。 個人的には~~クソ~~ぴよぴよコードを見るのも好きというか、(forkじゃ嫌味っぽいので)ダウンロードして勝手に改善とかもやったりしてますw レベルが高すぎると何やってるかさっぱりわからなくって、あまり身にならないことが多いです^^; 自分よりちょっと上のレベルのコードが理想ですが、なかなか難しいところではありますねぇ。
tada_tadaa

2025/08/18 05:53

githubで時間をかけて、いろいろ見てたら参考になりそうです。他人の書いたコードを参考にするという事であれば、やはりgithubが良さそうだと思いました。もしかしたら他に何か方法があるかと思いましたが、やはりgithubが良さそうです。TN8001様の検索の仕方も参考になりました。
guest

0

他の人たちがどのような手法でソフトのコードを書いているのか参考にしてみたい

という話であれば,

クソぴよぴよコード

も「他人がどうやって失敗したのか」を知るという意味(他山の石的な意味)で役に立つ可能性が 1.2% くらいはあるのかもしれないので,
ちょっと前に Winforms とかいうやつで自分用のペイントを作ろうとしてみた際の地獄のようなコード を晒してみる.

手当たり次第に書いていって→丁度見事に詰んだところ,っていう感じの状態です.
(※詰んだ:現存機能は多分動いてはいるけども,コード的にこの先追加実装とかをしていける気がしない,という意味)

(できれば「どう考えてもこの時点でもう地獄直行が決定したよね」とか教えてほしい)

投稿2025/08/18 01:59

fana

総合スコア12256

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

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

tada_tadaa

2025/08/18 07:43

回答ありがとうございました。
TN8001

2025/08/18 10:33

「なんか見たことあるな」と思ったらQiitaに書いてらっしゃいましたね。 fanaさんだったんですか^^ 全然ぴよ臭なんてしないですよ~(ざっとスクロールしただけで読んではないですけど^^; ドキュメントコメントもしっかり書いてて偉いなーと思いました(役に立たない感想w 確かにPresenter.csとかは「長いなぁ」と思いましたが(この辺が地獄感??) ちょうど昨日ぴよコード勝手に改善活動をやってたんで、 * インデントが揃っている * 無駄な空行がない だけでさわやかな気持ちになりました^^ > (※詰んだ:現存機能は多分動いてはいるけども,コード的にこの先追加実装とかをしていける気がしない,という意味) 単に自分の欲しい機能があらかた実装出来て、モチベが下がっただけでは? > (できれば「どう考えてもこの時点でもう地獄直行が決定したよね」とか教えてほしい) わたしの想像する地獄は「MainForm.csのみで1万行」みたいな奴なんで、全然問題ない気がしますけどねぇ(極端すぎ?^^;
fana

2025/08/18 14:32 編集

インデントとかは Visual Studio みたいなのを使ってれば勝手に揃うので,むしろ揃ってないコードをこしらえるには書き手がわざわざ崩す作業を行う必要がある気がするけどどうなんだろう.(それか Winforms のコードを何の支援も無い世界(メモ帳とか)で書くみたいな無茶をするとか) > 確かにPresenter.csとかは「長いなぁ」と思いましたが(この辺が地獄感??) 実際,8~9割方の実装がこの cs に突っ込まれてるような状況で,「MainForm.csのみで1万行」っていうのと大差ない感じです. (全体の規模が小さいので行数は1万行とはいきませんが)
TN8001

2025/08/18 15:41

> インデントとかは Visual Studio みたいなのを使ってれば勝手に揃うので,むしろ揃ってないコードをこしらえるには書き手がわざわざ崩す作業を行う必要がある気がするけどどうなんだろう. わたしもそう思っていたんですが、プログラミング配信等で何人も見ています。 ほとんどは単に知らないだけでした(教えてあげると「わぁ!」って喜んでくれます^^ 稀に独自のこだわりがあって自動フォーマット大っ嫌いで、(わたしには)到底読みやすいとは思えない謎インデントを手作業でやってる方もいましたw ぴよコードでは9割がた括弧の前後に空行が入り、途中謎の連続空行が良く見られます。 おそらく1ファイルが長くなってきて、見つけやすいような目印なんでしょうがずっと残ったままになります^^; > 実際,8~9割方の実装がこの cs に突っ込まれてるような状況で,「MainForm.csのみで1万行」っていうのと大差ない感じです. 結局どっかには書かなきゃならないですからね^^; 移譲なりpartialなり、分けることはどうにでもできるでしょうけど... 抽象化されてますしぱっと見イヤな感じのところもないですけどねぇ(Undoとかは外出ししたいかも?? WinFormだとViewの更新忘れで、内部状態と齟齬が出たりとかはありそうですね(WPFだとそういう点は楽) unsafeのほうが(わたしはポインタ嫌いなので)イヤですが速度が大違いでしょうから、テストしっかり書いてUtilityクラスに封印したいw
fana

2025/08/19 01:27

> 1ファイルが長くなってきて、見つけやすいような目印 私は //--------------- みたいなのを入れちゃうんだけど,なるほど,空行をたくさん入れるという手もあったか…!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問