Skip to content

azu/JavaScript-Plugin-Architecture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0295af3 · May 11, 2021
Sep 7, 2020
Sep 5, 2020
May 11, 2021
Sep 6, 2020
Sep 6, 2020
Nov 24, 2019
Sep 6, 2020
Sep 7, 2020
Sep 11, 2015
Sep 6, 2020
Nov 24, 2019
May 11, 2021
Sep 5, 2020
Jan 4, 2016
Sep 13, 2020
Sep 13, 2020
Sep 5, 2020
May 6, 2016
Jun 20, 2016
Sep 6, 2020
Sep 6, 2020

Repository files navigation

JavaScript Plugin Architecture Actions Status: test

この書籍はJavaScriptのライブラリやツールにおけるプラグインアーキテクチャについて見ていくことを目的としたものです。

次の形式で読むことができます。

この書籍のソースコードは、次のGitHubリポジトリに公開されています。

Twitterのハッシュタグは#js_plugin_book

更新情報はRSSリリースノートから見ることができます。

GitHub はてなブックマークに追加

はじめに

JavaScriptの世界では1つの大きなライブラリよりも小さなライブラリを組み合わせていくようなスタイルが多く見られます。 小さなものを組み合わせて作るためには、プラグインと呼ばれる拡張の仕組みが必要となります。 またそのようなプラグインがたくさんあるエコシステムの土台を作るには、プラグインアーキテクチャが重要になるといえます。

ソフトウェアの構造に「プラグイン機構」を設け、ユーザコミュニティから開発者コミュニティへの質的な転換を図るのは、ソフトウェア設計からエコシステム設計へとつながる
-- OSS開発の活発さの維持と良いソフトウェア設計の間には緊張関係があるのだろうか? - t-wadaのブログ

この書籍では、JavaScriptにおけるプラグインアーキテクチャやそのエコシステムを形成してるライブラリやツールなどの実装を学ぶことが目的となっています。

JavaScriptの基本的な文法などについては解説していないため、次の書籍を参照してください。

この書籍の内容について

jQueryのプラグインについて解説しています。 <script>タグをベースとしたプラグインアーキテクチャについて解説しています。

ESLintのルールを拡張する仕組みについて解説しています。 ESLintではJavaScriptのコードをパースして作成されたASTを元にコードのLintを行います。 実際にESLintのルールを解釈できる小さな実装を作りながらプラグインの仕組みについて学びます。

Connectの middleware と呼ばれるプラグインアーキテクチャについて解説しています。 Node.js以外においても_Rack_などHTTPサーバーでよく見られるプラグインを使った階層構造について学びます。

タスク自動化ツールとして知られるgulpのプラグインアーキテクチャについて解説しています。 gulpではデータの流れとして既存のNode.js Streamを使い、そこで流すデータとしてvinylオブジェクトを利用します。 実際にgulpプラグインを書きながら、gulpのプラグインの仕組みについて学びます。

アプリケーションの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で利用できます