|
1 |
| -# この書籍について |
2 |
| - |
3 |
| -{% hint style="danger" %} |
4 |
| -この書籍は [https://azu.github.io/JavaScript-Plugin-Architecture/](https://azu.github.io/JavaScript-Plugin-Architecture/) に移行しました。 |
5 |
| - |
6 |
| -このページは更新されていません。 |
7 |
| -{% endhint %} |
| 1 | +# JavaScript Plugin Architecture [](https://github.com/azu/JavaScript-Plugin-Architecture/actions?query=workflow%3A"test") |
8 | 2 |
|
9 | 3 | この書籍はJavaScriptのライブラリやツールにおけるプラグインアーキテクチャについて見ていくことを目的としたものです。
|
10 | 4 |
|
11 | 5 | 次の形式で読むことができます。
|
12 | 6 |
|
13 |
| -* [Web版](https://azu.github.io/JavaScript-Plugin-Architecture/) |
14 |
| -* [PDF形式](https://azu.github.io/JavaScript-Plugin-Architecture/JavaScript-Plugin-Architecture.pdf) |
15 |
| -* [ePub形式](https://azu.github.io/JavaScript-Plugin-Architecture/JavaScript-Plugin-Architecture.epub) |
16 |
| -* [Mobi形式](https://azu.github.io/JavaScript-Plugin-Architecture/JavaScript-Plugin-Architecture.mobi) |
| 7 | +- [Web版](https://azu.github.io/JavaScript-Plugin-Architecture/) |
| 8 | +- [PDF形式](https://azu.github.io/JavaScript-Plugin-Architecture/JavaScript-Plugin-Architecture.pdf) |
| 9 | +- [ePub形式](https://azu.github.io/JavaScript-Plugin-Architecture/JavaScript-Plugin-Architecture.epub) |
| 10 | +- [Mobi形式](https://azu.github.io/JavaScript-Plugin-Architecture/JavaScript-Plugin-Architecture.mobi) |
17 | 11 |
|
18 | 12 | この書籍のソースコードは、次のGitHubリポジトリに公開されています。
|
19 | 13 |
|
20 |
| -* [azu/JavaScript-Plugin-Architecture: JavaScriptプラグインアーキテクチャの本](https://github.com/azu/JavaScript-Plugin-Architecture) |
| 14 | +- [azu/JavaScript-Plugin-Architecture: JavaScriptプラグインアーキテクチャの本](https://github.com/azu/JavaScript-Plugin-Architecture) |
21 | 15 |
|
22 |
| -Twitterのハッシュタグは[\#js\_plugin\_book](https://twitter.com/search?f=tweets&q=%23js_plugin_book&src=typd) |
| 16 | +Twitterのハッシュタグは[#js_plugin_book](https://twitter.com/search?f=tweets&q=%23js_plugin_book&src=typd "Twitter #js_plugin_book") |
23 | 17 |
|
24 | 18 | 更新情報は[RSS](https://github.com/azu/JavaScript-Plugin-Architecture/releases.atom)や[リリースノート](https://github.com/azu/JavaScript-Plugin-Architecture/releases)から見ることができます。
|
25 | 19 |
|
| 20 | + |
| 21 | +<!-- textlint-disable --> |
| 22 | + |
| 23 | +{% if output.name != "ebook" %} |
| 24 | + |
| 25 | +< a aria-label= "Star azu/JavaScript-Plugin-Architecture on GitHub" href= "https://github.com/azu/JavaScript-Plugin-Architecture" class= "github-button">< img src= "https://monosnap.com/file/MZsfLjZNkSNwTJ33apkwpBjlBZLbSh.png" alt= "GitHub"></ a> < a href= "http://b.hatena.ne.jp/entry/https://github.com/azu/JavaScript-Plugin-Architecture" class= "hatena-bookmark-button" data-hatena-bookmark-title= "JavaScript Plugin Architecture" data-hatena-bookmark-layout= "standard-balloon" data-hatena-bookmark-lang= "ja" title= "はてなブックマークに追加">< img src= "https://b.st-hatena.com/images/entry-button/[email protected]" alt= "はてなブックマークに追加" width= "20" height= "20" style= "border: none;" /></ a> |
| 26 | + |
| 27 | +{% endif %} |
| 28 | + |
| 29 | +<!-- textlint-enable --> |
| 30 | + |
| 31 | + |
26 | 32 | ## はじめに
|
27 | 33 |
|
28 |
| -JavaScriptの世界では1つの大きなライブラリよりも小さなライブラリを組み合わせていくようなスタイルが多く見られます。 小さなものを組み合わせて作るためには、プラグインと呼ばれる拡張の仕組みが必要となります。 またそのようなプラグインがたくさんあるエコシステムの土台を作るには、プラグインアーキテクチャが重要になるといえます。 |
| 34 | +JavaScriptの世界では1つの大きなライブラリよりも小さなライブラリを組み合わせていくようなスタイルが多く見られます。 |
| 35 | +小さなものを組み合わせて作るためには、プラグインと呼ばれる拡張の仕組みが必要となります。 |
| 36 | +またそのようなプラグインがたくさんあるエコシステムの土台を作るには、プラグインアーキテクチャが重要になるといえます。 |
29 | 37 |
|
30 | 38 | > ソフトウェアの構造に「プラグイン機構」を設け、ユーザコミュニティから開発者コミュニティへの質的な転換を図るのは、ソフトウェア設計からエコシステム設計へとつながる
|
31 |
| -> -- [OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ](http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity) |
| 39 | +> -- [OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ](http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity "OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ") |
32 | 40 |
|
33 | 41 | この書籍では、JavaScriptにおけるプラグインアーキテクチャやそのエコシステムを形成してるライブラリやツールなどの実装を学ぶことが目的となっています。
|
34 | 42 |
|
35 | 43 | JavaScriptの基本的な文法などについては解説していないため、次の書籍を参照してください。
|
36 | 44 |
|
37 |
| -* [JavaScript Primer - 迷わないための入門書 \#jsprimer](https://jsprimer.net/) |
| 45 | +- [JavaScript Primer - 迷わないための入門書 #jsprimer](https://jsprimer.net/) |
38 | 46 |
|
39 | 47 | ## この書籍の内容について
|
40 | 48 |
|
41 |
| -### [jQuery](jquery.md) |
| 49 | +### [jQuery](ja/jQuery/README.md) |
42 | 50 |
|
43 |
| -jQueryのプラグインについて解説しています。 `<script>`タグをベースとしたプラグインアーキテクチャについて解説しています。 |
| 51 | +jQueryのプラグインについて解説しています。 |
| 52 | +`<script>`タグをベースとしたプラグインアーキテクチャについて解説しています。 |
44 | 53 |
|
45 |
| -### [ESLint](eslint.md) |
| 54 | +### [ESLint](ja/ESLint/README.md) |
46 | 55 |
|
47 |
| -ESLintのルールを拡張する仕組みについて解説しています。 ESLintではJavaScriptのコードをパースして作成されたASTを元にコードのLintを行います。 実際にESLintのルールを解釈できる小さな実装を作りながらプラグインの仕組みについて学びます。 |
| 56 | +ESLintのルールを拡張する仕組みについて解説しています。 |
| 57 | +ESLintではJavaScriptのコードをパースして作成されたASTを元にコードのLintを行います。 |
| 58 | +実際にESLintのルールを解釈できる小さな実装を作りながらプラグインの仕組みについて学びます。 |
48 | 59 |
|
49 |
| -### [Connect](connect.md) |
| 60 | +### [Connect](ja/connect/README.md) |
50 | 61 |
|
51 |
| -Connectの **middleware** と呼ばれるプラグインアーキテクチャについて解説しています。 Node.js以外においても_Rack_などHTTPサーバーでよく見られるプラグインを使った階層構造について学びます。 |
| 62 | +Connectの **middleware** と呼ばれるプラグインアーキテクチャについて解説しています。 |
| 63 | +Node.js以外においても_Rack_などHTTPサーバーでよく見られるプラグインを使った階層構造について学びます。 |
52 | 64 |
|
53 |
| -### [gulp](gulp.md) |
| 65 | +### [gulp](ja/gulp/README.md) |
54 | 66 |
|
55 |
| -**タスク自動化ツール**として知られるgulpのプラグインアーキテクチャについて解説しています。 gulpではデータの流れとして既存のNode.js Streamを使い、そこで流すデータとしてvinylオブジェクトを利用します。 実際にgulpプラグインを書きながら、gulpのプラグインの仕組みについて学びます。 |
| 67 | +**タスク自動化ツール**として知られるgulpのプラグインアーキテクチャについて解説しています。 |
| 68 | +gulpではデータの流れとして既存のNode.js Streamを使い、そこで流すデータとしてvinylオブジェクトを利用します。 |
| 69 | +実際にgulpプラグインを書きながら、gulpのプラグインの仕組みについて学びます。 |
56 | 70 |
|
57 |
| -### [Redux](redux.md) |
| 71 | +### [Redux](ja/Redux/README.md) |
58 | 72 |
|
59 |
| -アプリケーションのStateを管理ライブラリのReduxのプラグインアーキテクチャについて解説しています。 Reduxでは **middleware** と呼ばれる拡張の仕組みを持っていますが、Connectとの類似点や相違点があります。 小さなReduxの実装を作りながら **middleware** の仕組みについて学びます。 |
| 73 | +アプリケーションのStateを管理ライブラリのReduxのプラグインアーキテクチャについて解説しています。 |
| 74 | +Reduxでは **middleware** と呼ばれる拡張の仕組みを持っていますが、Connectとの類似点や相違点があります。 |
| 75 | +小さなReduxの実装を作りながら **middleware** の仕組みについて学びます。 |
60 | 76 |
|
61 | 77 | ## Contributing
|
62 | 78 |
|
63 | 79 | この書籍は無料で読むことができ、同時に修正や新しいページを書く権利があります。
|
64 | 80 |
|
65 |
| -[CONTRIBUTING.md](https://github.com/azu/JavaScript-Plugin-Architecture/blob/master/CONTRIBUTING.md)に、書籍で扱うべきプラグインアーキテクチャのProposalの書き方や Pull Request、コミットのやりかたなどが書かれています。 |
| 81 | +[CONTRIBUTING.md](https://github.com/azu/JavaScript-Plugin-Architecture/blob/master/CONTRIBUTING.md)に、書籍で扱うべきプラグインアーキテクチャのProposalの書き方や |
| 82 | +Pull Request、コミットのやりかたなどが書かれています。 |
66 | 83 |
|
67 | 84 | 間違いやライブラリのアップデートへの追従など何かあれば、IssueやPull Requestをよろしくお願いします。
|
68 | 85 |
|
69 | 86 | ソースコードはすべてGitHubに公開されています。
|
70 | 87 |
|
71 |
| -* [azu/JavaScript-Plugin-Architecture](https://github.com/azu/JavaScript-Plugin-Architecture) |
| 88 | +- [azu/JavaScript-Plugin-Architecture](https://github.com/azu/JavaScript-Plugin-Architecture) |
72 | 89 |
|
73 | 90 | ## Author
|
74 | 91 |
|
75 |
| -* [github/azu](https://github.com/azu) |
76 |
| -* [twitter/azu\_re](https://twitter.com/azu_re) |
| 92 | +- [github/azu](https://github.com/azu) |
| 93 | +- [twitter/azu_re](https://twitter.com/azu_re) |
77 | 94 |
|
78 | 95 | ## License
|
79 | 96 |
|
80 | 97 | MIT/CC BY-NC © azu
|
81 | 98 |
|
82 |
| -* コードはMITライセンスで利用できます |
83 |
| -* 文章は[CC BY-NC 4.0](http://creativecommons.org/licenses/by-nc/4.0/)で利用できます |
84 |
| - |
| 99 | +- コードはMITライセンスで利用できます |
| 100 | +- 文章は[CC BY-NC 4.0](http://creativecommons.org/licenses/by-nc/4.0/ "CC BY-NC 4.0")で利用できます |
0 commit comments