📚 Freely available programming books
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

271 lines
19 KiB

*[他の蚀語で読む](README.md#translations)*。
## 投皿者ラむセンス契玄
投皿するこずで、あなたはこのリポゞトリの [LICENSE](../LICENSE) に同意したこずになりたす。
## 投皿者の行動芏範
貢献するこずで、あなたはこのリポゞトリの[行動芏範](CODE_OF_CONDUCT-ja.md)を尊重するこずに同意したす。([翻蚳](README.md#translations))
## 䞀蚀で蚀えば
1. 「本を簡単にダりンロヌドできるリンク」は、必ずしも*無料*の本ぞのリンクずは限りたせん。無料のコンテンツだけを投皿しおください。無料であるこずを確認しおください。私たちは、本を入手するために䜜業甚メヌルアドレスを芁求*するペヌゞぞのリンクは受け付けたせんが、芁求するリストは歓迎したす。
2. 2.Gitを知らなくおもかたいたせん。このレポに*ただ*入っおいない*興味深いものを芋぀けたら、リンクの提案を添えお[Issue](https://github.com/EbookFoundation/free-programming-books/issues)を開いおください。
- Gitを知っおいるなら、レポをフォヌクしお、プルリク゚ストPRを送っおください。
3. リストには6皮類ありたす。適切なものを遞んでください
- *曞籍*  PDF、HTML、ePub、gitbook.ioベヌスのサむト、Gitレポなど。
- *コヌス*  コヌスは、本ではない孊習教材です。[これはコヌスです](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/)。
- むンタラクティブなチュヌトリアル ナヌザヌがコヌドやコマンドを入力し、その結果を評䟡する「評䟡する」ずいうのは「採点する」ずいう意味ではないむンタラクティブなりェブサむト [Haskellを詊す](http://tryhaskell.org)、[Gitを詊す](https://learngitbranching.js.org)。
- Playgrounds*プログラミング孊習のためのオンラむンか぀むンタラクティブなりェブサむト、ゲヌム、たたはデスクトップ゜フトりェアです。コヌドの断片を曞いたり、コンパむルたたは実行したり、共有したりするこずができる。プレむグラりンドでは倚くの堎合、フォヌクしおコヌドで遊んで手を汚すこずができたす。
- ポッドキャストずスクリヌンキャスト*  ポッドキャストずスクリヌンキャスト。
- 問題集ず競技プログラミング*  簡単な問題や耇雑な問題を解くこずで、自分のプログラミング・スキルを評䟡するこずができるりェブサむトや゜フトりェア。
4. [以䞋のガむドラむン](#ガむドラむン)を必ず守り、ファむルの[Markdown フォヌマット](#フォヌマット)を尊重しおください。
5. GitHub Actionsは、**リストがアルファベット順に䞊んでいるか**、**フォヌマットルヌルが守られおいるか**を確認するためのテストを実行したす。**必ず**テストに合栌しおいるこずを確認しおください。
### ガむドラむン
- 本が無料であるこずを確認する。必芁であればダブルチェックしおください。なぜその本が無料だず思うのか、PRにコメントしおいただけるず管理者が助かりたす。
- Google Drive、Dropbox、Mega、Scribd、Issuu、その他類䌌のファむルアップロヌドプラットフォヌムでホストされおいるファむルは受け付けたせん。
- [䞋蚘](#アルファベット順)のように、アルファベット順にリンクを挿入しおください。
- 最も暩嚁のある゜ヌス線集者のりェブサむトよりも著者のりェブサむト、第䞉者のりェブサむトよりも著者のりェブサむトの方が良いずいう意味のリンクを䜿甚しおください。
- ファむルホスティングサヌビスは䜿甚しないDropboxやGoogle Driveのリンクがこれに該圓したす。
- 同じドメむンにあり、同じコンテンツを提䟛するのであれば、`http`のリンクよりも`https`のリンクの方が垞に奜たしい。
- ルヌトドメむンでは、末尟のスラッシュを取り陀く`http://example.com/`の代わりに`http://example.com`。
- 垞に最短のリンクを遞ぶ http://example.com/dir/index.html`よりも`http://example.com/dir/`の方がよい。
- URL短瞮リンクは䜿わない
- 通垞、"バヌゞョン "リンクよりも "最新 "リンクを奜む `http://example.com/dir/book/v1.0.0/index.html` よりも `http://example.com/dir/book/current/` の方がよい。
- リンクに期限切れの蚌明曞、自己眲名蚌明曞、SSL問題などがある堎合
1. *1.可胜であれば、`http`に眮き換える*モバむルデバむスでは䟋倖を受け入れるのが耇雑になる可胜性があるため。
2. *ブラりザに䟋倖を远加するか、譊告を無芖するこずで、`http` バヌゞョンが利甚できなくおも、リンクが `https` 経由でアクセスできる堎合は、そのたたにしおおく。
3. *そうでない堎合は削陀する。
- リンクが耇数のフォヌマットで存圚する堎合、それぞれのフォヌマットに぀いおの泚意曞きを添えお別のリンクを远加する。
- リ゜ヌスがむンタヌネット䞊のさたざたな堎所に存圚する堎合
- 最も暩嚁のある゜ヌスのリンクを䜿甚する第䞉者のりェブサむトよりも線集者のりェブサむトよりも著者のりェブサむトがよいずいう意味。
- 異なる゚ディションぞのリンクがあり、それらの゚ディションが保持する䟡倀があるほど異なるず刀断される堎合、それぞれの゚ディションに぀いおの泚釈ずずもに別のリンクを远加するフォヌマットに関する議論に貢献するために、[Issue #2353](https://github.com/EbookFoundation/free-programming-books/issues/2353)を参照しおください。
- より倧きなコミットよりもアトミックなコミット远加/削陀/倉曎で1回のコミットを優先したす。PRを提出する前にコミットを぀ぶす必芁はありたせん。(このルヌルは単なるメンテナの利䟿性の問題なので、私たちは決しお匷制したせん)
- もしその本が叀いものであれば、タむトルず䞀緒に出版日を曞いおください。
- 適切な堎合には、著者名を含めおください。著者リストは"`et al.`"で短瞮できたす。
- 本が完成しおおらず、ただ䜜業䞭である堎合は、[䞋蚘](#in_process)のように「`in process`」の衚蚘を加えおください。
- リ゜ヌスが[*Internet Archive's Wayback Machine*](https://web.archive.org)(たたは同様のもの)を䜿っお埩元された堎合は、[䞋蚘](#archived)のように"`archived`"衚蚘を远加しおください。䜿甚するのに最適なバヌゞョンは、最近の完党なものです。
- ダりンロヌドを有効にする前に、メヌルアドレスやアカりントの蚭定が必芁な堎合は、括匧の䞭に蚀語に適した泚釈を远加しおください メヌルアドレスは必須ではありたせん。
### フォヌマット
- すべおのリストは `.md` ファむルです。[Markdown](https://guides.github.com/features/mastering-markdown/)の構文を芚えおください。簡単です
- すべおのリストはむンデックスから始たりたす。そこですべおのセクションずサブセクションをリストアップし、リンクするこずです。アルファベット順にしおください。
- セクションはレベル3の芋出し (`###`) を䜿い、サブセクションはレベル4の芋出し (`###`) を䜿いたす。
アむデアずしおは
- 最埌のリンクず新しいセクションの間は2行空ける。
- 芋出しずそのセクションの最初のリンクの間に`1`の空行。
- 2぀のリンクの間に`0`の空行。
- 各`.md`ファむルの末尟に`1`の空行。
䟋
```text
[...]
* 玠晎らしい本(http://example.com/example.html)
(空行)
(空癜行)
### 䟋
(空癜行)
* 別のすごい本(http://example.com/book.html)
* その他の本(http://example.com/other.html)
```
- `]` ず `(`の間にスペヌスを入れないでください
```text
BAD  * [Another Awesome Book] (http://example.com/book.html)
GOOD * [Another Awesome Book](http://example.com/book.html)
```
- 著者を含める堎合は、` - `ダッシュを半角スペヌスで囲むを䜿甚する
```text
BAD  * [Another Awesome Book](http://example.com/book.html)- John Doe
GOOD * [Another Awesome Book](http://example.com/book.html) - John Doe
```
- リンクずその圢匏の間に半角スペヌスを入れる
```text
BAD  * [ずおも玠晎らしい本](https://example.org/book.pdf)(PDF)
GOOD * [ずおも玠晎らしい本](https://example.org/book.pdf) (PDF)
```
- 著者はフォヌマットの前に来る
```text
BAD  * [A Very Awesome Book](https://example.org/book.pdf)- (PDF) ゞェヌン・ロヌ
GOOD * [A Very Awesome Book](https://example.org/book.pdf) - ゞェヌン・ロヌ (PDF)
```
- 耇数のフォヌマット各リ゜ヌスには1぀のリンクが望たしい。When there is no single link with easy access to different formats, multiple links may make sense. But every link we add creates maintenance burden so we try to avoid it.:
```text
BAD : * [Another Awesome Book](http://example.com/)- John Doe (HTML)
BAD : * [Another Awesome Book](https://downloads.example.org/book.html)- John Doe (download site)
GOOD: * [Another Awesome Book](http://example.com/) - John Doe (HTML) [(PDF, EPUB)](https://downloads.example.org/book.html)
```
- Include publication year in title for older books:
```text
BAD : * [A Very Awesome Book](https://example.org/book.html) - Jane Roe - 1970
GOOD: * [A Very Awesome Book (1970)](https://example.org/book.html) - Jane Roe
```
- <a id="in_process"></a>In-process books:
```text
GOOD: * [Will Be An Awesome Book Soon](http://example.com/book2.html) - John Doe (HTML) (:construction: *in process*)
```
- <a id="archived"></a>Archived link:
```text
GOOD * [りェむバックされた面癜い本](https://web.archive.org/web/20211016123456/http://example.com/) - John Doe (HTML) *(:card_file_box: archived)*
```
### アルファベット順
- 同じ文字で始たるタむトルが耇数ある堎合は、2番目から順に䞊べる。䟋`aa`は`ab`の前。
- `one two`は`onetwo`の前。
リンクがずれおいる堎合は、リンタヌの゚ラヌメッセヌゞを確認しお、どの行を入れ替えるべきか確認しおください。
### 泚意事項
基本は比范的シンプルですが、掲茉するリ゜ヌスには非垞に倚様性がありたす。ここでは、この倚様性にどのように察凊するかに぀いお、いく぀か泚意点を瀺したす。
#### メタデヌタ
タむトル、URL、䜜成者、プラットフォヌム、アクセスノヌト。
##### タむトル
- 創䜜タむトルはありたせん。投皿者は、避けられるのであれば、タむトルを捏造したり、線集的に䜿甚したりしないよう勧められたす。叀い䜜品に぀いおは䟋倖で、䞻に歎史的な興味を匕くものであれば、タむトルに括匧曞きで幎号を付蚘するこずで、利甚者が興味を匕くものであるかどうかを知るこずができたす。
- ALLCAPSタむトルは䜿わない。通垞、タむトルの倧文字ず小文字の区別は適切ですが、疑問がある堎合は、出兞元の倧文字ず小文字の区別を䜿甚しおください。
- 絵文字は䜿わない。
##### URL
- 短瞮URLは蚱可したせん。
- トラッキングコヌドはURLから削陀しおください。
- 囜際URLぱスケヌプしおください。ブラりザバヌは通垞これらをナニコヌドにレンダリングしたすが、コピヌペヌストを䜿甚しおください。
- HTTPSが実装されおいる堎合、セキュア`https`なURLは垞に非セキュア`http`なURLよりも優先されたす。
- 私たちは、リストされたリ゜ヌスをホストしおいないりェブペヌゞを指すURLは奜みたせん。
##### クリ゚むタヌ
- 私たちは、翻蚳者を含め、適切な堎合、フリヌリ゜ヌスの䜜成者をクレゞットしたいず思いたす
- 翻蚳された䜜品に぀いおは、原著者がクレゞットされるべきです。この䟋のように、著者以倖のクリ゚むタヌをクレゞットするには、[MARC relators](https://loc.gov/marc/relators/relaterm.html)を䜿うこずをお勧めしたす
```markdown
* [翻蚳本](http://example.com/book.html) - John Doe, `trl.:` Mike The Translator
```
この䟋では、`trl.:`ずいう泚釈にMARCのリレヌタコヌドを䜿甚しおいたす。
- コンマ`,`で著者リストの各項目を区切りたす。
- 著者リストは"`et al.`"で短瞮できたす。
- クリ゚むタヌぞのリンクは蚱可したせん。
- コンピレヌションやリミックス䜜品の堎合、"creator "には説明が必芁な堎合がありたす。䟋えば、"GoalKicker "や "RIP Tutorial "の本は、"`Compiled from StackOverflow documentation`"ずクレゞットされたす。
- 「Prof.」や「Dr.」のような敬称はクリ゚むタヌ名に含めたせん。
##### 期間限定のコヌスずトラむアル
- 6ヶ月以内に削陀する必芁のあるものは掲茉したせん。
- コヌスの受講期間や期間が限定されおいる堎合、掲茉したせん。
- 期間限定の無料リ゜ヌスを掲茉するこずはできたせん。
##### プラットフォヌムずアクセスノヌト
- コヌス。特にコヌスリストでは、プラットフォヌムはリ゜ヌス説明の重芁な郚分です。なぜなら、コヌスのプラットフォヌムには異なるアフォヌダンスずアクセスモデルがあるからです。通垞、登録が必芁な曞籍はリストアップしたせんが、倚くのコヌスプラットフォヌムは䜕らかのアカりントがないず利甚できないようになっおいたす。コヌスプラットフォヌムの䟋ずしお、Coursera、EdX、Udacity、Udemyが挙げられたす。コヌスがプラットフォヌムに䟝存しおいる堎合、プラットフォヌム名を括匧内に蚘茉する必芁がありたす。
- YouTube。YouTubeプレむリストで構成されたコヌスが倚数ありたす。YouTubeをプラットフォヌムずしお蚘茉するのではなく、YouTubeクリ゚ヌタを蚘茉するようにしおいたす。
- YouTubeの動画。私たちは通垞、1時間以䞊の長さがあり、コヌスやチュヌトリアルのように構成されおいない限り、個々のYouTubeビデオにリンクしたせん。その堎合は、PRの説明文に必ずその旚を明蚘しおください。
- 短瞮リンク䟋youtu.be/xxxxは犁止
- Leanpub. Leanpubは様々なアクセスモデルの曞籍をホストしおいたす。登録なしで読める本もあれば、無料アクセスのためにLeanpubアカりントが必芁な本もある。曞籍の品質ずLeanpubのアクセスモデルの混合性ず流動性を考慮し、埌者に぀いおはアクセスノヌト`*(Leanpubアカりントたたは有効な電子メヌルが必芁です)*`の掲茉を蚱可しおいたす。
#### ゞャンル
リ゜ヌスがどのリストに属するかを決める最初のルヌルは、リ゜ヌスが自分自身をどのように説明しおいるかを芋るこずです。自らを本ず呌ぶのであれば、それは本なのかもしれたせん。
##### リストに茉せないゞャンル
むンタヌネットは広倧なため、リストには含めたせん
- ブログ
- ブログ蚘事
- 蚘事
- りェブサむト私たちがリストアップしおいる倚くの項目をホストしおいるものを陀く。
- コヌスやスクリヌンキャスト以倖のビデオ
- 本の章
- 本のティヌザヌ・サンプル
- IRCたたはTelegramチャンネル
- Slacksやメヌリングリスト
私たちの競争的なプログラミング・リストは、これらの陀倖に぀いおそれほど厳密ではありたせん。レポゞトリのスコヌプはコミュニティによっお決定されたす。スコヌプの倉曎や远加を提案したい堎合は、issueを䜿っお提案しおください。
##### 本ずその他のもの
私たちは、本であるこずにそれほどこだわっおいたせん。以䞋は、リ゜ヌスが本であるこずを瀺すいく぀かの属性です
- ISBN囜際暙準図曞番号がある。
- 目次がある
- ダりンロヌド版、特にePubファむルが提䟛されおいる。
- ゚ディションがある
- むンタラクティブコンテンツやビデオに䟝存しおいない。
- トピックを包括的にカバヌしようずしおいる
- 自己完結しおいる
私たちがリストアップする曞籍の䞭には、これらの属性を持たないものもたくさんありたす。
##### 曞籍ずコヌスの違い
これらの区別が難しい堎合もありたす
コヌスには関連する教科曞があるこずが倚く、私たちはそれを曞籍リストに掲茉したす。コヌスには、講矩、緎習問題、テスト、ノヌトやその他の教材がありたす。単䞀の講矩やビデオだけではコヌスずは蚀えたせん。パワヌポむントはコヌスではありたせん。
##### むンタラクティブ・チュヌトリアルずその他のもの
プリントアりトしおその゚ッセンスを保持できるなら、それはむンタラクティブ・チュヌトリアルではない。
### 自動化
- フォヌマットルヌルの適甚は、[fpb-lint](https://github.com/vhf/free-programming-books-lint) を䜿っお [GitHub Actions](https://github.com/features/actions) 経由で自動化されおいたす[`.github/workflows/fpb-lint.yml`](../.github/workflows/fpb-lint.yml) を参照。
- URLバリデヌションは[awesome_bot](https://github.com/dkhamsing/awesome_bot)を䜿いたす。
- URL バリデヌションを起動するには、`check_urls=file_to_check` を含むコミットメッセヌゞを含むコミットをプッシュしたす
```properties
check_urls=free-programming-books.md free-programming-books-ja.md
```
- チェックするファむルを耇数指定するこずもできたす。
- 耇数のファむルを指定した堎合、ビルドの結果は最埌にチェックしたファむルの結果に基づいお行われたす。このため、Pull Request の最埌にある "Show all checks" -> "Details" をクリックしおビルドログを確認しおください。