Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
ja
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

JavaScript Plugin Architecture Actions Status: test

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

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

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

Twitterのハッシュタグは#js_plugin_book

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

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

はじめに

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で利用できます

About

JavaScriptプラグインアーキテクチャの本

Resources

License

Sponsor this project

 

Languages

You can’t perform that action at this time.