JavaScript Plugin Architecture
この書籍はJavaScriptのライブラリやツールにおけるプラグインアーキテクチャについて見ていくことを目的としたものです。
次の形式で読むことができます。
GitHub上で直接Markdownファイルを読むこともできますが、その場合はWeb版で読むことをオススメします。
Twitterのハッシュタグは#js_plugin_book
はじめに
JavaScriptの世界では1つの大きなライブラリよりも小さいなものを組み合わせていくようなスタイルが多く見られます。小さなものを組み合わせて作るためには、プラグインと呼ばれる拡張の仕組みが必要となります。またそのようなプラグインがたくさんあるエコシステムの土台を作るには、プラグインアーキテクチャが重要になるといえます。
ソフトウェアの構造に「プラグイン機構」を設け、ユーザコミュニティから開発者コミュニティへの質的な転換を図るのは、ソフトウェア設計からエコシステム設計へとつながる
-- OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ
この書籍では、JavaScriptにおけるプラグインアーキテクチャやそのエコシステムを形成してるライブラリやツールなどの実装を学ぶことが目的となっています。
この書籍の内容について
jQuery
jQueryのプラグインについて解説しています。
<script>
タグをベースとしたプラグインアーキテクチャについて解説しています。
ESLint
ESLintのルールを拡張する仕組みについて解説しています。 ESLintではJavaScriptのコードをパースして作成されたASTを元にコードのLintを行います。実際にESLintのルールを解釈できる小さな実装を作りながらプラグインの仕組みについて学びます。
Connect
Connectの middleware と呼ばれるプラグインアーキテクチャについて解説しています。 Node.js以外においてもRackなどHTTPサーバーでよく見られるプラグインを使った階層構造について学びます。
gulp
タスク自動化ツールとして知られるgulpのプラグインアーキテクチャについて解説しています。 gulpではデータの流れとして既存のNode.js Streamを使い、そこで流すデータとしてvinylオブジェクトを利用します。実際にgulpプラグインを書きながら、gulpのプラグインの仕組みについて学びます。
Redux
アプリケーションのStateを管理ライブラリのReduxのプラグインアーキテクチャについて解説しています。 Reduxでは middleware と呼ばれる拡張の仕組みを持っていますが、Connectとの類似点や相違点があります。小さなReduxの実装を作りながら middleware の仕組みについて学びます。
Contributing
この書籍は無料で読むことができ、同時に修正や新しいページを書く権利があります。
CONTRIBUTING.mdに、書籍で扱うべきプラグインアーキテクチャのProposalの書き方や Pull Request、コミットのやりかたなどが書かれています。
間違いやライブラリのアップデートへの追従など何かあれば、IssueやPull Requestをよろしくお願いします。
ソースコードはすべてGitHubに公開されています。
License
MIT/CC BY-NC © azu
- コードはMITライセンスで利用できます
- 文章はCC BY-NC 4.0で利用できます