JavaScript Plugin Architecture
この書籍はJavaScriptのライブラリやツールにおけるプラグインアーキテクチャについて見ていくことを目的としたものです。
次の形式で読むことができます。
この書籍のソースコードは、次のGitHubリポジトリに公開されています。
Twitterのハッシュタグは#js_plugin_book
はじめに
JavaScriptの世界では1つの大きなライブラリよりも小さなライブラリを組み合わせていくようなスタイルが多く見られます。小さなものを組み合わせて作るためには、プラグインと呼ばれる拡張の仕組みが必要となります。またそのようなプラグインがたくさんあるエコシステムの土台を作るには、プラグインアーキテクチャが重要になるといえます。
ソフトウェアの構造に「プラグイン機構」を設け、ユーザコミュニティから開発者コミュニティへの質的な転換を図るのは、ソフトウェア設計からエコシステム設計へとつながる
-- OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ
この書籍では、JavaScriptにおけるプラグインアーキテクチャやそのエコシステムを形成してるライブラリやツールなどの実装を学ぶことが目的となっています。
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に公開されています。
Author
License
MIT/CC BY-NC © azu
- コードはMITライセンスで利用できます
- 文章はCC BY-NC 4.0で利用できます